Ezen az oldalon Mikrochip PIC-es ismereteket szeretnék megosztani az érdeklődőkkel, és az általam készített programozót ismertetem.
Ezek a Programozható IC-k a legolcsóbb programozható mikrovezérlők, és rendkívűl széles körben felhasználhatók. A felhasználásukhoz fel kell programoznunk őket. Ez egyrész áll a program megírásából, és a letölthető .HEX file előállításából, másrészt szükségünk van egy adapterre, amely segítségével ezt betöltjük a PIC-be.
Adatlapok - www.microchip.com
Beszerzés - www.chipcad.hu
A programozáshoz rendkívűl sok nyelv áll a rendelkezésünkre, az Assembly-től kezdve, a Basic-en, a Pascal-on keresztűl a C-ig. A Microchip szabad, komplett fejlesztő környezetet és Assmbly-t biztosít a PIC áramkör családhoz.
Az assembly előnye, hogy minden egyes utasítást mi adunk ki a PIC-nek, mindent mi határozunk meg, csak sajnos mindent nekünk kell közben fejben tartani. Egy komplexebb vezérlési szerkezetbe úgy bele tudok zavarodni, hogy órákig bogozom ki, ha elvesztem a fonalat. Tény, hogy assemblyben lehet a legrövidebb programot írni. Nekem a C programnyelv a legszimpatikusabb, korábban is dolgoztam már benne, más processzorra is írtam C-ben programot. Itt jegyezném meg, más processzorokra nem mindig ilyen bőséges a programozási nyelvek kínálata, általában assembly és C áll rendelkezésre. Úgy gondolom, a C ismerete egyfajta univerzálisabb tudást jelent. Több C-t is megvizsgáltam, nekem a CC5X C compiler ( B Knudsen Data - www.bknd.com) tetszett a legjobban. Rendkívűl tömör kódot generál, és van FREE változata, ami 1024 szó hosszúságig fordítja le a programot (assembly-t, generál hosszabbat is, azt lefordithatjuk assembler-rel). Szerintem ebbe nagyon sok minden belefér, sőt csak ritkábban van szükség többre, de megvehetjük a teljes verziót is. Továbbá azért is tetszett ez a C, mert nem rejti el a saját rutinjait olyan library-kbe, emelyeknek a forrását azután nem kapjuk meg. Sajnos saját library-t sem hozhatunk létre benne. Viszont pontosan le van írva hogyan kell egy új PIC-hez header file-t készíteni, ha nem lenne meg. Egy kissé kevés a CC5X C-ben írt mintaprogram, igaz minden fontos programozási problémára találunk hozzá példát.
Kezdetben a PIP02 programozó azért volt szimpatikus, mert nem igényelt sok alkatrészt, nem kellet hozzá külső tápfesz, csak a soros portra kellet rádugni. Több probléma is volt vele. Nem mindegyik alalplapból jött ki akkora fesz, ami elég lett voln a PIC égető feszültségéhez. Nem lehetett vele a PIC-eket az áramkörbe beépítve programozni. A programja elég kevés PIC-et ismert és DOS alatt futott. A vezérlő programra a megoldást az IC Prog (Bonny Gijzen - www.h2deetoo.demon.nl) jelenti, ami a jelenlegi verziójában nem tartalmaz korlátozást. A program Win9X alatt fut, a legtöbb PIC-et ismeri, valamint több programozó adaptert is képes kezelni. Az általam készített adapterhez a JDM84 beállításait kell használni. A kapcsolás az eredeti PIP02 tovabbfejlesztett változatának az általam továbbfejlesztett változata, talán nevezzük egyszerűen 3BMI_PIP-nek a továbbiakban.
A 3BMI_PIP kapcsolás:
A programozás érdekes módon a soros porton nem a szokványos TXD adat kimeneti vonalon keresztül történi, ahogy első nekifutásra gondolná az ember, hanem a RTS és DTR jelek kapcsolgatásával. A PIC olvasása a CTS bementen keresztűl történik. A soros portnak szabványosan +/- 12V-os kimenő feszültség szinteket kell produkálnia. Azért lehet a szintillesztést néhány ellenállásra bízni, mert a PIC minden lábára belül egy-egy vágódióda van ráintegrálva a föld (Vss) és a táp (Vdd) felé, amelyek levágják ezeket +5.6V...-0.6V-nál. A soros port bemeneti vonalai 3V-nál komparálnak (vagyis felette 1-nek, alatta 0-nak érzékelik a szintet), amit így meg tud hajtani a PIC 0...5V-tal. A PC-knél a TXD kimenet programból invertálható, ez biztosítja a PIC programozásához szükséges táp és égető feszültség. A 470uF, és a 14V-os zéner teszi lehetővé egyfajta töltés pumpálással gyengébb soros vonalak esetén is a megfelelő égető feszültség előállításást. Alap helyzetben a TXD vonalon -12V van. A zéner nyitó irányban diódaként viselkedit, és a 470uF-os kondenzátor feltöltődik 12V-ra. Amikor programozásra kerül a sor, TXD +12V-ra változik, amihez hozzáadódik a kondenzátor 12V-ja, és egyböl agyoncsapná a PIC-et, ha nem fogná meg a 14V-os zéner. Lehetne kisebb kondit is választani, de úgy találtam, hogy kell ekkora, ha biztonsággal akarjuk programozni a nagyob PIC-ek 8kszó memóriáját is. A 14V-os zéner helyett nem jó két kisebbet sorba kötni, mert azt tapasztaltam, hogy a 7...8V feletti zénerek meredekebben kapcsolnak, vagyis kisebb zenerek esetén a névleges feszültség alatt is jelentös áram folyik a diódán át, ami a programozás alatt az égetőfesz lecsökkenéséhez vezet.
Programozófej:
Az alábbiakban ismertetett programozó fej és kiemelő adapterek lényege, hogy segítségükkel In-Circuit, vagyis a kapcsoláson belűl tudjuk a PIC-et programozni. Így nem kell minden újabb próbálkozáshoz az uC-t a foglalatból kitépni, égetőbe betenni, majd vissza.Valahol az interneten találokoztam az adapterek ötletével. A föbb típusokhoz készítettem kiemelő adaptereket. A programozó fejen található egy négy áramkörös morse (átkapcsoló) kapcsoló, melynek segítségével a programozásban résztvevő lábak a programozó áramkörhöz, vagy a PIC-es panelhez csatlakoztathatók, vagyis egyik állásban a PIC égethető/kiolvasható, mig másik állásban a panelhoz kapcsolódik. A következő PIC-ekkel próbáltam ki: 18: 16F84, 16F628; 28: 16F73, 16F870, 16F872; 40: 16F877.
18-28-40 lábú adapterek, és egy régebbi programozó fej.
Az adapterek alulnézetből. A konstrukció nem túl bonyolult, de a levágott ellenálláslábakból álló szőrözés idegörlő. A programozó fej legnehezebben beszerezhető alkatrésze a 4 db morse (átkapcsoló) érintkezőt tartalmazó kapcsoló. Én sem tudom, honnan került a fiókom mélyére ez a darab, talán régebbi zsebrádió hullámsáv váltója lehetett ifjabb napjaiban.
Munka közben:
A panelek beültetési rajza:
Itt a vége, fussatok el véle, legyetek az én vendégeim, innen letölthetitek a hozzávalókat összecsomagolva.