Ho aggiunto il mio Arduino Uno al mattone? Problemi con il caricamento sulla scheda


86

Non riesco a caricare schizzi sul mio Arduino Uno.

  • L'ho "murato"?
  • Quali passi posso prendere per capire cosa non va?
  • Cosa posso fare per risolverlo?

7
Per quelli che si chiedono, questa non è una vera domanda! È più una domanda di riferimento. La domanda stessa è resa abbastanza ampia di proposito. La risposta tuttavia è molto dettagliata e quindi questa domanda può essere usata come riferimento.
Paul

2
È più una domanda di riferimento. Abbastanza corretto Vedi Va bene fare e rispondere alle tue domande .
Nick Gammon

@Nick_Gammon Sì. Ma sento che in qualche modo avresti dovuto annotarlo da qualche parte. A prima vista ero (leggermente) infastidito dal fatto che la domanda fosse così ampia e sembrava che tu non avessi fatto alcuna ricerca. Ma quando ho visto la tua risposta, tutto ha avuto un senso. Inoltre, (quando puoi) non dovresti dimenticare di accettare la tua risposta, in modo che gli altri che stanno cercando di aiutare non inizino a rispondere, esaminare o commentare domande su questo (che non ti aiuterebbero davvero, come tu ha già trovato un modo piuttosto valido per eseguire il debug di questo problema).
Paul,

Grazie per il feedback. Inizialmente ho pensato di pubblicare la domanda con una nota che stavo per pubblicare la mia risposta, ma poi ho visto la casella di controllo su "rispondi alla tua domanda", quindi ho barrato quella. Per quanto riguarda l'accettazione, non posso farlo per 20 ore. Mi è sembrato un po 'strano accettare la tua risposta, ma certamente posso farlo quando mi è permesso. Ho fatto una domanda su Meta Arduino Cos'è esattamente una domanda canonica? per provare a elaborare la procedura corretta ma non ho ricevuto risposte.
Nick Gammon

@FuaZe e Nick Gammon: questo in generale sembra grandioso, l'unico suggerimento che farei sarebbe quello di rendere l'argomento più suggestivo di cosa trattano veramente la domanda e la risposta. Così com'è, penso che avrei potuto essere tentato di scaricarlo come troppo vago. Forse il titolo potrebbe essere "Come posso risolvere i caricamenti falliti?"
dlu,

Risposte:


115

Probabilmente non è in muratura

Ho un bel po 'di Arduinos e negli ultimi anni ne ho sempre solo "murato", e penso che lo abbia fatto zappando con elettricità statica. Sfortunatamente quello in particolare aveva un chip del processore SMD (montato in superficie), quindi non è facile provare a scambiarlo con un altro chip.

Mantieni la calma e prova i seguenti passaggi ...


Scheda di esempio

Un "Arduino Uno" non è solo una cosa che potrebbe fallire. Ha più componenti principali e probabilmente uno solo ha fallito (se presente). Vedi questa fotografia di riferimento:

Arduino Uno componenti principali

I componenti principali sono:

  • Processore Atmega16U2: gestisce l'interfaccia alla connessione USB
  • Processore Atmega328P - questo è il processore "principale" che ha il tuo schizzo su di esso
  • Regolatore di tensione: converte l'alimentazione in ingresso dal jack di alimentazione a 5 V.
  • LED di alimentazione (verde) - contrassegnato "Acceso"
  • LED indicatore (giallo) contrassegnato "L" - collegato tramite un amplificatore operazionale al pin digitale 13
  • LED Rx e Tx (gialli): indicano se il chip USB (Atmega16U2) sta ricevendo o trasmettendo

Notare che i LED Rx e Tx non sono collegati direttamente ai pin digitali 0 e 1 sulla scheda (contrassegnati con Rx e Tx). Si illuminano solo se si effettuano comunicazioni seriali tramite USB , non se si dispone di qualcosa (come un GPS) collegato direttamente ai pin digitali 0 e 1.

Inoltre, poiché il LED "L" è collegato tramite un amplificatore operazionale, potrebbe illuminarsi se il pin 13 è impostato su un ingresso nello schizzo. E 'normale. Ciò non significa che qualcosa stia inviando erroneamente dati.


Controlla la potenza

Alimentazione USB

  • Collegare la scheda al computer con il cavo USB e verificare che il LED verde "Acceso" si illumini.

  • Utilizzare un multimetro e un paio di cavi jumper per eseguire il test tra il pin 5 V e il pin GND (indicato dalla freccia nella parte inferiore). Dovresti ottenere una lettura di circa 5,0 V (ho 5.04 V sul mio).

(Puoi acquistare un multimetro economico per circa $ 10 se non ne hai uno, ma è meglio ottenerne uno migliore per circa $ 50 - controlla tutti i siti web e i negozi di elettronica.)

  • Prova anche tra il pin 3.3 V e il pin GND - dovresti ottenere 3.3 V.

Se non si ottengono 5 V con il cavo USB inserito, accertarsi che l'altra estremità sia collegata al computer. Prova anche un altro cavo.

Jack di alimentazione

  • Se si sta utilizzando o si prevede di utilizzare il jack di alimentazione (contrassegnato con "power in" sulla foto), scollegare l'USB e collegare un alimentatore, che dovrebbe essere compreso tra 7 e 12 V CC con positivo sul pin centrale .

  • Misurare i pin 5 V e 3,3 V come sopra. Dovresti comunque vedere le stesse tensioni su di loro.

Se si ottengono 5 V con l'USB collegato, ma non con l'alimentatore, è probabile che il regolatore di tensione (contrassegnato sulla foto) sia danneggiato. O, forse, l'alimentazione è fallita. Prova un altro alimentatore per confermare quale sia.


Controllare il flash del LED di accensione

Se si dispone del bootloader Optiboot (normalmente fornito da Uno), se si preme e si rilascia il pulsante di ripristino, oppure si scollega e ricollega il cavo USB o di alimentazione, il LED "L" dovrebbe lampeggiare rapidamente 3 volte. I tempi "on" e "off" sono 50 ms ciascuno, i tre lampeggi dovrebbero essere terminati entro circa 1/3 di secondo.

In caso contrario, potresti avere un problema con il bootloader o il chip del processore principale (Atmega328P).


Prova a caricare uno schizzo

Importante: se si verificano problemi durante il caricamento di schizzi, rimuovere tutti i dispositivi collegati (come gli scudi). Rimuovere anche i ponticelli collegati alle prese della scheda. In particolare, non ci dovrebbe essere nulla collegato ai pin digitali 0 e 1 (Rx e Tx) perché ciò interferirà con la comunicazione con il computer di caricamento.

Scegli uno dei semplici schizzi di esempio (es. Blink) e prova a caricarlo. Questo è ciò che dovresti vedere:

  • Il LED "L" dovrebbe lampeggiare 3 volte. Questo perché il chip principale viene ripristinato da un comando dal processo di caricamento.

  • Il LED "Rx" dovrebbe lampeggiare rapidamente. Queste sono le istruzioni del processo di caricamento che tenta di attivare il bootloader.

  • Il LED "Tx" dovrebbe lampeggiare rapidamente. Questo è il processore che riconosce i dati caricati.

Potresti vedere quanto sopra, anche se il processo di caricamento non riesce. Ciò potrebbe essere dovuto al fatto che è stato selezionato il tipo di scheda errato.

Se lampeggia solo il LED "Rx", potrebbe essere a causa di un problema con il bootloader o il chip del processore principale (Atmega328P). Qualcuno sta bussando, ma nessuno è a casa!

Controlla il tipo di scheda

Se i LED lampeggiano, ma viene visualizzato un messaggio come questo:

avrdude: stk500_recv(): programmer is not responding

Controlla il tipo di scheda:

Menu tipo di scheda

Se hai selezionato il tipo di scheda sbagliato, probabilmente invierà le istruzioni di caricamento errate e il timeout o altrimenti fallirà. Se sei come me e hai diverse schede in giro, è facile dimenticare che l'ultimo caricamento che hai fatto è stato per un diverso tipo di scheda.

Controllare la porta di comunicazione

Se i LED non lampeggiano affatto, è possibile che sia selezionata la porta di comunicazione errata.

Controlla la porta di comunicazione:

Menu porta di comunicazione

Prova un PC / Mac diverso, se possibile

Prova il tuo Arduino su un altro PC / Mac se ne hai uno a portata di mano. Questo può restringere se hai o meno un problema con il particolare computer in cui lo hai collegato o con i computer in generale.

Fai un test di loopback

  • Scollegare tutti gli schermi e gli altri cavi
  • Rimuovere la scheda dall'alimentazione
  • Collegare un cavo jumper da RESET a GND (cavo arancione nella foto)
  • Collegare un cavo jumper da Rx a Tx (filo bianco in foto)

Cablaggio:

Test di loopback

  • Collegare il cavo USB e avviare un programma terminale, come Terminal Monitor nell'IDE di Arduino. Digita qualcosa e invialo (es. Premi Invio nel Terminal Monitor).
  • Tutto ciò che digiti dovrebbe essere ripetuto.

Se tutto riecheggia: questo conferma che hai la giusta porta di comunicazione, il cavo USB è OK e il chip di interfaccia USB (Atmega16U2) è probabilmente OK.

Se non viene restituito nulla, controllare:

  • Hai la porta di comunicazione corretta.
  • Prova un cavo diverso. Alcuni cavi USB economici hanno solo cavi di alimentazione e non cavi dati.
  • Verificare che il driver di dispositivo per Arduino sia installato. Probabilmente non è necessario farlo se quella scheda ha funzionato in precedenza su questo computer, ma può valere la pena farlo se è la prima volta che si collega questa scheda a questo computer.

Prova il chip Atmega16U2

Se la scheda non supera il test di loop-back e si è certi che il cavo USB sia OK, è possibile testare il chip Atmega16U2 stesso. C'è un'intestazione ICSP (In Circuit Serial Programming) sulla scheda, adiacente al chip Atmega16U2 e vicino alla presa USB.

Scollegare prima l'alimentazione (scollegare il cavo USB e qualsiasi cavo di alimentazione).

Quindi è possibile collegare l'intestazione ICSP tramite 6 cavi jumper a uno buono noto, come mostrato nella foto:

Prova il chip Atmega16U2

I pin-out per l'intestazione ICSP sono (dall'alto):

Intestazione ICSP

Il pin 1 sull'intestazione ICSP vicino al chip Atmega16U2 è contrassegnato da un piccolo punto bianco, vicino alla "F" in "AREF". Il pin 1 sull'intestazione ICSP vicino al chip ATmega328P è contrassegnato da un piccolo punto bianco, sotto la "N" in "ON".

Connetti:

Good board         Target Uno

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

Ricontrolla il tuo cablaggio.

Quindi sulla scheda "bene noto" installare lo schizzo "Atmega_Board_Detector" come descritto nella pagina del programmatore del bootloader Atmega . Il codice è su GitHub - nickgammon / arduino_sketches . Se fai clic sul pulsante Download in quella pagina otterrai una serie di utili schizzi. Quello che vuoi si chiama "Atmega_Board_Detector".

Una volta installato, apri il monitor seriale, impostalo su 115200 baud e dovresti vedere qualcosa del genere:

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
...

Tuttavia, se ricevi un messaggio come questo:

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

Ciò sembrerebbe indicare che il tuo ATmega16U2 non funziona.


Prova il chip ATmega328P

Scollega l'alimentazione dal "noto bene" Arduino Uno e ricollega i jumper ICSP come da questa foto, per collegarli al processore "principale" sul tuo Uno:

Prova il chip ATmega328P

I pin-out per l'intestazione ICSP sono (dall'alto):

Intestazione ICSP

Il pin 1 sull'intestazione ICSP vicino al chip ATmega328P è contrassegnato da un piccolo punto bianco, sotto la "N" in "ON".

Il cablaggio è lo stesso di prima, tranne che per il collegamento all'altra intestazione ICSP, quella all'estremità della scheda, più lontana dalla presa USB.

Good board       Target Uno

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

Una volta connesso, apri il monitor seriale, impostalo su 115200 baud e dovresti vedere qualcosa del genere:

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
...

In questo caso conferma che il processore principale funziona e ha il bootloader Optiboot su di esso.


Cose che puoi sistemare

Regolatore di tensione guasto

Non è facile da sostituire, ma è necessario solo se si utilizza il jack di alimentazione. Se si esegue da USB, non è necessario. In alternativa, è possibile predisporre un'alimentazione da 4 a 5 V (es. 3 batterie AA) e collegarle direttamente alla presa 5 V sulla scheda.


Chip ATmega16U2 non riuscito

Ciò è necessario solo per il caricamento di schizzi tramite la porta USB e il debug seriale. Non è particolarmente facile da sostituire perché è un SMD (dispositivo montato in superficie). Tuttavia puoi farcela senza di essa.

