Ai-je ma brique Arduino Uno? Problèmes liés au chargement sur le tableau

86

Je ne peux pas télécharger de croquis sur mon Arduino Uno.

  • Est-ce que je l'ai "maquillé"?
  • Quelles mesures puis-je prendre pour déterminer ce qui ne va pas?
  • Que puis-je faire pour le réparer?
Nick Gammon
la source
7
Pour ceux qui se demandent, ce n'est pas une question réelle! C'est plus une question de référence. La question elle-même est délibérément très large. La réponse est cependant très détaillée et cette question peut donc être utilisée comme référence.
Paul
2
C'est plus une question de référence. Tout à fait correct. Voir C'est OK pour Demander et répondre à vos propres questions .
Nick Gammon
@ Nick_Gammon Oui. Mais j'estime que vous auriez dû le noter quelque part. Au premier abord, j'ai été (légèrement) agacé par le fait que la question était si vaste et qu'il semblait que vous n'aviez fait aucune recherche. Mais quand j'ai vu votre réponse, cela a eu du sens. De plus, quand vous le pouvez, vous ne devez pas oublier d’accepter votre propre réponse, afin que les autres personnes qui essaient d’aider ne commencent pas à répondre, à chercher ou à commenter des questions à ce sujet (ce qui ne vous aiderait pas vraiment, déjà trouvé un moyen plutôt bon de déboguer ce problème).
Paul
Merci pour les commentaires. J'avais d'abord pensé poster la question avec une note indiquant que j'allais poster ma propre réponse, mais j'ai ensuite vu la case à cocher "Répondre à ta propre question", alors j'ai coché cette case à la place. Quant à l'accepter, je ne suis pas autorisé à le faire pendant 20 heures. Il m’a semblé un peu étrange d’accepter votre propre réponse, mais je peux certainement le faire lorsque je suis autorisé à le faire. J'ai posé une question sur Meta Arduino. Qu'est-ce qu'une question canonique, exactement? pour essayer de trouver la bonne procédure mais aucune réponse.
Nick Gammon
@FuaZe et Nick Gammon: Cela semble génial en général, la seule suggestion que je ferais serait de rendre le sujet plus suggestif de la nature de la question et de la réponse. Dans l’état actuel des choses, j’aurais peut-être tenté d’être trop vague. Peut-être le titre pourrait-il être "Comment puis-je résoudre les problèmes de téléversement?"
dlu

Réponses:

115

Ce n'est probablement pas en brique

J'ai pas mal d'Arduinos, et au cours des dernières années, je n'en ai jamais fabriqué qu'un seul, et je pense que c'était en le zappant avec de l'électricité statique. Malheureusement, celui-ci avait une puce de processeur SMD (monté en surface), il n’est donc pas facile de l’échanger avec une autre puce.

Restez calme et essayez les étapes suivantes ...


Exemple de tableau

Un "Arduino Uno" n'est pas une chose qui pourrait échouer. Il comporte plusieurs composants principaux, et un seul peut avoir échoué (le cas échéant). Voir cette photo de référence:

Composants majeurs d'Arduino Uno

Les principaux composants sont:

  • Processeur Atmega16U2 - gère l'interface avec la connexion USB
  • Processeur Atmega328P - C’est le processeur "principal" sur lequel figure votre dessin.
  • Régulateur de tension - convertit l'alimentation d'entrée de la prise d'alimentation en 5 V
  • LED d’alimentation (verte) - marquée "On"
  • Voyant DEL (jaune) marqué "L" - connecté via un amplificateur opérationnel à la broche numérique 13
  • Voyants Rx et Tx (jaunes) - ils indiquent si la puce USB (Atmega16U2) est en cours de réception ou de transmission

Notez que les voyants Rx et Tx ne sont pas directement connectés aux broches numériques 0 et 1 de la carte (marquées Rx et Tx). Ils ne s'allument que si vous établissez des communications série via USB , pas si vous avez quelque chose (comme un GPS) branché directement sur les broches numériques 0 et 1.

Notez également que, puisque la DEL "L" est connectée via un amplificateur opérationnel, elle peut s’allumer si la broche 13 est définie sur une entrée de votre esquisse. C'est normal. Cela ne signifie pas que quelque chose envoie par erreur des données.


Vérifiez le pouvoir

Alimentation USB

  • Branchez la carte dans votre ordinateur avec le câble USB et vérifiez que le voyant vert "On" s'allume.

  • Utilisez un multimètre et deux cavaliers pour tester entre la broche 5V et la broche GND (flèche en bas). Vous devriez avoir une lecture d'environ 5,0 V (j'ai 5,04 V sur le mien).

