WebZdarma.cz


  STRÁNKY O MIKROPROCESORECH ATMEL    JAROSLAV  KUTĚJ
Poslední úprava 4.8.2012


ZKUŠEBNÍ DESKA S PROGRAMÁTOREM PRO ATMEGA8, 48, 88, 168
A PŘÍKLADY PROGRAMOVÁNÍ V BASCOMU


                                           
Prostředí Bascom-Avr

Příkazy Bascom

Programy pro Bascom-Avr

Schema ZD88

Osazení ZD88

Spoje ZD88




                               


S jakým typem začít? To je častá otázka těch, kteří se chtějí blíže seznámit s programováním mikroprocesorů.
Myslím, že dobrá volba je dnes (2009) řada

Atmega8  - 4kB FLASH,  512B SRAM,  256B EEPROM
Atmega48  - 4kB FLASH,  512B SRAM,  256B EEPROM
Atmega88  - 8kB FLASH,  1kB SRAM,  512B EEPROM
Atmega168 - 16kB FLASH,  1kB SRAM, 512B  EEPROM
Časem má přibýt ještě typ Atmega328 s 32kB FLASH.

Všechny tyto typy mají stejné pouzdro (DIP28).

Navrhl jsem pro tyto typy jednoduchou stavebnicovou zkušební desku ZD88. Můžeme s ní pohodlně testovat programy a naprogramovat mikroprocesory.



Úvod
Tomu, kdo potřebuje jenom občas zapsat do mikroprocesoru nějaký hotový program stačí jednoduchý programátor jakých se dá najít množství na Internetu.
Já jsem používal dlouho a bez problémů programátor (software) PonyProg a hardware pro seriový port.

Ale pro vývoj vlastních programů, nebo pro první seznámení s mikroprocesory a výuku programování je výhodné mít nějakou experimentální desku.
I jednoduchá deska je mnohem lepší než zapojovat všechno na nepájivém poli.

Při návrhu desky jsem měl tyto požadavky:

- Možnost připojení k USB portu, nové počítače už většinou nemají klasický seriový port.
- Deska by měla umožnit po napsání a přeložení kódu naprogramovat procesor a ihned spustit program bez nějakého přepojování konektorů a podobně.
- Spuštěný program by měl mít možnost zobrazovat hodnoty a texty na PC. Při ladění programu tak můžeme snadno zobrazovat hodnoty registrů a proměnných při běhu programu.
- Možnost naprogramovat všechny procesory typu Attiny a Atmega které umožňují ISP programování.
- Možnost připojení dalších zařízení k desce.



Připojení desky k PC
Dnes se nejčastěji používá USB port. Pak máme dvě možnosti.
Buď umístíme na desku integrovaný převodník usb-com (nejčastěji IO FT232), nebo použijeme kabel usb-rs232, který má převodník zabudovaný v konektoru.
Podle mne je výhodnější použít kabel, protože jinak bychom museli dát převodník FT232 na každou desku u které potřebujeme komunikaci s PC.
Takto máme jeden kabel pro všechny desky.
Nezanedbatelné je i to, že celý kabel je často levnější než samotný čip FT232.

Některé tovární desky používají jeden konektor pro programování a druhý pro komunikaci spuštěného programu s PC.
To vyžaduje použít na PC dva porty, nebo po každém naprogramování přepojit kabel do druhého konektoru.

Abych se tomu vyhnul, používám mikroprocesor s nahraným bootloaderem.
Ten umožňuje programovat mikroprocesor ne přes obvyklé ISP rozhraní (MISO, MOSI atd) ale přes seriový UART mikroprocesoru.
Programování i komunikace pak probíhá stejnou cestou.

Bootloader je samostatný malý program (např 500 - 1000 bajtů), který zapíšeme na konec paměti programu (FLASH), do oblasti BOOT, která je pro tyto účely určená.
(Ne všechny mikroprocesory obsahují tuto oblast. Z výše vyjmenovaných procesorů ji nemá Atmega48.)
Naše činnost při programování s bootloaderem je úplně stejná jako bez něho.
Prostě vybereme *.hex soubor a zapíšeme ho do procesoru. Programovací software (AvrOspII) automaticky rozpozná že v čipu je bootloader a podle toho zvolí postup programování.
O velikost bootloaderu se ovšem zmenší prostor využitelný pro naši aplikaci, ale při velikosti FLASH 8 nebo 16 kB se to dá vydržet.

Bootloaderů se dá najít na internetu velké množství.
Já používám bootloader podle aplikační poznámky AVR109.
Jistá nevýhoda, kterou není možno nijak obejít, je to že bootloader musíme do procesoru zapsat pomocí jiného programátoru.
Pak už si je můžeme na naší desce klonovat.

Bootloader v desce je nastavený takto:
Po zapnutí napájení nebo po resetu se bootloader spustí a čeká cca 2 sec na příkazy od programátoru Avrosp. Žlutá Led bliká.
Pokud během těchto dvou vteřin zahájíme nějakou programovací akci, bootloader zůstane aktivní a provádí příkazy. Žlutá Led trvale svítí.
Jestliže nezahájíme žádnou akci, po dvou vteřinách procesor ukončí bootloader a skočí na adresu 0 a začne vykonávat náš program. Žlutá led zhasne.





Popis desky



Ve středu desky je 28-pinová patice pro mikroprocesor.
Vedle ní jsou z obou stran dutinkové lišty, na kterých jsou všechny vývody mikroprocesoru.

V dolní části jsou dvě LED diody (Led1 a Led2) a dvě tlačítka (TL1 a TL2).
Ty jsou připojeny jedním vývodem na zem a druhým na dutinky, takže je můžeme libovolně připojovat k portům.
K propojení použijeme obyčejný "zvonkový" drát o průměru 0,8 mm.

V kladné a záporné větvi napájení jsou ještě pomocné dutinky (+5V a -5V).

Aby šlo k desce připojit další zařízení, např. LCD displej nebo klávesnice, je každý port vyveden na 10-pinový konektor.
Na každém konektoru je kromě portu také zem a +5V pro případné napájení připojených zařízení.
Propojovací kabel se snadno zhotoví ze dvou levných samořezných konektorů PFL10 a plochého kabelu.
Nebo můžeme připojit zařízení přes dutinky vedle procesoru.

Tlačítko "reset" resetuje procesor.

Žlutá led dioda Led3 signalizuje funkci bootloaderu.

Desku můžeme napájet nějakým univerzálním síťovým adaptérem.
Vhodné napětí je 8 - 12V.




Práce s deskou
Program pro mikroprocesor můžeme napsat v libovolném jazyku. Na těchto stránkách popisuji jazyk Bascom, ale stejně dobře se dá použít např asembler nebo C s Avrstudiem a podobně.
Každý překladač vytvoří soubor strojového kódu "*.hex". To je náš program převedený do strojového kódu. Tento soubor pak zapíšeme do mikrprocesoru.

Pro zápis souboru "*.hex" do mikroprocesoru budeme používat software AvrOspII.exe ze souboru AvrOspII_547.zip, (dále jen Avrosp).
Tento program se neinstaluje, pouze ho zkopírujeme do nějakého adresáře.


Nastavení programátoru a zápis programu
Do patice na desce zasuneme mikroprocesor se zapsaným bootloaderem.
Připojíme kabel k PC a napájení.
Spustíme Avrosp.
Zatrhneme položky "Erase device..." a "Verify device".




Přejdeme do záložky "Configure" a nastavíme použitý port.
V okně Baud nastavíme 38,400. Je to rychlost jakou deska komunikuje s PC.
Toto nastavení stačí udělat jen jednou. Avrosp si ho zapamatuje.



Vrátíme se do záložky "Program".
Tlačítkem "reset" na desce resetujeme procesor a ihned, dokud ještě dioda bliká klikneme v Avrosp na "Auto Detect".
Žlutá dioda začne svítit trvale. Znamená to, že program je v bootloaderu.
V rámečku FLASH vybereme soubor, který chceme zapsat.



