Programování procesorů ATMEL AVR
Milan Horkel
Procesor bez programu je jako motor bez paliva. Tento text uvádí přehled potřebných nástrojů pro napsání programu pro procesory AVR a pro jejich naprogramování.
Aby jednočipový mikrořadič dělal to, co od něho chceme je třeba udělat dvě věci:
Velkou výhodou procesorů ATMEL AVR je skutečnost, že obě výše zmíněné činnosti můžeme zajistit pomocí free nástrojů a experimentovat tak můžeme bez dalších nákladů na vývojové nástroje. Část prostředků pochází přímo od firmy ATMEL a část od GNU komunity. Jsou k dispozici tyto nástroje:
Příslušné nástroje jsou pro Windows 98 až Windows XP, GNU nástroje samozřejmě i pro LINUX. Nástroje jsou přátelské a bez problémů funkční. Kromě těchto základních komponent jsou k dispozici i ladící nástroje.
Kromě volných nástrojů existuje samozřejmě i spousta vysoce kvalitních komerčních nástrojů renovovaných firem. Těmi se zde nebudeme zabývat i když pro vážnou práci mohou být vhodné (kvalita kódu, záruky, technická podpora, dokumentace a podobně).
Jedná se o integrované vývojové prostředí pro vývoj programů pro procesory ATMEL AVR (assembler, linker) s možností integrace překladačů jazyka C/C++. Prostředí obsahuje rovněž simulátor procesorů AVR a přímo podporuje základní druhy ladících nástrojů ATMEL.
Do AVR studia lze přímo integrovat GNU překladač jazyka C/C++ pro AVR procesory. Je vhodné nejprve nainstalovat WinAVR a teprve poté instalovat AVR Studio.
Balík AVR Studio potřebuje ke své činnosti IE5.0 (raději 6.0, nebo balík XML od MS).
Toto je připravený balík GNU nástrojů pro AVR procesory připravený pro instalaci do Windows (používá knihovny CIGWIN). Při instalaci balíku na WindowsNT/2000/XP je třeba instalaci provádět pod účtem administrátora jinak se nenastaví cesta do BIN adresáře tohoto balíku.
Překladač může fungovat sám o sobě nebo se může integrovat s balíkem AVR Studio.
http://savannah.nongnu.org/projects/avrdude
http://sourceforge.net/projects/avrdude-gui
Program AVRDUDE je jeden z volných programátorů procesorů AVR a je součástí balíku WinAVR. K programu je připravena grafická nadstavba AVRDUDE-GUI, která usnadňuje použití programu.
Program má svůj konfigurační soubor, ve kterém jsou nadefinovány jednak parametry mnoha programovacích kabelů (včetně čísel vývodů LPT portu pro jednotlivé funkce) tak i parametry jednotlivých procesorů.
Současná verze má drobný problém při programování a čtení konfiguračních slov procesoru z grafické nadstavby (grafická nadstavba není ještě dodělaná a dle slov autora možná vznikne nová verze programu, která bude rovnou plně grafická). Při čtení slov se nepřenáší přečtená data do grafického programu a při zápisu se zadané hexa parametry chybně chápou jako jména souborů. Naštěstí se zápis do konfiguračních slov procesoru neprovádí často.
Konfigurační slova nelze číst z grafické nadstavby ale grafickou nadstavbu můžeme použít pro sestavení příkazové řádky, kterou pak jen opravíme. Viz příklad, opravy jsou zvýrazněny:
"avrdude" -p m8 -c picoweb -P lpt1 -U lfuse:r:con:i -U hfuse:r:con:i
Přečtená data jsou ve formátu INTEL HEX (parametr i):
:01000000EF10 -- lfuse (spodní konfigurační slovo)
:00000001FF
:01000000D926 -- hfuse (horní konfigurační slovo)
:00000001FF
Příčinou je to, že program AVRDUDE vypisuje všechno do standardního chybového výstupu a tak výpisy na zařízení CON pak padají do kanálu místo do AVRDUDE-GUI (který chytá jen chybové výstupy).
Pro přeprogramování konfiguračního slova vyžaduje AVRDUDE dodatečný parametr „-u“. Je to z bezpečnostních důvodů aby nedošlo k přeprogramování omylem. Pro zápis není třeba příkazovou řádku spouštět z konsole, stačí ji jen opravit dle příkladu:
"avrdude" -p m8 -c picoweb -P lpt1 -U lfuse:w:0xef:m
Doplněný parametr zajistí, že místo jména souboru je parametr chápán přímo jako hodnota (nutno doplnit 0x protože je hodnota hexadecimální). Výše uvedená řádka naprogramuje do procesoru ATmega8 pomocí kabelu typu picoweb přes LPT1 spodní konfigurační slovo na hodnotu 0xEF (krystalový oscilátor).
Nejjednodušší programátor procesorů AVR sestává z kabelu, který se zapojuje do LPT portu počítače na jednom konci a do programovacího konektoru u procesoru na konci druhém. Kromě drátů neobsahuje žádnou další elektroniku. Jedním z možných kabelů je tento:
Propojovací dráty je vhodné udělat přiměřené délky cca 1/2 metru. Nezapomeňte výrazně označit vývod 1 ISP konektoru protože konektor nemá žádný klíč.
Při použití se zadává v programu AVRDUDE jako PicoWeb kabel.
Pokud máte nějaký jiný kabel/programátor je možné kouknout se do konfiguračního souboru programu AVRDUDE a vybrat vhodný kabel nebo svůj kabel doplnit do konfigurace.
Konfigurační slova procesoru určují (mimo jiné) jaký se použije oscilátor pro procesor. Pokud skutečná konfigurace neodpovídá naprogramovanému slovu (například je nastaven externí krystalový oscilátor ale krystal není připojen) procesor se nerozběhne a nepůjde ani přeprogramovat. Pozor tedy při programování konfiguračních slov procesoru.
Jednotlivé procesory mají různá konfigurační slova a různý počet konfiguračních slov (například spodní a horní označená lfuse a hfuse).