OT to RTOS or not to RTOS, was: Mereni napeti baterie pomoci AVR
Jan Waclawek
konfera na efton.sk
Pátek Leden 7 01:16:40 CET 2011
"nerealizovatelny" je dalsie silne slovo. Uz tych silnych slov mam dost.
Ak nepouzijete index ale ukazovatel na strukturu (pripadne ak je optimalizator dostatocne chytry aby to urobil sam), tak ten overhead nie je taky dramaticky, u niektorych jednocipov, ktore maju ofsetove instrukcie moze byt aj ziadny. No a ak Vam ide o nejaku efektivitu za kazdu cenu, tak by ste aj tak nemali pouzivat vyssi programovaci jazyk.
Ale samozrejme je mozne aj funkciu napisat viackrat, hoci aj to moze (a nemusi) trebars byt neefektivne, nech to slovo znamena cokolvek. A daju sa tie funkcie napriklad aj generovat, ked treba, zlepsuje to udrziavatelnost.
Na programovani je pekne to, ze vela veci ide urobit roznymi sposobmi, a potom sa mozeme tak pekne pohadat o tom, ktory z nich pouzivaju ti co ho maju najvacsi... :-P
wek
----- Original Message ---------------
>Pole structur je sice pekny napad, ale v praxi na jednocipu
>nerealizovatelny.
>Zkousel jsem napsat jeden program pro tri porty. Na zacatku "vlakna" se
>prepne ukazatel na data aktualniho portu:
>switch (Aktualni_Port) {
> case 1:
> Aktualni_Port = 2;
> break;
> case 2:
> Aktualni_Port = 3;
> break;
> default:
> Aktualni_Port = 3;
> break;
>}
>Vysledek mizivy. Zkuste si to prelozit:
>
>Datovy_Protokol(Aktualni_Port).Soucet += Prijaty_Byte(Aktualni_Port);
>Po prekladu bude kod pro tento radek strasne dlouhy a nefektivni, protoze se
>pocita ukazatela na pole atd.
>
>Kdezto:
>Soucet += Prijaty_Byte;
>Je ve vysledku jen jedna instrukce.
>
>Nakonec mam tri stejne soubory, kazdy pro jeden port. Upravy delam na modulu
>1 a pak to jen prekopiruji. Vsechny globalni funkce a promenne zacinaji
>stejne: Port1_. Takze staci nahradit Port1_ za Port2_ atd.
Další informace o konferenci Hw-list