elektronika
 
Univerzální palubní počítač biprog JTAG AVR AVR - oprava fuse DIY Audio
|| JTAG AVR ICE v1

Při psaní složitejších programů člověku velice ulehčí práci možnost ladění aplikace přímo na vyvíjeném HW. Protože jsem nechtěl investovat do dražčího řešení v podobě AVR Dragon programátoru, hledal jsem moožné alternativy až jsem nael jednoduchou verzi JTAG ICE klonu pro AVR mikrokontroléry. Jedná se o MKI verzi, která je výborně podporována jak v AVR Studiu, tak i v linuxu, kde ve spojení s avarice a avr-gdb může pohodlně člověk ladit ve svém oblíbeném vývojovém prostředí, které je pro mě CodeBlocks.

Existuje mnoho klonů, já postavil tento, který není úplně ideální, protože neobsahuje jumper pro výběr bootloader modu pro aktualizaci firmware.

Foto mého JTAG ICE




|| JTAG AVR ICE s USB

Protože se ukázalo, že budu potřebovat jtag rozhraní, které by fungovalo již na 3v3 platformě, rozhodl jsem se realizovat novou verzi JTAG adaptéru, která by spolehlivě fungovala už od 3v napájecího napětí a zároveň měla USB rozhraní. USB rozhraní s klasickým obvodem FT232RL jsem se rozhodl řešit galvanicky oddělené od laděné aplikace za pomoci optočlenů HL11L1, které jak se ukázalo dostačují na rychlosti sériové linky až 230 000 baud. Aby bylo usb rozhraní univerzální, použil jsem na desce propojovací jumpery, které spojí vlastní USB-RS232 převodník s JTAGem. Vlastní koncepce jtag rozhraní je obdobná předchozí verzi, kde jsem použil stejný pinout výstupního konektoru, který je kompatibilní s mým programátorem BiProg a předešlým JTAG rozhraním. MCU použitý v aplikaci je Atmega16A, která je schopna pracovat bezpečně od 3V. Použít se dá taktéž starší typ Atmega16L, která taktéž funguje od 3V.

Sestavení

Konstrukce je vcelku jednoduchá, až na FT232RL a Atmega16A obsahuje jen několik dalších součástek a nezapomenout na propojky. Hodnoty součástek nejsou nijak kritické, pouze je nutno dodržet 1kOhm odpory kolem optočlenů a taktéž dodržet frekvenci krystalu! Taktéž nezapomenout propojit jumpery. Na desce je několik konektorů, kde JP1 v podstatě umožňuje využívat USB-RS232 převodník zválšť. Klasicky je ovšem propojen jumpery k JTAGu. Další přepínač s jumperem je SV1, který propojuje na konektor buď RESET MCU, potřebný pro naprogramování či JRST, který se využívá při funkci JTAGu.Při programování Atmega16 je tedy nutno spojit piny 1,2 a při běžném použití pak piny 2,3. Poslední jumper je BOOT, který ma pro bežný provoz spojeny piny 1,2.

Oživení

Nutno upozornit, že vzhledem k použití optočlenů, které invertují úrovně na sériové lince je třeba nastavit inverzi RX a TX přes FT_PROG, který stahnete na stránkách ftdichip. Můžete patřičné nastavení v FT_PROGu provést ručně, nebo využít mého přednastavení lutaUsbJtag.xml. Pro test rozhraní je dobré spojit loop na FT232 obvodu a otestovat přes terminál.

Dále je nutné naprogramovat JTAG externím programátorem. Je potřeba nahrát hlavně bootloader, který umožní budoucí update JTAG programu přes AVRPROG, který je součástí AvrStudia. Bootloader jsem použil z těchto stránek Aquaticus.info. Na těchto stránkách je taktéž podrobně popsáno nastavení propojek MCU. Já používám pro nastavení propojek AVRStudio s BiProgem, kde je vše intuitivní a nelze se splést. Nutno je především zvolit externí krystalový oscilátor a aktivovat Bootloader, tedy CKSEL=1111, SUT=11, BOOTRST=0 a CKOPT=0. Ještě lze vypnout JTAG a OCDEN. Zjednodušeně řečeno fuse low=0xFF a high=0xC8. Propojky lze jednoduše nakonfigurovat zde fusecalc. Jako další krok je potřeba nalít bootloader do procesoru. K naprogramování jsem použil bootloader + jtag hex ze stejných stránek aquaticus_jtag_m16.hex. Tímto by měl být JTAG funkční. Je dobré aktualizovat JTAG firmware na nejnovější verzi z AVRStudia. To je proveditelné tak, že přepneme propojku SV2 tak aby spojovala pin procesoru a gnd tedy pozici 2,3 napájíme jtag z externí aplikace a spustíme AVRPROG(pro neznalé, nachází se v menu Tools). Bootloader je aktivní a AVRProg AvrStudia by měl nalézt zařízení MEGA16BOOT. Pokud hlásí, že nenašel desku, je třeba vlézt do správce zařízení a ručně nastavit daný com port nejlépe na COM1 a taktéž nastavit latency timer viz například zde obr. Pro běžný provoz dát sv2 jumper do pozice 1,2.

Nejsem žádný velký spisovatel a ikdyž jsou dnes již AVR v úpadku tak doufám, že se tento JTAG třeba bude někomu hodit. Pro dotazy mě klidně kontaktujte.


Soubory ke stažení a odkazy

aktualizace 6. 7. 2011
All Right Reserved © 2007, Designed by CMG Technologies,                  Luta kontakt: olutera@gmail.com            CNW:Counter