begin process at 2012 05 30 11:48:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Système

 > 

Autre

 > 

Stockage et lecture dans EEPROM avec conversion char<->int


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Stockage et lecture dans EEPROM avec conversion char<->int

mercredi 30 mai 2007 à 16:21:33 | Stockage et lecture dans EEPROM avec conversion char<->int

develdelphi

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

jeudi 31 mai 2007 à 22:31:24 | Re : Stockage et lecture dans EEPROM avec conversion char<->int

develdelphi


Rebonjour,

Voila, je pense que je n'ai pas était très clair, ce que j'ai posé comme question dans ce dernier topic c'est que; ayant stocké das valeurs dans l'eeprom je voulais savoir comment les restituer vers une variable lorsque le système redemarre en sachant que je les configurations je les stocke dans l'eeprom de cette manière:


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];
.....
..


Je ne sais pas si ce que je fait ici est juste mais si c'est le cas comment dois je faire après un reset pour restituer les dernières configurations qui sont donc ces 4 indices des tableaux de char dans une variable int?

Ou autrement formulé, comment aller prendre des addresses 62 à 65 de l'eeprom( contenu en char) le contenu pour les mettre dans une seule variable int?

Dois je  passer par un struct ou il y a t-il plus simple ?

Merci



Cette discussion est classée dans : address, value, addresse, seuil, eep2408


Répondre à ce message

Sujets en rapport avec ce message

IP Address Control [ par zeratul67 ] Voila, c un common control que j'arrive pas à utiliser.----------- Extrait du code ---------------------INITCOMMONCONTROLSEX lpInitCtrls;lpInitCtrls.d CopyFile en C !!! [ par Zillah ] J'ai trouvé aussi des référence à cette fonction, mais comment l'appliqué ??? Je suis vraiment intrigué. J'avais besoin au départ de seulement un moye combo box recupérer value [ par Cameleon69 ] Bonsoirje cherche comment faire pour récupérer soit la valeur de l'item selectionné soit son index.Je suis preneur de toutes idées.Merci pb sur une multimap [ par kptn ] Y a-t-il un moyen pour récupérer un iterator d'un élément dont on connait la pair dans une multimap?Je m'explique un peu mieux par un exemple. typed Bitwise-inclusive-OR assignement [ par Duc ] voila un morceau de code pour expliquer mon probléme:#define VALUE_1 101<font color=blu Contrôle 'IP Address' ... [ par Tribute2U ] Bjr, je cherche a utiliser un controle du style 'IP Address' et j'aurai voulu savoir comment marchait les fonctions GetAddress et SetAddress de la cla PB RegCreateKeyEx [ par moustachu ] Bonjour,Malgrè les nombreux messages sur le Forum que j'ai consulté, j'ai un problème lors de l'exécution de cette fonction :void WriteRegistry(HKEY m warning a supprimer : cast truncates constant value (C4310) [ par magic_Nono ] Bjj'ai une fonction de conversion ANSIOEMavant, elle créait une autre chaineaujourduit je veux modifier directt la chaine originale.avt aucun warning< vreation video a partir d'addresse memoire de buffer image [ par rasta_raf ] Bonjour,-Je voudrais savoir s?il y a un programme, une application ou autre pouvant, à partir de l?adresse d?une mémoire buffer d?une image (cette ima recuperer l'address IP [ par monimon18 ] bonjour,comment mon adress IP en C++,merci,


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales