Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   597 / 1320
(#) vicsys válasza robing16 hozzászólására (») Okt 30, 2009 /
 
...vagy véletlenül félredugtál. Bocsánat, nem félreérteni! Én a minap jártam így a breadboardon. Észrevettem, korrigáltam, jó lett.
(#) potyo válasza vicsys hozzászólására (») Okt 30, 2009 /
 
Érdekes ízlésetek van :smoke:
(#) trudnai válasza robing16 hozzászólására (») Okt 30, 2009 /
 
Melyik klon ez? A Szilva felen pl. van egy dioda opcionalisan a Vddtgt agra tervezve, de azzal meg elofordulhat, hogy a target PIC nem kap megfelelo feszultseget.

Ez esetben a megoldas: Vagy ki kell venni a diodat vagy megtaplalni kulso forrasbol...
(#) robing16 válasza trudnai hozzászólására (») Okt 30, 2009 /
 
Húú, köszönöm a sok ötletet, nos ez egy 16F84-es IC volt eredetileg a Propeller Clock-ban, tudtam programozni, de kevés volt a RAM hozzá!

Ekkor vettem egy 16F88-ast, amit beleraktam, és tápfeszre kötöttem! Am, megtaláltam a hibát, nem dugtam semmit félre, de amikor a 84-essel programoztam, nem adtam neki külön tápot, így a Clone-ról kapott 5V-ot! Az egyik funkció a Stabilizátor elé a 12V-os ágba volt kötve, és én ezt átkötöttem! Én hülye f*** átkötöttem a Stabilizátort, így mikor az akksira kötöttem valószínűleg végeztem vele! :no:

A PicKit 2 Clone-nak nem tudom melyik fajtája, de a PIC-et felismeri, kiírja, hogy 16F88, csak épp nem tud bele írni! Szerintem az nyírta ki, azaz ÉN NYÍRTAM KI

Azóta visszaraktam a 84-est, és ugyanott vagyok, hogy működni működik, de kevés a RAM hétfőn mehetek venni egy másikat!

Köszi mindenkinek! Sziasztok!
(#) efiscp hozzászólása Okt 31, 2009 /
 
Üdv. Mostanság (egész pontosan tegnap) kezdtem foglalkozni PICekkel, és támadt egy elég zavarbaejtő problémám. A program egy részlete, amit írtam (sima ledvillogtató) így néz ki:

kezd
call loop ;várakozó rutin
movlw b'00000011'
xorwf PORTB,1 ;invertálás
goto kezd ;vissza

A PORTB 1 és 0 lábán lévő ledeket felváltva kéne villogtatnia (a PORTB kimenet-állításánál meg lett neki adva egy b'00000001' kezdőérték). Namármost erre azt csinálja, hogy a loop lejárta után kigyújtja a másik ledet, és kész. Magyarán szerinte 1 xor 1=1. Fogalmam sincs, hol lehet a hiba...
(#) robing16 válasza efiscp hozzászólására (») Okt 31, 2009 /
 
Szia! Pont most mondtad el, mi a hiba! Azzal, hogy a TRISB-nek 00000001-et adtál, így a PORTB1:7-ig kimenet, és a PORTB0 pedig bemenet lett! Ha minden portot 0-ra teszel, akkor OUTPUT, azaz kimenet lesz! Próbáld meg először így!

Üdv.
(#) potyo válasza efiscp hozzászólására (») Okt 31, 2009 /
 
Link

PORTB, 1 helyett írj PORTB, F-et. Ugyanígy PORTB, 0 helyett meg PORTB, W-t.
(#) efiscp válasza robing16 hozzászólására (») Okt 31, 2009 /
 
Nem, mert így csináltam:

movlw b'00000000' ;0 akkuba
movwf TRISB ;b port kimenet
bcf STATUS,5 ;bank0-ba lapozás
...
movlw b'00000001'
movwf PORTB ;1. led világít

Potyo linkjén az okosságot nem tudom kipróbálni, mert nincs itthon semmilyen áramköri elem, csak pár led, meg ellenállás (tehát csak direktbe tudom kötni). Kösz a gyors válaszokat.
(#) efiscp hozzászólása Okt 31, 2009 /
 
Na közben támadt egy ötletem a link alapján. Csináltam egy segédregisztert, amibe beírtam azokat a biteket, amik kimennek a PORTB-re, és ezzel végeztem a műveleteket. Láss csodát, gyönyörűen villog. Kösz a segítséget, magamtól eszembe nem jutott volna.
(#) potyo válasza efiscp hozzászólására (») Okt 31, 2009 /
 
Az ellenállásos kötése jó a lednek, ha megfelelő az ellenállás. 150ohmmal nem szokott probléma lenni, de általában felesleges nagy fényerő, simán mehet 470 ohm. A direktbe kötés az, amikor ellenállás nélkül kötik rá.

Annak a STATUS regiszter ötödik bitjének is van neve, használd azt, mert ha egy ilyen kóddal elénk állsz, akkor fejből nem tudjuk, hogy az ötödik bit micsoda, és nem érzünk késztetést, hogy az adatlapot elővegyük megnézni. Ha viszont az áll ott, hogy RP0, akkor azt már tudnánk adatlap nélkül is, hogy micsoda.
(#) Beles hozzászólása Okt 31, 2009 /
 
I2C programozásba kezdtem, de sehogy nem tudok kiolvasni egy lm75-ös ic-t. Mellékelem az asm file-t. Nem tudna valaki segíteni hol lehet a hiba? Nem bírok rájönni sajna
(#) efiscp válasza potyo hozzászólására (») Okt 31, 2009 /
 
Vannak ellenállások a ledek mellett, de így meg nem tudom mondani, hogy mekkorák. A direktet úgy értettem, hogy nincs leválasztva.
(#) Hp41C válasza Beles hozzászólására (») Okt 31, 2009 /
 
Szia!

Ahhoz, hogy le lehessen ellenőrizni, még kellene egy-két adat:
Mekkora a kontroller órajel frekvenciája? Hogyan van az LM75 bekötve? Milyen szintek vannak az A2, A1, A0 lábain? Vannak-e felhúzó ellenállások az SCL és SDA vonalakon?

Szia
(#) watt válasza efiscp hozzászólására (») Okt 31, 2009 /
 
Ez azért nem jó, mert a xor úgy működik, hogy beolvassa a porton lévő adatot(a valós szintet!), majd az ott olvasott szerint elvégzi a W-vel a műveletet. Ez eddig jó is lenne, ha a beolvasott adat helyes lenne. A beolvasás helyessége több dologtól is függhet. Az egyik, hogy a kivitt adatot túl gyorsan olvassuk vissza, ezért még nem állt be a szint. De nem ez a helyzet nálad, csak érdemes ezt is megjegyezni.
A másik, hogy annyira megterheljük a kimenetet, hogy a feszültsége nem éri el a PIC által H szintnek elfogadot értéket. Ekkor a portról mindig L szint lesz beolvasva, aminek H az ellentettje(xor).

Amikor a segéd regisztert használod, kikerülöd ezt a problémakört. Az is megoldás lenne, ha nagyobb ellenállást használnál(470ohm...1kohm), ami nem terhelné annyira le a kimenetet.
(#) Beles válasza Hp41C hozzászólására (») Okt 31, 2009 /
 
Akkor nem olvastam még eleget az i2c-ről Felhúzó ellenállásokat berakom, szerintem az lesz a gond. A2,A1,A0 +5V-ra van kötve. 4MHz a kontroller freki. Azt a kérdést nem értem, hogy hogyan van bekötve az LM75. Na berakom az ellenállásokat....
(#) Hp41C válasza Beles hozzászólására (») Okt 31, 2009 /
 
Szia!

Ajánlom figyelmedbe ezt a leírást.

Szia
(#) Beles válasza Hp41C hozzászólására (») Okt 31, 2009 /
 
Persze, ez alapján tanúltam meg, de még vagy fél éve néztem, és most meg a pic meg az lm75 adatlapja alapján írtam meg a progit. Nem tudom miből gondoltam, hogy nem kell oda az ellenállás!
Beraktam, lehet mostmár működik! Köszi a segítséget!
(#) zlanczky hozzászólása Nov 1, 2009 /
 
Tudtok valami kezdő számára elég részletes linket ajánlani, ahol bemutatják, mi a különbség a 16f84 és a 16f88 programozása között?
az alábbi linknél konkrétebb kéne: Bővebben: Link
84-re megírt progi nem megy 887-en,az okot keresem.
köszi laz
(#) Kriss hozzászólása Nov 1, 2009 /
 
üdv!

Azt szeretném kérdezni hogy pic18f2320-nál miért nem működik a MOVFF TIME,PORTB utasítás. PORTB-be TIME helyett 0át rak. Ha viszont TIME helyébe mondjuk PORTA-t írok akkor működik.-->kép mellékelve
(#) 8ball válasza Kriss hozzászólására (») Nov 1, 2009 /
 
Szia

Én úgy tudom, hogy közvetlenül nem tudsz regiszterből regiszterbe írni!
Mondjuk próbáld meg így: movf TIME,w
movwf PORTB
(#) Hp41C válasza zlanczky hozzászólására (») Nov 1, 2009 / 1
 
Szia!

Pedig teljesen igaza van:
- A 16F84-ben a szabadon felhasználható ram kezdőcíme más, mint a 16F88-ban. A 16F88ban 0x1F-ig tartanak a speciális célú regiszterek, 0x20-tól kezdődik a szabadon felhasználható ram.
- A 16F88-ban az analóg funkciókkal is rendelkező lábak analóg üzemmódban vannak a reset után, programmal kell digitálisra váltani.
- Az alkalmazható oszcillátor és egyéb konfiguráló beállítások sokkal bővebb a 16F88-on.

Eddig, az amit a hivatkozott lap tartalmazott, de van még egy néhány olyan dolog, amit a 16F84 máskép értelmez:
-A STATUS regiszterben az IPR, RP1, RP0 memódia bank kezelő bitek. A 16F84-ben csak az RP0 használatos pl. a TRISA, TRISB stb. regiszterek elérésekor, a 16F88-ban a másik kettő is jelentősséggel bír. Ha a 16F84 programja ezeket a biteket is állította, a 16F88 másként fogja értelmezni.
- A 16F84 -ben csak a Page0 programlap fele (0x000 - 0x3ff) használható, a 16F88-ban mind a 4 lap elérhető. A PCLATH regiszter kezelésére is igaz, hogy a 16F88 kezeli azokat a biteket, amit a 16F84 nem kezelt.

A Microchip opdaláról töltsd le az adatlapjukat...

Szia
(#) Hp41C válasza Kriss hozzászólására (») Nov 1, 2009 /
 
Szia!

Nincs véletlenül a PORTB bemenetnek állítva? Az analóg funkcióvan rendelkező lábakat a programod átállította digitálisra?

Szia
(#) watt válasza 8ball hozzászólására (») Nov 1, 2009 /
 
Idézet:
„Én úgy tudom, hogy közvetlenül nem tudsz regiszterből regiszterbe írni!”

Nem jól tudod!
(#) Hp41C válasza 8ball hozzászólására (») Nov 1, 2009 /
 
Szia!

18F-en működik, sőt különböző bankok között is lehet a movff utasítással adatot mozgatni...

Szia
(#) watt válasza Kriss hozzászólására (») Nov 1, 2009 /
 
Ha ezt a programot futtatod, akkor olyan sebességgel fogja kiírni a 23-at és a 123-at egymás után a kimenetre, hogy képtelen leszel azt követni, azt is hiheted, hogy nem működik! Ne a porgram elejére ugorj, hanem tégy a végére egy végtelen ciklust. Ekkor már a 123 fog a kimeneteken megjelenni. (feltéve, ha a port jól van beállítva, amit Hp41C említett már.)
(#) Kriss válasza 8ball hozzászólására (») Nov 1, 2009 /
 
PIC18 nál pont arra van kitalálva a movff h regiszterből regiszterbe lehessen másolni, ezért nemtudom h miért van az hogy csak portról portra tudok másolni vele.
(#) Kriss válasza watt hozzászólására (») Nov 1, 2009 /
 
Nem mert F7 el léptetem lépésről lépésre a programot, ha goto $ et írok a végére akkor is ugyan ez a helyzet hogy movff-el nem tudok regiszterből regiszterbe másolni csak portról portra.
(#) potyo válasza Kriss hozzászólására (») Nov 1, 2009 /
 
Tedd fel az egész kódodat, hogy lássuk, jól állítottad-e be a PORTB-t.
(#) 8ball válasza watt hozzászólására (») Nov 1, 2009 /
 
Igazad van, valóban lehet megnéztem egy 18-as PIC adatlapját és valóban ott van az utasítás.

(Eddig csak 16F-es vezérlőkkel foglalkoztam de ott még nem találkoztam ilyen utasítással ezért gondoltam hogy nem lehet)

Legközelebb körültekintőbb leszek.

Üdv
(#) watt válasza 8ball hozzászólására (») Nov 1, 2009 /
 
Semmi gond!
Következő: »»   597 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem