WinAVR C/C++

WinAVR 20050214 je open source vývojové prostředí pro RISC MCU od ATMEL s jádrem AVR, založené na platformě windows. Základ tvoří GNU GCC kompiler jazyka c/c++. Snad jediný kompiler c, který nemá omezení velikosti výsledného strojového kódu (a je zdarma). Nejedná se o typické vývojové prostředí, ale je v balíku společně ještě s programem Makefile, Programmers Notepad 2 a několika soubory nápovědy.

Jako editor lze použít cokoli v čem se dá psát a uložit s koncovkou .c např. Notepad, PSpad nebo přiložený Programmers Notepad 2. Doporučuji PN2 jelikož zvýrazňuje syntaxi a lze přímo z nabídky spustit kompiler.

Program Makfile vytváří soubory pro překladač, které definují typ použitého MCU, název zdrojového souboru, stupeň optimalizace, formát výstupu, typ výstupu pro debugger... Je nutné tímto programem vygenerovaný soubor uložit do stejného adresáře jako je zdrojový soubor. Při zadávání jmená zdrojového souboru Makefile > Main file name... neuvádějte příponu (.c), program ji doplní sám. Pro spuštění WinAVR kompiléru zadejte do příkazové řádky make all nebo při použití Programmers Notepad 2 vyberte z menu Tools > [WinAVR] Make All. Výsledný výstupní soubor (nejčastěji intelHex) je pak připraven na download do MCU.

WinAVR lze použít i v AVR Studio od Atmel a to u verze a 4.12, tímto se získá ke kompiléru i výkonné prostředí pro Debugger.

Pro správnou funkci komplileru a k radosti programátora je nutné trošku prostudovat nápovědu (hlavně soubory od avr-libc - jsou jak pdf tak html a je tam i FAQ). Např. použití globální proměnné v procedurach přerušení ( SIGNAL() nebo INTERRUPT() ). Při nastavené jakékoli optimalizaci totíž dojte k zrušení relace mezi proměnnou, která je v proceduře přerušení a s toutéž proměnnou použitou na jiném místě programu - viz 1. otázka a odpověď ve FAQ.

Přednosti programování v C/C++ oproti AVR asm jsou nesporné, navíc připustíme-li že některá MCU mají v asm až 130 instrukcí a požadujeme-li např. dělení float tak vyhraje C/C++. Velikost a relativní pomalost (spoždění na instrukcích) kódu jsou přijatelnou strátou pro programování v C/C++. Né však všechny AVR MCU jdou programovat ve WinAVR C/C++, jedná se hlavně o typy s hw zásobníkem (hardware stack - zásobník není v RAM/RWM), jako AT90S1200, ATtiny11/12/15/28. Avšak lze pro programování použít WinAVR, ale jen jeho asembler.

WinAVR nalezneme na: http://winavr.sourceforge.net

AVR Studio pak na: http://www.atmel.com

Inspirace z: http://www.caha.wz.cz

Aktualizováno 03.12.2006