[Mega 2560] Non termina l'upload dello sketch

Buongiorno a tutti

Non riesco più a fare l'upload degli sketch, sull'IDE 1.0 la barra di avanzamento si ferma quasi in fondo (mancano 2 tacchette verdi) e resta fermo li i led tx/rx si spengono. Ho caricato l'esempio blink, ho premuto il tastino reset per 2 secondi appena appare il compiling, spento riacceso più volte, nulla non riesco più a farlo partire. Può essere che ho raggiunto le 10.000 scritture ormai sono molti mesi che tutti i giorni ci do che ci do :) Prima di cestinarlo mi piacerebbe sapere se c'e' qualche altra prova che posso fare. Grazie ciao

se avessi superato il limite delle scritture avresti un errore di check, e vai tranquillo che anche abusando ci metti ben più di un anno per raggiungere il numero di scritture. (senza contare che quello è il valore minimo garantito…)

un’ottima soluzione è attivaer dal menù la compilazione e l’upload verbose, e vedere a che comando si blocca, per capire da dove può nascere il problema.

ps. ma l’upload fallisce anche per il blink?

pablos: Ho caricato l'esempio blink, ho premuto il tastino reset per 2 secondi appena appare il compiling, spento riacceso più volte, nulla non riesco più a farlo partire.

Devi premere il reset prima di collegare l'ARDUINO.

La procedura corretta è quella spiegata da Leo

La Manovra d'emergenza di solito serve quando il micro è bloccato sulla seriale ma a te non sembra bloccato sulla seriale, sembra invece "sordo", nel senso che non comunica più col computer. Comunque è questa: 1) apri l'IDE 2) carichi uno sketch qualunque, anche il "blink" modificato (prova a mettere un delay doppio) 3) prendi l'Arduino e metti il dito sul pulsante "reset". 4) MENTRE tieni questo tasto pigiato, colleghi l'Arduino al PC 5) adesso, MENTRE continui a tenere pigiato il pulsantino, premi il tasto di upload dello sketch 6) ora rilasci il pulsantino di reset 7) se hai trovato la sincronizzazione giusta tra la pressione del pulsante grafico di upload dello sketch ed il rilascio del reset, verrà caricato lo sketch

Devi premere il reset prima di collegare l'ARDUINO.

avevo cercato la manovra di emergenza, ma mancava quel dettaglio. Ora è resuscitato :)

@Lesto: non ho ancora superato il limite di scritture, ma so che mi lascerà prima o poi per questo motivo :)

Grazie a tutti ... utili come sempre

ciao

E la prox volta metti un delay(2000) nel tuo codice quando usi la seriale. Promesso? ;)

leo72: E la prox volta metti un delay(2000) nel tuo codice quando usi la seriale. Promesso? ;)

http://www.youtube.com/watch?v=U9Kq95CQfF8

Non uso la seriale nello sketch, al massimo il Serialprint come debug ... è questo che intendi?

pablos:

leo72: E la prox volta metti un delay(2000) nel tuo codice quando usi la seriale. Promesso? ;)

http://www.youtube.com/watch?v=U9Kq95CQfF8

Non uso la seriale nello sketch, al massimo il Serialprint come debug ... è questo che intendi?

AHAHHAHAHAH

Io, però, non ho capito una cosa. Perchè bisogna premere il tasto reset? La sincronia tra reset e upload non avviene al momento del caricamento?

Trisonic: Perchè bisogna premere il tasto reset?

Ho smesso di chiedermi il perchè quando le cose funzionano. :D

pablos: Non uso la seriale nello sketch, al massimo il Serialprint come debug ... è questo che intendi?

setup(){
 delay(2000);
 Serial.begin(115000);
.......
}

pablos: Non uso la seriale nello sketch, al massimo il Serialprint come debug ... è questo che intendi?

E Serial.print cos'è? Un metodo della libreria..... Serial... :P Tu apri la seriale e non metti un delay di attesa. L'invio dei dati parte subito e saturi il buffer dell'Atmega8U2. Il led TX resta fisso acceso e la scheda diventa "sorda" agli invii dal PC.

Trisonic: Io, però, non ho capito una cosa. Perchè bisogna premere il tasto reset? La sincronia tra reset e upload non avviene al momento del caricamento?

Le schede Arduino UNO e MEGA sono composte da 2 microcontrollori differenti. Il primo, l'Atmega8U2/16U2, serve per dialogare con il computer, l'altro è il cuore di Arduino. Il primo, quando l'IDE invia uno sketch, si occupa di resettare l'Atmega328/2560 e di programmarlo. Ma se l'Atmega328/2560 gli satura il buffer seriale, l'Atmega8U2/16U2 si ritrova la seriale bloccata e non può aprire la comunicazione con il PC. Premendo il tasto di reset della scheda si resetta solo l'Atmega328/2560. In questa maniera si dà modo all'Atmega8U2/16U2 di poter aprire la comunicazione con l'IDE: non appena si rilascia il tasto di reset, si avvia il bootloader dell'Atmega328/2560 prima di passare il controllo allo sketch. Il bootloader vedere l'arrivo dei dati sulla seriale ed allora inizia la flashatura del micro. E tutto si sblocca.

Nooooo..... :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: Solo dopo o prima il Serial.begin. Devi dare modo a te, utente, di collegare l'Arduino al PC oppure di poter premere il pulsante di upload prima che il tuo sketch inizi a saturare la seriale.

Cmq l'IDE 1.0.1 e l'Optiboot 4.4 (per le UNO) mi pare abbiano risolto il problema perché anche con il led RX fisso acceso io l'Arduino ora lo programmo senza problemi.

ok .. ho visto dopo il post di PaoloP che ha postato un esempio di quello che intendevi, lo metto subito promesso :) Però strano non ha mai avuto problemi prima .... vabbè mi fido della Vs sapienza ]:D ciao e grazie

premessa :

ho inserito

void setup() 
{
  delay(2000);
  Serial.begin(9600);
...

a parte che ho scoperto che è questa linea a bloccare l’upload … non me lo spiego…

file.println("<font color='red'>" + time + " >> " + log_riga + "</font>
");

comunque ho risolto con questa linea aggiungendo un ‘-’ che continuo a non spiegarmi

file.println(" - <font color='red'>" + time + " >> " + log_riga + "</font>
");

ora lo compila correttamente.

Oggi invece la compilazione apparentemente arriva al termine, la barra verde viene completata e poi esce questo errore

Binary sketch size: 45456 bytes (of a 258048 byte maximum)
avrdude: verification error, first mismatch at byte 0x0000
0x0c != 0x14
avrdude: verification error; content mismatch

che farebbe riferimento a un auto reset come indicato qui http://arduino.cc/playground/Code/MegaISP, ma sembra un po’ datata quella spiegazione e fa riferimenti ai vecchi IDE

P.S. l’errore esce sempre con qualsiasi esempio anche il blink, manovra di emergenza ripetuta più volte, ma nulla …

mistero della fede e mi sono rott i ball, per oggi basta prendo feria :slight_smile:
ciao

Domanda stupida: hai cambiato cavetto USB o porta a cui colleghi l’Arduino?
A me tempo fa fece diventar matto un cavetto USB leggermente più lungo del solito.

Non ho cambiato nulla, quando lo collego il pc vede il dispositivo, ritieni che quell' errore sia da ricercare nella connessione usb?

Non si può dare nulla per scontato.
Io impazzii un giorno intero a capire perché non riuscivo più a programmare i chip in standalone, eppure era colpa del cavo!
Riuscivo a scrivere il Blink o l’ArduinoISP sull’Arduino ma non riuscivo a programmare lo standalone e avrdude mi dava sempre errori strani, o di firma digitale non valida o di connessione.

Sta sera provo cavo e magari su un altro pc, per ora grazie ;)

niente da fare ho cambiato cavo, cambiato pc, scaricato la 1.0.1, sempre lo stesso errore

Binary sketch size: 1602 bytes (of a 258048 byte maximum) avrdude: verification error, first mismatch at byte 0x0000 0x0c != 0x14 avrdude: verification error; content mismatch

ho letto un po' di info a riguardo, ma non vedo qualcuno che lo ha risolto sta volta mi sa proprio che lo devo buttare :roll_eyes:

http://arduino.cc/forum/index.php?topic=109538.30

La Mega ha il chip Atmega8U2 come convertitore USB/seriale. L'ultima spiaggia è riflashare il suo bootloader per vedere se va. Però non so di preciso se è lo STESSO dell'Arduino UNO. Cerca sul forum e nel playground, c'è spiegato come fare (cerca qualcosa con "firmware dfu ecc..")

ma posso farlo da usb o devo farlo con qualche dispositivo via ICSP o altro?

Lo fai da USB ma gli strumenti cambiano da SO a SO. Devi poi resettare il chip in modo che entri in modalità programmazione. Ecco, qui c'è quello che ti dicevo:

http://arduino.cc/en/Hacking/DFUProgramming8U2