A PIC
"Egy újszülöttnek minden vicc új"
Nyilván itt a PH!-n számtalan olyan emberke van, akik profi módon művelik a "PIC-műfajt". Ez a cikk csak annyiban szól nekik, hogy lektorálják, segítséget nyújtsanak az olyan kezdőknek, mint én.
Igazából azoknak szól a cikk, akik még csak nem is hallottak róla, vagy csak tervezgetik, hogy nekiinduljanak a PIC-kezésnek.
Kis kedvcsinálónak....
Mi is a PIC?
A PIC processzorcsalád a Microchip által gyártott olcsó egylapos komplett számítógép, elsősorban vezérlési feladatokra. Ilyen - és ehhez hasonló - vezérlők találhatók a háztartási gépekben, riasztókban, kaputelefonokban, audió berendezésekben és még sorolhatnám.
Rendkívül széles választékban kapható a 8 lábú mini verziótól a 100 lábú óriásig.
A PIC RISC processzor, vagyis csökkentett utasítás készletű. Ezért általában igaz rá, hogy egy utasítást 1 ciklusidő alatt végez el. De itt van egy kis csalás: a beállított órajelet 4-gyel osztja. Így egy 4MHz-en járó PIC valójában 1us alatt végez el egy utasítást.
Órajelük 0Hz-től 20MHz-ig beállítható. Tápfeszültségük 2-5,5V-ig lehetséges, miközben áramfelvételük uA...mA nagyságrendű. Így 2db ceruzaelemről akár hónapokig működőképesek:
Lásd:
- PIC16F627 - 3.0V to 5.5V
- PIC16LF627 - 2.0V to 5.5V
• Low power consumption
- < 2.0 mA @ 5.0V, 4.0 MHz
- 15 µA typical @ 3.0V, 32 kHz
- < 1.0 µA typical standby current @ 3.0V
Mivel komplett számítógépekről van szó, található bennük (általában) néhányszor 10...100Byte ram, FlashROM a program tárolására (típustól függően 0,5k, vagy több), de vannak egyszer programozható típusok is (OTP), esetleg további Flash a változók mentésére.
Én a 16F627-et választottam - kb. 600Ft -, ezért inkább ezen keresztül mutatnám be a főbb képességeit.
A Vss, VDD a két tápfeszültség.
Az RA, RB lábak szabadon konfigurálhatók kimenetként ill. bemenetként. Ha bemenetként állítjuk be, akkor szoftverből bekapcsolhatók felhúzó ellenállások, így külső kiegészítés nélkül köthetünk rá nyomógombokat. Kimenetként 5-10mA-rel terhelhetők.
(1-2 kivételtől eltekintve a konfigurációt a megírt szoftverben kell beállítani.)
Ha "beáldozunk" digitális I/O-kat, akkor analóg komparátor bemeneteket is kaphatunk: AN.
Csak felsorolom: lehetséges még Vref-et kivezetni, van Timer bemenet, megszakítás (INT) bemenet, USART (Tx,Rx), komparátor kimenet (CMP), PWM kimenet, órajel kimenet szinkronizáláshoz (CK).
Az MCLR (RA5) alaphelyzetben a processzor reset bemenete.
Az órajel előállítása széles tartományban lehetséges, mint fentebb írtam: DC-20MHz. Ez több módon történhet:
-kapcsolhatunk hozzá kvarc-kristályt
-lehetséges kerámia-rezonátort is használni
-vagy csak egy egyszerű R-C tagot, ha nincs szükség nagy pontosságra
-vagy külső órajel generátort kapcsolunk rá
-a legegyszerűbb viszont az, hogy az IC-ben található egy 4MHz-es oszcillátor, ezt aktiváljuk és ekkor ezek a lábak is felszabadulnak I/O-nak
Azt, hogy melyiket választottuk, a programunk feltöltésekor kell beállítani, hiszen értelemszerűen, amíg nem megy az órajel, nem fut a program sem, így hiába is konfigurálhatnánk szoftverből.
Ami belül van:
-35db utasítás
-1k Flash a programnak
-224Byte RAM a változóknak
-128Byte EEPROM a változók tárolásának
-3db Timer
-néhány speciális regiszter a hardware beállításoknak
-Watchdog timer
-stand by üzemmód
-és még néhány speciális funkció
A végén kezdem.
Lássuk előbb a program feltöltésének módját:
Az égető
Természetesen lehet készen is kapni fejlesztőeszközt. Kb 10.000Ft-nál indulnak az árak. Elsőre nem akartam ilyenbe beleugrani.
Ezért készítettem egyet. Vannak korlátai, de kezdetnek megfelel.
(Profibb égetővel lehet "online" is programozni. Vagyis, az IC a már kész áramkörben van. Úgy tudom, ezzel nem lehet.)
Másrészt az égetőt összevontam egy tesztelő áramkörrel is. Ezen ledek és nyomógombok találhatók. Minden I/O vonal egy tüskesoron-jumperen keresztül csatlakozik ezekre, így a jumper(ek) levételével közvetlenül hozzáférhetők az I/O-k, ez által egy külső (próba) áramkörrel is összekapcsolható a PIC.
A kapcsolása:
Az áramkör külső adapterről működik, mivel a PIC égetéséhez 13,5V szükséges.
A PIC-ek némelyike -pl ez a típus is- átállítható "alacsony feszültségű programozásra" (5V), ami az "online" programozásnál nagy előny.
Az égető a PC soros portjára csatlakozik. (Egy rossz PS/2-es billentyűzetről levágtam a kábelt és ezt használtam fel.)
Hogy univerzális legyen az égető, található rajta egy plusz tüskesor, amin hozzáférhetők az égetéshez szükséges jelek, így eltérő lábkiosztású IC is programozható vele. (Akár alaplapi BIOS-Flash is, mivel a szoftver ismeri azokat a típusokat is.) Fontos még, hogy a BAT85 típusú diódáknak Schottky-knak kell lenniük, mert ezek védik a PIC bemenetét a soros port által küldött túl nagy feszültségtől.
Az áramkör másik fele a tesztelő. Itt a kvarc foglalatot kapott, így kihasználhatjuk, hogy egyes PIC-ek belső oszcillátorral is bírnak, vagy tetszés szerinti frekvenciájú kvarcokat alkalmazhatunk..
A kék jumperek a bemenetek, a pirosak a kimenetek.
A betáp oldalon van egy kapcsolónak is hely, de most oda is egy jumpert tettem. Ami viszont abszolút nem praktikus így. Majd csere lesz.
A nyák "vasalásos" technikával készült. (A tervek a cikk végén linkelve.)
Ennek a fajta égetőnek a neve JDM programmer.
A szoftver
Töltsük le az IC-Prog nevű ingyenes programot.
Mielőtt PIC-et választunk, ellenőrizzük, hogy az égető szoftver támogatja-e.
Az sem árt, ha olyan PIC-et választunk, amihez van működő mintaprogram valahonnan. Én elég sokat vacakoltam, mire működőképessé tettem egy, a neten található példaprogramot, ugyanis tudni kell: az egyes típusok között memória kiosztásban, speciális regiszterekben elég nagy különbség van az eltérő hardware-képességek miatt.
A már megírt program beégetéséhez csak 1-2 dolgot kell beállítanunk.
Melyik soros portot használjuk:
Aztán be kell tölteni a *.hex file-t az IC-prog-ba, kiválasztani a PIC típusát.
Miután ez megvan, még állítsuk be, milyen oszcillátort használ a PIC (XT=kvarc), letiltjuk-e a kód visszaolvasását, használunk-e Watchdog-ot a programban, de akár gyártói ID-t is beállíthatunk.
Ez után indulhat az égetés:
Az égetés pár másodpercig tart. Majd végrehajt egy verify-t. Ha a nullás címen hibát ír ki, valószínűleg nem írtunk be semmit, ellenőrizni kell az elektronikát, a csatlakozásokat.
A sikeres égetés után áramtalanítunk és érzéssel áttesszük az IC-t a tesztelő tokba, vagy a végleges helyére.
A programírás
A legegyszerűbb az, ha a PIC Simularor IDE nevű programot szerezzük be.
Ebben írhatunk is programot, majd rögtön ellenőrizhetjük is. A 'Tools' menüben választhatunk segédeszközöket. Például a kimeneteken lévő ledek szimulálását. A portokat viszont valószínűleg itt át kell állítani.
Vannak a PIC-hez 'C' fordítók is, de kezdetnek az a legjobb, ha megmaradunk a hardware-közeli Asmon programozásnál. ...a gépi kód feeling-je. Később jöhet a 'C'. (Esetleg az MPLABIDE)
Az editor ablakába szépen sorban begépelhetjük a kódunkat. Ez után a 'Tools' menü 'Assemble & Load" parancsával lefordíthatjuk és a szimulátorba betölthetjük. A 'Start'-tal indíthatjuk a futtatást, akár soronként is. (Sebesség: Rate menü.) Közben figyelhetjük a regisztereket.
Programozáskor nem árt, ha az adott PIC memória/regiszter kiosztását, pdf-jét sűrűn tanulmányozzuk.
Az így létrehozott *.hex file-t már égethetjük is.
Letöltések:
Itt megtaláljátok az Eagle terveket és a 16F627-re megírt minta-kódokat, valamint az égető programot.
Bízom benne, hogy felkeltettem az érdeklődésedet.
További szakmai (és kevésbé szakmai) írásaim.
Update1
Amennyiben USB/RS232C replikátort használok, az írási/olvasási folyamat lelassul.
Ha az alaplapi portot használom, gyors, de sokszor "verify" hibát kapok, még akkor is, ha az írás valójában OK. (Az egyik F627 mindig jó, a másik F627-nél pedig mindig hibaüzenetet kapok vissza.) Ezért visszavettem az eszközkezelőben a baud rate-t 9600-ról 1200-ra. Így jónak tűnik néhány teszt után.
Update2
Anno én eredetileg egy panelgyártó cégtől rendeltem meg az írásban található programozó paneljét. 2db-ot. Nem győztem kivárni és ezért megcsináltam magamnak. Erre ma megjött 12db!!!
Tehát1300Ft ellenében akinek kell, már postázom is. Ebben benne van a postaköltség is.
A panel egyszerű, sima pákával beültethető. Kell hozzá az a pár alkatrész. Sőt a pozíciók is rá vannak szitázva.
Ezek a panelek csak annyiban térnek el az írásban szereplőtől, hogy az égető el van forgatva, így a két IC-tok egymás mellett van, illetve van egy LED az égetési folyamat indikálására.
Ez az:
Az ehhez a panelhez tartozó rajzok:
kapcs.rajz
beültetés
TOP
BOTTOM