Ciao a tutti.
Sto provando a caricare il bootloader di Arduino dentro a degli integrati ATMEGA328P-PU, per poter poi provare a creare dei circuiti stampati che contengano il mio intero progetto, evitando di dipendere dal board di Arduino.
Ho provato sia la versione senza il clock esterno (quindi usando come board "ATmega328 on a breadboard (8 MHz internal clock)") sia installando sulla breadboard un oscillatore 16mhz con i due condensatori e la resistenza sul pin 1 (come illustrato nella guida) e mettendo come board in questo caso "Arduino Duemilanove w/ATmega328". In entrambi i casi ho prima caricato lo sketch su Leonardo (e ottengo l'heartbeat sul led) ma poi al momento di lanciare "scrivi bootloader" (porta seriale giusta, programmatore Arduino as ISP Leonardo) ottengo un bel rifiuto:
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
avrdude: Send: Q [51] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [10]
avrdude done. Thank you.
Ho provato a fare lo stesso con Arduino Ethernet, ma alcuni pin sono occupati dal chip wiznet ed è troppo complesso. Prima di scrivere sul forum ho provato a guardare un po' in giro e ho anche verificato i seguenti passaggi:
Lo sketch Arduino ISP l'ho modificato (pin reset 10)
Ho provato più di un chip 328P PU
Ho smontato tutte le connessioni e rifatte
Ho verificato col tester che non ci siano falsi contatti tra breadboard e pin
Innanzitutto grazie per aver letto, cosa può essere? Mi conviene prendere una board UNO e provare con quella?
Alla fine ci ho rinunciato, ho comprato un UNO ed il bootloader si scrive in un attimo.
A chiunque volesse fare lo stesso consiglio di usare la board UNO, molti molti meno problemi
Ciao Paolo, sì, l'avevo trovata da google ma ero giunto allo stesso identico risultato: Yikes! Invalid device signature.
Con la stessa breadboard e stesso ATMEGA, collegata però ad UNO (ovviamente con i cablaggi non più sull'icsp ma sui ip 10-13) è andato al primo colpo.
Ora ho un altro problema, gli sketch non vengono caricati sul chip ora dotato di bootloader. Mi dice "avrdude: ser_recv(): programmer is not responding -- avrdude: stk500_recv(): programmer is not responding". Il bootloader è andato okay, quando uso il chip nuovo il led 13 lampeggia. Penso sia una questione dei fuse, pensavo che caricando il bootloader venissero impostati correttamente. Potrebbero essere loro?
Grazie ; )
EDIT: ps grazie per i link, ora mi leggo con calma la guida
Ciao.
Hai guardato la guida di Michele. E' tutto spiegato, anche la configurazione dei fuse.
Se selezioni la board Arduino UNO dovrai utilizzare il quarzo esterno da 16Mhz con condensatori. Se vuoi altre soluzioni dovrai prepararti una board apposita.
Il bootloader della UNO è pensato per funzionare a 16Mhz, se lo mandi ad altre velocità non và.
Nella cartella dell'IDE ci sono già dei bootloader per 328 pensati per funzionare a 8 mhz ad esempio il PRO MINI e il FIO.
Nel preparare lo stand-alone quale schema hai seguito?
Ciao Paolo, innanzitutto grazie.
Sì, ho preparato la breadboard con un oscillatore da 16mhz e due condensatori da 10pf (stando al suo datasheet della RS components li vuole da 10, spero di non aver sbagliato).
Ho lanciato lo sketch ISP e mi ha dato l'ok come bootloader. Se metto in tensione l'arduino-su-breadboard ottendo il lampeggio del led 13. Quindi penso tutto okay.
Il caricamento degli sketch non va a buon fine: "avrdude: ser_recv(): programmer is not responding - avrdude: stk500_recv(): programmer is not responding".
Se prendo l'ATMEGA che ho preparato io e lo metto dentro arduino UNO (al posto dell'atmega originale) ottengo lo stesso errore. Quindi ho pensato che sia o il bootloader caricato male o questi fuse bits che sto studiando ora che di fabbrica sono registrati dentro l'atmega in maniera errata per funzionare come servono a noi
I condensatori dovrebbero essere da 22pF, non da 10, sicuro di aver letto giusto sul data-sheet? Potrei sbagliarmi ma, a parte il fatto che anche il team Arduino usa e consiglia 22pF, la cosa me l'ero guardata tempo fa ed avevo avuto conferma. Ad "occhio" con 10pF (ma dipende anche dal quarzo che usi, in genere è il costruttore che ti indica la capacità) sei al limite di funzionamento dell'oscillatore e la frequenza reale dovrebbe essere >16MHz
Ciao Michele, sulla scheda del quarzo c'è indicato "capacità di carico 10pf" e pensavo si riferisse al carico del condensatore da affiancare sui pin. Comunque sì, Arduino su breadboard funziona bene anche con due ceramici da 10, ma mi assicurerò al prossimo ordine di prenderne un po' da 22 allora : ))) Grazie!
5lash:
Se metto in tensione l'arduino-su-breadboard ottendo il lampeggio del led 13. Quindi penso tutto okay.
Ma non è che dopo il bootloader hai caricato il blink sempre con l'ISP?
In quel caso il bootloader viene sovrascritto.
Potrebbe essere quello il motivo per cui non funziona. Perchè non c'è.
Paolo, caricavo un bootloader 2009 su un integrato che poi avrei usato come UNO. Pensavo che il bootloader fosse unico, ignoranza mia. Comunque ho risolto, grazie! : ))))
Michele, sì, il cristallo è venduto da RS col codice 547-6288 e come capacità dicono proprio 10pf, comunque ho un modestissimo rigol da 50mhz ed effettivamente non ci avevo pensato a misurarlo, grazie per il consiglio!
Ho una domanda a cui su Internet non ho trovato gran che. Sono da preferire i ceramici a singolo strato o i multistrato? O quello che mi conviene è guardare la tolleranza per giudicarli? Grazie!
Infatti, come ti dicevo in precedenza, hai una frequenza maggiore di 16MHz, anche se la risoluzione della lettura mostrata da tuo DSO è scarsuccia :~ forse devi regolare qualche parametro. Comunque sfruttando la lettura del periodo il calcolo preciso diventa: 1/0,00000006240 = 16025641 Hz quindi 16,025641 MHz, quindi è molto imprecisa.
Il Rigol non è male come DSO e quindi dovrebbe essere attendibile.
Se provi con i 22pF quel 16,03 dovrebbe diminuire sensibilmente.
Per i condensatori sul quarzo ho sempre usato ceramici, non so nemmeno se esistano valori così piccoli in multistrato, ma non mi sono proprio posto il problema, quelli li uso da 100nF in su.