bitfield v avr-gcc

Jan Waclawek konfera@efton.sk
Pondělí Červen 16 18:47:12 CEST 2008


Ahoj, 

problem nie je ziadny, viem si poradit ;-)

Pricina pouzit pointer na bitfield je presne ten isty ako pricina pouzivat pointre na funkcie. Ak najdes argumenty na jedno, mas presne tie iste argumenty aj na to druhe.

Pointa je v moznosti odovzdavat si polohu (prip. aj velkost) manipulovaneho bitu/pola z bitfieldu ako parameter, ci uz je to na dialku alebo priamo v programe.

wek




----- Original Message ---------------
>Ahoj,
>
>tak si to nadefinuj ako union. Raz pojdes ako byte raz ako bit.
>
>// AD77xx - Control Register (3 byty / 24 bitov)
>
>typedef struct {
>     unsigned int FS0_7  : 8;  // filter
>     unsigned int FS8_11 : 4;  // filter
>     unsigned int BU     : 1;  // rozsah
>     unsigned int BO     : 1;  // prudovy zdroj test
>     unsigned int IO     : 1;  // prudovy zdroj
>     unsigned int WL     : 1;  // dlzka dat
>     unsigned int PD     : 1;  // zapni-vypni prevodnik
>     unsigned int CH     : 1;  // kanal
>     unsigned int G0_2   : 3;  // zosilnenie
>     unsigned int MD0_2  : 3;  // mod
>
>    } T_AD77xx_CONTROL_REGISTER_BITS;
>
>typedef union {
>     unsigned char     Byte[3];
>     T_AD77xx_CONTROL_REGISTER_BITS Bit;
>
>    } T_AD77xx_CONTROL_REGISTER;
>
>Pristup:
>
>AD77xx_Control_Register.Byte[AD77xx_Index] = 
>AD77xx_CONFIG_TABLE[0].Byte[AD77xx_Index];
>p_AD77xx_Adresa->Byte.Gain = AD77xx_Control_Register.Bit.G0_2;
>
>Kde je problem?




Další informace o konferenci Hw-list