USB-s ICD2 programozó és debugger MPLAB-hoz

Már korábban építettem egy ICD2-es programozó áramkört, ami egyébként még most is tökéletesen működik, igaz dobozolva nem lett. Programozásra remekül használható, viszont annak hátránya, hogy RS232 portra csatlakozik, így a sebessége viszonylag kicsi, így debugger üzemmódban már mondhatni lehetetlen használni, igaz akár arra is képes lenne, de a soros port korlátot szab ezen fajta felhasználásának. PIC-es fejlesztések irányába szeretnék majd a későbbiekben tevékenykedni, így elengedhetetlen egy jó programozó ami segíti a munkát és még hibakeresésre is használhatom debug üzemmódban. Erre készült az előző programozó is, de sajnos a debug része nem volt használható az említett hátrányok miatt.

Néhány barátom hívta fel a figyelmem egy USB-s ICD2-re. Elhatárzoták, hogy megépítik az áramkör és végül engem is rávettek, hogy készítsek magamnak is egyet. Így nekiláttunk az alkatrészek beszerzésének, majd az építésnek.

Maga az áramkör megépítése azért is tűnt jó ötletnek, mert a későbbiekben még jó szolgálatot tehet, valamit olyan kapcsolásról van szó, amit már elég sokan utánépítettek. Mi a Potyo által tervezett változatot építettük meg. A fórumán rengeteg leírás van az építésről és a hibakeresésről, szóval ha valami probléma adódik, akkor segítenek a fórumán megoldani azt, illetve mivel többen is összeraktuk a programozót, megosztottuk tapasztalatainkat egymással, így könnyen ment a munka.

Kezdeti munkák és nehézségek, avagy a doboz visznya a NYÁK lappal

Én voltam egyedül annyira perverz, hogy az eredetileg egyoldalas, furatszerelt alkatrészekkel tervezett NYÁK-ot, teljesen átterveztem kétoldalas panelra, az IC-k kivételével pedig minden alkatrészt felületszereltre cseréltem. A NYÁK terv elkészítése 1 napot vett igénybe, de végül elkészült. Előtte mindenképp beszereztem egy műszerdobozt, hogy tisztában legyek a panel méreteivel. A csatlakozókkal volt némi probléma, ugyanis, ha azokat a főpanelra terveztem volna, akkor nem tudtam volna a házba szerelni az áramkört, mivel azok úgy nem fértek be. Ekkor némi módosítás történt a NYÁK-on. Fél nap alatt megvolt az apró beavatkozás. :) Az alkatrészeket tovább zsúfolva szorítottam annyi helyet, hogy a főpanelt le tudja rövidíteni és beférjen mellé a két csatlakozó egy külön panelon.

A doboz belső oldalán nútok vannak kialakítva az áramköri panel szerelésére. Gyakorlatilag annyi az egész, hogy egy méretre tervezett panelt egyszerűen be kell csúsztatni a dobozba és ezzel meg is van oldva a rögzítése.

Íme a doboz és a kimaratott, kifúrt NYÁK lemez:

 

A doboz egyébként a Hammond gyár terméke. Eloxált alumíniumból készült, a két végén lezárásképp műanyag fedelekkel. A felső oldala kissé mélyített, így tökéletesen beilleszthető oda egy vékony előlap, vagy fóliabilletyűzet. Jár hozzá 4 áttetsző gumitalp és 5 db csavar a két fedlap rögzítéséhez 2-2. Egy pedig tartalék, ha valaki elszórná valamelyiket véletlenül. Mi mindenre gondolt a gyártó… Maga a doboz nem éppen olcsó kategóriás, 2508Ft-ért vesztegetik, viszont szeritnem mindenképp megért ennyit, mert nagyon jól lehet vele dolgozni és a végeredmény kinézete sem utolsó.

Beültetés és néhány megoldás

