Bonjour,
Voila dans mon programme à base de microcontrolleur, je dois sauvegarder les valeurs des configs
dans une EEPROM de façon à ce que lors d'un reset je puisse avoir les dernières configurations.
Pour ce j'ai fait au depart un code qui ecrivait bien dans l'eeprom malgrès que j'écrivais des types int dans une addresse de type char de la EEPROM
car un reverification avec printf me donne les valeurs saisies (ex: seuil_bas = 150 et seuil_haut = 280).
A priori lorsque le programme tourne ça fonctionne bien ( car avec un printf je relis les valeurs saisies) et je trouve ça etonnant peut etre que ça ecrase les adresses suivantes de l'EEPROM et les relies ?
Mais si je fait un reset j'ai comme valeur à cette adresse d'EEPROM pour seuil_bas 150 et pour seuil_haut = 255).
Apparement comme c'est un byte il y a depassement.
Mon premier code d'ecriture sur l'eeprom:
if(env_choice=='0') //2905
{
seuil_bas0=seuil_bas;
EEP2408_ADDRESS = 0x62; //addresse du seuil_bas niveau 0
EEP2408_VALUE = seuil_bas0;
EEP2408_write_byte(EEP2408_ADDRESS,EEP2408_VALUE);
EEP2408_ADDRESS = 0x66; //addresse du seuil_haut niveau 0
seuil_haut0=seuil_haut;
EEP2408_VALUE = seuil_haut0;
EEP2408_write_byte(EEP2408_ADDRESS,EEP2408_VALUE);
}
else if(env_choice=='1') //2905
{
EEP2408_ADDRESS = 0x70; //addresse du seuil_bas niveau 1
seuil_bas1=seuil_bas;
EEP2408_VALUE = seuil_bas1;
EEP2408_write_byte(EEP2408_ADDRESS,EEP2408_VALUE);
EEP2408_ADDRESS = 0x74; //addresse du seuil_haut niveau 1
seuil_haut1=seuil_haut;
EEP2408_VALUE = seuil_haut1;
EEP2408_write_byte(EEP2408_ADDRESS,EEP2408_VALUE);
}
Mon premier code d'initialisation pour charger les valeurs se trouvant dans l'EEPROM:
EEP2408_ADDRESS = 0x62; //Force l'adresse ou doit être écrit les data
EEP2408_read_byte(EEP2408_ADDRESS);
printf("\n");
seuil_bas0 =EEP_READ;
EEP2408_ADDRESS = 0x63; //Force l'adresse ou doit être écrit les data
EEP2408_read_byte(EEP2408_ADDRESS);
printf("\n");
seuil_haut0 =EEP_READ;
Donc je pense faire comme ceci convertir mes int en char avant de les stocker en eeprom.
Mon nouveau code d'ecriture sur l'eeprom:
seuil_bas0=seuil_bas;
arraybas[0]=(seuil_bas0 & 0xff000000) >> 24;
arraybas[1]=(seuil_bas0 & 0xff0000) >> 16;
arraybas[2]=(seuil_bas0 & 0xff00) >> 8;
arraybas[3]=(seuil_bas0 & 0xff);
EEP2408_ADDRESS = 0x62; //addresse du seuil_bas niveau 0
EEP2408_VALUE = arraybas[0];
EEP2408_ADDRESS = 0x63; //addresse du seuil_bas niveau 0
EEP2408_VALUE = arraybas[1];
EEP2408_ADDRESS = 0x64; //addresse du seuil_bas niveau 0
EEP2408_VALUE = arraybas[2];
EEP2408_ADDRESS = 0x65; //addresse du seuil_bas niveau 0
EEP2408_VALUE = arraybas[3];
seuil_haut0=seuil_haut;
arrayhaut[0]=(seuil_haut0 & 0xff000000) >> 24;
arrayhaut[1]=(seuil_haut0 & 0xff0000) >> 16;
arrayhaut[2]=(seuil_haut0 & 0xff00) >> 8;
arrayhaut[3]=(seuil_haut0 & 0xff);
EEP2408_ADDRESS = 0x66; //addresse du seuil_haut niveau 0
EEP2408_VALUE = arraybas[0];
EEP2408_ADDRESS = 0x67; //addresse du seuil_haut niveau 0
EEP2408_VALUE = arraybas[1];
EEP2408_ADDRESS = 0x68; //addresse du seuil_haut niveau 0
EEP2408_VALUE = arraybas[2];
EEP2408_ADDRESS = 0x69; //addresse du seuil_haut niveau 0
EEP2408_VALUE = arraybas[3];
Mais alors comment dois je faire pour initialiser, charger ces valeurs de l'EEPROM dans mes variables après un reset dois-je affecter à ma variable la somme des contenus des tableaux , et comment cela necessite surement une conversion ?
Merci