Problème d'upload Arduino Mega 2560

Bonjour j'utilise une carte Arduino Mega 2560 et jusqu'à hier j'arrivais à uploader mes programme. Maintenant quand j'essaye de les uploader ce message s'affiche :

avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: ser_send(): write error: sorry no info avail

Pouvez vous m'aider ? Merci d'avance

Bonjour,

Voici de manière un peu cru la liste des choses à regarder :

Est ce que le bon port est sélectionné dans l’IDE ?
Tente de débrancher la mega, fermé l’IDE, rebranché la mega et rouvre l’IDE.
Si rien n’y fait tente un reboot de l’ordi.

Si toujours rien n’y fait c’est peu être un probléme de bootloader ou de microcontrolleur grillé ?
Est ce que la led pin 13 clignote trois fois lors d’une tentative d’upload ?
Si oui → bootloader bugé ou upload bloqué par un précédant sketch ou ATmega hs,
si non → ATmega8U2 hs ou drivers complétement dans les chou (-> quel OS ?).

voila voila :wink:

merci d'avoir répondu aussi vite. La led de la pin 13 ne s'allume pas pendant l'upload cependant j'ai une led branchée sur la pin 17 qui reste allumée. En ce qui concerne l'OS je suis sous windows vista. Je pense que les bons ports sont sélectionnés parce que quand je vais dans gestion de périphérique je vois la carte sur COM3 et c'est ce que j'ai configuré. Voilà j'espère que sa te permettra de m'aider.

j'avais eu le problème après une grossière erreur sur un de mes sketch qui faisait planté l'arduino, du coup pour uploader une version corrigé j'ai du reset avec le bouton manuellement ... En espérant que ça puisse te dépanner ...

Chanis: merci d'avoir répondu aussi vite. La led de la pin 13 ne s'allume pas pendant l'upload cependant j'ai une led branchée sur la pin 17 qui reste allumée. En ce qui concerne l'OS je suis sous windows vista. Je pense que les bons ports sont sélectionnés parce que quand je vais dans gestion de périphérique je vois la carte sur COM3 et c'est ce que j'ai configuré. Voilà j'espère que sa te permettra de m'aider.

Humm si la led pin 17 reste allumé c'est que l'ATmega de l'arduino doit être sain et sauf maintenant effectivement est ce que le sketch précédant ne faisait un usage intensive du port série au point de bloquer l'upload ? Tente de maintenir le bouton reset appuyé jusqu'a ce que "binary done size ..." s'affiche dans la console arduino, la led pin 13 doit clignoter 3 fois assez rapidement (vérifie que rien n'est branché sur la broche D13 pour optimisé tes chances d'upload).

Si cela ne fait rien et que le sketch précédant n'utilisait pas le port série il faudra tester l'ATmega8u2 qui gére le port série en reliant RX et TX ensemble et en ouvrant la console série, ce que tu tappe doit s'afficher en retour dans la console.

Même avec le reset sa ne marche pas cependant après avoir appuyer sur reset ou même après avoir branché la carte la led de la pin 13 clignote 2 fois et la led RX clignote lentement.

Chanis: Même avec le reset sa ne marche pas cependant après avoir appuyer sur reset ou même après avoir branché la carte la led de la pin 13 clignote 2 fois et la led RX clignote lentement.

Je vois, le clignotement de la pin Rx c'est avrdude qui tente d'initialiser la communication avec l'arduino, pour le led pin 13 qui clignote deux fois de toute évidence il semblerai que le bootloader ne réponde plus, si c'est la bonne board "arduino mega2560" sélectionné dans l'ide je pense que le bootloader à eu chaud.

Oui c'est la bonne board qui a été sélectionné dans l'IDE. Qu'est ce que je dois faire si c'est le bootloader qui a eu chaud? Encore merci de répondre aussi rapidement.

Chanis: Oui c'est la bonne board qui a été sélectionné dans l'IDE. Qu'est ce que je dois faire si c'est le bootloader qui a eu chaud? Encore merci de répondre aussi rapidement.

Si tu as une autre carte arduino regarde le sketch arduinoISP fourni avec l'ide il est fait pour. http://arduino.cc/en/Tutorial/ArduinoISP

J'ai pas de deuxième carte arduino. Je vais plus pouvoir uploader un programme avec celle la?