Miután elkészült az NYÁK lemez, kezdődhetett az alkatrészek beültetése. Elsőként a lagepróbb komponensekkel kezdtem mind a két oldalon, majd jöttek az IC foglalatok és a többi nagyobb alkatrész. Az ellenállások beszerzésénél figyeltem, hogy lehetőleg 1%-os tűrésűeket válasszak. Ez azért fontos, mert a kapcsolási rajz szerint az áramkör bizonyos pontjain található néhány feszültségosztó. Ezek segítségével a PIC feszültséget mér. Ezért fontos ezen hálózatok pontos beállítása. Igazából a többi helyen ahol nincs megjelölve a tűrés, ott 5%-os ellenállásokat is használhattam volna, de úgy voltam vele, hogy akkor már minden legyen profi. Árban sincs nagy különbség a két típus között, meg általában előnyben részesítem a jobb minőségű alkatrészek beszerzését főleg, ha nem túl nagy az árkülönbség.

NYÁK terv készítésnél ügyeltem arra, hogy minden rétegátmenet valamilyen furatszerelt alkatrészlábnál történjen és ne kelljen ezért külön fúrni, meg áthidalásokat, átkötéseket beépíteni, ezeket amúgy sem szeretem, mert elég aprólékos munka. 7db SMD átkötést azért így is tartalmaz a panel.

A beültetés után összeillesztettem a főpanelt és a csatlakozós modult. Ide sima ellenálláslábakat használtam, a tűskesoros csatlakozót nem kedvelem, mert sűrűn kell rakni őket, és az átmérőjük megkívánja a 0,9mm-es furatokat. Túl nagy forrszemeket nem tudok kialakítani egymás mellé, így kifúráskor mindig sérül valamennyire a forrszem, ráadásul ebben az összeállításban azért a beforrasztás sem ment egyszerűen, főleg mikor a két panel már össze volt fogva néhány ponton.

Az eredeti rajzon a jumperes átkötés helyett én egy mikrokapcsolót használtam, így nem kell megbontani a burkolatot, ha esetleg át kell kapcsolni az áramkört a másik állásba. Ennek egyébként az a feladata, hogy “nagyimpedanciás (HiZ) módba tudjanak kerülni a PGD és PGC lábak. Ez főleg a kis lábszámú chipeknél hasznos, mert így az ICD2 lehúzása nélkül is tudjuk a céláramkörben futtatni a programot úgy, hogy az ICD2 nem zavar be. Az eredeti képen (lentebb letölthető) a bal felső sarokban levő jumperrel kiválasztható, hogy akarjuk-e a leválasztást (jobboldali helyzet), vagy akarjuk, hogy a CMOS kapcsolók folyamatosan vezessenek (baloldali helyzet). Ha a leválasztást választjuk, akkor csak programozásra használható az ICD2, mert csak addig lesznek a CMOS kapcsolók vezető állapotban, amíg a programozófeszültség rajta van a céláramkörön. Ha debuggolni akarunk, vagy az újabb, 16 bites és 32 bites chipekkel akarunk dolgozni, akkor a CMOS kapuknak folyamatosan vezetniük kell, ügyeljünk, hogy a jumper a megfelelő helyzetben legyen.”

A tápáramkörben lévő 170uH-s tekercset én egy gyári 330uH-ből tekertem le. Egész pontosan 168uH lett. Állítólag ide jó nagyobb is, pl. 220uH-s amit kapni is lehet gyárit, de ezzel is jó.

Részletes működési leírást nem szándékszom ide leírni, mert az már megtették helyettem mások. Inkább a saját tapasztalataimat írnám le, illetve még a két barátomét is akik szintén építettek egyet-egyet az áramkörből.

Némi utómunka

A NYÁK készre szerelését követően, még a dobozolás előtt történt az áramkör felélesztése. Hát ami azt illeti nekem ez nem volt zökkenőmentes, a saját tervezésű panel miatt. Az USB csatlakoztatását követően úgy állt a helyzet, hogy a Busy LED folyamatosan világít és a Power LED a többivel együtt sötét. Itt már látszott, hogy valami nem stimmel. Elkezdtem keresni a hibát, elsőként a NYÁK-on. Hosszas keresgélés után úgy döntöttem, hogy minden kötést ellenőrzök. Hogy rövidre fogjam, összesen két hibát fedeztem fel a huzalozáson. A 877-es PIC 6. lába helyett a vezetősáv a 4. lábhoz csatlakozott. Ezt sikeresen javítottam az IC foglalat alatt, így ez nem is látszik a képeken. A másik hibát ott követtem el, hogy a 4550-es PIC 3. lábára kötöttem a C13-as kondenzátort amit az 1. lábra kellett volna. Szerencsére a huzalozás úgy alakult ezen a részen, hogy különösebb feltűnés nélkül át tudtam forrasztani a kondit a jó helyre. Ezeket a hibákat leszámítva a panel már tökéletesnek bizonyult.

