14


MICROCHIP PIC ICD2 klón


Az MPLAB ICD-2 a Microchip által készített fejlesztő eszköz, amely a PIC16Fxxx , 18Fxxx, 12Fxxx mikrokontrollerekkel használható.


Mire is jó ez? Az ICD az "in curcuit debugger" rövidítése, azaz egy olyan fejlesztő eszköz, ami az áramkörbe helyezve megkönnyíti a program tesztelést.


Noha a Microchip nem tette közzé az ICD2 áramkör kapcsolási rajzát, többen megpróbálták után építeni. Az Interneten több dokumentációt találtam e témában. Ezeket átnézve, átalakítva, a speciális IC-ket kiváltva készítettem el az ismertetésre kerülő „klónt”.


Amit lehet vele:


- program letöltés - beégetés - a célkészülékben elhelyezett mikrokontrollerbe, azaz mint PIC égető is funkcionál, igaz csak az újabb típusokra. Az ICD-2 a PIC16Fxxx a 18Fxxx, 12Fxxx családhoz jó, a régi, pl. 16Cxxx típusokat, de a korábbi 16Fxxx típusok többségét sem kezeli. (Pl. a 16F627A benn van a menüjében, de a 16F627 nincs.)


- alkalmas egy program valósidejű - "real time" - nyomkövetésére, vagy lépésenkénti - "step by step" - végrehajtása, és a regiszterek értékének vizsgálatára.


Előnyök és hátrányok, az eredeti, és „mikroklubbos” ICD2:

A működtetés, a funkciók, a kezelt IC típusok teljesen azonosak, tekintve, hogy a vezérlő mikrokontroller kezelő programja is megegyezik az eredetivel. Ebből az is adódik, hogy a firmware az MPLAB újabb verzióival frissül, így a megjelenő új PIC típusok is kezelhetőek lesznek.


A MICROCHIP ICD2 a soros porton, és az USB porton is csatlakoztatható a PC-hez. Az itt szereplő csak a soros porton.


Mind a kettő tud tápfeszt biztosítani a cél áramkörnek. A MICROCHIP ICD2-nél ez egy elektronikus kapcsolón keresztül történik, míg itt egy jumper nyitásával, zárásával. Ez utóbbi nem olyan elegáns, de biztonságosabb.


A MICROCHIP változatnál a céláramkörrel egy speciális, 8-as telefoncsatlakozón keresztül tudunk kapcsolatot teremteni. Ennél a klónnál egy szokásos tüske/szalagkábeles csatlakozó van erre kiépítve. (Ez szerintem sokkal célszerűbb.)


Ahogy arról szó volt, a MICROCHIP változat USB porton is működtethető, ez esetben a tápot is kaphatja a PC-ről. Ez azonban ahhoz már nem elég, hogy az ICD-re csatlakoztatott áramkört is táplálja, ahhoz egy speciális tápegységet kell rákapcsolni. A „klónom” nem táplálható a PC-ről – hiszen nincs USB csatlakozása – ellenben egy teljesen szokványos DC dugasztáppal megoldható mind az ICD, mind a csatlakoztatott áramkör tápellátása.


A használata:


A gyakorlati használatban az ICD kapcsolódik egy mikrokontrollerhez, általában a fejlesztendő áramkörben lévőhöz. Az egyik lehetőség az, hogy a fejlesztendő panelt eleve felkészítjük az ICD csatlakoztatáshoz - egy példa erre a "mikroklubbos" PIC DEMO panel - vagy csinálunk egy kis adaptert, a szükséges csatlakozókkal PIC és a fejlesztendő panel közé. (Ilyen is van a mikroklub kínálatban. Ennyi ingyen reklám egyszerre ...)


A debugger egyszerű, és olcsó felépítésű, cserébe áldozni kell a PIC erőforrásaiból. Az ICD a működéséhez, az MCLR/Vpp láb, és az RB6 és RB7 portlábakat használja a programozáshoz, és a kommunikációhoz, ezért ezek - debugger módban - a célkészülékben nem használhatóak. De, ha csak mint "égetőt" használjuk az ICD-t, akkor az égetés után az ICD-t leválasztva, a beégetett program természetesen tudja használni az előbbi portokat is.

Az áramkör:



