[risolto] ATmega328P @8MHz e boards.txt

buongiorno a tutti. Vorrei programmare un atmega328p per poterlo alimentare a 3,3 volts con oscillatore interno quindi modificando i famosi fuses. A differenza di quanto scritto nella guida di Menniti vorrei poterlo programmare tramite seriale quindi devo mantenere un bootloader. La domanda è: posso usare il bootloader della "Arduino Pro or Pro Mini(3.3v, 8MHz) w/ATmega328" presente nell'IDE di arduino 1.0.5 oppure devo modificare il "boards.txt" creando la "mia" board virtuale. Nel secondo caso dove posso trovare i valori corretti dei fuse e gli altri parametri?

Grazie Pippo72

p.s. naturalmente il bootloader lo caricherò tramite arduino-ISP. Solo dopo userò la seriale. ;)

prova a dimezzare la velocità della comunicazione seriale asincrona, dovrebbe funzionare senza modifiche

La cosa più semplice è quella che hai detto, usa come board la "Arduino Pro or Pro Mini(3.3v, 8MHz) w/ATmega328" che è proprio quella che fa al caso tuo, per caricare il bootloader e, successivamente, per caricare gli sketch; ti funzionerà tutto alla perfezione. Tieni però presente che, se non erro, quelle versioni di Arduino prevedono comunque un quarzo esterno da 8MHz; se invece vuoi realizzare una versione senza quarzo allora puoi creare una versione modificata di quella board cambiando opportunamente il low fuse.

@menniti: quello che voglio fare è proprio eliminare il quarzo.

Ora che valore do al low fuse?

pro328.bootloader.low_fuses=0xFF
pro328.bootloader.high_fuses=0xDA
pro328.bootloader.extended_fuses=0x05

sono i valori dei fuse della board mini Pro. Devo semplicemente cambiare il low fuse da 0XFF a 0XE2 (preso dalla guida di Menniti pag. 60) o mettere un altro valore? fusecalc è un po' ostico per la mia testa. :roll_eyes:

Grazie Pippo72

il LOW FUSE lo devi impostare su E2, che fissa appunto l'oscillatore interno a 8MHz senza l'ulteriore divisione per 1. Tieni presente che se il micro è nuovo puoi programmarlo anche senza usare un quarzoi ed i due condensatori esterni, altrimenti essi sono indispensabili, almeno fino a che, col caricamento del bootloader, non hai cambiato il valore del fuse low.

Risolto… :slight_smile: :slight_smile: :slight_smile:
ho “copiato” e rinominato la board del Arduino Pro or Pro Mini(3.3v, 8MHz) w/ATmega328 e ho cambiato il low fuse da FF a E2.
Scritto il bootloader e poi caricato sketch Blink without Delay tramite seriale senza problemi.
Un grazie al prof. Menniti

saluti
pippo72

Ottimo! grazie a te del feedback. :)

Ti faccio presente che magari oggi và ma cambiando alimentatore o la prossima estate o in un'altro esemplare potrebbe non funzionare in quanto l'oscillatore interno è estremante instabile , sensibile alla temperatura e alla tensione di alimentazione

icio: Ti faccio presente che magari oggi và ma cambiando alimentatore o la prossima estate o in un'altro esemplare potrebbe non funzionare in quanto l'oscillatore interno è estremante instabile , sensibile alla temperatura e alla tensione di alimentazione

ICIO, azz che pessimismo, ho circuiti che lavorano con micro con oscillatore interno, sia tiny che mega, sia a 1MHz che a 8MHz e non ho mai avuto problemi, né d'estate e né d'inverno, ho usato i più svariati tipi di alimentazione: alimentatori switching, convertitori DC-DC, batterie ricaricabili e non. Concordo con te sulla imprecisione dell'oscillatore interno, ma questa incide esclusivamente sui comandi "temporali". Se è per questo anche il risonatore ceramico dell'Arduino UNO fa schifo, chiaro che se uno ha bisogno di una data precisione mette un quarzo o meglio un oscillatore quarzato termocompensato. Tutto è relativo no?

Mi riferivo al funzionamento con la seriale asincrona , l'errore deve mantenersi sotto il 1- 1.5%

pardon, la disquisizione sembrava di carattere generale, uso poco la seriale per la programmazione, però in diversi casi ho fatto ricorso al monitor seriale, anche lì mai problemi, ma onestamente non ho una casistica vasta come il discorso precedente, quindi questo ce lo potrà dire solo lui nel tempo...