Élesztés és az ezzel járó kezdeti problémák

Ismét beüzemelve az áramkört, a NYÁK huzalozáson több hibát már nem tapasztaltam, viszont még nem volt hajlandó működni az ICD. Az MPLAB már futott a gépen, és az első csatlakozáskor az XP is telepítette a szükséges drivert hozzá. Ha a programozó megtalálható az eszközkezelőben, és az USB kapcsolat is rendben van, akkor nagy probléma már nem lehet. Ez annyit jelent, hogy a kommunikáció működik, ami arra utal, hogy a PIC-ekben már fut a szoftver, működik az oszcillátor és nincs tápzárlat sem.

A Busy LED tehát kialudt, viszont a Power LED továbbra sem volt hajnalndó világítani. Az MPLAB-ban próbáltam megerőszakolni az áramkört, de erre csak anniy válasza volt, hogy kigyújtotta az Error LED-et. Állítólag a fórumosok között senki nem látta még az Error LED-et világítani, én viszont igen. :) Egyébként szép piros. :)

A hibakeresés közben kiderült, hogy valami még hiányzik. A két mikrovezérlőben ugyan már futott a szoftver és a számítógép is illesztette a hardvert gond nélkül, de a letöltöprogam még nem volt bemásolva az ICD2 kontrollerébe. Ennek a letöltőprogramnak – ha nevezhetem így – az a feladata, hogy az épp használatban lévő mikrovezérlőt kezelje az ICD2-ből. MPLAB segítségével tehát betöltöttem az oprendszert a programozóba, merthogy ott angolosan “operating system”-nek nevezik ezt a kis programocskát. Ez egyébként PIC típusonként általában más és mikor az MPLAB-ban kiválasztunk egy PIC típust és bekapcsoljuk hozzá az ICD2 programozót, akkor azonnal jelzi, hogy új “operating system”-et kell letölteni. Ekkor mindig az éppen használatos PIC kezelőprogramja töltődik át a programozóba.

Az első alkalommal viszont az MPLAB kissé zavarban van, mert nem talál a programozóban semmit és azonnal hibát kiált. Tehát első alkalommal kézileg kell elvégezni ezt a betöltést, amit később már az MPLAB automatikusan megtesz helyettünk.

Ezt így lehet gyorsan megcsinálni:

MPLAB-ban kiválasztjuk a programozót. Ez a következő módon történik: Programmer>Select programmer>MPLAB ICD2

Betöltjük az oprendszert a programozóba: Programmer>Download ICD2 operating system. Itt kitallózzuk a megfelelő fájlt. Elvileg az MPLAB abba a könyvtárba lép automatikusan ahol ezt meg is találjuk. Ami pedig ide kell az a ICD12010203.hex nevű fájl. Kiválasztáskor megtörténik a betöltés. Ezt követően az ICD2 készen áll jóesetben a céláramkör csatlakoztatására és lényegében a használatra. ISP Vpp, ISP Vdd és a Busy LED-ek villogtak betöltés alatt, ez már jót jelent. Az Error LED kialudt.

A Power LED továbbra is sötét volt. Ekkor már tudtam mérni feszültségeket az MPLAB-ban is, illetve láttam is, hogy néhány feszültségszint alacsony. Természetesen az önteszt hibával zárult. Gondolkodtam mi lehet a hiba. Valamiért nincs normális tápfeszültség. A hibát a DC-DC konverter egység körül kezdtem keresni ahol az MC34063 IC van, de semmit nem találtam. A fő hiba az volt, hogy az USB-ről ugyan bejött az 5V, de a VPP-GEN részen csak 4,5V-ot mértem. Itt 13V körüli feszültségnek kellene lenni normális esetben, hogyha nem is csatlakoztatok céláramkört a programozóra akkor is. Az IC feladata az 5V-ból előállítani a VPP-GEN 13V-ját. Ez nem történt meg nálam. A Power LED a VDD és a VPP-GEN közé van bekötve egy ellenállással. A 13V és az 5V között 8V különbség van, ebből táplálkozik a LED. Az MC IC 5. lábán van egy feszültségosztó, amit még a digitális potméter IC is vezérel. Ez az osztó állítja be a kimeneti feszültéget. Mikor ide eljutottam a hibát is megtaláltam. Az R2 az 10K-os, de az R18 már csak 1,5K. Tehát elszúrtam a beültetésnél.