Az áramkör lelke a működtető programmal beégetett 16F877-es mikrokontroller.


A soros kommunikáció az IC2-es MAX232 kettős meghajtó/fogadó IC-n keresztül valósul meg. Az IC tartalmaz egy kapacitív feszültséggenerátort, ami előállítja a soros átvitelhez használt plusz-minusz 12 voltos feszültséget, és a TTL/RS232 szintek közti szintátvitelt is megoldja mindkét irányban.


A PC-ICD összeköttetéshez egy 6 eres szalagkábelt használhatunk. A panelra egy 10-es tüskesoros csatlakozó (CS1) került, amire tüskére nyomható 10-es szalagkábel csatlakozó kerülhet. A hat vezetéket a kapcsolási rajzon szereplő CS1-PC táblázat szerint kell bekötni. A kivezetés számok, és a zárójelben levő megnevezések a PC-n található szabvány 9 pólusú RS232 csatlakozó aljzatának kivezetéseire vonatkoznak. (A 25 pólusú csatlakozóhoz használjunk átalakítót, vagy módosítsuk a kábelbekötést.) A soros port DTR kivezetését - a CS1 3-as kivezetésére megy - a PC-s működtető program a reszeteléséhez használja. Arról hogy a DTR-en megjelenő +/-12 volt helyett csak nulla/öt volt kerüljön az IC1 MCLR (reset) lábára, az R6, D1, D2 gondoskodik.


Az égetőfeszültséget az IC4-es LM317 állítja elő. Az LM317 kimeneti feszültsége az ADJ lábára adott feszültséggel szabályozható. Egy kis matek: az ADJ lábra jutó feszültséget az R8/R9 határozza meg. Az IC kimeneti feszültségét megadó képlet a következő: Vout=1.25V(1+R8/R9) ahol az 1.25V az IC belső referencia feszültsége. Behelyettesítve: VO=1.25V(1+5600/560)=12.25 V az eredmény.


A PIC égetésékor, annak MCLR lábára nulla, vagy öt, vagy a kb. 12.5 voltos égetőfeszültség kerül. Az égetőfeszültség ki/bekapcsolását a T1/T2 végzi. Ha a T2 nyitva, a VPP lábon megjelenik az égetőfeszültség. Ha T2 zárva, de a T4 nyit, akkor a D4-on keresztül itt kb. 4.7 volt lesz. Ha pedig a vezérlő mikrokontroller RC2 portjának alacsony szintre kapcsolásával a T3-at nyitjuk, akkor az MCL kivezetés feszültsége pár tized voltra csökken.


Ha a kész áramkört dobozoljuk, akkor a legegyszerűbb, ha a "G436"-os jelű műanyag dobozt használjuk, mivel a felfogató csavarok helye az alappanel sarkaiban ehhez vannak igazítva.


Beüzemelés, tápellátás, tesztek:


Kapcsoljunk tápfeszültséget készülékre. A szükséges tápegység paraméterei: 16V-25V DC, legalább 300mA. Egy kis magyarázat ehhez. A tápfeszültség alsó határát az adja, hogy az LM317-nek legalább 15 volt kell, hogy elő tudja állítani a PIC égetőfeszültségét. A felső határt a 7805/LM317 melegedése, illetve a rájuk kapcsolható maximális feszültség - kb. 35 volt lenne - adja meg. (Egy átlagos - nem stabilizált kimenetű - 12V-os hálózati adapter üresjárati feszültsége kb. 18-20V így e fenti igényt, általában kielégíti.) A bekapcsolt tápfeszt az L3 világítása jelzi.


Az első használat:


Először az ICD-hez csatlakoztatott áramkör nélkül próbáljuk ki az áramkört.


- Ha még nincs a gépünkön, installáljuk az MPLAB programot. A program 7.2-es verzióját használom. (Letölthető az Internetről, de a mellékelt "mikroklub" CD-n is megtalálható.) A lépések sorban:



De mielőtt tovább mennénk, van egy kis dolgunk. Az ICD2 dokumentációja figyelmeztet arra, hogy a használt soros port FIFO bufferét tiltsuk le! Ezt a Windows eszközvezérlő menüjében, a COM portoknál rehetjük meg:







Válasszuk ki a portot, ahova az ICD-t csatlakoztattuk,

