Jste zde

Začínáme s mikroprocesory Atmel AVR

Tento článek je určen převážně lidem, kteří nemají žádné zkušenosti s těmito procesory, ale mají zájem se s nimi naučit pracovat. Je zaměřen spíše na hardwarovou část, než na software, protože každý začínající programátor potřebuje nejprve nějaký startkit, na kterým by si mohl svůj program odzkoušet a odladit. Potom teprve navrhne plošný spoj pro konkrétní a hlavně fungující zařízení.

Stručný popis AVR

Jádro AVR je RISC. Skládá se ze 32 stejných 8bitových registrů, které mohou obsahovat jak data, tak i adresy. Vzhledem k propojení registrů s ALU (aritmeticko logická jednotka) provede ALU za jeden hodinový cyklus jednu operaci.

Mikroprocesory AVR využívají koncepci Harwardské architektury. To znamená, že mají oddělenou paměť pro program a pro data.

Architektura mikrokontroléru AVR (ATtiny2313)
Architektura mikrokontroléru AVR (ATtiny2313)

Mikroprocesory AVR je možné programovat jak paralelně, tak i sériově a to přímo v systému. Při paralelním programování se využívá toho, že obvod je navržen tak, aby po připojení programovacího napětí na určitý pin obvodu se provede přepnutí vývodů z normálního režimu I/O portů na adresové a datové vývody vnitřní paměti. Pak je možné do paměti paralelně zaznamenat data. Po naprogramování se obvod opět přepne zpět. Nevýhoda tohoto programování je, že je nutné mikroprocesor odpojit od jakýchkoliv obvodů a umístit ho do programátoru. Toto nevýhoda odpadá při sériovém programování. Při tomto programování mikroprocesor zůstává v aplikaci a pomocí několika signálů připojených na programátor ho lze jednoduše naprogramovat. Využívá se převážně signálů MOSI, MISO, SCK a RESET. Tomuto programování se říká ISP.

Mikroprocesory AVR se dělaly ve třech řadách. Je to základní řada (dnes se již nedělá), řada ATtiny a řada ATmega. Liší se především v počtu instrukcí. Většina mikroprocesorů z řady ATmega obsahuje ještě JTAG rozhraní. To je pro ladění softwaru přímo v aplikaci.

Mikroprocesory se liší také použitými obvody které jsou obsaženy v mikroprocesoru. Je to například velikost paměti SDRAM, FLASH a EEPROM. Dále počtem čítačů/časovačů a jejich rozlišením (8 nebo 16bit), počtem portů. Většinou obsahují UART. Některé procesory řady Mega jich mají i více. Zpravidla dva. Obsahují analogový komparátor, obvod Watchdog a některé i A/D převodník a spousty dalších obvodů. Konkrétní popis jednotlivých mikroprocesorů je v materiálech od výrobce. Je tam uvedeno i podrobné nastavení. Odkaz na stránky výrobce je uveden níže.

Startkity

Úkolem všech startkitů je zajistit mikroprocesoru potřebné napájecí napětí, zdroj hodinových impulsů, resetovaní obvod, a možnost připojení dalších prvků na porty mikroprocesoru přes nějaké konektory. Je to vlastně zařízení pro první testování programu. Na většině startkitů ještě lze měnit i typy mikroprocesorů (MCU). Každý výrobce vyrábí a dodává pro svoje MCU vlastní startkity. Ty jsou již hodně propracované. Ale pro začátečníky a bastlíře jsou většinou finančně nedostupné, nebo představují zbytečnou investici. Každý šikovný elektronik si takový jednoduchý startkit dokáže udělat sám. A to za minimální náklady. Zde je uvedeno několik jednoduchých startkitů na MCU AVR. Lze do nich zapojit většinu MCU v pouzdře DIL. Jen většinu! Některé MCU mají trošku jiné zapojení pouzdra. Na to pozor. Než umístíte MCU do patice, tak si ověřte jeho zapojení. Byla by škoda ho zničit. Základní deska startkitu obsahuje jen základní věci pro MCU. Napájecí konektor, stabilizátor napětí na 5V (7805), krystal, konektory na porty MCU, tlačítko reset a konektor pro programátor. Ostatní zařízení se na startkit připojují pomocí konektorů. Je zde uvedeno zapojení pro komunikaci RS232, tlačítka, LED diody. Dále je ukázáno i zapojení programátoru na LPT a sériový port.

Startkit pro MCU ATmega (40pin DIP)

Tento startkit je určený pro MCU ATmega 8515, 161, 162 a další a starší typy (pokud je někdo doma ještě má) AT90s8515. NENÍ určen pro ATmega16 a ATmega8535. Tento MCU má jinde umístěné napájení. Před zapojením MCU doporučuji pečlivě si prostudovat zapojení jeho pouzdra. Jinak může dojít ke zničení MCU! Navíc je osazen konektor (SL1) pro připojení LCD displeje s podsvícením. Konektor je určen pro LCD 16x2 znaky. Jiný LCD nedoporučuji osazovat. Nebo pouze po předchozí kontrole jestli je konektor kompatibilní. Trimrem R2 se nastavuje jas LCD. Konektorem X2 lze vyvést napětí 5V na další testované zařízení. Konektory SV2-6 jsou konektory na jednotlivé porty MCU. Piny 1 a 2 jsou napájecí. (1 - VCC, 2 - GND). Další piny jsou porty. Konektor SV1 je pro připojení programátoru.