Az ellenállást kicseréltem, majd ismét beindítottam az áramkört és láss csodát, világít a Power LED. A VPP-GEN feszültsége viszont még alacsony, 10,2V. AZ MPLAB ugyan az öntesztet sikeresen lefuttatta, de nem hagyott nyugodni a dolog, főleg, hogy a két kollégánál akik már kicsivel hamarabb összerakták az áramkört, náluk 12,5V körüli feszültség volt. Ha az R18 10K esetén a kimeneten 4,5V mérhető és 1,5K esetén 10,2V, akkor tovább kell csökkenteni az értéket, hogy növekedhessen a kimeneti feszültség. Az 1,5K-s ellenállást kicseréltem 1,2K-ra. A VPP-GEN ezt követően 12,4V lett. Ez sem 13V, de már jóval normálisabb érték, mint a 10,2V. A kapcsoláson gyakorlatilag ennyit módosítottam és a programozóm most már jól működik. Egyenlőre még nem próbáltam élesben, mert még nem készült hozzá el az ICSP kábel, de ami késik, nem múlik, az is kész lesz hamarosan.

A sikeres beüzemelés utáni feladatok és a kész programozó

Mikor már mindet jónak találtam, a panel másik oldalát feltisztítottam és belakkoztam, valamint belakkoztam azokat a részeket amik még kimaradtak. Kezdődhetett a dobozolás.

A panel gyakorlatilag úgy készült, hogy figyelembe vettem a doboz méreteit és a rögzítési lehetőségeket, így a meglévő doboz esetében a beszerelés annyiból állt, hogy a panelt ahogy van, becsúsztattam a doboz belsejébe és kész. A fedlapon kifúrtam a LED-ek és a kapcsoló helyét, majd az egyik oldallapon kialakítottam a nyílást a két csatlakozó számára. Ezt követően összeszereltem a dobozt, benne a kész áramkörrel.

Mikor ez is megvolt, jöhetett az előlap elékészítése. Ezt simán paint-ben követtem el, majd a már jól ismert NYÁK-film készítő technikával fóliára nyomtattam. A méretarányos rajznak köszönhetően az előlap kiválóan illeszkedett a dobozra. Ezt ragasztóval rögzítettem, így az utolsó munkafázis befejeztével gyakorlatilag elkészült a programozó.

A programozó elkészítéséhez szükséges dokumentumokat innen tudod letölteni:

A letölthető NYÁK tervek már tartalmazzák a hibajavításokat!

A forrás a http://potyo.extra.hu/forum/viewtopic.php?t=4 címen volt elérhető, de az oldal idő közben megszűnt. Még szerencse, hogy a megépítéshez és beüzemeléshez minden szükséges dokumentumot lementettem, így ezeket itt továbbra is elérhetővé tudom tenni azok számára, akik esetleg kedvet kapnak a megépítéshez.

Vissza a kapcsolási rajzokhoz

___________________________________________________________________________________________________

Frissítés: 2012.08.04.

A fent leírt programozó megépítését követően az eszközt néhány hónapig nem használtam, majd mikor elkezdtem tanulni a PIC programozást 2010-ben, előkerült a fiók mélyéről és gyakolratilag hiba nélkül azonnal munkára is fogtam. Azóta, immár bő két éve folyamatos használatban van az ICD2 és tökéletesen üzemel. Debug módban egyszer próbáltam elindítani, de talán a nem megfelelő PIC típus miatt ez nem működött, így azóta ilyen irányú próbálkozásaim nem is voltak. Programozóként tökéletesen megfelel és teszi a dolgát. Sajnos az új MPLAB-X nem támogatja, de hátha ez a probléma is megoldódik, bár úgy tudom, hogy a Microchip nem tervezi a további támogatását az ICD2-nek főleg, hogy nemrég megjelent ez ICD3.

Egy újabb utánépített példány a hozzá használatos ICSP és USB kábellel.

 Vissza a kapcsolási rajzokhoz