majd a „Port beállítása” menüben „Speciális…” beállításoknál ki kell venni a pipát a FIFO pufferek használata elől:



- Most indítsuk újra a rendszert! (A windowst)


- Adjunk az ICD-nek tápfeszt, az L3 lednek égnie kell.

- i
ndítsuk el az MPLAB-ot, a „Debugger” menüben pedig válaszuk ki az "MPLAB ICD 2"-t:



- Ezután indítsuk az „MPLAB ICD2 Setup Wizard”-ot, azaz az ICD2 beállító varázslót! Az első lépés, hogy kiválasztjuk a használandó soros portot, és a baud sebességet. Először a 19200 baudot válasszuk, ha azon stabil a működés, akkor később megpróbálhatjuk az 57600-at is.

















A második lépés, hogy kiválasztjuk, hogy a céláramkör tápját az ICD adja, vagy arra külön tápot használunk. Tekintve, hogy esetünkben ez a tápbekapcsolás hardveresen, azaz egy jumperrel van megoldva, lényegtelen mit választunk.



Ha azt akarjuk, hogy az MPLAB automatikusan csatlakozzon az ICD-hez, akkor pipáljuk ki:




A negyedik lépés, a működtető szoftver automatikus letöltésének engedélyezése. Engedélyezzük! Ehhez egy kis magyarázat. Az MPLAB a 16Fxxx, 18Fxxx, 12Fxxx mikrokontroller családok kezeléséhez más és más szoftvert tölt be az ICD vezérlő mikrokontrollerébe. Ezt automatikusan elvégzi, ha azt észleli, hogy a kezelendő IC, és az ICD-ben lévő „firmware” nem passzol egymáshoz.


Végeztünk:
























Illetve még kapunk egy figyelmeztetést az MPLAB-tól, hogy a használt soros port FIFO bufferét tiltsuk le:


(De mi már letiltottuk, ugye?)


Ezután ha a „Connect”-re kattintunk, akkor az MPLAB megpróbálja felvenni a kapcsolatot az ICD-vel:


Az MPLAB letölti a kezelőszoftvert a vezérlő mikrokontrollerbe:












A Settings menüben ellenőrizhetjük az ICD működőképességét. Ekkor a számítógép felveszi a kapcsolatot az ICD-vel, kiolvassa a beállított opciókat, a „Power” menüben az általa mért égetési és tápfeszültséget. Ezek az értékek azonban általában pontatlanok! (Talán, mert nincs benn egy pontos feszültség referencia.) Tehát a kijelzett táp és égető feszültséget ne vegyük "komolyan”! A valódi értéket egy voltmérővel ellenőrizhetjük, pl. a 7805 és az LM317LZ kimenetén. (De a készen küldött áramkörben ez persze már bemérve.)


Ha mindent rendben találunk, akkor csatlakoztathatjuk az ICD-t a céláramkörhöz, és kipróbálhatunk egy ICD-re felkészített projektet. Erről bővebben , egy PIC-es példa program lefordításával, a "project" létrehozásával, annak letöltésének folyamatával foglalkozik az MPLAB6.PDF dokumentáció.


Ha mint égetőt használjuk az ICD-t:


Az újabb kiadású mikrokontrollerek többsége tartalmazza a soros programozás lehetőségét. Ez lehetőséget ad arra, hogy a mikrokontrollert az áramkörben - in circuit - programozzuk. Ez nagyon előnyös, pl. programfejlesztésnél, mivel nem kell a mikrokontrollert minden egyes program verzió kipróbálásához kiemelni a foglalatából az égetéshez. Az ICD is használható, mint soros programozó, igaz csak az általa "ismert" PIC típusokhoz.


Lássuk ezt egy példán keresztül, mondjuk a PICOK04.HEX file-t égessük be egy 16F877-be! (Ez egy "futófény" programocska - a PICDEMO panelra készült mintaprogramok egyike - ami az RB0-7 portokat kapcsolgatja be/ki, sorban egymás után. A hex file a mikroklub CD-n a mikroklb\picoktat könyvtárban található)


Akkor a lépések sorban:


- Csatlakozzunk az ICD-vel a PC-hez, az égetendő áramkörhöz, vagy PIC-hez, és biztosítsuk a tápot.

- Indítsuk az MPLAB-ot!


