Graver séquence initialisation : j’ai peur!

Bonjour à tous,

Dans un kit robot débutant acheté sur Wish, j’ai reçu une Uno. Je n’en avais pas forcément besoin car j’avais déjà une Méga, mais bon...pourquoi pas.

Problème 1 : Quand je branche cette carte sur mon PC, il ne la reconnaît presque jamais malgré l’installation du pilote CH340...

Problème 2 : quand par miracle la carte est reconnue, j’ai un message d’erreur (que je n’ai pas noté et je n’arrive plus à reproduire suite problème 1) lors du televersement.

Avec ma mega qui n’est pas un clone, tout fonctionne correctement.

En fouinant un peu, il semblerait que de nombreux clones soient vendus sans bootloader (sympa pour un kit débutant!). J’ai donc trouvé ce tuto sur le net qui pourrait peut être résoudre mon problème : https://letmeknow.fr/blog/2015/11/04/resolution-du-probleme-de-televersement-rencontre-avec-les-clones-arduino-uno/

J’ai deux questions.
1 - Pensez vous que si je fais cette manip avec ma mega ça fonctionnera. Quel type de carte je dois sélectionner dans l’IDE? La Mega je suppose? Mais la séquence d’initialisation sera gravée convenablement sur le clone Uno dans ce cas ?
2 - Le terme « graver la séquence d’initialisation » le fait un peu peur et je ne veux surtout pas fumer ma Mega. De fait, est ce qu’il y a un risque dans cette procédure ? Est ce normal de graver la séquence avec la carte saine connectée ?

Je vous remercie pour vos réponses, et désolé si mes questions sont débiles je débute.

Merci!

Tu ne risques rien, la carte ne vas pas fumer.
Ces "vieux" termes : graver, fuse, etc, étaient vrais il y a plus de 30 ans, quand les réglages étaient irréversibles. Ils persistent par la force des habitudes malgré que maintenant tout soit réversible.
La "gravure" du bootloader se faisant dans une zone spéciale du micro il faut un programeur adapté.
Il en existe des tout fait : Usbasp, tinyusb, tu peux aussi charger le programme qui va bien dans une UNO pour la transformer momentanément en programmeur.

Problème 1 : Quand je branche cette carte sur mon PC, il ne la reconnaît presque jamais malgré l'installation du pilote CH340...

Qu'est ce que cela veut dire exactement ?
Tu ne la vois pas dans la liste Outils / Ports ?
Il se peut que ce soit le câble.

Bonjour,

D'accord avec hbachetti vérifie le cable et la connexion.
De toute façon avec un CH340 le port com doit apparaitre dans le gestionnaire de périphérique (si tu es sous windows) même si le bootloader est corrompu.

Bonjour,

Je ne reviens que maintenant vers vous, l'Arduino n'étant pas la priorité lors des fêtes de fin d'année (oui oui je sais, affligeant...dans quel monde vit-on!). Plus sérieusement, cet après midi je me suis donc lancé dans la mise en route de mon Arduino Uno (voir post précédents).

Donc déjà, maintenant j'ai trouvé la méthode pour que mon Arduino se connecte correctement à chaque fois sur le PC, c'était une broutille. En revanche, toujours un problème si j'essaye de téléverser un quelconque programme.

Exemple de message que j'ai lorsque j'essaie de téléverser "blink" :

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xec
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xec
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xec
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xec
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xec
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xec
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xec
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xec
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xec
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xec
Problème de téléversement vers la carte. Voir http://www.arduino.cc/en/Guide/Troubleshooting#upload pour suggestions.

L'erreur étant donc clairement nommé dans ce tuto (https://letmeknow.fr/blog/2015/11/04/resolution-du-probleme-de-televersement-rencontre-avec-les-clones-arduino-uno/), j'ai donc décidé d'appliquer le tuto. Problème, lorsque j'arrive à la fin, j'ai le message suivant :

avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.

Erreur lors de la gravure de la séquence d'initialisation.

Évidemment, j'ai tapé "-F" pour essayer, et ça ne change rien.

Mon petit doigt me dit que le fait que j'utilise une MEGA comme carte fonctionnelle alors que ma carte non fonctionelle est une UNO pourrait, peut-être, être la source du problème...mais en fait je n'en sais trop rien, ce problème dépasse largement mes compétences...

Dans les commentaires, certains disent qu'il faut téléverser en cliquant sur "Croquis>Televerser avec programmateur". Cette méthode ne fonctionne pas chez moi non plus... D'autres disent d'utiliser un condo de 470µF....pareil, échec.

Du coup, je reviens vers vous : avez-vous des suggestions ou bien des idées?

D'avance, merci!

Tu as essayé ceci ?

