Citac/casovac 0/1 - ukážka ovládania v C

Martine, je to hezký příklad ale nezapomeňme na to, kolik pojmů jsi nadefinoval a některé možná i zbytečně. Po přeložení se použije jen něco a výsledkem bude pár instrukcí. V ASM bych je napsal rovnou a bylo by hned zřejmé co nastavuji a jak. Velké množství pojmů má opačný účinek, člověk se v nich snadno ztratí nemluvě o tom, kolik pojmů je nutné vstřebat z datasheetu (jména registrů). Nemá smysl zdrojáky zbytečně komplikovat, když stejně nemohou být přenositelní na jiný hardware.
Přenosiltené mohou být jen ty části programu, které se neváží na HW, nebo jen na ten, který je shodný u všech MCU.
Hlavní smysl pojmenovávání konstant, registrů a bitů je ve snadném nalezení ve zdrojáku. Jestliže chci vědět, kde se povoluje přerušení T2, budu hledat ve zdrojáku TOIE2.

Já si to nemyslím a chtěl bych se Tě zeptat, zda si už dělal něco s ATxmega? Ten má neobyčejně rozsáhlou periferii a jiný způsob ovládání, takže bych se vsadit, že pro Xmega budeš mustet přepisovat prakticky vše co s HW jen trochu souvisí a to i přesto, že má stejné jádro. Takže POVOL_PRERUSENIE je k ničemu, protože xmega má 3 úrovně přerušení.
Asi každý programátor chce, aby odladěný program mohl bez úprav použít v jiné aplikaci. Dlouhá léta jsem o to usiloval, ale je to nemožné. Musel bych psát něco jako operační systém, a to MCU v jeho schopnostech degraduje. Nesnažme se o to u tak malých MCU jako je AVR8. Mnohem efektivnější je psát programy tak, aby části pracující s HW byly ve zdrojáku snado nalezitelné, přehledné a pohromadě. Je rychlejší upravit tyto části pro konkrétní HW (např. změna krystalu) než vymýšlet krkolomná makra a definice pro překladač, který možná i provede správně nastavení USART a Timerů.