Hallo,
ich hab die struct jetzt in eine union gepackt, wie du gesagt hast:
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;
//...
In bits.dcfsig lese ich dann die Bits ein, die ja dann eigentlich auf die struct gelegt werden:
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;
}
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???
Gruß
cesupa
Lesezeichen