Arduino Uno, upload impossibile (programmer is not responding, not in sync)

Salve a tutti! :slight_smile:

Probabilmente il titolo della discussione, espone già un po' il mio problema, essendo piuttosto comune tra gli utenti Arduino in rete. Tuttavia, prima di aprire una nuova discussione, ho letto molto in giro a riguardo, senza però giungere ad una soluzione. Mi è parso di capire che non ne esista una generale, poiché questo genere di messaggio si presenta in molteplici situazioni, così ho pensato fosse arrivato il momento di chiedere aiuto.

Sono in possesso di una board Arduino Uno R3, e sto provando ad utilizzarla rispettivamente su un Notebook con Debian Wheezy 64bit, ed un desktop con Windows 7 32bit. Passo a spiegare i vari tentativi fatti.

Specifico inoltre, fin da principio, che quando la board è connessa, oltre che il classico led verde corrispondente ad "ON", è acceso in modo permanente, senza lampeggiare, anche il led arancione corrispondente al PIN 13 (cosa che non mi fa molto ben sperare per il bootloader...)

La board sembra essere correttamente riconosciuta da ambedue i sistemi operativi. In particolare, su Debian, leggendo il log tramite comando "dmesg" , la board risulta essere collegata su ttyACM0, porta seriale che viene anche rilevata ed utilizzata all'interno dell'IDE. Ho seguito la procedura illustrata nella documentazione ufficiale di Arduino, e dunque ho aggiunto il mio utente al gruppo "dialout" e reso /run/lock scrivibile.
L'errore che è possibile leggere dall'IDE è il seguente:

avrdude: Version 5.11, compiled on Sep  9 2011 at 16:00:41
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "/home/gnumbs/arduino-1.0.5/hardware/tools/avrdude.conf"
         User configuration file is "/home/gnumbs/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyACM0
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding

avrdude done.  Thank you.

