Re: Semblant de Reboot en cours de programme

Peut-être que le watchdog est activé, et fait un reset au bout d'un certain temps...

Ou peut être un faut contact au niveau de l'alimentation qui la coupe brièvement et entraîne un reset de la carte

Merci de votre aide.

J'opterai plus pour la proposition de Vicent, car ce n'est pas systéamtique et a un temps déterminé précis.

Mais même cette histoire d'alim qui se courperait je trouve cela bizarre car si la reinitialisation n'est pas systématique et a un moment précis, cest toujours en début de programme, pas au bout de 1,2 ou 3 heures.

le LCD qui consomme trop ? ou bien qui est mal initialisé ? le mien doit être alimenté avant que la carte électronique ne boote (ou plutôt la carte électronique doit commencer à lui parler après un temps suffisant pour boter).

Effectivemeent Luj06 j'opetrai plus pour ta solution.

Mon ecran LCD me pose des problèmes depuis le début ja vais la changer.

Si tu alimentes le LCD avec l'alim de l'Arduino, il se peut que le régulateur se coupe car étant trop surchargé.

J'ai aussi ce soucis, mais moi je suis a vide (rien de raccorder) et j'alimente via le port usb

voici le prg qui marche mal et qui reboot par moment sans raison

// si EDFCOMPTEUR
/*
#define STX 2      
#define ESPACE ' '
#define ETX  3
*/
// si test 
#define STX  'X'
#define ESPACE ' '
#define ETX  'Z'
/*
#define LF  10
#define CR  12
*/

#define LF  '('
#define CR  ')'

char etq[100]; //réservation de place pour stocker une suite de caractére
char don[100]; //réservation de place pour stocker une suite de caractére
char trame3[100]; //réservation de place pour stocker une suite de caractére

  


int bleu =  3;//led pour horraire bleu
int blanc =  4;//led pour horraire Blanc
int rouge =  5;//led Pour horraire Rouge
int pblanc=6;//led pour prévision Blanc
int pbleu=7;//led pour prévision Bleu
int prouge=8;//led pour prévision Rouge
int online=9;//sortie mise en puissance et led systéme en ligne
int chauffage=10;//sortie pour chauffage électrique
int eauchaude=11;//sortie pour eau chaude sanitaire
int prise1=12;//sortie pour prise commandé 1
int prise2=13;//sortie pour prise commandé 2
int a;
int b;//mémoire de cycle test effectué
int c;//mémoire de tarif bleu en cours
int d;//mémoire de tarif rouge en cours
int e;//mémoire de tarir blanc en cours
int f;//mémoire de prévision bleu
int g;//mémoire de prévision rouge
int h;//mémoire de prévision blanc
int i;//mémoire de heure creuse
int C;//mémoire de traitement
int D;//mémoire de traitement
int E;//mémoire de traitement
int I;//mémoire de traitement
int A;//comptage de cligno
const int pin_tpsol = 0;  //entrée analogique sonde de température
const int pin_th=1;  // entrée digital 1 pour contact ?

void setup() 
{
   // initialize both serial ports:
  Serial.begin(1200);
  SetDefault();
  SetParity('e');
  SetStopBits(1);
  SetWordLength(7);
 

b=0;

 pinMode(bleu, OUTPUT);
 pinMode(blanc, OUTPUT);
 pinMode(rouge, OUTPUT);
 pinMode(pbleu, OUTPUT);
 pinMode(pblanc, OUTPUT);
 pinMode(prouge, OUTPUT);
 pinMode(online, OUTPUT);
 pinMode(chauffage, OUTPUT);
 pinMode(eauchaude, OUTPUT);
 pinMode(prise1, OUTPUT);
 pinMode(prise2, OUTPUT);
 pinMode(pin_th,INPUT);
}

void SetDefault()
{
    UCSR0C = UCSR0C & B11000001;
    UCSR0B = UCSR0B & B11111001;
}

void SetStopBits(int nbStopBits)
{
 //set stop bits
if (nbStopBits == 1)
  {
    UCSR0C = UCSR0C | B00000100;
  }
else // (stop == 2)
  {
    UCSR0C = UCSR0C | B00000000;
  } 
}

void SetParity(int parity)
{
  if ((parity == 'O')|(parity == 'o'))
  {
    UCSR0C = UCSR0C | B00110000;
  }
  else if ((parity == 'E')|(parity == 'e'))
  {
    UCSR0C = UCSR0C | B00100000;
  }
  else // ((parity == 'N')|(parity == 'n')))
  {
    UCSR0C = UCSR0C | B00000000;
  }
}


void SetWordLength(int wordlength)
{
  //set word length
if (wordlength == 5)
  {
    UCSR0C = UCSR0C | B00000000;
  }
else if (wordlength == 6)
  {
    UCSR0C = UCSR0C | B00000010;
   }
else if (wordlength == 7)
  {
    UCSR0C = UCSR0C | B00000100;
  }
else if (wordlength == 9)
  {
    UCSR0C = UCSR0C | B00000110;
    UCSR0B = UCSR0B | B00000100;
  }
else // (wordlength == 8)
  {
    UCSR0C = UCSR0C | B00000110;
  }
}

void loop ()
//test de toutes les sorties

{  

  if (b==0) 
  {
     b=1;
     c=5;
     d=0;
     e=0;
     f=0;
     g=0;
     h=0;
     i=0;
     
     Serial.println("=========== test sortie===============");
     Serial.println(a);
     Serial.println(b);
     Serial.println(c);
     Serial.println(d);
     Serial.println(e);
     Serial.println(f);
     Serial.println(g);
     Serial.println(h);
     Serial.println(i);
     Serial.println("=====================================");
     Serial.println("===========Systeme ok================");
     Serial.println("=====================================");
     
     
  }
  //digitalWrite (online, HIGH);



  // stocker les données dans la table etiquette
 
   char C = 0;
 
   if (Serial.available() > 0)  //si donnée quelquonque perçus
     {
       
       
       {int C = Serial.read(); //intégré les donnée dans la mémoire C
         if(C==LF) //si dans c je vois STX
          {
            C = Serial.read();
            delay(10);
          }
          Serial.println(); Serial.println(">>> LF reçu !");
          int i=0;// init index de remplissage des tables
          C=0;
          for( i = 0; C!=ESPACE;  i++)// ensuite on lit les octets de l'étiquette sur la série jusqu'à réception de ESPACE
          {
            C = Serial.read(); 
            etq[i]=C;
            delay(10);
          }
          etq[i-1]=0;
          C=0;
          for( i = 0; C!=ESPACE; i++) // ensuite on lit les octets de la donnée sur la série jusqu'à réception de ESPACE
          {
            C = Serial.read();
            don[i]=C;
            delay(10);
          }
          don[i-1]=0;
          
          // on passe le reste de la réception jusqu'à la fin de ligne
          if(C==CR) //si dans c je vois STX
          {
            C = Serial.read();
            delay(10);
          }
       }
          
          
          Serial.print("Etiquette : <");
          Serial.print(etq);
          Serial.println(">");
          
          Serial.print("Donnee : <");
          Serial.print(don);
          Serial.println(">");
          
          Serial.println();
       /*   
          if(strcmp(etq,"PTEC")==0)
          {
          }
          else if(strcmp(etq,"DEMAIN")==0)
        */  
     }
          

}

bpn je viens de préciser que la console doit fonctionner à 1200 baud en 7 bit paire

autre chose,

si je commence une saisie et que j'attend le prg redémarre à zéro