Problemi di upload se codice "grosso"

Se provo a compilare il programmino di esempio blink funziona tutte le volte, mentre se compilo il mio che sto sviluppando non riesco più a metterlo sul mio 2560 e da l'errore riprtato sotto. Nell'ide ho impostato come programmatore il AVRISP mkII, ma ho provato anche settando gli altri e non mi sembra cambi nulla.
Ho trovato un post in rete dove dicono che può dipendere dal fatto che nel file ci sono più di 256 0 consecutivi... :-I possibile?
Tra compila e upload si perde parecchio tempo, se poi l'upload non si è nemmeno sicuri che va.... qualche altro sistema?
Grazie
L'errore che mi da è:

Binary sketch size: 35978 bytes (of a 258048 byte maximum)
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_recv(): checksum error
avrdude: verification error, first mismatch at byte 0x6a26
0xff != 0x0e
avrdude: verification error; content mismatch

Ma non carichi lo sketch tramite l'IDE? Che c'entra il programmatore?
Che versione usi?
Ricordo che fino ad una certa versione c'erano problemi a caricare sketch oltre i 30K.

menniti:
Ma non carichi lo sketch tramite l'IDE? Che c'entra il programmatore?

Si certo che uso l'ide, ma nel menu Tool->Programmer si può scegliere... e visto che ero "disperato" le ho provate tutte :frowning:

menniti:
Che versione usi?

Dell'ide intendi? Dal menu Help -> About arduino c'è scritto 1.0 scaricata da http://arduino.cc/en/Main/Software mi sembra l'ultimo...

menniti:
Ricordo che fino ad una certa versione c'erano problemi a caricare sketch oltre i 30K.

Forse ci sono ancora?

Può essere il cavo USB lungo? Sarà un 2m... magari ogni tanto si perde "un pezzo" e in 30K è più facile perdere qualcosa che in 1K :-/

menniti:
Ma non carichi lo sketch tramite l'IDE? Che c'entra il programmatore?
Che versione usi?
Ricordo che fino ad una certa versione c'erano problemi a caricare sketch oltre i 30K.

Ho trovato Arduino Forum dove sembrano dire che mettendo la versione precedente (0023) tutto funziona correttamente. Ora ci provo e vi faccio sapere.

mgaggia:
Si certo che uso l'ide, ma nel menu Tool->Programmer si può scegliere... e visto che ero "disperato" le ho provate tutte :frowning:

Quelle opzioni sono per i diversi programmatori ISP non per l'IDE.
Quando compili (verify) lo sketch Ti da la lunghezza del codice prodotto. Che valore Ti da?
Ci dai il codice? (se é grosso allegalo sooto "Additional Options.." in basso)

Ciao Uwe

uwefed:

mgaggia:
Si certo che uso l’ide, ma nel menu Tool->Programmer si può scegliere… e visto che ero “disperato” le ho provate tutte :frowning:

Quelle opzioni sono per i diversi programmatori ISP non per l’IDE.
Quando compili (verify) lo sketch Ti da la lunghezza del codice prodotto. Che valore Ti da?
Ci dai il codice? (se é grosso allegalo sooto “Additional Options…” in basso)

Ciao Uwe

Credo sia la prima riga che ha postato nell’errore:
Binary sketch size: 35978 bytes (of a 258048 byte maximum)

La dimensione dello sketch l'ha messa nel 1° post:

mgaggia:
Binary sketch size: 35978 bytes (of a 258048 byte maximum)

35K non possono saturare la memoria dell'Atmega2560, che ha appunto 256K di Flash.

menniti:
Ricordo che fino ad una certa versione c'erano problemi a caricare sketch oltre i 30K.

Questo era un problema dell'Optiboot 4.0, la prima versione dell'Optiboot inserita nelle Arduino UNO R1 e R2 e nell'IDE fino alla versione 0022. Dalla versione 0023 c'è l'Optiboot 4.4 che risolve questi problemi. La domanda però è: che bootloader c'è sulla Mega2560??

@mgaggia:
tu dici:

mgaggia:
Se provo a compilare il programmino di esempio blink funziona tutte le volte, mentre se compilo il mio che sto sviluppando non riesco più a metterlo sul mio 2560 e da l'errore riprtato sotto.

Prima ci riuscivi? Prima di cosa? Cos'hai fatto prima che ti si bloccasse la cosa?

menniti:
Credo sia la prima riga che ha postato nell'errore:
Binary sketch size: 35978 bytes (of a 258048 byte maximum)

Ups. non l'ho visto
Grazie menniti. Ciao Uwe

leo72:
La domanda però è: che bootloader c'è sulla Mega2560??

Se mi dite come fare a verificarlo ve lo dico :slight_smile:

leo72:
Prima ci riuscivi? Prima di cosa? Cos'hai fatto prima che ti si bloccasse la cosa?

