Nedávno jsem se začal věnovat programování mikroprocesorů Atmel AVR. Zakoupil jsem si pár kousků ATmega a ATtiny
v tme.cz, kde je mají nejlevnější. Vytvořil jsem jednoduchý programátor připojený přes LPT. Je to v podstatě jen konektor, kabel, pár odporů
a zdroj 5V (7805 jak jinak). Jako vývojové a simulační prostředí používám AVR Studio stažené z webu atmelu, pro programování používám PonyProg.
Programování probíhá připojením signálů MISO, MOSI, SCK a RESET na příslušné vývody mikroprocesoru a zapojení napájení.
První pokusy vedly ke světelným hadům s ATmega8 s 28 nožičkami a pamětí 8kB. Na něm využívám port D, který
je jako jediný celý volný (všech 8 nožiček) i při vývoji. Portu C chybí bit PC7 a bit PC6 je využit jako RESET, takže má jen 6 volných nožiček.
Port B je využit k programování a také slouží k případnému připojení krystalu pro přesnější časování, takže zůstaly volné jen 3 bity (nožičky).
Po pokusech se světelnými hady jsem přistoupil ke světelnému vzdušnému displeji. Je to maticový displej
se mechanickým skenováním, řada LED diod vykresluje text nebo obrázky ve vzduchu díky zpoždění lidského oka nebo fotoaparátu.
Nejprve jsem zkoušel paralelní skenování, při kterém mohou svítit všechny diody současně, ale příliš se neosvědčilo. Proto
jsem přešel na sériové skenování, vyznačující se tím, že nikdy nesvítí více než 1 LED současně a díky tomu
je zobrazení ostré (nevytváří vodorovné čáry, ale body). Další jeho výhodou je použití jediného odporu pro všechny LED.
Programovací a vývojové zapojení ATmega8 a jemu podobných AVR je na schématu níže.
Dále jsem zkoušel hady a vzdušný displej s malou osminožičkovou ATtiny13, která má paměť 1kB a využitelných je jen 5 vývodů (port B).
Výstupy jsou společné s programovacími vstupy a proto je potřeba při programování odpojit společný pól LEDek.
Původně jsem to dělal spínačem, ale později jeho funkci nahradil tranzistor NPN, který to dělá automaticky. Při programování
se na RESET objeví log 0 a tranzistor se zavře. Jinak je vše skoro stejné
jako u ostatních obvodů AVR. Tento obvod se mi podařilo využít k zobrazení číslic pomocí 5 LED v různých barvách. I tento
displej používá sériové skenování, při kterém svítí vždy jen jedna LED.
Nakonec jsem se pustil do obvodu ATmega 32. To je plnohodnotný 40nožičkový mikroprocesor se všemi čtyřmi osmibitovými porty a pamětí 32kB.
Pouze port B je využíván jako programovací. Vstup RESET je vyveden samostatně. Tento obvod
jsem využil jako vzdušný displej se 16 LED na portech C a D. Bylo nutné vypnout nastavovací bit JTAGEN, který přiřazoval vývodům
PC2...5 alternativní funkce. U tohoto obvodu jsem použil dvojité sériové skenování. Na každém ze dvou portů svítí vždy nejvíce jedna LED.
Každých 8 led má společný odpor. Kromě ručního skenování (mávání obvodem ve vzduchu) jsem zkoušel obvod i připevnit na motor a roztočit,
aby vznikl vrtulový displej. Použil jsem motor z 8cm větráku a mechanický přenos napětí. Pro motor to ale byla velká zátěž a točil se dosti pomalu.
Příště plánuji použít silnější motor a přenos napájecího napětí pomocí cívek. Zapojení programátoru ATmega32 je obdobné jako
u ATmega8, jen je tam několik vývodů navíc. Rozmístění vývodů najdete v jeho datasheetu.
Software: Vývojové prostředí AVR Studio si stáhněte zde.
Já jsem stáhl verzi 4.14, časem se nejspíš oběví novější. Před stažením je nutné vyplnit nějaké údaje, které si samozřejmě vymyslíte.
Pro zapsání programu do mikroprocesoru je potřeba PonyProg, který stáhnete tady.
V PonyProgu je potřeba nastavit správný typ mikroprocesoru (nahoře) a v nastavení zvolit paralelní port LPT1.
Pokud nastanou problémy s přístupem PonyProgu k LPT, pomůže vám userport.
Zapisování programu PonyProgem se podrobněji věnuji zde.
Dole najdete některé z mých prográmků ke stažení v souborech ASM. Upozornění pro profíky: jsou
napsány prasácky :).