bitfield v avr-gcc

Jan Waclawek konfera@efton.sk
Pondělí Červen 16 20:41:26 CEST 2008


>Skus napisat konkretne co potrebujes, lebo ja tomu nejako nerozumiem.

Mam menu riadene tabulkou. Drviva vacsina poloziek je nieco zmenit, typicky je to nastavit (YES/NO, ON/OFF) nejaky konfiguracny bit. Tabulka je pole structov, prva polozka je string ktory popisuje polozku ("COMPRESSOR MOTOR"), druha polozka je typ polozky (bit s hodnotami "ON/OFF"), tretia je "nejaky" pointer. Jedna z moznosti je mat pointer na funkciu ktora dany bit nastavi/vynuluje, ale to je na hony vzdialene efektivite. Idealny by bol pointer priamo na menenu polozku, lenze to momentalne nejde. Takze to obchadzam tym pevnym poradim bitov v konfiguracnom byte a quasi-"pointer" si skladam (presnejsie, v realnej implementacii ako to teraz je, je to pointer na iny struct, ktory obsahuje dva pseudopointre (pointer na byte a poradie v byte), pretoze menim sucasne hodnotu v EEPROM aj shadowRAM).


>Inak, co brani napisat funkciu nastav bit cislo XXX na 1. Ak to chces mat 
>ako bitove pole, adresu mas po deleni 8, zvysok je cislo bitu a nastav na 1 
>je uz jednoduche.
>

A co mam vydelit 8?

Napr. v tom Tvojom priklade, povedzme AD77xx_Control_Register.Bit.G0_2, ako by si dospel k cislu, ktore na ktorom treba spravit ten div a mod?

Potrebujem &AD77xx_Control_Register.Bit.G0_2...

wek




Další informace o konferenci Hw-list