Hlavní stránka

AVRUSB500v2 - programátor AVR na USB

Kdysi jsem stavěl jednoduchý programátor na LPT port – byl docela jednoduchý, ale způsob připojení již dnes vylučuje jeho používání na moderních počítačích, které LPT (a mnohdy již ani COM port) nemají. Přemýšlel jsem tedy co postavit, až jsem narazil na tento opensource programátor. Na první pohled mě zaujal tím, že je kompatibilní s STK500 a zároveň není k naprogramování jeho samotného třeba dalšího programátoru – stačí jej pouze postavit, připojit na USB a naprogramovat přímo z počítače.


Původní programátor, který jsem občas používal byl jednodušší - vlastně pouze propojoval několik pinů LPT portu přes dvojici 74HC125 přímo na ISP.





AVRUSB500v2 je samozřejmě složitější. Postavit tento programátor lze buď na dodanou desku (lze zakoupit od autora a to dokonce i s připájeným obvodem FT232 (jediná SMD součástka) a nebo (což byl můj případ) si navrhnout vlastní plošný spoj, což byla cesta, kterou jsem se rozhodl jít. Podařilo se mi dostat na rozměr 50x42mm při použití standardních součástek (s výjimkou FT-232 samozřejmě). Zapojení, které autor použil je hodně očesané - zvláště v případě FT232, kde oproti katalogovému chybí celá řada součástek, nicméně jak jsem si ověřil, je funkční.


Originální schéma zapojení je možné stáhnout ZDE

DPS kterou jsem navrhl je jednostranná, s jedinou drátovou propojkou a přidal jsem ještě druhou variantu konektoru, obsahující napájení, což mi umožnilo samostatný vývod napájení zcela vynechat. Obvod FT232RL je v pouzdru SSOP, což znamená rozteč 0.65mm a díky tomu, že je využita sotva polovina vývodů, dá se to pod velmi silnou lupou s ostrým hrotem mikropájky připájet i ručně vývod po vývodu (odvážnější mohou zkusit použít minivlnu, ale obvod stojí přes 100 Kč ;o)). Sám SMD součástky používám jen výjimečně a pájet takovou miniaturu bylo pro mě dost exotickou záležitostí. Postupoval jsem tak, že jsem si všechny plošky pocínoval (k odsátí přebytečného cínu jsem použil odsávací lanko). Po kontrole, že nikde nejsou nějaké vlasové zkraty jsem přiložil čip, chytil jej za jednu nohu, upravil polohu, chytil za protilehlou a pak opatrně nožku po nožce s miniaturní kapičkou cínu na ostrém hrotu pájky přichytával. Jde to pomalu, ale jde to – nakonec jsem opatrným páčením hrotem ulamovacího nože mezi vývody otestoval, zda všechny drží (dvě se mi utrhly, takže nedržely a bylo nutné je přepájet) – pod lupou je vidět, že se hnou. Druhý test spočíval v proměření odporu mezi vývodem součástky a místem kam spoj vede a pak ještě mezi vývodem a sousední nožkou. Kupodivu – vše bylo OK, takže jsem mohl zahájit osazování zbytku desky, což už bylo jednoduché.



Protože jsem neměl v zásobě žádný zbytečný USB prodlužovák (což bude asi nejjednodušší způsob, jak získat kablík od programátoru do PC) ale měl jsem kdysi dávno z GM koupený rozložený USB konektor bez krytky, použil jsem kus UTP kabelu, konektor na něj připojil, sestavil a zasmrštil jej 2x do klasické smršťovačky (tenčí na konec s kabelem a silnější na tělo konektoru). Po ověření polarity měřením jsem jej připájel na DPS a pomocí tavné pistole jej zajistil tak, aby se nemohl vytrhnout. Tím bylo vše připraveno k zapojení. Ověřil jsem, že není zkrat mezi signály a napájením a že odběr po připojení na zdroj 5V je v normě a připojil jsem to k PC – byl nadetekován převodník FT232 a po doinstalování ovladačů (nechají se vyhledat přes internet, nebo jsou již součástí systému – například v Linuxu a možná i ve Vistách) přibyl COM port, jež lze nastavit v ovladačích například jako COM5 apod.