- Lépjünk be a "Programmer" menübe, és ott jelöljük ki az "MPLAB ICD 2"-t:










Az MPLAB felveszi (megpróbálja) a kapcsolatot az ICD-vel. Kicsit pislákol az L2 LED, majd a monitoron pedig megjelenik az ICD ablak:



Olvassuk be az égetendő .HEX fájlt! A „File” menü „Import” menüjére kattintva, tudunk a fájlok között válogatni. Keressük meg a PICOK04.HEX-et :


(Ne a File Open menüt használjuk, ez esetben csak az Import a megfelelő!)

Ha beolvastuk be a file-t, akkor megnyithatunk egy ablakot, hogy lássuk mit is olvasunk/égetünk be! Menjünk a "Wiew" menübe, azon belül a "
Program Memory"-ra kattintsunk:


Ahogy fent látjuk, megnyitott ablakban megjelennek az égetendő adatok, sőt, az MPLAB mindjárt vissza is fordítja az adatokból az assembly utasításokat, és azokat is megmutatja.


Válasszuk ki a PIC típust, amit égetni akarunk! Kattintsunk a „Configure” menü „Select Device” ablakra:









Ott láthatjuk éppen milyen PIC van beállítva, és válasszuk ki a PIC16F877-et!

Az ICD rögtön le is ellenőrzi, hogy tényleg a beállított IC lóg a kábel végén:



Ahogy fent látható, az ICD 16F877-et talált, ez rendben is van.


Megnézhetjük, valamint ha akarjuk, állíthatjuk a fuse-okat:


Szóval végezzük el mikrokontroller kiválasztást, és a "fuse" beállításokat. Ha titkosítani akarjuk a tartalmat, akkor válasszuk a "code protect" On opciót. (Itt több lehetőség közül választhatunk, a teljes programmemória, vagy annak csak egy részének a titkosítása is kijelölhető.)


És akkor következhet a programozás! Adjuk ki programozás parancsot, azaz kattintsunk az ICD ablak Program pontjára.


















Az ICD törli, majd programozza a programmemóriát, az azonosító bájtot, aztán ezt visszaellenőrzi, és beégeti a fuse biteket. Az ICD státusz ablakában, sorban a következőket fogjuk látni:



Ha titkosítva volt az IC, akkor előtte törölni kell, de ha be van ikszelve az "Erase before programming", akkor úgyis mindig van egy törlés.


Ha ezt láttuk, akkor minden rendben. Egy kattintás a „Relase from Reset-re,



és már fut is a program. (Ha a PICDEMO panel volt a cél áramkör, akkor szó szerint fut a program, ugyanis indul a futófény az RB portra kötött LEDeken...)


Készült egy programozó adapter is, amivel az ICD2 kiegészítve már valóban egy komplett PIC programozó. Az adapter a DIP tokos 8, 18, 28 és 40 lábú mikrokontrollerekhez használható. Ezek a széles vágatú programozó foglalatba csíptetendők. Az áramkörről egy külön leírás szól, az ADAPICD.PDF .


Kapcsolódó dokumentációk:


Az ICD teljes értékű PIC programozó lesz, a karos IC foglalatos programozó adapter csatlakoztatásával. (ADAPICD.PDF)


Egy konkrét példán keresztül, azaz az MPLAB-ban egy MICROCHIP-es példa program lefordításával, egy "project" létrehozásával, annak letöltésének folyamatával foglalkozik az MPLAB6.PDF dokumentáció.


Szintén a témához kapcsolódik a PICDEMO panel dokumentációja.(PICDEMO.PDF)


Valamint PIC16F87x mikrokontrollerrel működik a vezérlési/automatizálási feladatokra készült PICPLC16, és a PICPLC8 áramkör. Ezekről egy-egy külön leírás szól. (PICPLC8.PDF, és PICPLC16.PDF)


Az előbbi leírások letölthetőek a lenti honlapcímről, vagy megtalálhatóak a „mikroklub cd”-n.


Végül nincs más hátra mint hogy sok sikert a használathoz. Viszontlátásra: Torkos Csaba 8100 Várpalota Táncsics u. 7. Telefon: napközben: 88/473-784, egész nap: 06/30/9472-294, email: mikroklub@vnet.hu internet: http://www.eprom.hu , http://www.mikroklub.hu