Le téléversement ne semble pas fonctionner

Je suis débutant en Arduino, j'essaie d'apprendre tout seul avec ce que je trouve sur internet.

J'avais un projet et j'ai mis mon code sur l'Arduino, avec plein de prints pour comprendre ce qu'il se passe, notamment dans le setup.
A un moment donné, sans que je ne sache pourquoi, les prints du setup se sont mis à s'afficher en boucle, sans que je retélerverse mon code. Après, ça ne s'est plus produit.
En continuant de faire des tests, j'ai vu qu'aucune de mes modifications n'était prise en compte. J'ai essayé de repartir d'un code simple avec juste des prints, du genre :

void setup() {
  Serial.println("LE TEST");
}
void loop() {
  delay(10000);
  Serial.println("encore un test");
}

Lorsque je téléverse, c'est encore les prints de mon ancien projet qui sont affichés, sans aucun rapport avec ça.

Est ce que vous avez une idée de comment je peux effacer la mémoire de mon Arduino pour pouvoir mettre du nouveau code dessus ? J'ai essayé d'appuyer sur le bouton reset, ça n'a rien fait.

Merci d'avance ! :slight_smile:

Post mis dans la mauvaise section, on parle anglais dans les forums généraux, je viens de déplacer le post dans la section francophone.

Merci de prendre en compte les recommandations listées dans "Les bonnes pratiques du Forum Francophone".

C'est que le téléchargement ne se passe pas bien et vous avez toujours l'ancien code qui boucle (et sans doute plante et reboot si vous voyez le texte se répéter)

Quel type d'arduino avez vous et quel code aviez vous chargé précédemment ?

Mon Arduino est une Arduino Uno, et voici le code que j'ai téléversé précédemment :

#include <ELECHOUSE_CC1101_SRC_DRV.h>

#define PIN_MOSI 11
#define PIN_MISO 12
#define PIN_SCK 13
#define PIN_CS 10
#define FREQUENCY_MHZ 433.92  // mettre 433.0 si besoin

unsigned long pktCount = 0;

void setup() {
  Serial.begin(300);
  delay(50);
  Serial.println("\n=== CC1101 Sniffer diagnostic pour télécommande ===");

  // config des pins SPI
  //ELECHOUSE_cc1101.setSpiPin(PIN_MOSI, PIN_MISO, PIN_SCK, PIN_CS);

  // tentative d'initialisation
  if (!ELECHOUSE_cc1101.getCC1101()) {
     Serial.println("Erreur: CC1101 non detecte ! Verifie cablage / alim 3.3V");
     while (1) delay(500);
   }

   ELECHOUSE_cc1101.setMHZ(FREQUENCY_MHZ);
  //Init avec sequence CS LOW / Init / CS HIGH pour EBYTE (si besoin)
  // pinMode(PIN_CS, OUTPUT);
  // digitalWrite(PIN_CS, LOW);
  // delay(1);
  // ELECHOUSE_cc1101.Init();
  // digitalWrite(PIN_CS, HIGH);
  // delay(1);

  //ELECHOUSE_cc1101.SetRx();
  Serial.println("Sniffer actif. Appuie sur la télécommande maintenant...");
  // Serial.println("\n");
  // Serial.println("\n");
  // Serial.println("\n");
  // Serial.println("\n");
  delay(5);
}

void loop() {
  Serial.println("Dans loop");
  if (ELECHOUSE_cc1101.CheckRxFifo(100)) {
    byte buf[64];
    byte len = ELECHOUSE_cc1101.ReceiveData(buf);
    pktCount++;
    unsigned long t = millis();

    Serial.print("#");
    Serial.print(pktCount);
    Serial.print("  t=");
    Serial.print(t);
    Serial.print(" ms  len=");
    Serial.print(len);
    Serial.print("  HEX: ");
    for (byte i = 0; i < len; i++) {
      if (buf[i] < 0x10) Serial.print('0');
      Serial.print(buf[i], HEX);
      Serial.print(' ');
    }

    Serial.println();
    ELECHOUSE_cc1101.SetRx();  // Retour en réception
   }

  Serial.println("En attente");
   delay(50);
}

Et voici les prints que j'ai dans mon Serial Monitor :

�
=== CC1101 Sniffestic pour télécommande ===
Erreur: CC1101 non detecte ! Verifie cablage / alim 3.3V
Ղ�v�gFZV*gC��=ƒCKG�STgDGi

Ces prints s'affichent à chaque fois que je téléverse mon code (ils ne bouclent pas).

OK donc l'ordre de téléchargement déclenche bien le reboot de la carte mais pas l'installation du nouveau firmware, donc vous voyez l'exécution de l'ancien code.

➜ Débranchez complètement le module CC1101 (alimentation 3,3 V et toutes les liaisons vers les broches 10, 11, 12, 13 et toute autre broche), déconnectez puis reconnectez l'arduino au port USB, puis tentez de téléverser un sketch très simple (par exemple le Blink) depuis l’IDE Arduino.

Si le téléversement fonctionne après avoir débranché le module, alors le CC1101 ou son câblage empêche l’upload ; rebranchez-le ensuite en vérifiant qu’aucune broche RESET, RX(0) ou TX(1) n’est connectée au module et que l’alimentation 3,3 V ne tire pas trop de courant.