(Vous pouvez acheter un multimètre bon marché pour environ 10 USD si vous n'en avez pas, mais vous feriez mieux d'en acheter un meilleur pour environ 50 USD - consultez tous les sites Web et les magasins de produits électroniques.)

  • Également tester entre la broche 3,3 V et la broche GND - vous devriez obtenir 3,3 V.

Si vous n'obtenez pas le 5 V avec le câble USB branché, assurez-vous que l'autre extrémité est connectée à votre ordinateur. Essayez également un autre câble.

Prise de courant

  • Si vous utilisez ou prévoyez d’utiliser la prise d’alimentation (marquée "power in" sur la photo), débranchez le câble USB et branchez un bloc d’alimentation - qui devrait être de 7 à 12 V CC avec le positif sur la broche centrale .

  • Mesurez les broches 5 V et 3,3 V comme ci-dessus. Vous devriez toujours voir les mêmes tensions sur eux.

Si vous obtenez 5 V avec le port USB connecté, mais pas avec l'alimentation, le régulateur de tension (indiqué sur la photo) est probablement endommagé. Ou, éventuellement, l'alimentation est en panne. Essayez une alimentation différente pour confirmer laquelle.


Vérifiez le flash LED de mise sous tension

Si vous avez le chargeur d'amorçage Optiboot (normalement livré avec l'Uno), si vous appuyez puis relâchez le bouton de réinitialisation ou si vous débranchez et branchez le câble USB ou le câble d'alimentation, le voyant "L" doit clignoter rapidement 3 fois. Les temps "marche" et "arrêt" sont de 50 ms chacun, les trois clignotements devraient être terminés en environ 1/3 de seconde.

Si ce n'est pas le cas, vous pouvez avoir un problème avec le chargeur de démarrage ou la puce du processeur principal (Atmega328P).


Essayez de télécharger un croquis

Important: si vous rencontrez des problèmes pour télécharger des esquisses, supprimez tous les périphériques connectés (tels que les boucliers). Retirez également les fils de connexion branchés dans les prises de la carte. En particulier, rien ne doit être branché sur les broches numériques 0 et 1 (Rx et Tx) car cela gênerait la communication avec l’ordinateur qui télécharge.

Choisissez l’un des exemples simples (par exemple, Blink) et essayez de le télécharger. Voici ce que vous devriez voir:

  • Le voyant "L" doit clignoter 3 fois. En effet, la puce principale est réinitialisée par une commande du processus de téléchargement.

  • Le voyant "Rx" devrait clignoter rapidement. Voici les instructions du processus de téléchargement essayant d'activer le chargeur de démarrage.

  • Le voyant "Tx" devrait clignoter rapidement. C'est le processeur qui acquitte les données téléchargées.

Vous pouvez voir ce qui précède même si le processus de téléchargement échoue. Cela peut être dû au fait que le type de carte sélectionné est incorrect.

Si seul le voyant "Rx" clignote, cela peut être dû à un problème lié au chargeur de démarrage ou à la puce du processeur principal (Atmega328P). Quelqu'un frappe à la porte, mais personne n'est à la maison!

Vérifiez le type de conseil

Si les voyants clignotent mais que vous recevez un message comme celui-ci:

avrdude: stk500_recv(): programmer is not responding

Vérifiez le type de tableau:

Menu de type conseil

Si vous avez sélectionné le mauvais type de carte, il enverra probablement les instructions de chargement incorrectes, ainsi que le délai d'expiration ou l'échec. Si vous êtes comme moi et que vous avez différents forums, il est facile d’oublier que le dernier téléchargement que vous avez effectué concernait un type de forum différent.

Vérifiez le port de communication

Si les voyants ne clignotent pas du tout, vous avez peut-être sélectionné le mauvais port de communication.

Vérifiez le port de communication:

Menu du port de communication

Essayez un autre PC / Mac si possible

Essayez votre Arduino sur un autre PC / Mac si vous en avez un. Cela peut permettre de déterminer si vous avez un problème avec l'ordinateur auquel vous l'avez branché ou avec les ordinateurs en général.

Faire un test de bouclage

  • Débranchez tous les blindages et autres fils
  • Retirer le conseil du pouvoir
  • Connectez un fil de liaison de RESET à GND (fil orange sur la photo)
  • Connectez un cavalier de Rx à Tx (fil blanc sur la photo)

Câblage:

