Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   646 / 1210
(#) nedudgi válasza Pali79 hozzászólására (») Márc 17, 2015 /
 
A legegyszerűbb, ha az adatbájtokat számolod.
(#) Pali79 válasza nedudgi hozzászólására (») Márc 17, 2015 /
 
Úgy érted, hogy ha tudom, hogy az átküldendő adat mondjuk 100 bájt, akkor minden egyes bájt küldése után növelek egy változót és ha az eléri a 100-at akkor van vége?
(#) nedudgi válasza Pali79 hozzászólására (») Márc 17, 2015 /
 
Igen.
Én inkább az adatbájtok számát tölteném a változóba, és azt csökkenteném, ha nulla, akkor vége - azt könnyebb figyelni.
(#) Pali79 válasza nedudgi hozzászólására (») Márc 17, 2015 /
 
Valóban, igazad van!
(#) cross51 válasza Pali79 hozzászólására (») Márc 17, 2015 /
 
Ha még szükség van rá esetleg ez segíthet Bővebben: Link.
(#) Pali79 válasza cross51 hozzászólására (») Márc 17, 2015 /
 
Az infó mindig jól jön! Köszönöm!
(#) Hp41C válasza Pali79 hozzászólására (») Márc 18, 2015 /
 
Idézet:
„...az eddigiekben olyan rutint használtam ami az egyes beolvasott értékek után 0x00-val xor-t csináltam és a Z bitet figyeltem...”

Sok helyet szabadíthatsz fel: A movf utasítás állítja a Z jelzőbitet.
  1. movf INDF,w
  2. btfss STATUS,Z
(#) Pali79 válasza Hp41C hozzászólására (») Márc 18, 2015 /
 
Hát ezt még emésztenem kell, mert elsőre nem nagyon értem, hogy mit kell az INDF-be tölteni és miért.
(#) Hp41C válasza Pali79 hozzászólására (») Márc 18, 2015 /
 
Nem az INDF a lényeg, lehet ott bármelyik regiszter. Maga a movf utasítás álltja a Z bitet. ((Ezért nem használható a mewgszakítási rutin végén a W mentett értékének visszaállítására.))
(#) Pali79 válasza Hp41C hozzászólására (») Márc 18, 2015 /
 
Ja! Így már értem! Köszi!
(#) ktamas66 válasza Pali79 hozzászólására (») Márc 18, 2015 /
 
Nem is kell w-be tölteni, használhatod f-el is, így önmagába tölti vissza, csak közben beállítja a Z bitet.
(#) Pali79 válasza ktamas66 hozzászólására (») Márc 18, 2015 /
 
Ezt már értem, de az még nem világos, hogy egy táblázatból meghívott adatok végének jelzésére, hogyan kell ezt használni.
(#) nedudgi válasza Pali79 hozzászólására (») Márc 18, 2015 /
 
Az utóbbi hozzászólások arról az esetről szólnak, amikor 0x00 tartalmú bájt jelzi az adatok végét.
(#) Pali79 válasza nedudgi hozzászólására (») Márc 18, 2015 /
 
Értem, akkor ez nekem nem jó most, de egy szöveg kiírásénál jó lehet. A te általad javasolt bitszámolós megoldást tegnap kipróbáltam, az jól működik!
(#) Hp41C válasza Pali79 hozzászólására (») Márc 18, 2015 /
 
A retlw nem állítja a Z bitet. 18F -eken a movf TABLAT,w vagy movf TABLAT,f állítja.
A hozzászólás módosítva: Márc 18, 2015
(#) usane válasza don_peter hozzászólására (») Márc 18, 2015 /
 
Péter mester. Összeraktam a szintillesztődet. Üresjáratban működik mint a kisangyal. Nézd át az áramköröd, méricskélj, mert valamit nagyon elnéztél.
(#) Pali79 válasza Hp41C hozzászólására (») Márc 18, 2015 /
 
Egyenlőre csak 16F van nálam, de ezt nem nagyon értem. Van egy DT táblám mondjuk 200 byte-tal, mindenféle értékkel, hogy tudom a végét jelezni a Te módszereddel?
(#) Hp41C válasza Pali79 hozzászólására (») Márc 18, 2015 /
 
- Van olyan érték, ami nem fordul elő a táblázatban: erre az értékre való komparálás
(pl. ASCII karakterek esetén a 0x00 vagy olyan karakter, aminak a 7. bitje 1.)
- Nincs ilyen érték: darabszám figyelése.
(#) Pali79 válasza Hp41C hozzászólására (») Márc 18, 2015 /
 
Értem! Akkor marad a második variáció, mert egy kép esetében minden előfordulhat.
(#) Pali79 válasza nedudgi hozzászólására (») Márc 19, 2015 /
 
Nem akar működni ez a DT -vel létrehozott tábla dolog. Egy címke alá betettem a DT táblát, CALL -lal hívom az adatokat belőle sorba és rutinnal feldolgozom. De mindig csak az elsőt olvassa be belőle. Mit csinálok rosszul?
  1. ...
  2.                 call            Picture
  3.                 movwf   lcdadat
  4.                 call    LCD_write
  5. ...
  6.  
  7. Picture
  8.         DT      0x03, 0x05, 0x01, 0xFF, .....
  9.         DT ,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF.....
A hozzászólás módosítva: Márc 19, 2015
(#) nedudgi válasza Pali79 hozzászólására (») Márc 20, 2015 /
 
Hol növeled meg a címet?
Az AN556 sokat segíthet.
(#) ktamas66 válasza Pali79 hozzászólására (») Márc 20, 2015 /
 
Egy BRW hiányzik (vagy addwf PCL, F).
  1. LedTable
  2. BRW
  3. DT 0x11,0xB7,0xC1,0x83,0x27,0x0B,0x09,0x97,0x01,0x03,0x05,0x29,0x59,0xA1,0x49,0x4D
A hozzászólás módosítva: Márc 20, 2015
(#) Pali79 válasza nedudgi hozzászólására (») Márc 20, 2015 /
 
Így kéne?
  1. Picture
  2. addwf PCL,F
  3. DT      0x03, 0x05, 0x01, 0xFF...
  4. DT 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,....

Így sem megy, az első beolvasás után megakad a végrehajtás.
A hozzászólás módosítva: Márc 20, 2015
(#) Pali79 válasza Pali79 hozzászólására (») Márc 20, 2015 /
 
Azt hiszem sikerült!
(#) ktamas66 válasza Pali79 hozzászólására (») Márc 20, 2015 /
 
Mivel a PCL-nek csak az alsó 8 bitet használhatod max. 255 elem lehet, de ez is csak akkor, ha a Picture 00-ás címnél kezdődik. Ezt úgy biztosíthatod, hogy elé raksz pl. egy org 0x2000-et, vagy valami kerek címet.
(#) sonajkniz válasza Pali79 hozzászólására (») Márc 20, 2015 /
 
Szia!
Evvel a PCL-el én már feladtam a küzdelmet.
Sosem működött normálisan.
Használd inkább a TABLAT-ot!
(#) Zsora válasza sonajkniz hozzászólására (») Márc 20, 2015 / 1
 
Én meg annakidején a 8-bites PIC-ekkel adtam fel a küzdelmet, mert beleuntam a sok korlátozásba, meg nyomi megoldásba. A 16-bites PIC24 és dsPIC programozása egy álom hozzájuk képest. Még egy LED villogtatáshoz is inkább 16-bitest használok.
(#) zenetom válasza Pali79 hozzászólására (») Márc 20, 2015 /
 
Szia!
Ahogy a többiek is írják, (feltéve, hogy 18F-ről van szó) használd a táblaolvasó műveleteket, sokkal jobb, és 18F-re már inkább ajánlott azokat használni.
Főleg akkor tud nagy segítséget nyújtani, mikor ciklusban olvasol ki adatokat, mert van automatikus pointer növelés/csökkentés, külön utasítás nélkül! Ja, és nagyon egyszerű a használata.
(#) zenetom válasza Zsora hozzászólására (») Márc 20, 2015 /
 
18F se tetszett?
Szerk.: asm vagy C?
A hozzászólás módosítva: Márc 20, 2015
(#) Zsora válasza zenetom hozzászólására (») Márc 20, 2015 /
 
Én 16F-el kezdtem Basicben. Aztán egyre több assembly betétet kellett alkalmaznom az optimális működés érdekében, így idővel jobbnak láttam a teljes programot assemblyben írni. A regiszterek kevés száma, a címzésmódok hiánya, a szűkös bitszélesség és hiányos utasításkészlet aztán arra késztetett hogy váltsak valami korszerűbbre. Először az Atmel cuccaival szemeztem (mert 8-bites téren az AVR egyértelműen jobb mint a PIC.), de a PIC24-es család aztán megnyerte a tetszésemet minden téren. (A PIC18 család nem ad elegendő plusszt a PIC16-hoz képest. Ezért ez is kilőve.) Nálam elsőrendű dolog a könnyű és hatékony programozhatóság - assembly nyelven. Ebben a PIC24 ill. dsPIC - szerintem - verhetetlen.
Következő: »»   646 / 1210
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