Kod: Markera allt
typedef struct {
byte SenderID[8];
byte ReciverID[8];
byte Datatype;
byte Data[16];
byte Length;
} RF_Data_Struct;
RF_Data_Struct RX_Data;
Kod: Markera allt
if (PIR1.RCIF) {
TMR0=0;
inner_state=RECIVING;
if (!RX_Data.Length) {
OPTION_REG = 0x07;
INTCON.TMR0IF=0;
INTCON.TMR0IE=1;
}
if (RX_Data.Length<9)
RX_Data.SenderID[RX_Data.Length]=Usart_Read();
else {
if (RX_Data.Length>8 && RX_Data.Length<17)
RX_Data.ReciverID[RX_Data.Length]=Usart_Read();
else {
if (RX_Data.Length==17)
RX_Data.Datatype=Usart_Read();
else {
if (RX_Data.Length>17 && RX_Data.Length<26)
RX_Data.Data[RX_Data.Length]=Usart_Read();
}
}
}
RX_Data.Length++;
}
Provat att lägga allt i en array i stället och då kom all data på rätt plats så det måste vara uppdelningen i interruptet eller något med upplägget av structen.
Några tips?