Go Down

Topic: EEPROM esp8266 (Read 798 times) previous topic - next topic

GuillaumeDeGrenoble

Mar 14, 2019, 02:11 pm Last Edit: Mar 14, 2019, 10:27 pm by GuillaumeDeGrenoble
Bonjour,

Besoin d'un éclairage car je ne comprend pas mon erreur.

Dans mon code je déclare des variables globales, celles ci sont appelés dans certaines fonctions et tout fonctionne normalement.

Lorsque je déclare ces variables sous forme de tableau, 
unsigned int Parametre[4]=[1,75,30,20]

Et bien je me retrouve avec des fonctions qui accèdent à des variables égales à zéro ??
Y à t'il un truc avec les tableaux ?

Merci pour vos lumières !!

fdufnews

#1
Mar 14, 2019, 02:26 pm Last Edit: Mar 14, 2019, 02:27 pm by fdufnews
Normalement, les variables globales sont ....globales.
Mets ton code ce sera plus facile de discuter.

GuillaumeDeGrenoble

Code: [Select]


//EEPROM
  #include <EEPROM.h>


//TABLEAU PARAMETRE
  //                                         {"Consigne %",   "VMC"   , "Hysteresis ", "Td"  };
    unsigned int Parametre [4]= {    75            ,     1        ,     30           ,   0    };
     
      #define CONSIGNE 0
      #define VMC 1
      #define HYSTERESIS_VMC 2
      #define TD 3
     
    struct MaSauvegarde { unsigned int SaveParametre [4];} ;



void SAUVEGARDE_PARAMETRE_EEPROM () {
    MaSauvegarde Config;
    for(int i=0;i<4;i++){Config.SaveParametre[i]=Parametre[i]; }
    EEPROM.put(0,Config);

}



void setup() {         // --------------------------  SETUP  -----------------------------------------  SETUP  ------------------------------------

 
// EEPROM LECTURE DES PARAMETRES SAUVEGARDE
    MaSauvegarde Config_lue;
      EEPROM.get(0,Config_lue);
      for(int i=0;i<4;i++){Parametre[i] = Config_lue.SaveParametre[i]; }
   


void comparerMot()
{
 
 switch (mot[0]) {
    case 'p':   
        //code
      break;
   
    case 'h': // Parametre d'Hysteresis
          //transfert de 'mot' dans 'Hyst'
          char hyst[3]; for (int i=1; i <4; i++) {hyst[i-1] = mot[i] ;}  hyst[3]='\0';

          // RAZ 'mot'
          for (int i=0; i <4; i++) {mot[i] ='\0' ;}

          //transfert de 'Hyst' dans mon tableau parametre
          Parametre[HYSTERESIS_VMC] = atoi( hyst );

          SAUVEGARDE_PARAMETRE_EEPROM ();
      break;
   
    case 'c': //commande
        if (mot[1]== 't'){ code }
        if (mot[1]== 'v'){ code }
        if (mot[1]== 'c'){ Parametre[CONSIGNE] = mot[2];  }

        SAUVEGARDE_PARAMETRE_EEPROM ();
       break;
 
 
     // ETC.....
   

    default:
      break;
     
    }  //FIN SWITCH
}//FIN COMPARE MOT







kamill

Bonjour,

Pourquoi passer par une structure?
il suffit de faire
Code: [Select]
  EEPROM.put(0, Parametre);  // sauvegarde

  EEPROM.get(0, Parametre);  // recupération

GuillaumeDeGrenoble

Ok, ok,
Bonne remarque... lol
Je m'étais pencher sur l'eeprom Il y a quelque temps pour un autre projet, et à vrai dire je ne sais plus pourquoi j'utilisais la structure...poisson rouge sur le coup...
Et c'est un copié collé bette et méchant...


En tous cas même après cette simplification évidente mon pb reste le même, et la variable 'parametre' m'est retourné égale à zéro...

Je pige pas là...


kamill

C'est quoi comme carte? car ça fonctionne sans problème sur une carte avec processeur avr.

Zlika

Une lecture brute des données donne quoi ?
Problème en écriture ou en lecture ?
Si ça coince, forcez. Si ça casse, ça devait probablement être réparé, de toute façon.

J-M-L

#7
Mar 14, 2019, 07:35 pm Last Edit: Mar 14, 2019, 07:35 pm by J-M-L
le code donné ne compile pas... :o  :(  :smiley-confuse:
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

GuillaumeDeGrenoble

Je suis avec une wemos d1 mini

Mon sketche tourne très bien et toutes les données sont bien traitées.

Par contre si je débranche et rebranche, je perd les données sauvegardées...


J-M-L

#9
Mar 14, 2019, 08:02 pm Last Edit: Mar 14, 2019, 08:03 pm by J-M-L
et y'a combien d'EEPROM dans un WeMos?...

POSTEZ VOTRE CODE..

on est pas devin...

(enfin si je devais parier, je dirais que vous n'avez pas de
Code: [Select]
EEPROM.begin(xx);avec xx assez grand pour vos données ?)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

kamill

Les esp8266 n'ont pas d'eeprom.
Il y a émulation d'eeprom dans la flash. Il faut utiliser EEPROM.begin() et EEPROM.commit()

J-M-L

Les esp8266 n'ont pas d'eeprom.
Il y a émulation d'eeprom dans la flash. Il faut utiliser EEPROM.begin() et EEPROM.commit()
Damned, je voulais qu'il cherche :)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

al1fch

#12
Mar 14, 2019, 08:37 pm Last Edit: Mar 14, 2019, 08:59 pm by al1fch
@ GuillaumedeGrenoble
EEPROM sur ESP8266/Arduino ? : RTFM
le fil de discussion gagnerait à être renommé EEPROM avec ESP8266, parce que le soucis rencontré n'a pas grand chose  voir avec la portée des variables

J-M-L

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

GuillaumeDeGrenoble

@J-M-L
Je te trouve un tentiné saute à la gorge, mais bon la démarche est bonne et crois moi que pour chercher et m'interesser je suis le premier!!


J'ai cru que mon pb venais du scope...erreur aveuglante...

Bien l'impression que je v résoudre grâce à vos lumières !!!
Merci merci

@alfch
Merci pour ce lien, Allez y'a plus qu'a Potasser.



Pour l'histoire:
En effet, j'ai fait la mise au point du projet sur arduino mégas, et ma sauvegarde fonctionnait bien.
c'est le dernier point qu'il me manquait à ajouter pour le définitif...

La gestion de ma vmc double flux avec capteur et relais sans fil.
Une gestion par écran tactile ds le salon avec affichage d'une météo ludique via accuweather pour mes loulous...

Et en bonus l'appli sur smartphone...j'ai bien bossé, et super content du résultat !!

Go Up