We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Is it possible for a function to return a union?
Storing data in the Flash/EEData memory of the ADuC845, is done through operating some SFR registers and page write. I would like to read and write different kind of variables and wounder if its possible to use the same function.
Example: // EEData page address #define SERIAL_NO 0x0000 #define DEV_ADR 0x0010
unsigned long serial_no = 123456789; unsigned int dev_adr = 255;
void main (void) { // saving data write(serial_no, SERIAL_NO); write(dev_adr, DEV_ADR); // reading data serial_no = read(SERIAL_NO); dev_adr = read(DEV_ADR); }
My idea was something like this:
union u { unsigned int ival; unsigned long lval; }
void write(union u data, long adr) { // save data in EEData at address long }
union u read(long adr) { // read data from EEData // and return (???) }
Is it possible to do it this way or perhaps a solution would be the use of pointers but how?
Any suggestions?
Thanks everyone for your reply.
I really appreciate your time and effort in helping others.
Regards
Peter Bøgely