Tím to samozřejmě nekončí – ATMEGA8 osazená v desce je stále ještě prázdná – neobsahuje firmware a tedy to celé ještě jako programátor nelze použít. Na desce jsou pro tyto případe vlastně programátory 2 – jeden ještě nefunguje, protože vyžaduje firmware a druhý je již teď plně funkční, ale není jednoduché jej použít. Autor navrhuje použít linux a speciální upravený programátor UISP s podporou tzv. Bit Bang programátoru využívajícího speciální mód FT232, kdy je přímý přístup k příslušným vývodům. Ty jsou připojeny na ATMEGA8 na RESET, MOSI, MISO a SCK, takže jej můžeme tímto způsobem přímo nakrmit firmwarem. Řeší se tak problém slepice-vejce, kdy bez programátoru nelze získat programátor. Přiznám se, že cestu přes Linux jsem zkusil, ale neuspěl jsem – rozchodil jsem překlady, ale nakrmit to přes UISP jsem nedokázal – možná jsem měl příliš nové jádro, nebo nevím (s Linuxem zatím moc kamarád nejsem). Našel jsem ale jinou cestu – existuje podpora pro Bit Bang v jiném software – AVRDUDE. Existuje k němu i grafické rozhraní, takže je možné jej pohodlně nastavit. Tato cesta fungovala ihned, pouze bylo nutné upravit konfigurační soubor, kde bylo třeba jinak nastaveny konfigurace vývodů FT232. Aby případný zájemce nemusel tápat, uvedu zde přesný postup, který vedl k úspěšnému oživení programátoru:

Bude potřeba stáhnout následující soubory:


avrusb500v2-1.2.tar.gz (firmware pro náš programátor je v souboru avrusb500_pre.hex)

Aby nebylo nutné vše stahovat a dávat dohromady, udělal jsem takovou malou kompilaci toho nejnutnějšího včetně projektů pro EAGLE, PDF, bitmapy DPS atd. Je ke stažení zde:

Samozřejmě musí být po připojení programátoru nadetekován jako převodník FT232 – drivery tedy již musí být nainstalovány. Pokud je potřebujete stáhnout, lze použít tyto: CDM 2.04.14.zip
Příslušná propojka na desce programátoru musí být zkratována pomocí jumperu !!

Po spuštění avrdude-GUI.exe nastavíme všechny potřebné parametry (viz screenshot) a tlačítkem Erase-Write-Verify natáhneme firmware do ATMEGA8.



Pak ještě nastavíme Fuse – nejdříve použijeme READ, upravíme hodnoty a pak WRITE podle následujícího screenshotu:



Odpojíme zkratovací propojku, můžeme odpojit a zapojit programátor od USB (měla by zablikat LEDka) a můžeme jej otestovat například v AVRSTUDIO jako STK500 – po připojení zkušební desky s ATTINY2313 to šlo okamžitě a testovací HEX do ATTINY doslova prosvištěl.

Jediný problém je, že je verze programátoru nastavena na 0, což AVRSTUDIO pozná a nabízí update firmware, což samozřejmě nejde – jedná se o zcela jiný hardware. Když dialog zrušíme, funguje to, ale existuje jednoduchá možnost, jak programátor nastavit tak, aby se tvářil, jako konkrétní verze programátoru. Vystačíme si s libovolným terminálem – například pomůže Hyperterminál z windows. Nastavíme připojení přes sériový port Rychlost=115200, Parita=žádná, Počet bitů=8, Stopbity=1 a Řízení=žádné

Zmáčkneme 2x za sebou ENTER a dostaneme se do režimu, kdy lze zadat verzi:



Zadáme verzi 2.1 od teď nás již AVRSTUDIO nebude otravovat nabídkami update firmware.