Je viens de l'essayer à l'instant. Effectivement le câblage est totalement différent...mais l'erreur reste exactement la même, à savoir :

avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.

Erreur lors de la gravure de la séquence d'initialisation.

Edit : j'ai bien vérifié mes connexions plusieurs fois....Et le condo est bien branché...

Essaie d'afficher les détails du téléversement dans les préférences.
J'aimerais connaître la signature du processeur.
Il se peut que ce ne soit pas un ATmega328P.

Je suppose que tu as bien chargé le sketch ArduinoISP dans la MEGA et que tu utilises "Arduino as ISP" comme programmateur ?

Tu supposes bien...

Excuse, je n'avais pas vu ton message précédent. Voici les détails :

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

System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

Using Port : COM3
Using Programmer : arduino
Overriding Baud Rate : 19200
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: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x000000 (retrying)

Erreur lors de la gravure de la séquence d'initialisation.
Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.

avrdude done. Thank you.

Edit : je précise que j'ai fait cette manip en étant branché à l'usb sur ma Mega - qui n'est pas un clone - selon le schéma ci-dessous :

Signature 0x000000
Pas bon signe
Je vais essayer la même manip demain.
@+

C’est super sympa! A demain !

Pas de problème pour moi.
Donc le schéma est correct.

J'ai fait la manip suivante :

Branchement USB de la MEGA sur le PC
Branchement SPI MEGA / UNO + condo

Ouverture sketch ArduinoISP
Type de carte : Arduino/Genuino Mega or Mega2560
Téléversement du sketch dans la MEGA (bouton téléverser)
Type de carte : Arduino/Genuino Uno
Outils / Graver la séquence d'initialisation

J'ai coupé le début : trop long
...

/home/riton/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino14/bin/avrdude -C/home/riton/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino14/etc/avrdude.conf -v -patmega328p -cstk500v1 -P/dev/ttyUSB1 -b19200 -Uflash:w:/home/riton/.arduino15/packages/arduino/hardware/avr/1.6.207/bootloaders/optiboot/optiboot_atmega328.hex:i -Ulock:w:0x0F:m 

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

         System wide configuration file is "/home/riton/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino14/etc/avrdude.conf"
         User configuration file is "/home/riton/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyUSB1
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified
avrdude: reading input file "0xDE"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDE:
avrdude: load data hfuse data from input file 0xDE:
avrdude: input file 0xDE contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude done.  Thank you.

         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 : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/home/riton/.arduino15/packages/arduino/hardware/avr/1.6.207/bootloaders/optiboot/optiboot_atmega328.hex"
avrdude: writing flash (32768 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against /home/riton/.arduino15/packages/arduino/hardware/avr/1.6.207/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: load data flash data from input file /home/riton/.arduino15/packages/arduino/hardware/avr/1.6.207/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: input file /home/riton/.arduino15/packages/arduino/hardware/avr/1.6.207/bootloaders/optiboot/optiboot_atmega328.hex contains 32768 bytes
avrdude: reading on-chip flash data:

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

avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: reading input file "0x0F"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x0F:
avrdude: load data lock data from input file 0x0F:
avrdude: input file 0x0F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lock verified

avrdude done.  Thank you.

Branchement USB de la UNO sur le PC
Téléversement du sketch BLINK dans la UNO (bouton téléverser)
OK

J'utilise une MEGA clone et une UNO clone CH340.

Tu utilises un condo de combien ?

10µF comme dans le tuto.

Quand le sketch ArduinoISP est dans la MEGA, ensuite il faut sélectionner :

Type de carte : Arduino/Genuino Uno
Programmateur : Arduino as ISP
Outils / Graver la séquence d'initialisation

C'est bien ce que tu fais ?

Bonsoir,

Désolé pour le délai de réponse, encore ces fêtes de fin d’année!

Oui c’est bien ce que j’ai fait et le problème reste identique.

Je vais me faire prêter un autre clone Arduino pour essayer la manip et voir si ça vient de la carte ou d’ailleurs pour essayer de comprendre.

Je pense pouvoir en récupérer un d’ici à la fin de cette semaine, je te tiens au courant.

Merci pour ton aide en tout cas, même si pour l’instant c’est chou blanc!

Il reste à envisager un défaut de la carte ...

Oui c’est clair. Je te tiens au jus.

Bon carte essayé sur un autre PC avec une personne qui a déjà utilisé des CH340 (et qui connaît plutôt bien le sujet) et verdict a priori la carte ne fonctionne pas.

Conclusion : on ne pourra pas dire qu’on a pas essayé! Direction la poubelle.

En tout cas merci beaucoup pour m’avoir aidé, j’ai malgré l’echec appris et compris pas mal de choses !

Merci encore !