Bonjour à tous,
Voilà je suis en pleine programmation d'un contrôleur MIDI sous arduino et j'utilise le firmware modifié hiduino pour envoyer les messages midi par le port usb de ma MEGA. (Ma MEGA est une révision 2 je crois)
Jusque là tout se déroulait bien, j'avais souvent besoin de reflasher mon arduino avec usbasp (ISP) vers le firmware d'origine pour pouvoir envoyer mon code source via l'IDE pour repasser ensuite sur hiduino. En effet, la communication via usb est désactivé sur le firmware hiduino pour permettre l'envoie d'informations MIDI.
Mais l'autre jour lorsque j'ai voulu reflasher ma MEGA vers le firmware d'origine le terminal m'a renvoyé un message d'erreur après vérification.
Voilà le code que j'ai utilisé :
avrdude -p at90usb82 -F -P usb -c usbasp -U flash:w:/Users/~/Desktop/MEGA-dfu_and_usbserial_combined.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m
Et voilà ce que j'ai eu après vérification :
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
0xf4 != 0xfc
avrdude: verification error; content mismatch
avrdude: safemode: efuse changed! Was f4, and is now fc
Would you like this fuse to be changed back? [y/n]
En réponse j'ai mis "y", je ne sais pas vraiment pourquoi d'ailleurs, pensant surement que ça n'avait que peu d'importance.
Depuis mon arduino ne répond plus, elle n'est ni reconnue par le système, ni par l'IDE.
Maintenant, lorsque j'essaie de flasher à nouveau mon arduino (avec le même code), le terminal me renvoie :
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for AT90USB82 is 1E 93 82
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude done. Thank you.
J'ai fouillé un peu dans les références d'avrdude, tentant de réparer ce problème de safemode (à priori) pour que la carte soit enfin reconnue, rien n'y fait.
Le terminal me renvoie exactement le même code même si ma carte n'est pas reliée à l'ISP, preuve que ma carte n'engage aucun dialogue avec avrdude.
J'ai essayé de mettre mon arduino en mode DFU pour uploader de nouveau le bootloader, un échec.
Mon but est seulement de remettre mon arduino sur les rails pour pouvoir switcher de nouveau entre hiduino et firmware d'origine, donc continuer à développer mon code source.
Mon arduino est-elle morte?
J'ai aussi essayé de flasher via le port ICSP (là ça relève du désespoir, on flash pas par ce port en théorie, ni en pratique d'ailleurs). Pourtant cela semble avoir eu un effet.
J'ai donc obtenu ceci :
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9801
avrdude: Expected signature for AT90USB82 is 1E 93 82
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: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: reading input file "/Users/Matisse/Desktop/MEGA-dfu_and_usbserial_combined.hex"
avrdude: input file /Users/Matisse/Desktop/MEGA-dfu_and_usbserial_combined.hex auto detected as Intel Hex
avrdude: writing flash (7452 bytes):
Writing | ################################################## | 100% 3.10s
avrdude: 7452 bytes of flash written
avrdude: verifying flash memory against /Users/Matisse/Desktop/MEGA-dfu_and_usbserial_combined.hex:
avrdude: load data flash data from input file /Users/Matisse/Desktop/MEGA-dfu_and_usbserial_combined.hex:
avrdude: input file /Users/Matisse/Desktop/MEGA-dfu_and_usbserial_combined.hex auto detected as Intel Hex
avrdude: input file /Users/Matisse/Desktop/MEGA-dfu_and_usbserial_combined.hex contains 7452 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 2.13s
avrdude: verifying ...
avrdude: 7452 bytes of flash verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.00s
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.00s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xD9"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.00s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xD9:
avrdude: load data hfuse data from input file 0xD9:
avrdude: input file 0xD9 contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.00s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xF4"
avrdude: writing efuse (1 bytes):
Writing | | 0% 0.00s ***failed;
Writing | ################################################## | 100% 0.06s
avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xF4:
avrdude: load data efuse data from input file 0xF4:
avrdude: input file 0xF4 contains 1 bytes
avrdude: reading on-chip efuse data:
Reading | ################################################## | 100% 0.00s
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
0xf4 != 0xfc
avrdude: verification error; content mismatch
avrdude: safemode: efuse changed! Was f4, and is now fc
Would you like this fuse to be changed back? [y/n]
Et là si je choisis "n" (no), le programme s'arrête (avrdude: safemode: Fuses OK avrdude done. Thank you. ),
si je choisit "y" (yes), le terminal fais un retour à la ligne, l'ISP bosse encore (led verte d'activité allumée) mais il ne se passe rien, je dois stopper le programme.
J'ai passer des heures à chercher une solution sur les forums sans rien trouver, et vu que je suis un peu beaucoup un newbie, c'est pas facile facile...
Voilà mon problème, j'espère que vous pourrez m'aider. Merci d'avance