È possibile caricare schizzi tramite l'intestazione ICSP, se si acquista un dispositivo di programmazione ICSP.

Esempi di tali dispositivi collegati alla presa ICSP:

USBtinyISP

AVRISP

(Quelle foto sono state scattate con un Ruggeduino, ma il concetto è lo stesso).


Puoi anche ottenere un cavo FTDI, in questo modo:

Collega FTDI ad Arduino

Collegalo alle porte seriali della tua scheda in questo modo:

Cavo 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)

Ora puoi caricare schizzi direttamente sul processore principale, bypassando il chip USB.


Puoi anche usare il mio programmatore stand-alone del mio chip Atmega per caricare file .hex : questo ti consente di copiare il file .hex per uno schizzo su una scheda SD e quindi programmare la scheda tramite l'intestazione ICSP.


Chip ATmega328P non riuscito

Il processore principale può essere sostituito abbastanza facilmente se è montato in un socket. Ottieni un chip sostitutivo da qualche parte come Adafruit per circa $ US 6. In alternativa, prova eBay. Cerca di ottenere un chip che abbia già il bootloader Optiboot, per evitare problemi.

Stacca con cura il chip esistente dal socket e installa quello nuovo, prendendo nota della posizione del pin 1. Il pin 1 ha una tacca sul chip e il suo orientamento corretto è indicato sulla prima foto in questo post con un giallo punto (il più vicino al bordo della tavola). Probabilmente dovrai raddrizzare leggermente le gambe. Tenere il chip dalle estremità e spingere delicatamente verso il basso su una superficie piana, come una scrivania, fino a quando non vengono spinti un po 'verso l'interno. Cerca di non toccare i perni di metallo, potresti zapparli con elettricità statica.


ATmega328P risponde ma non ha bootloader

Ho uno schizzo sul programmatore del bootloader Atmega che sostituirà il bootloader Optiboot. Il cablaggio è lo stesso dello schizzo del rivelatore di chip. Il codice è su GitHub - nickgammon / arduino_sketches . Se fai clic sul pulsante Download in quella pagina otterrai una serie di utili schizzi. Quello che vuoi si chiama "Atmega_Board_Programmer".

Installa lo schizzo sul tuo "noto bene" e collegalo alla scheda di destinazione con il cablaggio mostrato in precedenza.

Prova il chip ATmega328P

Apri il monitor seriale sul tuo "buono" Uno e dovresti vedere questo:

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 ...

Digitare "U" per il caricatore 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 ...

Digitare "G" per programmare il chip.

Tu dovresti vedere:

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 ...

Questo richiede circa un secondo. Ora il bootloader è installato.


Problemi con il timer di watchdog

Il timer del watchdog (disattivato per impostazione predefinita) può essere configurato per ripristinare il processore dopo un certo tempo. L'intenzione è di recuperare da un "blocco" per un processore distribuito sul campo. Tuttavia, se il timer è impostato per un breve periodo (come 16 ms), il processore può reimpostarsi nuovamente prima che il bootloader abbia la possibilità di fare qualsiasi cosa.

I sintomi sono che non è possibile caricare nuovi schizzi. Alcuni bootloader moderni (come Optiboot) prendono provvedimenti per fermare questo problema come una delle prime cose che fanno. Tuttavia altri no.

Questo può essere difficile da recuperare, perché una volta eseguito lo schizzo, si ha il problema di ripristinarlo e se si ha il problema non è possibile sostituire lo schizzo. Le persone spesso segnalano di dover masterizzare un nuovo bootloader per ripristinare. Tuttavia questo è solo perché, come effetto collaterale, la masterizzazione di un bootloader cancella lo schizzo corrente.

V'è un modo di recuperare. Segui questi passaggi:

  • Spegnere completamente la scheda (rimuovere il cavo USB).
  • Tenere premuto il pulsante Reimposta e tenerlo premuto (oppure far passare un cavo jumper dal pin RESET al pin GND). Ciò interrompe l'avvio dello schizzo del problema e quindi l'attivazione del timer del watchdog
  • Tenendo ancora premuto Reset, ricollegare il cavo USB.
  • Inizia a caricare uno schizzo che non presenta questo problema (ad es. Lampeggio)
  • Una volta che l'IDE segnala "Caricamento in corso" rilasciare il pulsante Reimposta (o rimuovere il cavo jumper).
  • Ora dovrebbe caricare OK, poiché lo schizzo che ha attivato il timer del watchdog non è mai iniziato.

