Después de muchos años comencé a divertirme para programar en C nuevamente. Ahora tengo un problema con el uso de estructuras y uniones.
La declaración:
typedef struct {
unsigned char SOAKTEMP;
unsigned char SOAKTIME;
unsigned char REFLOWTEMPERATURE;
unsigned char REFLOWTIME;
unsigned char BAKETEMP;
unsigned int BAKETIME;
unsigned char COOLDOWNTEMPERATURE;
unsigned char COOLDOWNTIME;
unsigned char KP;
unsigned char KI;
unsigned char KD;
unsigned char CYCLETIME;
}EEPROM_DEFAULTS;
La inicialización:
EEPROM_DEFAULTS EEPD = {
170, // SoakTemp
90, // SoakTime
220, // ReflowTemperature
30, // ReflowTime
80, // BakeTemp
7200, // BakeTime
60, // CooldownTemperature
0, // CooldownTime
11, // Kp
5, // Ki
1, // Kd
5 // cycleTime
};
Para escribir y leer estos datos en la EEPROM del PIC16F18877, necesito dividir BAKETIME en un byte alto y uno bajo.
He hecho esto con una Unión.
union{
unsigned int Baketime;
struct
{
unsigned char BakeTimeLowbyte;
unsigned char BaketimeHighbyte;
};
} BT;
Funciona, pero no me gusta la forma en que lo he hecho. He intentado de muchas maneras incorporar la unión en el typedef EEPROM_DEFAULTS pero sin éxito. Así que mi conocimiento se queda corto después de tantos años. La asistencia sería agradable.