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?
arduino-uno
uploading
atmega328
icsp
Nick Gammon
la source
la source
Réponses:
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:
Les principaux composants sont:
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.)
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:
Vérifiez le type de tableau:
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:
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
Câblage:
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:
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:
Les broches de l'en-tête ICSP sont (depuis le haut):
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:
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:
Cependant, si vous recevez un message comme celui-ci:
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:
Les broches de l'en-tête ICSP sont (depuis le haut):
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.
Une fois connecté, ouvrez le moniteur série, réglez-le sur 115200 bauds et vous devriez voir quelque chose comme:
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:
(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:
Connectez-le aux ports série de votre carte comme ceci:
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.
Ouvrez le moniteur série sur votre "bon" Uno et vous devriez voir ceci:
Tapez "U" pour le chargeur Uno (Optiboot).
Tapez "G" pour programmer la puce.
Tu devrais voir:
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:
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:
Solutions:
Ou (plus simplement):
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:
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
la source
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:
Voir le numéro de code Google .
la source
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.
la source