Test de bouclage

  • Branchez le câble USB et démarrez un programme de terminal, tel que le moniteur de terminal dans l'IDE Arduino. Tapez quelque chose et envoyez-le (par exemple, appuyez sur Entrée dans le Terminal Monitor).
  • Tout ce que vous tapez doit être répercuté.

Si tout est renvoyé: cela confirme que vous avez le bon port de communication, le câble USB est en bon état et la puce d’interface USB (Atmega16U2) est probablement en bon état.

Si rien n'est renvoyé, vérifiez:

  • Vous avez le bon port de communication.
  • Essayez un autre câble. Certains câbles USB bon marché ont uniquement des câbles d'alimentation et non des câbles de données.
  • Vérifiez que le pilote de périphérique pour Arduino est installé. Vous n’avez probablement pas besoin de faire cela si cette carte fonctionnait auparavant sur cet ordinateur, mais cela peut valoir la peine si c’est la première fois que vous la branchez à cet ordinateur.

Testez la puce Atmega16U2

Si votre carte échoue au test de bouclage et que vous êtes certain que le câble USB est correct, vous pouvez alors tester la puce Atmega16U2 elle-même. Un en-tête ICSP (In Circuit Serial Programming) se trouve sur la carte, à côté de la puce Atmega16U2 et à proximité du port USB.

