[Risolto] Compilazione con uno standalone.

Ciao gente, Buon Anno,

volendo compilare per un ATMega328P, con la compilazione di Arduino, cosa succede se voglio usare una diversa configurazione del Clock.
Diciamo se si volesse sfruttare anche le due uscite del micro a cui si collega il quarzo. Oppure se si volesse tirare il collo a 20 MHz.
Quale definizioni sono da passare al compilatore ?

Ciao, per utilizzare clock diversi devi aggiungere la lista di micro che ti interessano dal board manager. Qui ne trovi alcune, io uso quelle di Leonardo Miliani (leo72 sul forum).

Una volta selezionato il micro che ti interessa, es ATmega328 8 MHz internal clock, compili e carichi o via ISP (arduino as ISP) o con convertitore USB seriale se hai prima caricato il bootloader. Tutto qua.

Diciamo se si volesse sfruttare anche le due uscite del micro a cui si collega il quarzo

non so se l'IDE supporta l'utilizzo di questi due pin, da quello che ho letto in giro si deve ricorrere alla manipolazione diretta dei registri ma non ho mai provato

p.s. Non so se c'è la definizione della board a 20 MHz in quelle di leo72.

Oltre a dover modificare la board, in realtà basta modificare solo il valore del clock nelle relative definizioni, devi anche modificare i fuse a seconda del tipo di clock, se necessario, altrimenti Arduino non funziona.
Attenzione che non è detto che per tutte le frequenze di clock funziona sempre tutto perfettamente, sopratutto quando usi librerie di terze parti dove è più che possibile che vengono usati timer tenendo conto del clock a 16 MHz e/o 8MHz, sono i due valori standard per Arduino, senza nessun adattamento per clock diversi.

Grazie delle informazioni.
Ho un programmatore universale e quindi per caricare l' ATMega328P non sarebbe un problema.
@ doppiozero
Come carico le dette board manager ?
Ho scaricato il .json e messo nella directory di arduino, ma non la prende. Come viene gestita per essere inclusa ?
@ astrobeed. Potrei anche scendere di qualche gradino e programmare in assembler, ma in certi casi non è produttivo. Mi chiedevo con dare i comandi dalla IDE di arduino per programmare i FUSES in modo che funzionano con la compilazione di Arduino. Capisco che i 20 MHz è uno sballo nelle temporizzazioni di Arduino. Ma non ho studiato bene se la frequenza interna è divisa per 12 o per 8.
Mettere a 20 MHz al momento è solo ipotetico, ma vorrei capire a quali pro e contro si arriva.

Dal IDE di Arduino non puoi impostare i fuse da codice, puoi farlo solo nella board virtuale, il file board.txt che usa l'IDE per conoscere i parametri operativi della scheda, inclusa la frequenza di clock.
L'eventuale modifica dei fuse, rispetto a quelli standard di Arduino, serve solo se devi usare un clock non quarzato, ovvero se usi il clock rc interno oppure un clock esterno sotto forma di oscillatore che invia un'onda quadra alla desiderata frequenza sul pin Xtal1.
Da notare che i fuse vengono usati dal IDE solo quando scrive il bootloader, operazione che richiede forzatamente l'uso di un programmatore hardware, quando carichi il codice tramite bootloader i fuse non vengono modificati.
La dichiarazione del clock, parametro f_cpu, nel file boards.txt serve per adattare il codice alla frequenza usata, in pratica controllando il parametro f_cpu, ci pensa il compilatore a prendere il relativo valore dalla riga comando che crea l'IDE usano i parametri di boards.txt, è possibile settare le temporizzazioni del codice, p.e. l'UART o i Timer, in modo da ottenere il corretto timing in funzione del clock cpu.

Astrobeed, karmato e auguri di buon 17 :wink:
Ho acquisito alcune nozioni importanti. Vorrei fare un piccolo circuito con uno standalone. Intanto lascio il quarzo come sulla board di Arduino. Per i condensatori vado bene con 22 pF ?

Come carico le dette board manager ?

File-->impostazioni-->URL aggiuntive per gestore schede es: http://www.leonardomiliani.com/repository/package_leonardomiliani.com_index.json

Salvi e riavvii l'IDE dopodichè ti sposti su strumenti-->scheda-->gestore di schede e da li hai le nuove definizioni da poter installare.

Attenzione che non è detto che per tutte le frequenze di clock funziona sempre tutto perfettamente

ricordo che tempo fa per usare l'i2c a 1MHz dovetti scaricare una libreria Wire modificata

Karmato e buon 17!

Ricambio :slight_smile: