Probleme de mémoire(ou autre)

Voilà lorsque je modifie la valeur d’une variable, une autre est affectée :confused:
En testant les adresses, on voit que les deux variables possèdes les mêmes!!
Ces sont des types utilisateur avec des int, déclaré dans des classes et initié en static global.

Voici le résultat de l’affectation et du test:

PM[OT1].N 1
PM[OT1].V 500
PM[OT1].B 40
PM[OT1].H 300
Ouv[OP1].Min 500
Ouv[OP1].Max 40

Ouv[OP1].Min= 567<<<<<<<<
Ouv[OP1].Min= 765<<<<<<<<

&PM[OT1].N 1325
&PM[OT1].V 1327
&PM[OT1].B 1329
&PM[OT1].H 1331
&Ouv[OP1].Min 1327
&Ouv[OP1].Max 1329

PM[OT1].N 1
PM[OT1].V 567
PM[OT1].B 765
PM[OT1].B 300

Du coup problèmes de compilateur(1.5.7), de carte (Mega chinoise), ou de pointeurs fous (je ne modifie aucunes adresses et mes pointeurs sont toujours à 0 + 1 bit de confirmation)?

GrOS Help!

Résultat d’un autre test:

le problème est présent des le setup!

static CapteurIC Capt[2];
static ParamMoteur PM[2];
static IndicateControl Ouv[2];

void setup
Serial.begin

Puis Serial.print:

&PM[OT1].N 1325
&PM[OT1].V 1327
&PM[OT1].B 1329
&PM[OT1].H 1331
&Ouv[OP1].Min 1327
&Ouv[OP1].Max 1329

Donc L’IDE affecte deux fois les mêmes adresses!

Pour le premier type variable

ifndef ParamMoteur_h

define ParamMoteur_h

include "Arduino.h"

class ParamMoteur { public: int N =0; //Numéro de voie et type de retour moteur int V =0; //Seuil de tension sur borne analogique int B =0; //Duree connection Moteur minimum int H =0; //Duree connection Moteur maximale private:

};

endif

Le second

ifndef CapteurIC_h

define CapteurIC_h

//#include "WProgram.h"

include "IndicateControl.h"

include "Arduino.h"

class CapteurIC{

public: void RAZMinMax(); void MAJMinMax(); void Rafraichir(byte Pin); IndicateControl _[3]; private: byte Lire(byte Pin); void MAJHum(); };

endif

Et la sous classe

ifndef IndicateControl_h

define IndicateControl_h

include "Arduino.h"

class IndicateControl { public: // int Num =0; //Numéro de voie et type de retour moteur int Tendance=0; //Ouverture ou fermeture int _SP =0; //Set Point int SB =0; //Seuil BAs int SH =0; //Seuil Haut int PV =0; //Point Value int Min =0; //Min int Max =0; //Max //char* Txt(); void MAJMinMax(); void RAZMinMax(); private:

};

endif

C'est vraiment la m..., je vais tester de déclarer une variable pipo entrel es deux au cas ou... Mais bon le problème ne va t'il pas être déplacé? Quelqu'un a déjà t'il eu le cas?

Si tu veux que quelqu'un lise ta question, il faut respecter les règles du forum.

Merci de te pencher sur le problème!

OT1=1 OP1=2

Mais en inversant simplement l'ordre de déclartion des deux supers variables, plus de problèmes, les adresses sont bien affectées. Je peut garder intacte une version du code qui plante, au cas ou quelqu'un voudrais creuser le truc... J'ai crée un autre post ou je décris le résulat des tests des adresses.

Oh la la, quel boulet! Merci pour ton analyse avisée...