Arduino Pro-Mini : problème de téléchargement avec ERREUR SYNC

Bonjour,
Je reviens vers vous pour un problème d'utilisation de l'Arduino Pro-Mini.
J'ai choisi ce module pour son faible encombrement et la possibilité de le mettre en veille pour limiter la consommation d'une pile de 3.7V.
Le programme est celui d'un fréquencemètre pour un anémomètre. Programme qui fonctionne avec un arduino UNO. J'utilise VSCODE;
J'avais précédemment utilisé ce module avec un petit programme d'essai avec succès.
Le core a été déclaré en "Arduino Pro et Pro-mini atmega 328P (voir "Platform.ini).

**; PlatformIO Project Configuration File**
**;**
**;   Build options: build flags, source filter**
**;   Upload options: custom upload port, speed and extra flags**
**;   Library options: dependencies, extra library storages**
**;   Advanced options: extra scripting**
**;**
**; Please visit documentation for the other options and examples**
**; https://docs.platformio.org/page/projectconf.html**

**[env:pro8MHzatmega328]**
**platform = atmelavr**
**board = pro8MHzatmega328**
**framework = arduino**

Voici le programme :

/*
Essais avec INTERRUPTIONS - pin 2 utilisée - Détection de PULSE par "FALLING"
La bande de fréquences utilisée est <= 250 Hz
*/
#define PIN_INPUT 2                 // Pin ATACH INTERRUPT 
#define DELAI_ENTRE_DEUX_PULSE 3    // Delai doit être >= 4 ms pour fréquence 250Hz max

volatile int NB_PULSE = 0;
volatile float PRECEDENT_DEPART = 0;

float FREQUENCE = 0.0;
#define TEMPORISATION 1000	//Lecture sur 1s pour avoir F avec NB_PULSE 

void ISR_PULSE()    // Fonction d'interruption
{
  static uint32_t precedentIT = 0;
  uint32_t  _millis = millis();     // _millis = variable temporaire
  if (precedentIT - _millis >= DELAI_ENTRE_DEUX_PULSE )
  {
    NB_PULSE++;
  }
  precedentIT = _millis;
}

void setup() 
{
  Serial.begin(9600);
  pinMode(PIN_INPUT, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(PIN_INPUT), ISR_PULSE, FALLING);

}

void loop()
{
  while ((millis() - PRECEDENT_DEPART) <= TEMPORISATION)
  {
    int _NB_PULSE;
    uint8_t oldSREG = SREG;   // Mémorisation de l'état du gestionnaire de registres
    /* Le bit 7 du registre SREG est mis à 0 pour que _NB_PULSE
      soit mis en mémoire et non dans deux registres de 8 bits */ 
    cli();   // ou  SREG &= ~(1<<I) ;  I étant le bit 7 du registre
               
    _NB_PULSE = NB_PULSE;
    // on redonne la main au gestionnaire des registres dans l'état de départ
    SREG = oldSREG;           
    Serial.println(_NB_PULSE);
  }
    FREQUENCE = NB_PULSE;
    Serial.print("FREQUENCE : ");
    Serial.print(FREQUENCE);
    Serial.println(" Hz");
    Serial.println();
    delay(5000);
    PRECEDENT_DEPART = millis();
    NB_PULSE = 0;
    
}

Je reçois le message d'erreurs suivant lors du téléchargement même si je le déclare en ESP8266.

Auto-detected: COM6
Uploading .pio\build\pro8MHzatmega328\firmware.hex
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

avrdude done.  Thank you.

*** [upload] Error 1
=============================================================== [FAILED] Took 5.40 seconds ===============================================================
 *  Arrêt du processus de terminal "C:\Users\Utilisateur\.platformio\penv\Scripts\platformio.exe 'run', '--target', 'upload'". Code de sortie : 1. 
 *  Le terminal sera réutilisé par les tâches, appuyez sur une touche pour le fermer. 

Apparemment, même si je sélectionne
image
Le core correct, dans la plateform.ini, il apparaît avec 8MHz et non 16MHz.

D'où vient ce blocage inattendu ?
Ou, quel type de core dois-je choisir ?

Merci pour vos réponses.
Bébert

:warning:

Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ je l'ai déplacé vers le forum francophone pour vous pour cette fois...

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

Bonsoir,
Désolé, je ne sais toujours pas entrer dans le bon forum. J'avais pourtant cliqué sur "Français" !
A suivre.

Avez vous l’IDE (1.x) installé sur votre machine ? Si oui est-ce que le téléchargement d’un code de base (qui ne fait rien) se passe correctement ?

Bonjour,

Merci pour votre réponse.

J'ai la version 1.87.2 de VSCODE.

En fait, le problème vient de l'utilisation du module CH340G (USB TO TTL). Avec l'IDE Arduino versions antérieures, il était facile de faire basculer le Reset de 0 à 1 dès l'apparition du message "Téléchargement" consécutif à la fin de la "Compilation". Et cela a toujours marché. Les branchements du module ne sont pas en cause.

Avec VSCODE, je n'arrive pas à savoir exactement quand mettre le RST à 1. Que j'effectue cela dès la commande de téléchargement ou juste après, le message d'erreur de synchro apparaît. J'ai réussi "miraculeusement" une fois, une seule !

Voilà où j'en suis.

Merci pour vos réactions.

Avec un FT232RL tu n'aurais pas ce problème, car le DTR (ou le RTS) peut être câblé sur le reset de la PRO MINI.
Le DTR (ou le RTS) bascule au moment de l'ouverture du port, donc un reset est provoqué sur la PRO MINI.
Le CH340G ne possède pas cette broche.

Merci à toi,

J'ai en effet trouvé une doc là-dessus :

"Plutôt que de nécessiter une pression physique sur le bouton de réinitialisation avant un téléchargement, l'Arduino Pro Mini est conçu de manière à permettre sa réinitialisation par un logiciel exécuté sur un ordinateur connecté. L'une des broches du connecteur à six broches est connectée à la ligne de réinitialisation de l'ATmega328P via un condensateur de 100 nF. Cette broche se connecte à l'une des lignes de contrôle de flux matériel du convertisseur USB-série connecté à l'en-tête : RTS lors de l'utilisation d'un câble FTDI, DTR lors de l'utilisation de la carte de dérivation Sparkfun. Lorsque cette ligne est affirmée (prise au niveau bas), la ligne de réinitialisation descend suffisamment longtemps pour réinitialiser la puce. Le logiciel Arduino utilise cette fonctionnalité pour vous permettre de télécharger du code en appuyant simplement sur le bouton de téléchargement dans l'environnement Arduino. Cela signifie que le chargeur de démarrage peut avoir un délai d'attente plus court, car l'abaissement de la ligne de réinitialisation peut être bien coordonné avec le début du téléchargement."

J'ai essayé effectivement avec le CH340G et la broche DTR du connecteur (côté Arduino Pro-Mini), connectée au RST via un condensateur de 100nF. Mais rien !

Par contre, avec l'IDE Arduino V 1.8.16, j'ai pu téléchargé avec la bonne vieille méthode vue ci-dessus.

Le module FT232RL possède une broche de RTS et une DTR. Il va me falloir en commander un donc...

Mais j'aimerais néanmoins savoir quelle manip faire avec VSCODE pour cette mise à 1 du RST au téléchargement..

Au plaisir de te lire.

Il n'y a pas de manip particulière, le DTR bascule à l'ouverture du port, c'est tout.
Sur certaines PRO MINI, le DTR peut être sérigraphié GRN.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.