AVR a premnlivý počet inštancií UARTu alebo iného hw.

Sekcia: Programovanie 08.06.2011 | 18:53
Avatar Grawp   Používateľ
Ako by ste čo najjednoduchšie riešili knižnicu obsahujúcu funkcie pre obsluhu rozličných počtov UARTu?

1. Používať objekty sa mi zdá moc náročné na výp. výkon aj pamať. Pri každom UARTe si treba pamatať všetky jeho ovládacie registre a pri kždom volaní funkcie sa predáva this pointer a robia dereferencie....

2. Použiť makrá. Bohužial neviem ako. Zdá sa mi totiž hlúpe prepisovať každú funkciu na makro, robiť všelijaké rozklady a podobne.

3. Zatial riešenie s najkrajšou syntaxou a najefektívnejšie sa mi zdalo použitie templates, pričom ako parametre pchám adresy ovládacích registrov. Kontroloval som rozvoj v ASM, rozvinie sa to vždy presne na to čo chcem (a prebehnú aj optimalizácie ako vytvornie sbi/cbi inštrukcíi), žiadny pokles efektivity.

Otázka je:
1. Dá sa to nejak lepšie?
2. Ako sa to bežne robí? Zatial som to nikde ani bežne robiť nevidel. Ak mal MCU dva UARTy tak kód bol písaný špecificky na to, prípadne len upravený sposobom: ifdefined(MCU_XX)..... kod pre dva uarty.. else kod pre dva uarty.