Schéma zapojení 40pinového StarterKitu
Schéma zapojení 40pinového StarterKitu

Startkit pro MCU ATtiny (20pin DIP)

Tento startkit je určený pro menší MCU ATtiny2313, 2323 a další a pak pro starší typy AT90s2313, 2323. Zapojení je téměř shodné jako zapojení pro ATmega. Jen má méně portů a neobsahuje konektor pro LCD.

Schéma zapojení 20pinového StarterKitu
Schéma zapojení 20pinového StarterKitu

RS232

Jedná se pouze o redukci UART na RS-232 pro asynchronní sériovou komunikaci. Na některých startkitech bývá osazena přímo na hlavní desce. Mě ale připadalo výhodnější mít ji bokem. Sériovou komunikaci stále nepoužívám, tak v případě potřeby si ji prostě připojím. Alespoň je o to menší hlavní deska. Zařízení je napájené přímo z hlavní desky.

Schéma zapojení převodníku UART/RS-232
Schéma zapojení převodníku UART/RS-232

LED diody a tlačítka

Tato deska nese pouze osm LED diod a osm tlačítek, které se připojují na jeden celý port. Slouží pro různé indikace nebo aktivace nějakých procesů.

Schéma zapojení desky tlačítek a LED
Schéma zapojení desky tlačítek a LED

Programátor

Programátorů na AVR je také velké množství. U některých stačí přímo na piny MCU připojit určité piny paralelního portu a rovnou programovat. Tento způsob programování popisuje Ing. Ronešová PhD na svých stránkách. Toto programování ale nefunguje na všech PC. Například na notebooku mi to nešlo, ale na normálním PC ano. Jako lepší mi rozhodně přišlo zapojení a program PonyProg. Tento programátor je hodně rozšířen. Je to hlavně tím, že je freeware. Jeho velká výhoda je možnost připojení jak na sériový port tak i na paralelní. To je výhoda dnes, když na nových PC mizí tyto porty. MCU se pak dá programovat přes redukci z USB na RS232. PCB pro programátory jsou navrženy tak, aby se vešli do krytek konektoru CANON.

Schéma zapojení  PonyProgu na Seriál
Schéma zapojení PonyProgu na Seriál


Schéma zapojení  PonyProgu na LPT
Schéma zapojení PonyProgu na LPT

Software

Na programování AVR procesorů je velké množství softwaru. A to jak v jazyce ASM, C, nebo třeba Pascal. Některé programy jsou free a některé placené. Zdarma si lze stáhnout AVRstudio. Je to software přímo od Atmelu. Je určen pro ladění programu. Celý program si lze postupně odkrokovat a odsimulovat. Tímto způsobem je možné také najít spoustu chyb v programu. Při použití speciálního programátoru lze přes tento program MCU i naprogramovat. Pro programování v jazyce C existuje několik programů. Mezi nejrozšířenější patří asi WinAVR, který je zdarma. Tento program je vystaven na kompilátoru GCC. Další program je CodeVisionAVR, ten je ale již placený. Je možné si ho stáhnout jako studentskou verzi. Má pak ale omezení na velikost zdrojového kódu na 2kB. O programování MCU AVR v tomto programu je moc pěkně napsaná kniha Programování AVR v jazyce C od pana Vladimíra Váni. Tento program má již udělané i knihovny pro nějaké časté součástky. Například pro LCD, nějaké druhy teplotních senzorů atd. To začátečníkovi usnadňuje práci. Je pouze na každém programátorovi, který program se rozhodne používat a kolik chce do softwaru investovat.

Závěr

Všechny potřebné informace o konkrétních MCU lze nalézt v datasheetech od výrobce. Zapojení a návrh PCB všech uvedených zapojení je možné si zdarma stáhnout zde. Jsou v programu Eagle 4.13. Přeji všem začátečníkům hodně zdaru a ať jim programy fungují.

Babčaník Jan
babcanik@seznam.cz

Download & Odkazy

Hodnocení článku: 

Komentáře

Ze by napajacie piny IC1?

Odpodvěď není složitá IC1, 2 a 3 jsou pořád jeden "šváb" jsou tam čísla pinů pin 10 je GND a pin 20 je UCC napájení.

kdyžtak se podívej do datasheetu.

Odpodvěď není složitá IC1, 2 a 3 jsou pořád jeden "šváb" jsou tam čísla pinů pin 10 je GND a pin 20 je UCC napájení.

kdyžtak se podívej do datasheetu.

Je to výborné cvičení pro budoucí servisní techniky, protože hledání chyb v plošných spojích je opravdu lahůdka (PCB.zip).
Autor by si mohl uvědomit, že je potřeba zapojit v obvodu i zemní vodiče. Už jen vývod 10 CPU je na první pohled "v luftě". Další dohledání chybějících zemí nechám na procvičení případných zájemců. Ještě jedna lahůdka. Resetovací tranzistor SMD v seriovém programátoru je samozřejmě zrcadlově otočený, takže je přehozena báze s emitorem. Je vidět, že zde autor uveřejnil opravdu prakticky ověřenou konstrunkci. Určitě mu takto fungovalo "na první zapojení".

Prave k tomu cucham, ale jsem opravdu velmi neznaly shanim nejake uplne zakladni _spolehlive_ zapojeni ATtiny2313 nebo ATmega8. Muzete me prosim nekdo odkazat na vhodny zdroj?