Débranchez d'abord l'alimentation (débranchez le câble USB et tous les câbles d'alimentation).

Ensuite, vous pouvez connecter l’en-tête ICSP via 6 fils de liaison à une bonne Uno, comme indiqué sur la photo:

Testez la puce Atmega16U2

Les broches de l'en-tête ICSP sont (depuis le haut):

En-tête ICSP

La broche 1 sur l'en-tête ICSP près de la puce Atmega16U2 est marquée d'un petit point blanc, près du "F" dans "AREF". La broche 1 sur l'en-tête ICSP près de la puce ATmega328P est marquée d'un petit point blanc, situé sous le "N" de "ON".

Connectez-vous:

Good board         Target Uno

  MISO                MISO    (pin with dot - pin 1)
  VCC                 VCC
  SCK                 SCK
  MOSI                MOSI
  D10                 /RESET
  GND                 GND

Vérifiez votre câblage.

Ensuite, installez l’esquisse "Atmega_Board_Detector" sur la carte "correct", comme décrit sur la page de programmation du chargeur de démarrage Atmega . Le code est à GitHub - nickgammon / arduino_sketches . Si vous cliquez sur le bouton Télécharger sur cette page, vous obtiendrez un certain nombre de croquis utiles. Celui que vous voulez s'appelle "Atmega_Board_Detector".

Une fois installé, ouvrez le moniteur série, réglez-le sur 115200 bauds et vous devriez voir quelque chose comme:

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jul  9 2015 at 08:36:24 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x94 0x89
Processor = ATmega16U2
Flash memory size = 16384 bytes.
LFuse = 0xEF
HFuse = 0xD9
EFuse = 0xF4
Lock byte = 0xCF
Clock calibration = 0x51
Bootloader in use: No
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 4096 bytes starting at 3000

Bootloader:

3000: 0x4B 0xC0 0x00 0x00 0x64 0xC0 0x00 0x00 0x62 0xC0 0x00 0x00 0x60 0xC0 0x00 0x00
3010: 0x5E 0xC0 0x00 0x00 0x5C 0xC0 0x00 0x00 0x5A 0xC0 0x00 0x00 0x58 0xC0 0x00 0x00
3020: 0x56 0xC0 0x00 0x00 0x54 0xC0 0x00 0x00 0x52 0xC0 0x00 0x00 0xEE 0xC4 0x00 0x00
...
3FE0: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
3FF0: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF

MD5 sum of bootloader = 0xD8 0x8C 0x70 0x6D 0xFE 0x1F 0xDC 0x38 0x82 0x1E 0xCE 0xAE 0x23 0xB2 0xE6 0xE7
Bootloader name: Arduino-dfu-usbserial-atmega16u2-Uno-Rev3

First 256 bytes of program memory:

0: 0x90 0xC0 0x00 0x00 0xA9 0xC0 0x00 0x00 0xA7 0xC0 0x00 0x00 0xA5 0xC0 0x00 0x00
10: 0xA3 0xC0 0x00 0x00 0xA1 0xC0 0x00 0x00 0x9F 0xC0 0x00 0x00 0x9D 0xC0 0x00 0x00
20: 0x9B 0xC0 0x00 0x00 0x99 0xC0 0x00 0x00 0x97 0xC0 0x00 0x00 0x48 0xC4 0x00 0x00
30: 0x0C 0xC4 0x00 0x00 0x91 0xC0 0x00 0x00 0x8F 0xC0 0x00 0x00 0x8D 0xC0 0x00 0x00
...

Cependant, si vous recevez un message comme celui-ci:

"Failed to enter programming mode. Double-check wiring!"

Cela semblerait indiquer que votre ATmega16U2 ne fonctionne pas.


Testez la puce ATmega328P

Déconnectez l'alimentation de l'Arduino Uno "connu" et rebranchez les cavaliers ICSP comme indiqué sur cette photo pour les connecter au processeur "principal" de votre Uno:

Testez la puce ATmega328P

Les broches de l'en-tête ICSP sont (depuis le haut):

En-tête ICSP

La broche 1 sur l'en-tête ICSP près de la puce ATmega328P est marquée d'un petit point blanc, situé sous le "N" de "ON".

Le câblage est le même qu'auparavant, sauf que vous vous connectez à l'autre en-tête ICSP - celui situé à l'extrémité du tableau, le plus éloigné du port USB.

Good board       Target Uno

  MISO                MISO    (pin with dot - pin 1)
  VCC                 VCC
  SCK                 SCK
  MOSI                MOSI
  D10                 /RESET
  GND                 GND

Une fois connecté, ouvrez le moniteur série, réglez-le sur 115200 bauds et vous devriez voir quelque chose comme:

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jul  9 2015 at 08:36:24 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Bootloader in use: Yes
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 512 bytes starting at 7E00

Bootloader:

7E00: 0x11 0x24 0x84 0xB7 0x14 0xBE 0x81 0xFF 0xF0 0xD0 0x85 0xE0 0x80 0x93 0x81 0x00
7E10: 0x82 0xE0 0x80 0x93 0xC0 0x00 0x88 0xE1 0x80 0x93 0xC1 0x00 0x86 0xE0 0x80 0x93
...

MD5 sum of bootloader = 0xFB 0xF4 0x9B 0x7B 0x59 0x73 0x7F 0x65 0xE8 0xD0 0xF8 0xA5 0x08 0x12 0xE7 0x9F
Bootloader name: optiboot_atmega328

First 256 bytes of program memory:

0: 0x0C 0x94 0x35 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
10: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
20: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
30: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
...

Dans ce cas, il confirme que le processeur principal fonctionne et contient le chargeur d'amorçage Optiboot.


Choses que vous pouvez réparer

Régulateur de tension défaillant

Ce n'est pas facile à remplacer, mais cela n'est nécessaire que si vous utilisez la prise d'alimentation. Si vous utilisez une clé USB, ce n'est pas nécessaire. Vous pouvez également disposer d’une alimentation de 4 à 5 V (par exemple, 3 piles AA) et les connecter directement à la prise 5 V de la carte.


Echec de la puce ATmega16U2

Ceci n'est requis que pour télécharger des esquisses via le port USB et pour le débogage en série. Il n'est pas particulièrement facile à remplacer car il s'agit d'un SMD (appareil monté en surface). Cependant, vous pouvez vous en passer.

Vous pouvez télécharger des esquisses via l'en-tête ICSP si vous achetez un périphérique de programmation ICSP.

Exemples de tels périphériques branchés sur le socket ICSP:

USBtinyISP

AVRISP

(Ces photos ont été prises avec un Ruggeduino, mais le concept est le même).


Vous pouvez également obtenir un câble FTDI, comme ceci:

Connecter FTDI à Arduino

Connectez-le aux ports série de votre carte comme ceci:

Câble FTDI

FTDI    Arduino Uno

GND       GND  (black wire on FTDI cable, blue jumper wire)
CTS       not connected
VCC       5V
TxD       D0 (RX)
RxD       D1 (TX)
RTS       To RESET with a 0.1 µF capacitor in series with it (green wire)

Vous pouvez maintenant télécharger des esquisses directement sur le processeur principal, en contournant la puce USB.


Vous pouvez également utiliser mon programmeur autonome à puce Atmega pour télécharger des fichiers .hex . Cela vous permet de copier le fichier .hex d'un croquis sur une carte SD, puis de programmer le tableau via l'en-tête ICSP.


Échec de la puce ATmega328P

Le processeur principal peut être remplacé assez facilement s'il est monté dans un socket. Obtenez une puce de remplacement quelque part comme Adafruit pour environ 6 dollars américains. Sinon, essayez eBay. Essayez d’obtenir une puce sur laquelle figure déjà le chargeur d’amorçage Optiboot, afin d’éviter les tracas.

Sortez soigneusement la puce existante de la prise et installez la nouvelle, en tenant compte de l'emplacement de la broche 1. La broche 1 a une encoche sur la puce et son orientation correcte est indiquée sur la première photo de cet article par un jaune. point (le plus proche du bord du tableau). Vous aurez probablement besoin de redresser légèrement les jambes. Tenez la puce par les extrémités et poussez-la doucement sur une surface plane, comme un bureau, jusqu'à ce qu'elle soit légèrement poussée vers l'intérieur. Essayez de ne pas toucher les broches métalliques, vous pouvez les zapper avec de l'électricité statique.


ATmega328P répond mais n'a pas de chargeur de démarrage

J'ai un schéma chez Atmega Bootloader Programmer qui remplacera le chargeur Optiboot. Le câblage est le même que pour le schéma du détecteur de copeaux. Le code est à GitHub - nickgammon / arduino_sketches . Si vous cliquez sur le bouton Télécharger sur cette page, vous obtiendrez un certain nombre de croquis utiles. Celui que vous voulez s'appelle "Atmega_Board_Programmer".

Installez le croquis sur votre Uno "connu comme bon" et connectez-le à la carte cible avec le câblage présenté précédemment.

Testez la puce ATmega328P

Ouvrez le moniteur série sur votre "bon" Uno et vous devriez voir ceci:

Atmega chip programmer.
Written by Nick Gammon.
Version 1.35
Compiled on Jul  9 2015 at 15:06:58 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Type 'L' to use Lilypad (8 MHz) loader, or 'U' for Uno (16 MHz) loader ...

Tapez "U" pour le chargeur Uno (Optiboot).

Using Uno Optiboot 16 MHz loader.
Bootloader address = 0x7E00
Bootloader length = 512 bytes.
Type 'Q' to quit, 'V' to verify, or 'G' to program the chip with the bootloader ...

Tapez "G" pour programmer la puce.

Tu devrais voir:

Erasing chip ...
Writing bootloader ...
Committing page starting at 0x7E00
Committing page starting at 0x7E80
Committing page starting at 0x7F00
Committing page starting at 0x7F80
Written.
Verifying ...
No errors found.
Writing fuses ...
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Done.
Programming mode off.
Type 'C' when ready to continue with another chip ...

Cela prend environ une seconde. Maintenant, le chargeur de démarrage est installé.


Problèmes de minuterie de chien de garde

Le minuteur de surveillance (désactivé par défaut) peut être configuré pour réinitialiser le processeur après un certain temps. L'intention est de récupérer d'un "blocage" pour un processeur déployé sur le terrain. Toutefois, si le temporisateur est réglé sur une courte période (environ 16 ms), le processeur peut être réinitialisé avant que le chargeur de démarrage ne puisse rien faire.

Les symptômes sont que vous ne pouvez pas télécharger de nouveaux croquis. Certains chargeurs de démarrage modernes (tels qu'Optiboot) prennent des mesures pour résoudre ce problème. Cependant, d'autres non.

Cela peut être difficile à résoudre, car une fois que l'esquisse est exécutée, vous avez le problème de la réinitialiser et si vous avez le problème, vous ne pouvez pas remplacer l'esquisse. Les gens signalent souvent qu'ils doivent graver un nouveau chargeur de démarrage pour récupérer. Cependant, c’est uniquement parce que la gravure d’un chargeur de démarrage a pour effet secondaire d’effacer la construction actuelle.

Il y a un moyen de récupérer. Prenez ces mesures:

  • Éteignez complètement la carte (débranchez le câble USB).
  • Maintenez le bouton de réinitialisation enfoncé et maintenez-le enfoncé (ou passez un cavalier de la broche RESET à la broche GND). Cela empêche le démarrage de l'esquisse du problème et active ainsi le minuteur de surveillance.
  • Tout en maintenant Reset, reconnectez le câble USB.
  • Commencez à télécharger une esquisse qui n’a pas ce problème (par ex. Blink)
  • Une fois que l'EDI indique "Uploading", relâchez le bouton de réinitialisation (ou retirez le cavalier).
  • OK devrait maintenant être envoyé - car l’esquisse qui a activé le minuteur de surveillance n’a jamais démarré.

Problèmes avec le téléchargement Mega2560

Je le mentionne ici, même si cet article vise vraiment le tableau Uno, car il est assez courant.

Certaines versions du chargeur de démarrage Mega2560 recherchent "!!!" dans le téléchargement entrant à partir du PC, et s’ils le voient, passez en mode débogage. Cela fait échouer le téléchargement.

Exemple de code:

Serial.println ("Furnace overheating!!!");

Solutions:

  • Installez un chargeur de démarrage plus récent. Mon esquisse "chargeur de chargeur de démarrage" mentionnée précédemment dans cette réponse doit installer un chargeur de démarrage ne présentant pas ce problème.

Ou (plus simplement):

  • Ne pas utiliser "!!!" dans votre croquis.

Problèmes de téléchargement sur le Leonardo / Micro / Esplora, etc.

Il peut être plus difficile de télécharger des cartes avec l’ATmega32u4 comme processeur principal (et unique). En effet, la même puce doit gérer les téléchargements et exécuter votre code.

Une fois le tableau réinitialisé, il existe une petite fenêtre d’opportunité lorsqu’il cherche un nouveau dessin à télécharger. La technique de téléchargement sur ces forums est la suivante:

  • Compilez votre croquis sans erreurs.
  • Lancer le téléchargement
  • Dès que l'EDI indique "Uploading", appuyez sur le bouton de réinitialisation et relâchez-le.

Vous ne disposez que d'une seconde ou plus pour le faire, avant que l'ancienne esquisse ne commence à être exécutée. Ne vous découragez pas si vous devez répéter ce processus plusieurs fois. C'est normal.


Références

Nick Gammon
la source
5
Sensationnel. C'est une très bonne réponse
apax
1
C'est une réponse merveilleuse monsieur.
Mert Gülsoy
"Si vous obtenez 5 V avec le port USB connecté, mais pas avec l'alimentation, le régulateur de tension (indiqué sur la photo) est probablement endommagé. Ou, éventuellement, le bloc d'alimentation est défaillant. Essayez avec un bloc d'alimentation différent pour confirmer lequel il est . " - Pourquoi cela vous empêcherait-il de télécharger des esquisses?
user2813274
Vous avez tout à fait raison, ce ne serait pas. Cependant, la liste de contrôle était censée être une liste de contrôle générale pour les échecs. Dans ce cas, cela ressemblerait davantage à "Je peux télécharger un croquis, mais lorsqu'il est déployé sur le terrain, avec une alimentation électrique (mur-verrue), il ne fonctionne pas".
Nick Gammon
1
J'ai récemment eu un problème avec les nouveaux pilotes FTDI qui "brique" chinois "compatible FTDI" (bien on pourrait dire imitation) puces. Ils ont mis le PID du périphérique à 0x0000, ce qui rendra les pilotes non valides. Vous pouvez choisir de modifier le PID avec l'outil M_PROG sur FTDI ou de modifier les pilotes (et de configurer des fenêtres pour autoriser les pilotes non vérifiés).
Paul
14

Au moins, car je suppose que vous envoyez votre esquisse via avrdude, donnez plus d'informations sur l'échec de l'envoi (par exemple, la sortie de l'outil de téléchargement d'esquisse) afin que les personnes ici présentes puissent vous aider à mieux.

En plus de la bonne réponse de Nick Gammon, veuillez rechercher des points d'exclamation dans votre croquis. Si votre esquisse contient une chaîne comportant plus de 3 points d'exclamation, le téléchargement échouera, car les anciennes versions du chargeur de démarrage Arduino interpréteraient ces points d'exclamation comme une autre fonction et le téléchargement s'interromprait.

Un exemple pour arrêter le téléchargement:

char* test = "This will stop the upload!!!";

Voir le numéro de code Google .

mw
la source
1
Bon point. Cela s’applique principalement au Mega2560, mais j’avoue l’avoir omis. :)
Nick Gammon
1
Ajout d'une section pour traiter ce problème.
Nick Gammon
2

J'ai branché 2x ATMega328P sur ma carte Arduino Uno à cause de la statique (je pense).

La statique semble avoir tué la broche TX et le programme ne peut donc pas être téléchargé à l'aide du câble USB.

La solution la plus simple consiste à remplacer le microcontrôleur. Vous pouvez acheter un nouveau DIP ATMega328P programmé avec le chargeur de démarrage Arduino ( comme celui-ci d'Adafruit ) et vous êtes prêt à recommencer.

Sinon, vous pouvez toujours programmer les ATMega328P en utilisant le programmateur AVRISPmkII. Lorsque vous le faites, tout sauf la broche Tx fonctionne bien.

sa_leinad
la source