avrdude: stk500v2_ReceiveMessage(): timeout

Buon Giorno.
E’ da pochi giorno che sto provando a programmare Arduino Mega 2560 Rev 3.
A un certo punto, quando il mio programma ha raggiunto circa i 7800 byte, mi è apparso il seguente errore :
avrdude: stk500v2_ReceiveMessage(): timeout
Uno sketch di dimensioni inferiori viene caricato senza problemi.

Sto utilizzando Windows 8, connessione USB 3, Arduino Mega 2560 Rev 3, ambiente di sviluppo Arduino 1.5.7.

Viste le mie scarse conoscenze mi sapete dare una indicazione di come risolvere il problema ?

Grazie a tutti.

Di seguito vi riporto il semplice sketch che sto caricando.

// #include <IRremote.h>
// #include <IRremoteInt.h>

#include <Button.h>

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define PIN_LASER 53
#define PIN_SEN_LUCE A14
#define PIN_BUTTON 30
#define PULLUP 1

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
Button button = Button(PIN_BUTTON, PULLUP);

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

  pinMode(PIN_LASER, OUTPUT);
  digitalWrite(PIN_LASER, LOW);

  lcd.begin(16,2);
  lcd.setCursor(0,0);
  lcd.print("Hello, world!");
  delay(1000);
}

void loop() {
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Start Now !!!");
  if ( button.isPressed() ) {
    digitalWrite(PIN_LASER, LOW);
  } else {
    digitalWrite(PIN_LASER, HIGH);
  }
}

Non dovrebbe essere un problema di dimensione di sketch L'Arduino MEGA ha 256 KB di Memoria FLASH.

Ciao Uwe

è necessario rimuovere "!!!".

lcd.print("Start Now");

Vero, il famoso problema dei tre esclamativi. E' incredibile ma vero. Toglili. Se cerchi nel forum se n'è parlato un pò di tempo fa.

questa mi mancava :)

Testato:
questa mi mancava :slight_smile:

Questo lo sapevo ma non ci ho pensato. Divento forse vecchio???
Ciao Uwe

Testato: questa mi mancava :)

E' un bug vecchio: https://code.google.com/p/arduino/issues/detail?id=459

In pratica la presenza dei 3 punti esclamativi impediva l'upload dello sketch. Però dovrebbe anche essere stato risolto 1 anno fa, questo bug. Se la Mega non è recente, si può aggiornare il firmware.

interessante, essendo un bug del bootloader se uno ha vecchie Mega, oppure ha comprato un clone sul quale non si sa mai cosa c'e' dentro, puo' ritrovarsi con questo problema.

X Sandro: quando hai comprato la tua Mega ? E' un clone ? (legale o meno ha poca importanza in questo caso)

Grazie a tutti. Ho comprato la scheda da un amico 3-4 mesi fa che aveva trovato un offerta. Ne ha acquistate 4 a un prezzo molto basso. Penso da un sito cinese, visto il prezzo. Siccome è da molto tempo che ne sento parlare quando mi ha chiesto se ne volevo una a 10 euro ho accettato senza pensarci. Da quello che ho capito per risolvere il problema dei 3 !!! basta aggiornare il firmware. Appena ho 5 minuti facci la prova di togliere i 3 !!! e vi farò sapere.

Scusate l'ignoranza, ma quando parliamo di firmware, stiamo parlando di bootloader ?

Mi sapete consigliare un dispositivo ISP da collegare al connettore ICSP per aggiornare la scheda. O mi consigliate semplicemente di acquistare un arduino uno ed utilizzarlo come ISP ?

Non finirò mai di ringraziare tutti per risposte cosi rapite e precise. Grazie.

Si si intende il bootloader, ti consiglio di comprare UsbAsp, è ufficialmente supportato dall Ide, e ti sarà utile in altri casi. Lo trovi a pochi euro

che storia, ho approfondito il discorso dei 3 punti esclamativi, sapete da dove vengono fuori ? C'e' un serial monitor integrato nel bootloader, si deve aprire una seriale a 115200 sulla com usb e lanciare !!! prima che passa all'applicativo.

Ho provato ed effettivamente entra in modalita' terminale, pero' i vari comandi che ho trovato, tipo H per Help comportano una sfilza di !!! mentre dovrebbe dare tutti i comandi disponibili. Forse con questa modifica e' stato bloccato il funzionamento ma non del tutto rimosso ?

Sì, il bootloader della MEGA è qualcosa di più complesso rispetto all'Optiboot. L'Optiboot difatti risponde solo di facciata ai comandi a cui invece il bootloader della MEGA risponde in modo corretto. Difatti occupa 4K invece che 512 byte ;)

Dopo un po di prove e utilizzo, togliendo i 3 !!!, il problema non si è più ripresentato.

Grazie a tutti.

questo conferma i miei test, il problema e' ancora presente, se problema lo si vuole chiamare, in quanto si puo' entrare nel bootloader anche se pero' non vi sono poi funzionalita' utilizzabili. Il Team dovrebbe decidere se pubblicizzare questa cosa, oppure eliminare del tutto la funzione, ora come ora e' il peggio che c'e': Terminale presente/funzionalita' assenti

Testato:
Il Team dovrebbe decidere se pubblicizzare questa cosa, oppure eliminare del tutto la funzione, ora come ora e’ il peggio che c’e’: Terminale presente/funzionalita’ assenti

Mi sai che hai provato una vecchia release del bootloader perché quella allegata con l’IDE 1.0.5 è patchata per questo problema.

Dal sorgente del bootlaoder ATmega 2560

//* Nov  9,	2010	<MLS> Issue 392:Fixed bug that 3 !!! in code would cause it to jump to monitor

Infatti nel codice non c’è più il controllo del “!!!” con relativa attivazione del monitor, sulla mia ATmega2560 ho l’ultima release del bootloader e il problema non c’è.

io ho uplodato il bootloader via 1.5.7 e sono entrato con i 3 !!!, Pero' non appare il menu' con le funzioni. Lo hanno reinserito nella 1.5.7 ? :)

Si. C’è.
Riga 690 e 2007 → Arduino/stk500boot.c at 1.5.7 · arduino/Arduino · GitHub

i 3 !!! devono essere inviati nei primi 10 caratteri altrimenti non vengono più considerati.