Salve ragazzi ho provato a glooglare in ogni dove ma una guida vera e propria e risposte alle mie domande non ne ho trovate.
Pongo qui pertanto convinto che mi saprete aiutare.
Premetto che l'esigenza di overcloccare è dovuta al fatto di voler / dover pilotare 3 display sure 3216 red green orange pertanto non per futili motivi.
La prima domanda che pongo è da "idiota" e vi chiedo: cosa accadrebbe se togliessi il quarzo da 16 e mettessi quello da 20 ?
Cosa accadrebbe alla comunicazione rs 232 che utilizzo per inserire dei dati nel micro ?
Dovrei riscrivere librerie o altro ? ( uso ds3231 sensore dht22 ir sensor )
A mio parere l'operazione ha un significato se setti i fuse per lavorare a piena flash, cioè senza bootloader, altrimenti oltre ai potenziali problemi sui comandi "temporali" avresti quelli derivanti da un bootloader scritto e compilato per lavorare a 16MHz
La frequenza di 16 Mhz dei Arduini deriva dal ATmega8 che veniva usato sui primi Arduini. Quello era disponibile soloper 8 MHz. Poi usando il ATmega168 si é pensato di usare i 16 MHz per compatibilitá.
Se cambi la frequenza di clock senza ricompilare significa che tutte le cose che dipendono dal Clock vanno un 22% troppo veloci. Non Ti funzionerá la seriale.
È da creare una board con i paramtri nuovi come dice CrossRoads
Se modifico il file board sostituendo quello che trovo con quello quinsopra scritto l'at2560 gira a 20mhz
Unica incognita la seriale ma penso sia possibile fare qualcosa per evitare che si intoppi. Giusto ?
Per quanto riguarda il discorso di lavorare a piena flash io ho realizzato dei miei pcb dove ho saladato il micro
Ho lasciato i pienidi icsp poichè ci ho caricato il bootloader tramite un altro arduino usandolo come programmatore icsp
Questo per permettermi di usare una seconda piedinatura per caricare gli schetck via ftdi
Potrei caricare l'hex direttamente senza passare dal bootloader ma come utilizzando la porta icsp ? Che programma ?
Che vantaggi o che svantaggi ad avere il bootloader ?
A parte la seriale da correggere ( semmai come ) tutte le altre librerie sarebbero funzionanti ?
Rischi per il micro che dovrebbe lavorare 24/7 tutto l'anno ?
Grazie mille di cuore siete una risorsa di sapere fantastica
Se modifico il file board sostituendo quello che trovo con quello quinsopra scritto l'at2560 gira a 20mhz
Unica incognita la seriale ma penso sia possibile fare qualcosa per evitare che si intoppi. Giusto ?
Andrebbe aperto il file del core che imposta la seriale e controllato per verificare che possa andare anche a 20 MHz.
Per quanto riguarda il discorso di lavorare a piena flash io ho realizzato dei miei pcb dove ho saladato il micro
Ho lasciato i pienidi icsp poichè ci ho caricato il bootloader tramite un altro arduino usandolo come programmatore icsp
Questo per permettermi di usare una seconda piedinatura per caricare gli schetck via ftdi
Potrei caricare l'hex direttamente senza passare dal bootloader ma come utilizzando la porta icsp ? Che programma ?
Che vantaggi o che svantaggi ad avere il bootloader ?
Che puoi caricare gli sketch dalla seriale, però resta l'incognita dei 20 MHz di cui sopra.
A parte la seriale da correggere ( semmai come ) tutte le altre librerie sarebbero funzionanti ?
Dipende. Quelle scritte per sfruttare timer può darsi di no. Sarebbe anche qui una questione di timing.
Rischi per il micro che dovrebbe lavorare 24/7 tutto l'anno ?
Nessuno. Il chip è dato da mamma Atmel come compatibile fino a 20 MHz. Casomai occhio all'alimentazione che a quella frequenza deve stare senz'altro sopra ai 4,5V.
Io sono d'accordo con CrossRoads: dovrebbe bastare creare una nuova board con le stesse impostazioni fatta eccezione per la frequenza. Ad esempio per la UNO a 20MHz
Infatti, all'interno del file boards.txt sono presenti alcune board Arduino con clock a 8MHz e non mi risulta che il millis() per loro non funzioni regolarmente.
Ritengo,inoltre, che il compilatore vada a leggere non l'effettivo valore dei fuse ma il loro valore in questo elenco: perché altrimenti lo avrebbero inserito?
Ma è solo un'opinione: lascio agli altri esperti la valutazione della cosa.
cyberhs:
Ritengo,inoltre, che il compilatore vada a leggere non l'effettivo valore dei fuse ma il loro valore in questo elenco: perché altrimenti lo avrebbero inserito?
Il compilatore non legge nulla, tanto meno i valori dei fuse dei quali non se ne fa nulla, è una cosa che serve solo al programmatore hardware quando non si usa il bootloader, chi legge il boards.txt è l'IDE, in particolare legge il modello di micro, il tipo di bootloader e il clock per dire al compilatore per quale mcu deve creare e setta il clock che viene utilizzato durante il processo di compilazione per aggiustare i vari timing dipendenti da questo, seriale inclusa.
I valori dei fuse vengono utilizzati solo quando programmi Arduino utilizzando un programmatore hardware, p.e. lo sketch isp, direttamente dal IDE.
Dato che l'ho verificato personalmente sulla versione a 20 MHz della Luigino 328 posso confermare che funziona tutto ciò che è Arduino standard, ovvero tutte le librerie di serie fornite con l'IDE, solo la frequenza del PWM risulta maggiore per via dell'aumentata frequenza del quarzo e la necessità di mantenere costante la millis, infatti si passa da 490 Hz a 612 Hz, tutte le periferiche funzionano come atteso idem per le librerie, non serve nessuna modifica al core.
Però possono esserci problemi con librerie non ufficiali perché non utilizzano il valore di frequenza presente in boards.txt, usano un valore scritto al loro interno che è 16MHz o 8 MHz, e questo è il motivo per cui ho sconsigliato l'immissione sul mercato la versione a 20 MHz della Luigino 328, avrebbe portato ad una miriade di richieste assistenza per motivi futili, mi hanno dato ascolto
Attenzione che per utilizzare Arduino a 20 MHz col bootloader è indispensabile ricompilarlo per questo clock, altrimenti non funziona, e caricarlo al posto di quello standard.
Uso la 0023
Modifico il file board relativo al mega2560
Sostituisco il quarzo e lo metto a 20mhz
Riprogrammo il bootloader via icsp ( senza alcuna modifica giusto ?)
Ricarico lo sketch via ftdi
Usa la 1.0.5-r2. (http://arduino.cc/en/Main/Software#toc2)
Dalla 0023 alla 1.0.x la seriale è passata dalla modalità sincrona alla asincrona più un altro centinaio di modifiche.
Quasi tutte le librerie citate dovrebbero essere compatibili con l'ultima versione dell'IDE.
Riprogrammo il bootloader via icsp ( senza alcuna modifica giusto ?)
Mi sa che dovrai ricompilarti anche quello, modificando la frequenza.
Però magari puoi provare ad usare quello standard a 144000 bps:
115200 * 20 /16 = 144000
e poi cambi
mega2560.upload.speed=115200
in
mega2560.upload.speed=144000
nel file di configurazione.
Se funziona hai risolto, dubito, ma tentare...
PaoloP:
Michele, tu hai fatto delle prove col 2560 a frequenze maggiori dei canonici 16Mhz?
No ma ricordo benissimo che molte volte si è discusso del fatto che il bootloader andasse adeguato alla nuova velocità e ricompilato, tant'è che Astro ne preparò uno proprio per il 328P a 20MHz, aprì un Topic appositamente per spiegarci tutto.