Hallo,
ich hab die struct jetzt in eine union gepackt, wie du gesagt hast:
In bits.dcfsig lese ich dann die Bits ein, die ja dann eigentlich auf die struct gelegt werden:Code:typedef union { uint64_t dcfsig; struct { uint32_t stuff :20; unsigned int startbit :1; unsigned int minutes :7; //minute unsigned int Pm :1; //parity of minute unsigned int hours :6; //hour unsigned int Ph :1; //parity of hour unsigned int days :6; //day unsigned int weekdays :3; unsigned int months :5; //month unsigned int years :8; //year unsigned int Pd :1; //parity of date }; }dcf_t; //... volatile dcf_t bits; //...
Wenn ich mir dann aber z.B. dcf.minutes ausgeben lassen möchte, bekomme ich den Wert 127, was ja einem 7-Bitfeld entspricht, dessen Bits alle auf 1 sind, aber müsste da jetzt nicht eine Zahl rauskommen, deren Binärcoe, dem der empfangenen Minutenbist entspricht???Code:if(ms>=750 && ms<997) //1 { bits.dcfsig|=(1<<bitcounter); bitcounter+=1; send(" 1 "); PORTD|=(1<<PD6); return; } if(ms>=997 && ms<1300) //0 { bits.dcfsig&=~(1<<bitcounter); bitcounter+=1; send(" 0 "); PORTD&=~(1<<PD6); return; } if(ms>=1300) //0 { bits.dcfsig&=~(1<<bitcounter); //dcf=(struct DCF*)(uint64_t)&bits; decode(bitcounter); bitcounter=0; send(" 0 START: "); startDCF(); return; }
Gruß
cesupa







Zitieren

Lesezeichen