I have this code:
typedef struct _DLL_struct { unsigned char DLL_type; unsigned char DLL_lenght; unsigned char DLL_data_begin; } DLL_struct; unsigned char xdata FskRxBuf[MAX_SIZE_BUFFER]; void main(void) { DLL_struct *DLL_ptr; // pointer to cast on the buffer unsigned char xdata chacksum_rx; DLL_ptr = (DLL_struct *)FskRxBuf; // cast the struct to the buffer checksum_rx = *(&DLL_ptr->DLL_data_begin + DLL_ptr->DLL_lenght); // read the received checksum }
I tried to define a struct pointer and cast it on a plain char buffer to obtain access to the buffer using the fields of the structure. I run the code on a debugger and get a problem with the address of the structure fields. Say that FskRxBuf begins at 0x0292, the debugger tells me that the expression &DLL_ptr->DLL_data_begin is 0x92 and not 0x0292 like I thought. Where is my mistake?
emme effe (a newcomer to the 8051) said, "I hate, I really hate this micro..."
Shivaram Cunchala (a newcomer to ARM from the 8051) said, "I just want to know if ARM is user friendly like our 8051"
;-)
Any new thing will always seem a bit bewildering until you get used to it!