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