Problemi con il caricamento Mega2560

Lo menziono qui, anche se questo post è davvero indirizzato alla scheda Uno, perché è abbastanza comune.

Alcune versioni del bootloader Mega2560 cercano "!!!" nel caricamento in arrivo dal PC e, se lo vedono, passa in modalità debug. Ciò causa il fallimento del caricamento.

Codice di esempio:

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

soluzioni:

  • Installa un bootloader più recente. Il mio schizzo "uploadloader" menzionato precedentemente in questa risposta dovrebbe installare un bootloader che non presenta questo problema.

O (più semplicemente):

  • Non usare "!!!" nel tuo schizzo.

Problemi di caricamento su Leonardo / Micro / Esplora ecc.

Le schede con ATmega32u4 come processore principale (e unico) possono essere più difficili da caricare. Questo perché lo stesso chip deve gestire i caricamenti ed eseguire anche il tuo codice.

C'è una piccola finestra di opportunità, dopo che la scheda è stata ripristinata, quando cerca un nuovo schizzo da caricare. La tecnica per caricare su queste schede è:

  • Compila il tuo schizzo senza errori.
  • Inizia il caricamento
  • Non appena l'IDE segnala "Caricamento in corso", premere e rilasciare il pulsante Reimposta.

Hai solo un secondo circa per farlo, prima che il vecchio schizzo inizi a funzionare. Non scoraggiarti se devi ripetere questo processo un paio di volte. È normale


Riferimenti


5
Wow. Questa è un'ottima risposta
rpax

1
Questa è una risposta meravigliosa signore.
Mert Gülsoy,

"Se ottieni 5 V con l'USB collegato, ma non con l'alimentatore, il regolatore di tensione (indicato sulla foto) è probabilmente danneggiato. O, probabilmente, l'alimentatore è guasto. Prova un altro alimentatore per confermare quale è ". - perché questo ti impedisce di caricare schizzi?
user2813274

Hai ragione, non lo farebbe. Tuttavia, la lista di controllo doveva essere una lista di controllo generale per guasti. In questo caso sarebbe più simile a "Posso caricare uno schizzo, ma quando viene distribuito sul campo, con un alimentatore (wall-wart) non funziona".
Nick Gammon

1
Recentemente ho avuto un problema con i nuovi driver FTDI che "murano" cinese "compatibile FTDI" (bene si potrebbe dire imitazione) chip. Mettono il PID del dispositivo su 0x0000, il che renderà i driver non validi. È possibile scegliere di modificare nuovamente il PID con lo strumento M_PROG su FTDI o di modificare i driver (e impostare le finestre per consentire i driver non verificati).
Paul,

14

Almeno, dato che suppongo che tu carichi il tuo schizzo tramite avrdude, ti preghiamo di fornire maggiori informazioni sul fallimento del caricamento (es. Output del programma di caricamento del disegno) in modo che le persone qui possano aiutarti meglio.

Oltre alla grande risposta di Nick Gammon, cerca i punti esclamativi nel tuo schizzo. Se lo schizzo contiene una stringa con un numero maggiore o uguale a 3 punti esclamativi, il caricamento non riuscirà, poiché le vecchie versioni di Arduino Bootloader interpreteranno questi punti esclamativi come un'altra funzione e il caricamento verrà interrotto.

Un esempio per interrompere il caricamento:

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

Vedi il problema con il codice di Google .


1
Buon punto. Questo vale principalmente per il Mega2560, ma ammetto di averlo omesso. :)
Nick Gammon

1
Aggiunta una sezione per affrontare questo problema.
Nick Gammon

2

Ho brickato 2x ATMega328P sulla mia scheda Arduino Uno a causa di elettricità statica (credo).

L'elettricità statica sembra aver ucciso il pin TX e quindi il programma non può essere scaricato utilizzando il cavo USB.

La soluzione più semplice è sostituire il microcontrollore. Puoi acquistare un nuovo DIP ATMega328P programmato con il bootloader di Arduino ( come questo di Adafruit ) e sei pronto per ripartire.

In alternativa, è ancora possibile programmare gli ATMega328P utilizzando il programmatore AVRISPmkII. Quando lo fai, tutto tranne il pin Tx funziona bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.