Anche Windows, sembra rilevare correttamente la board (dopo aver installato i driver ovviamente) che risulta essere connessa a COM3 (rilevata anche dall'IDE). L'errore che restituisce è in quel caso

avrdude: stk500_getsync() not in sync: resp=0x00

L'errore "not in sync" si verifica anche con Debian quando utilizzo Arduino 1.5.7 (non con le altre versioni invece).

La board è collegata in modo diretto ad una USB 2.0, senza passare per Hub o prolunghe. La porta seriale ed il modello sono correttamente selezionate e la board non ha alcun collegamento se non quello USB.

In rete ne ho lette parecchie, in particolare ho provato:

  • Reset mediante l'apposito pulsante sulla board. O sono io che non trovo il tempismo giusto, o sono un po' sfigato. XD Ho provato sia a premerlo subito dopo l'avvio dell'upload, sia tenendolo premuto da prima di cominciare l'upload e rilasciandolo poco prima della prima "Send", sia premendolo a board scollegata e mantenendo la pressione fino al collegamento e all'upload. Insomma, un po' tutte le combinazioni che ho trovato in rete. Manca qualcuna ? XD

  • Utilizzato 3 cavi differenti. Stesso risultato.

  • Provato ad effettuare il loopback test (come spiegato qui: Loop-Back Test Instructions - Installation & Troubleshooting - Arduino Forum) e pare che vada a buon fine. Quando scrivo qualcosa, premo invio ed immediatamente mi ritrovo la stessa identica cosa nel riquadro del monitor seriale (quasi fosse una chat). Da questo dovrei dunque dedurre che la comunicazione tra board e PC è apposto vero ?

  • Cambiato IDE: ho provato ad utilizzare Arduino 1.0.1 direttamente dai repository di Debian, nonché le versioni 1.0.5 e 1.5.7 scaricate dal sito ufficiale. Su Windows ho provato solo 1.0.5 per ora.

Ci sono altri tentativi da fare ? Non sono particolarmente esperto nel campo, ma ho la sensazione che possa essere un problema del bootloader (e non ho un'altra board o un programmatore per riscriverlo), ed è per questo che ho pensato sia più un problema di Hardware. Vi sembra plausibile ?

Ogni possibile diagnosi è ben accetta XD

Spero di aver esposto il problema in maniera chiara e di aver fornito le informazioni necessarie. Se così non fosse, vedrò di rimediare. :slight_smile:

Grazie in anticipo a tutti, e scusate le sproloquio.

---EDIT---

Ulteriori tentativi fatti (senza successo):

  • Upload tramite comandi da terminale. Tutto va a buon fine, ma l'errore è sempre il solito: programmer is not responding (anche variando baud rate).

  • Nel dubbio che il tasto di reset della board potesse essere "rotto" in qualche modo, ho fatto alcuni controlli col multimetro. Nel momento in cui lo premo, viene stabilito un corto tra Reset e GND (come è giusto che sia, se ho ben capito).

Se la scheda è "vista" dal sistema pare quindi che il chip convertitore funzioni a dovere. Il problema parrebbe quindi l'Atmega328.
Siccome hai scritto un papiro :wink: ma non hai detto una cosa importante, te la chiedo: la scheda è nuova o no? Il problema lo ha presentato da subito oppure dopo qualcosa? Nel caso, cos'è quel "qualcosa"? Che stavi facendo con la scheda?

Ecco, dicevo io che mi ero dimenticato qualcosa. XD Intanto grazie per essere arrivato alla fine del mio papiro, volevo che la situazione fosse il più chiara possibile. :slight_smile:

Comunque, a proposito della board..Non è nuova, apparteneva ad un amico che non utilizzandola più l'ha data a me. L'ultima volta che l'ha usata, funzionava, ma non ricorda cosa ci fosse caricato sopra. Spero che l'ignoto passato di questa board non renda le cose troppo più difficili. :smiley:

---EDIT---

Comunque, dici che cambiando l'ATMEGA (magari ne prendo uno col bootloader precaricato) si risolve ? Nel caso lo cambio e con l'Arduino funzionante riscrivo il bootloader dell'altro, così forse si riprende.

Se noti che i LED RX e TX presenti sulla scheda si accendono fissi subito dopo aver dato alimentazione, allora potresti provare la "manovra d'emergenza": cerca sul forum, è una sequenza di azioni per cercare di recuperare un Arduino che abbia uno sketch che blocca la seriale appena parte. Se anche con essa non risolvi, prova il cambio del chip (sono 5€, alla fine).

I led RX e TX rimangono spenti (almeno questa è la mia impressione) quando collego la board. RX lampeggia 3 volte (in corrispondenza delle Send) quando provo a caricare uno sketch. TX invece rimane spento, l'unica volta che l'ho visto accendersi è durante il loopback test (ovviamente).

Comunque sì, avevo letto della manovra, l'ho provata credo 30 volte XD

In ogni caso, avevo idea di ordinare alcune componenti, per cui, penso aggiungerò all'ordine un ATMEGA.

Grazie, appena arriva il tutto, provo e scrivo qui l'esito! :slight_smile:

Rieccomi! :smiley:

Dunque, finalmente sono arrivate le componenti che avevo ordinato, e insieme ad esse un nuovo ATMEGA328P-PU con bootloader per Arduino Uno precaricato. E...Niente di fatto :astonished: Anche dopo aver sostituito il chip con quello nuovo, il problema è sempre lo stesso. Sto riprovando la manovra d'emergenza, ma non sembra avere esito alcuno. Il led L (corrispondente al pin 13) continua ad essere acceso in modo permanente e l'upload degli sketch continua a restituire gli errori di cui sopra (sto provando il classicissimo Blink presente tra gli esempi dell'IDE).

Altre idee ? :sweat_smile:

È accaduta una cosa incredibile. :smiley: Funziona, e vi spiego come son riuscito a risolvere il problema.

Questa board è passata da varie mani, e il chip era già stato rimosso in precedenza e di conseguenza rimontato. Quando l'ho cambiato, mi sono chiesto: esisterà un verso in cui montarlo ? Nel dubbio, l'ho messo nella stessa posizione in cui era montato quello vecchio. Per curiosità, ho cercato qualche immagine in giro, e mi sono accorto che sulle board viste online il chip era al contrario rispetto a come era piazzato sulla mia board. Allora l'ho girato, come da immagine, e adesso ha ripreso a funzionare!

ce n'è di assassini al mondo, ma quelli che invertono i chip (parlo dei tuoi predecessori) andrebbero trattati alla stregua di quelli che usano violenza su donne e bambini ]:smiley: ]:smiley: ]:smiley:

Questa del chip al contrario mi mancava. :astonished:
Bisognerà aggiungerla alle indicazioni preliminari.

  • Hai collegato il cavo usb?
  • Hai selezionato la giusta porta com?
  • il chip è montato la contrario? :grin: :grin: :grin:

Adesso che hai un Arduino più un chip puoi lanciarti nel fantastico mondo dello stand-alone. :wink:
Guarda la firma di Michele qui sopra.