Si prima ci riuscivo... prima di cosa? Beh... di aggiungere sorgenti, ma non centrano i sorgenti (almeno mi sembrerebbe illogico). Vengono compilati senza errori. Quando i sorgenti erano piccoli non succedeva mai, poi diventando grossi, il problema si faceva sempre più frequente (prima succedeva 1 volta su 10, poi 2 su 10, poi 3 su 10.... ora 10 su 10). io sospetto sulla lunghezza del cavo USB, ma non ho cavi più corti. Nessuno ha mai avuto problemi con i cavi lunghi?

Comunque ho fatto varie prove ma anche col MIX di versioni suggerito nel post sopra non funziona.
Ho provato con la versione precedente dell'ide (0023), ma ci sono troppe cose che il vecchio non aveva e i sorgenti non si compilano...

Confido sulla versione del bootloader... se mi dite come fare a capire quale ho ed eventualmente come sostituirla....
Grazie

leo72:
La domanda però è: che bootloader c'è sulla Mega2560??

Allora seguendo questa pagina
http://scuola.arduino.cc/it/content/aggiornare-bootloader-della-arduino-ethernet-allultima-versione
ho scoperto che per vedere che c'è a bordo in questo momento si fa:

avrdude -c arduino -p m2560 -P COM3 -v -C "c:\Dati\arduino\arduino-1.0\hardware\tools\avr\etc\avrdude.conf"

però il comando restituisce un errore... mi sembra la storia infinita :frowning: vedo se trovo altra documentazione...

avrdude: Version 5.11, compiled on Sep 2 2011 at 19:38:36
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is "c:\Dati\arduino\arduino-1.0\hardware
\tools\avr\etc\avrdude.conf"

Using Port : COM3
Using Programmer : arduino
avrdude: stk500_getsync(): not in sync: resp=0x00

Ho aperto il file boards.txt presente in /hardware/arduino e lì mi dice che il bootloader è
stk500boot_v2_mega2560.hex

Quindi non dovrebbe essere l'Optiboot. Però tu se l'unico che ha lamentato questa cosa (per lo meno sul forum italiano). Che versione di Arduino MEGA hai? L'hai comprata di recente? Ci hai cambiato il bootloader?

leo72:
1-Che versione di Arduino MEGA hai?
2-L'hai comprata di recente?
3-Ci hai cambiato il bootloader?

1-mega 2560 R2
2-si
3-no

Ho preso anche ethernet shield, ma l'upload con o senza shield appiccicata non cambia :frowning:

:frowning:

Qui ci vuole qualcuno che abbia anch'egli la MEGA2560 R2 per poter confermare o smentire.
Sul forum internazionale hai controllato? Hai provato a postare il tuo problema per vedere se qualcun altro lo ha avuto?

leo72:
Qui ci vuole qualcuno che abbia anch'egli la MEGA2560 R2 per poter confermare o smentire.
Sul forum internazionale hai controllato? Hai provato a postare il tuo problema per vedere se qualcun altro lo ha avuto?

Che non mi credi? :slight_smile:

I post della seconda pagina spiegano come risolvere ricompilando avrdude.exe
Non volevo spingermi tanto... ma ora ci provo...

Il problema sembra dipendere come trovato in qualche post sopra segnalato, da una sequenza di codici nel linguaggio macchina inviato all'arduino. Sembra una cosa molto strana... ma mi sembra una deduzione sensata.
Quando esce questo problema, è sufficiente mettere/togliere una serie di

strcpy(var,"sdfsdhfghsdf hsdfg sdfg shdg fghsd fjhsdf ");

qui e li e il problema si risolve, proprio come se queste stringhe interrompessero quella serie di 255 0 che non si deve formare.
Mi sembra quasi una barzelletta... ma in attesa di una soluzione più logica vado avanti inserendo e togliendo questi strcpy, ma mi sa che fino al prossimo aggiornamento dell'ide sarà dura :-/

Grazie a tutti per l'aiuto

mgaggia:
Che non mi credi? :slight_smile:

Che magari potrebbe dipendere da una impostazione del tuo sistema e non da un problema insito nell'Arduino (vedi le mie peripezie con lo sketch ArduinoISP compilato su diversi sistemi). Mai dare nulla per scontato.

Arduino Forum

I post della seconda pagina spiegano come risolvere ricompilando avrdude.exe
Non volevo spingermi tanto... ma ora ci provo...

Prima di fare ciò hai letto questo post?

I down loaded arduino-0023, made no changes to the port or hardware or preferences file and it works perfectly.

So, I renamed the avr directory in ...\arduino-1.0\hardware\tools and then copied the avr directory from ...\arduino-0023\hardware\tools directory into the ...\arduino-1.0\hardware\tools directory, and it works fine.

Conclusion, the issue is with the new version of avrdude.

Semplicemente ha preso la versione di avrdude presente nell'IDE 0023 e l'ha messa al posto di quella presente nell'IDE 1.0.