Comment ramener un Arduino Uno/Mega à la vie! Comment corriger le problème ATMEGAxxU2

Je n'ai jamais rencontré de problème de "mort subite" avec mes Arduino.
Mais en faisant quelques recherches, j'ai découvert le mode DFU permettant la programmation du 16U2.
Des informations intéressante qui m'ont poussé jusque dans les notes techniques d'ATMel... j'y ai appris beaucoup de choses intéressantes.

Arduino ne répond plus... soudainement?
Le convertisseur USB Série (qui est aussi un micro-controleur ATMel 16U2) peut se déprogrammer. Dans certaines circonstances, il peut aussi voir son programme être corrompu (voir plus bas)... et nécessiter sa reprogrammation avec le programme USB Série.
Cette opération est aussi régulièrement répertoriée sous l’appellation "DFU Mode".

Pourquoi avoir placé un microcontrôleur là?
Le but d'un 8U2, 16U2, 32U2 (ou similaire) est de permettre  la reprogrammation du firmware de façon à transformer votre carte UNO en différents type de périphérique USB (contrôleur MIDI, HID, clavier, ... et port USB Série bien entendu).
Cfr: cet article d'arduino.cc (inclus un tutoriel pour transformer un Arduino en périphérique midi).

Comment le reprogrammer en USB Serie?
Je relaye l'information dans les sources ci-dessous... Cela pourrait être fort utile.
La source est quand assez précise avec une marche a suivre assez bien détaillée.

Sources:

Informations complémentaires:
Déprogrammation ?!?!? comment est possible!
Après avoir compulsé les notes d'application ATMel sur ATMega8U2, 16U2, ... (dont copie partielle ci-dessous) il apparait qu'il est possible de corrompre le programme stocké dans l'EEPROM du 16U2 dans certaines circonstances particulières.
Pour paraphraser: Durant les périodes à basse tension d'alimentation, les informations lues/stockées/traitées par le 16U2 peuvent être corrompue... de même que les instructions exécutées  (elles aussi lues depuis la flash) peuvent devenir quelconques... et donc pourquoi pas écraser une partie critique du programme. Gloups :-/

Les situations pouvant produire des chutes de tensions plus ou moins importantes/longues sont nombreuses et variées.
Je penses, et c'est strictement personnel, que les situations de retour de parasites par une masse commune peuvent certainement arriver à causer des troubles similaires (car ces parasites affectant aussi la stabilité de l'alimentation).

ATMel - Preventing EEPROM Corruption
During periods of low Vcc the EEPROM data can be corrupted because the supply voltage is
too low for the CPU and the EEPROM to operate properly. These issues are the same as for
board level systems using EEPROM, and the same design solutions should be applied.
An EEPROM data corruption can be caused by two situations when the voltage is too low. First,
a regular write sequence to the EEPROM requires a minimum voltage to operate correctly. Sec-
ondly, the CPU itself can execute instructions incorrectly, if the supply voltage is too low.
EEPROM data corruption can easily be avoided by following this design recommendation:
Keep the AVR RESET active (low) during periods of insufficient power supply voltage. This can
be done by enabling the internal Brown-out Detector (BOD). If the detection level of the internal
BOD does not match the needed detection level, an external low Vcc reset Protection circuit can
be used. If a reset occurs while a write operation is in progress, the write operation will be com-
pleted provided that the power supply voltage is sufficient.
 
ATMel - Preventing Flash Corruption
During periods of low Vcc, the Flash program can be corrupted because the supply voltage is
too low for the CPU and the Flash to operate properly. These issues are the same as for board
level systems using the Flash, and the same design solutions should be applied.
A Flash program corruption can be caused by two situations when the voltage is too low. First, a
regular write sequence to the Flash requires a minimum voltage to operate correctly. Secondly,
the CPU itself can execute instructions incorrectly, if the supply voltage for executing instructions
is too low.
 
 

3 commentaires:

  1. jai par erreur branche la fiche 12v dans le 5v.

    mon arduino et mon PC ont reboot.

    maintenant la LED L ne flash plus a l'allumage mais reste toujours on,

    des idees???



    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x0b
    avrdude: ser_drain(): read error: Le p�riph�rique ne reconna�t pas la commande.


    RépondreSupprimer
    Réponses
    1. Le microcontroleur fonctionne en 5V (et pas plus). Si vous l'avez alimentez en 12V il est mort --(direction)--> Poubelle.

      Supprimer
  2. Le microcontroleur fonctionne en 5V (et pas plus). Si vous l'avez alimentez en 12V il est mort --(direction)--> Poubelle.

    RépondreSupprimer