ciao a tutti, volevo caricare un firmware su una scheda Sanguinololu 1.3a che è una scheda per controllare motori stepper utilizzata nelle stampanti 3d, provando a caricare il firmware, l'ide di arduino (0022, 0023, 1.01, 1.02) mi restituisce sempre lo stesso errore:
avrdude: stk500_getsync(): not in sync: resp=0x00
ho letto un po in rete ed ho provato sia con il jumper del restet collegato che senza, ho provato il giochino del reset per 10sec.... ma niente
pensando ad un crash del bootloader stasera ho provato a ricaricare il bootloader usando arduino uno come isp.... e mi da lo stesso errore!
ho provato su 3 pc differenti, sia win che mac, ho provato 3 cavi usb differenti, senza contare che le schede che ho sono 3 e tutte con lo stesso problema....
qualcuno potrebbe darmi una mano?
grazie
Il 644 è un po rognoso da programmare via seriale.
C'è una vecchia discussione dove si è sviscerato il problema ma non è stata trovata la soluzione.
Però forse tu sei fortunato.
Per la programmazione ISP devi preparare la board. Segui la guida di Michele --> http://www.michelemenniti.it/arduino_burn_bootloader.php
Attenzione con la programmazione ISP che poi cancelli il bootloader che c'è sul chip. Assicurati di farlo se:
non ti importa del bootloader
hai modo di recuperare il bootloader originale che c'è sul chip
GLi Atmega644 non sono molto difficili da programmare via seriale, quelli più rognosi sono i 1284P.
Il pin di reset DEVI collegarlo altrimenti non resetti il micro e non può perciò avviarsi il bootloader.
La connessione dei pin RX/TX come la fai ed a che cosa? Se agganci quei pin ad una Arduino ricordati di non incrociare i fili, se li agganci ad un convertitore USB/seriale, devi incrociare RX/TX con TX/RX.
Nella discussione che citava Paolo si era provato l'uso di un filtro RC sul pin RX0, ma si parlava appunto del 1284P: se vuoi provarlo anche tu, metti una R da 10K in serie alla linea RX0 ed un C da 100 nF in parallelo, il più vicino possibile al pin RX0.
si... ce l'ha già... ed ha anche un firmware caricato,
a me basterebbe caricare sul chip un altro firmware... ma non riesco in nessun modo perchè mi restituisce sempre l'errore avrdude e non ho capito da cosa deriva.
quindi pensando ad un problema di bootloader stavo provando a ricaricarlo... ma anche in questo caso l'errore è lo stesso
Via ISP non puoi non riuscire a caricare un firmware.
Ma il chip lo programmi montato su scheda? Prova a toglierlo, se è un DIP40.
I collegamenti sono facili. Prendi un Arduino, ci metti sopra lo sketch ArduinoISP e poi agganci i pin 13/12/11/10 dell'Arduino rispettivamente ai piedini 6/7/8/9 dell'Atmega644 (ovviamente anche VCC e GND ai pin 10/11 e 30/31).
Inoltre collega il quarzo esterno se il chip è impostato per lavorare con esso, altrimenti non funziona.
attenzione attenzione....
quindi per usare arduino uno come isp devo caricargli su uno sketch? io al momento avevo provato togliendo addirittura il chip dell'arduino uno per evitare di caricare un bootloader su un chip sbagliato
in un pdf che mi hanno linkato consigliano di mettere un condensatore da 22 tra il pin 3.3v e reset dell'arduino
la procedura classica per caricare il firmware è ovviamente tramite scheda sanguinololu... ma avrdude non me lo permette
se il link è il mio il C è da 10µF e va usato in una situazione ben precisa, non a caso.
Arduino UNO per diventare programmatore ISP deve aver a bordo lo sketch ArduinoISP, che trovi negli examples, segui la mia Guida e non avrai alcuna difficoltà,
OWENlab:
attenzione attenzione....
quindi per usare arduino uno come isp devo caricargli su uno sketch?
Per programmare via ISP devi o caricare lo sketch ArduinoISP su una scheda Arduino o usare un programmatore dedicato.
io al momento avevo provato togliendo addirittura il chip dell'arduino uno per evitare di caricare un bootloader su un chip sbagliato
Questo vale se vuoi usare la scheda Arduino come convertitore seriale, usando quindi la parte USB per ricevere lo sketch dal computer e passarla tramite i pin RX/TX dell'Arduino al chip in standalone. Per funzionare, però, il chip deve avere il bootloader.
Di questo ti avevo però già detto più sopra.
la procedura classica per caricare il firmware è ovviamente tramite scheda sanguinololu... ma avrdude non me lo permette
Ma questa scheda... la puoi collegare al PC oppure no? Normalmente come la programmi?
Si, michele, la guida è la tua!, stasera provo!!
il caso in cui indichi di utilizzare il condensatore è proprio il caso dell'errore che ricevo io!
la sanguinololu ha una porta usb, si collega al pc e si carica il firmware con l'ide di arduino esattamente con la stessa procedura con cui si caricano gli sketch sui vari arduino
Comunque usa Arduino UNO, probabilmente non ne avrai bisogno. Abbiamo appurato che la versione optiboot per Arduino UNO, presente sulle versioni IDE da 1.0.1 in su risolve il problema dell'autoreset, però per ora puoi provare così, non esagerare con la capacità, non andare oltre 10µF.
caricato lo sketch arduino ISP, sono riuscito a ricaricare il bootloader sul chip!!! e successivamente ho rimontato il chip sulla scheda e son riuscito a caricare il firmware correttamente!