Si le téléversement échoue toujours, essayez la méthode du reset manuel : appuyez et maintenez le bouton RESET sur l’UNO, lancez l’upload dans l’IDE, puis relâchez le reset exactement quand l’IDE affiche « Uploading… ».

Merci pour votre réponse.
J'ai débranché complétement le module CC1101 et toutes les liaisons, puis débranché et rebranché mon Arduino, qui est connectée maintenant qu'à l'ordinateur en USB.
J'ai essayé de téléversé le code, et j'ai toujours les mêmes prints qui s'affichent dans mon Serial Monitor :

=== CC1101 Sniffestic pour télécommande ===
Erreur: CC1101 non detecte ! Verifie cablage / alim 3.3V
�
�bB�w�(*v'�
zʃCKR�rRcWh�

J'ai essayé de faire un reset manuel en suivant vos instructions, mais j'ai toujours le même problème. Je me demande si je n'ai pas cassé la connexion à la mémoire de mon Arduino...

essayez plusieurs fois, parfois c'est difficile de relâcher le bouton au bon moment exactement

Avez vous un second arduino UNO ou un programmeur ISP, vous pourriez réinstaller le boot loader ?

vous n'avez pas touché aux "fuses" ? vous aviez bien chargé le code avant juste par l'IDE ? pas de court circuit ?

J'ai essayé une dizaine de fois, je vais encore retester.

Je n'ai pas de second Arduino Uno ni de programmeur ISP pour réinstaller le bootloader. Vous pensez que la solution serait que j'en achète un ?

Non, j'ai bien chargé le code juste par l'IDE Arduino.

il y a peu de chances que vous ayez endommagé quoi que ce soit alors, sauf si vous avez fait un court circuit sur la broche 0 et que cela ait affecté le Rx du port série.

Avez vous essayé avec un autre câble USB ?

Je pense que ce qui a déclenché le problème est que j'ai branché le module CC1101 directement sur 3.3V sans résistance, et que peut être qu'il tirait trop de courant, ce qui pourrait expliquer que le setup se relançait.

Je n'ai pas essayé avec un autre câble USB, je vais voir si j'en trouve un autre.

Tirer trop de jus au travers des petites pistes peut avoir endommagé la carte...

Est-ce que dans les préférences les compte-rendus détaillés sont activés?

  • Si non, les activer et relancer un téléchargement
  • Si oui, quel message apparaît dans la console lors du téléchargement?

Le module CC1101 ne tire pas beaucoup de courant, de mémoire c'est de l'ordre d'une vingtaine de mA.

Par contre comme beaucoup d'autres circuits récents le CC1101 n'est pas 5V tolérant sur ses entrées/sorties.
La UNO lui envoie des signaux 5V. Cela ne met pas la UNO en danger par contre le CC1101 peut en souffrir.

Edit: après vérification la consommation du CC1101 peut grimper jusqu'à une trentaine de mA si on configure la puissance max en émission. Ce qui n'est pas énorme.

Ok oui - ce n’est sans doute pas le souci donc plutôt bon signe !

Ça pourrait expliquer pourquoi il n’est pas trouvé mais pas pourquoi ça ne fonctionne pas quand il est entièrement débranché

J'ai ajouté les comptes rendus détaillés, voici ce qui s'affiche en rouge :

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "{LOCALPATH}\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM5
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 3
         Firmware Version: 4.4
         Vtarget         : 0.3 V
         Varef           : 0.3 V
         Oscillator      : 28.800 kHz
         SCK period      : 3.3 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "{LOCALPATH}\arduino\sketches\32BCE5D07C39726026ED038DDAE8936D/blink.ino.hex"
avrdude: writing flash (924 bytes):

Writing | ################################################## | 100% 0.13s

avrdude: 924 bytes of flash written

avrdude done.  Thank you.

De ce que j'en comprends, il détecte que l'écriture se fait correctement, non ? Si oui, ça me surprend d'avoir toujours les anciens logs ...

Ok, c'est plutôt bon signe en effet, merci !

Donc, le téléchargement c'est bien passé.
Cela correspond à quel code?

C'est un code de Blink basique que j'ai trouvé sur le site Arduino :

{ 
    //On initialise le pin 13 qui est associé à la LED en sortie pour pouvoir l'allumer et l'éteindre
    pinMode(13, OUTPUT); 
} 

void loop() 
{
  digitalWrite(13,HIGH); //Place le pin digital 13 à l'état HAUT (5V) -> Led allumée
  delay(500); //Met en pause le programme pendant la valeur de 500 en ms

  digitalWrite(13,LOW); //Place le pin digital 13 à l'état BAS (0V) -> Led éteinte
  delay(500); //Met en pause le programme pendant la valeur de 500 en ms
} 

Et j'ai toujours le même print correspondant à mon vieux code dans la console :

=== CC1101 Sniffnostic pour télécommande ===
Erreur: CC1101 non detecte ! Verifie cablage / alim 3.3V
�
�bB�w�(*v'�
{ËSvCG$�#
�

De plus, la carte ne clignote pas, donc le code Blink ne s'exécute pas du tout.

Je viens d'essayer avec un câble neuf, j'ai toujours le même problème.