Problem uploading to board

Stavo provando a uploadare uno sketch sul mio ArduinoUNO quando mi compare questo errore:

avrdude: stk500_getsync(): not in sync: resp=0x00 avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Ho provato a rimuovere dall'hub USB dov'è collegato l'arduino tutte le altre periferiche ma niente. Ho provato a riavviare il computer ma niente! A cosa è dovuto questo problema?

A diversi fattori:

1) a forza di "leva e metti" il sistema ha mappato l'Arduino su una porta differente da quella usata in precedenza e non ti vede più l'Arduino 2) hai uno sketch sull'Arduino che ti impegna la seriale. Se la seriale viene occupata, il PC non riesce ad aprire una comunicazione verso l'Arduino, e ti dice che non trova l'hardware (te ne accorgi però perché hai i led RX o TX accesi fissi) 3) hai collegato l'Arduino dopo aver aperto l'IDE. Prova a collegarlo prima.

leo72: A diversi fattori:

1) a forza di "leva e metti" il sistema ha mappato l'Arduino su una porta differente da quella usata in precedenza e non ti vede più l'Arduino 2) hai uno sketch sull'Arduino che ti impegna la seriale. Se la seriale viene occupata, il PC non riesce ad aprire una comunicazione verso l'Arduino, e ti dice che non trova l'hardware (te ne accorgi però perché hai i led RX o TX accesi fissi) 3) hai collegato l'Arduino dopo aver aperto l'IDE. Prova a collegarlo prima.

Grazie, ho semplicemente reinstallato i driver e adesso funziona! Ma sorge una domanda, se uso uno sketch che mi utilizza i pin di seriale, poi come faccio a uppare un'altro sketch?

Regola n°1 per l'uso della seriale: metti SEMPRE un delay(3000) dopo la dichiarazione della velocità in setup():

void setup() { Serial.begin(xxxx); delay(3000); }

avrai un ritardo di avvio del tuo sketch ma così avrai anche 3 secondi per poter aprire il terminale per leggere i dati inviati oppure per premere il pulsantino di upload prima che il tuo sketch blocchi la seriale ;)

Grazie mille :)

Strano, io non uso mai un delay in quel modo ma riesco a uppare lo stesso il mio codice... Questo almeno con arduino diecimila, duemilanove, con firmware standard e con versione di ladyada. F

Federico: Strano, io non uso mai un delay in quel modo ma riesco a uppare lo stesso il mio codice... Questo almeno con arduino diecimila, duemilanove, con firmware standard e con versione di ladyada.

Il problema del blocco dell'upload si ha solo in casi estremi dove il micro invia in continuazione ad alta velocità i dati, in questo caso si può incorrere in problemi di buffer overun sulla seriale virtuale del pc che comportano difficoltà nella sua apertura e utilizzo. Se si a che fare con uno di questi casi limite basta tenere premuto il tasto di reset e rilasciarlo non appena appare la prima scritta nell'ide dopo aver aver premuto il tasto di upload. Rammento che non appena si avvia l'upload la prima cosa che viene eseguita è l'apertura della Vcom con succesivo reset del micro, quindi poco importa cosa stava facendo prima, però se la Vcom è in condizione di errore questa operazione fallisce.

@Federico e astrobeed: non voglio far lezione a nessuno dei 2, ne sapete sicuramente più di me, ma io ho tribolato non poco con la seriale e mi son fatto "le ossa" a capire come risolvere.

Quando si ha a che fare con uno sketch che usa subito la seriale, si riesce ad inviare lo sketch solo se il buffer, che è gestito dall'Atmega8U2, non si riempie. Se si riempie, l'apertura della seriale non avviene più. Presendo il pulsantino di reset non si resetta l'Arduino ma solo l'Atmega328 per cui se l'Atmega8U2 ha il buffer pieno, non si sortisce nessun effetto. In questi casi l'unica soluzione rimane la "manovra di emergenza", ossia collegare l'Arduino tenendo premuto il pulsantino di reset (in modo che l'Atmega328 non possa spedire nulla perché sotto reset), premere il pulsante di upload sull'IDE e solo allora liberare il pulsantino di reset. Per ovviare a questo si mette un bel delay nel setup() e si vive felici ;)

E' ovvio che una volta sistemato tutto e non avendo più necessità di collegare l'Arduino al PC, quel delay, nella versione finale del firmware, può essere tolto per velocizzare l'avvio dello sketch.