Et bien sans aucun moyen de savoir comment ni pourquoi le bootloader ne répond plus et sans moyen de pourvoir tenter une reprogrammation "propre" de l'ATmega je ne vois pas vraiment de solution.

Quel était le dernier sketch uploadé avant que les bug débute ? Pas de choc, court circuit ou autre qui aurait pu causait le probléme ?

Dans ce genre de situation une reprogrammation de l'ATmega permettrai de savoir si c'est le bootloader qui est en cause (ou le cas échéant si l'ATmega est hs).

As tu tenté le "null modem" (RX et TX relié ensemble) pour voir si le port série fonctionne ? Si le port série fonctionne, que le reset manuelle n'as pas fonctionné aprés n reprise et que l'upload retourne toujours un timeout c'est que le probléme vient de l'ATmega2560 ou du bootloader (avec une grosse probabilité que ce soit le bootloader).

Tu ne connait pas une personne qui pourrait te prêtait une carte arduino pour tentez une reprogrammation ? Retente le reset manuelle mais si rien ne marche j'ai bien peur que la reprogrammation ne soit la seul solution.

Si d'autres membres du forum ont des idées sur le sujet, histoire de lui éviter le passage par un programmateur ...

Le dernier sketch uploader était je crois :

// Déclaration des constantes 
// Constantes des broches

// on cable leds DDD et leds défauts d'en haut à droite à en haut à gauche (le changement de direction étant prioritaire sur les leds du U)
const int Leddefaut[11]={48,44,30,25,22,19,16,9,6,3,0};
// le numéros des sorties des leds dépends du branchement 
const int Ledcorrection[22]={51,50,44,43,32,31,27,26,24,23,21,20,18,17,15,14,8,7,5,4,2,1};

// on cable les boutons poussoirs des défauts sur les entrées analogiques
const int bouttondefaut[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};
// 13 premières entrées analogiques sont les boutons défauts
const int boutton[3]={14,15,16};
// E analogique 14 : changement défaut monophasé
// E analogique 15 : changement défaut polyphasé
// E analogique 16 : solution

// vitesse permettra de régler le clignotement des leds
int vitesse (1000);
// exemple permettra de savoir quel est le défaut en cours
int exemple=0;
// temp est la valeur de stockage de exemple
int temp=0;

// monopoly permettra de savoir si on est dans le cas d'un défaut polyphasé (1) ou d'un défaut monophasé (0)
int monopoly=0;

// valeur stoquant les valeurs de broches analogique
int valeur[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

// permet de savoir si la réponse est bonne
int solution=0;
int reponse=0;

char temp2='m';
char temp3='s';

// variable d'allumage
byte defaut1=00000000; // 8 premières leds de défaut
byte defaut2=00000000; // 5 dernières leds de défaut
byte ddd1=00000000; // 8 première leds DDD  V,R,V,R,V,R,V,R 
byte ddd2=00000000; // de 8 à 16 (V,R,V,R,V,R,V,R)
byte ddd3=00000000; // de 16 à 22 (V,R,V,R,V,R)
byte eteint=00000000; // permet d'avoir toujours une variable avec tous les byte nulle utile pour éteindre toute les leds

void setup() {
  

// ------- Broches en sortie -------  

// met les 12 leds defauts en sorties
for (int i=0; i<=11; i++) { 

  pinMode(Leddefaut[i], OUTPUT); //met la broche en sortie
  digitalWrite(Leddefaut[i], HIGH); // met la broche à 0V (Leds éteintes) pour démarrer

}

// met les 22 leds DDD en sorties
for (int i=0; i<=21; i++) { 

  pinMode(Ledcorrection[i], OUTPUT); //met la broche en sortie
  digitalWrite(Ledcorrection[i], HIGH); // met la broche à 0V (Leds éteintes) pour démarrer

}


} // fin de la fonction setup()


void loop(){ // debut de la fonction lo


 
    }//fin de la fonction loop

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Fonction gérant l'allumage de la solution

    void allumedefaut(byte valeur,int v) { // allume les leds des defauts
  if (v==1){
    for (int i=0; i<=7; i++) {
      digitalWrite(Leddefaut[i],bitRead(valeur,7)); 
    }
  }
  if(v==2){
    for (int i=0; i<=3; i++) {
      digitalWrite(Leddefaut[i],bitRead(valeur,7)); 
    }
  }
     }
  
     void allumeddd(byte valeur, int v) { // allume les leds des DDD
  if (v==1) {
    for (int i=0; i<=7; i++) {
      digitalWrite(Ledcorrection[i],bitRead(valeur,7)); 
    }
  }
  if (v==2) {
    for (int i=8; i<=15; i++) {
      digitalWrite(Ledcorrection[i],bitRead(valeur,7)); 
    }
  }
  if (v==3) {
    for (int i=16; i<=21; i++) {
      digitalWrite(Ledcorrection[i],bitRead(valeur,7)); 
    }
  }
     }

Et sinon il faut que je relie RX et TX ensemble? Et comment je saurais si le port série fonctionne?
Après je crois pas qu’il y ai eu de choc ou de court circuit.

Edit de Jean-François :
Merci de mettre les balises “code”.

QUE ! ...

Erreur fatal :stuck_out_tongue_closed_eyes:

Et comme tu est un coquinou tu n'utilise pas la balise code ! sache que sans la balise code tout ton code devient FAUX car les ..i.. disparaissent !

Edit: Jean-Francois plus rapide que l'éclair ;) mes deux lignes du dessus deviennent inutile du coup ! Dommage j'avais réussi à capté le truc des balises tout seul :grin:

Mais là ou le bas blesse vraiment c'est que tu as placé les broches 0 et 1 en sortie et à high ! (dernière valeur des deux premiers const int) Broches 0 et 1, tient ! RX et TX ! avec ce code tu as bloqué le port série !

Au vu de ce code tout s'explique ! Ton bootloader [u]va bien[/u], l'erreur c'est que tu lui a coupé l'herbe sous le pied !

Presse et tient appuyer le bouton reset, enlève tout ce qui est sur les broches 0 et 1, prend le sketch blink, ensuite tu tente un upload, quand "binary size ..." apparait tu attend disons une ou deux seconde (à toi de voir aprés quelque essais) puis tu relâche le bouton et tu prie pour que l'upload démarre ! Si ça ne marche pas retente mais en appuyant sur reset juste au moment ou "binary ..." s'affiche.

Voila ce que c'est de faire joujou avec les broches 0 et 1 ;) Ne JAMAIS utiliser les broches 0 et 1 sauf cas de force majeur sinon les problèmes pendent au nez ;)

skywodd: Edit: Jean-Francois plus rapide que l'éclair ;) mes deux lignes du dessus deviennent inutile du coup ! Dommage j'avais réussi à capté le truc des balises tout seul :grin:

De temps en temps je suis là ... XD

Merci beaucoup sa à marcher (enfin je pense il y a eut ("uploading done")). Donc il ne faut rien mettre sur les broches 0 et 1 ? (je crois que j'avais rien mis dessus les fois d'avant ce qui expliquerai pourquoi sa marchait).Et j'ai pas compris l'histoire des balises code pouvez vous m'expliquer? En tous cas encore merci je sais pas ce que j'aurais fait si sa n'avait pas marché.

Lorsque tu écris ton message, il y a des boutons au dessus de la fenêtre d'édition, celui avec "#" est le bouton pour la balise code, tu mets les codes de tes messages entre ces balises, cela rend le message plus lisible.

Chanis:
Merci beaucoup sa à marcher (enfin je pense il y a eut (“uploading done”)). Donc il ne faut rien mettre sur les broches 0 et 1 ? (je crois que j’avais rien mis dessus les fois d’avant ce qui expliquerai pourquoi sa marchait).Et j’ai pas compris l’histoire des balises code pouvez vous m’expliquer?
En tous cas encore merci je sais pas ce que j’aurais fait si sa n’avait pas marché.

Si tu as “upload done” c’est que tu as réussi :wink: et oui ne jamais rien faire (pinmode digital…) sur les broches 0 et 1 sinon gare aux problèmes.
Tente d’upload un autre sketch comme je sais pas blink non delay ou autre pour voir mais normalement ça devrait marcher.

Pour la balise code :
prennont ce morceau de code :

pinMode(Leddefaut[i], OUTPUT);

sans la balise code il s’affiche pinMode(Leddefaut, OUTPUT); (car [.i.] est reconnu comme la balise italique !) c’est trés embattant pour les personnes qui veulent t’aider !
Alors qu’en métant [.code.]pinMode(Leddefaut_, OUTPUT);[./code.] (sans les points et avec le i entre crochet) tu vois le code sans que le moteur de bbcode du forum ne foute la m*rde ;)_

Tout marche! Merci beaucoup