Vidíme, že Avrosp poznal náš procesor i bootloader. (Pokud dolní okno vypadá jinak, zkuste "Auto Detect" ještě jednou)
Pro zápis souboru do FLASH stiskneme tlačítko "Program".



Pokud v dolním okně vidíme řádek " Equal! ", je vše v pořádku.
Proběhl zápis a úspěšná verifikace.

Teď stisknutím tlačítka Reset na desce spustíme náš blikající program .

Po každé úpravě a novém přeložení programu stačí stisknout na desce Reset a v Avrosp kliknout na "Program".

Fuse a Lock bity
Bootloader neumožňuje změnit hodnoty fusebitů a lockbitů u procesoru v desce.
To je spíše výhoda, protože nejde nějakou neopatrnou manipulací změnit fuse bity tak, že procesor přestane komunikovat.
Ve fuse bitech bychom asi nejčastěji měnili frekvenci oscilátoru, ale to můžeme u řady Mega88 udělat v kódu nastavením registru CLKPR.

Čtení
Pokud chceme číst obsah FLASH, nastavíme (nebo vytvoříme) v okně "Browse" soubor *.hex do kterého budou přečtená data zapsána a stiskneme "Read".

Stejným způsobem jako u FLASH zapisujeme a čteme interní EEPROM (v rámečku EEPROM, soubory pro EEPROM mívají koncovku ".eep").

Zobrazení
Data, která chceme zobrazit pošleme na seriový port UART a na PC použijeme nějaký terminál.
Můžeme použít terminál, který je součástí programovacího prostředí Bascom (menu-tools-terminal emulator).



Nebo např. Hecules terminal.



Před programováním musíme v terminálu port zavřít, protože používáme stejný port pro Avrosp i pro terminál.
(V Bascom terminálu k tomu stačí kliknout myší mimo okno terminálu.)



Klasické ISP programování
Abychom mohli programovat další mikroprocesory, nahrajeme dočasně do našeho procesoru v desce software, který z něho udělá ISP programátor.

Tady je příklad asm kódu pro Attiny2313, který se dá upravit pro Atmega88.
Upravený kód přeložíme a výsledný hex soubor zapíšeme výše uvedeným postupem do mikroprocesoru na desce.


Redukce pro seriové programování



Pro snadné programování těch typů, které používáme v desce (m8,48,88,168) jsem zhotovil redukci (budu ji nazývat seriová redukce).

Postup programování přes redukci

1. Procesor, který chceme naprogramovat zasuneme do redukce.
2. Spustíme Avrosp.
3. Resetujeme desku, ale tentokrát potřebujeme ne bootloader, ale aplikaci.
Počkáme proto, až žlutá Led přestane blikat.
4. Teprve teď zasuneme redukci do dutinkových lišt na desce. Všechny zářezy na paticích a procesorech jdou jedním směrem.
Pak zkusíme tlačítko "Auto Detect".



Vidíme, že Avrosp našel AVR ISP programátor a čip. (V redukci je Atmega8).
Dál pokračujeme stejně jako při programování procesoru na desce.
Rozdíl je v tom, že tentokrát můžeme zapisovat i fuse a lock bity.
Takto si můžeme udělat zálohu procesoru s bootloaderem.

Pro programování jiných typů si můžeme zhotovit kabel s desetipinovým ISP konektorem, jak je naznačeno na schématu.
Jiná možnost je např. provizorně propojit procesor na nepájivém poli s deskou přes dutinkové lišty.
Zapojení:
mproc v desce     programovaný mproc 
PB2 ............. RESET
PB3 ............. MOSI
PB4 ............. MISO
PB5 ............. SCK



Závěr
Tento popis možná vypadá složitě, ale v praxi brzy zjistíme, že ve skutečnosti je práce s deskou velmi snadná.
Zamýšlel jsem ji hlavně pro méně pokročilé zájemce, kteří nechtějí hned kupovat drahé desky se spoustou blikátek.
Ale myslím, že udělá službu i pokročilejším, pro menší projekty do 16 kB kódu.




Případné dotazy a připomínky pište prosím na mail    kutejj (zavináč) volny(tečka)cz