ATmega328P Overclock to 29491200.

Salve gente, mi è venuta l'idea di fare lavorare il 328 oltre le specifiche di clock max consigliate.
Ho preso un quarzo da 29 491 200 HZ, trovato in un vecchio modem 56K, per i condensatori ho usato dei 33pf questi avevo.
Ho messo tutto su breadboard e funziona, lo alimento con 3.5Vdc perchè non sono riuscito a fare lavorare l'AVRISP mkii a tensione superiore a 4.0Vdc, in quanto avrdude si lamenta e non scrive nulla.

Ho provato la prima volta con un quarzo da 40MHZ con i condenzatori smd il tutto preso da una scheda di stampante quasta.
Ma ho avuto dei problemi nel trovare la giusta tensione di alimentazione, poi ho combinato l'inghippo perché tramite avrdudequi ho scelto di fare lavorare il micro con low frequency crystal e non c'è stato verso di farlo funzionare perché non ho un quarzo da 32 KHZ.

L'esperimento l'ho fatto su un secondo ATmega328P vergine che avevo dentro.

Per adesso sta lampeggiando, ma vorrei fargli vare un lavoro più gravoso per vedere se a questa frequenza si verificano problemi.
Cosa potrei fargli fare per testarlo?

Ciao.

Lo sai che lo fai lavorare piú che con la doppia frequenza ammessa? A 3,5V il limite é 12MHz.
Ciao Uwe

Il 644 della Uzebox lavora a 28 MHz.
I micro hanno delle tolleranze, dipende molto dal processo produttivo usato, dalle frequenze per i quali sono stati costruiti ecc..
Secondo me devi dare anche più tensione: 3,5V secondo me non sono sufficienti a stabilizzarlo.

Lo sai che lo fai lavorare piú che con la doppia frequenza ammessa? A 3,5V il limite é 12MHz.

Si sono abbondantemente fuori SOA, solo che non ho consideranto "il quanto fuori" perchè qualsiasi frequenza sopra i 20MHz è fuori SOA per il datasheet.

Il 644 della Uzebox lavora a 28 MHz.
I micro hanno delle tolleranze, dipende molto dal processo produttivo usato, dalle frequenze per i quali sono stati costruiti ecc..
Secondo me devi dare anche più tensione: 3,5V secondo me non sono sufficienti a stabilizzarlo.

Ho interpolato graficamente la SOA del datasheet, ciò che ne uscito è che a 28 MHz la vcc dovrebbe essere di 5.75V, nel caso del Atmega328P, non ho sotto mano il datasheet del 644. Nel pomeriggio scarico il 644 e faccio l'interpolazione.

Farò anche l'interpolazione del ATmega8 per spiegare questo risultato pazzesco:
http://www.google.it/url?sa=t&rct=j&q=mega8%20overclock&source=web&cd=5&ved=0CE4QtwIwBA&url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dgje4SvGOFuQ&ei=aDOlTuznDqbi4QSB7_zYBA&usg=AFQjCNFlTXEi_D-0D336CdTqeTFDVTIU8w&cad=rja

50MHz :astonished:? Se lo vede Banzi si morde le mani, sapendo che poteva far la DUE (ma anche una 1½ :)) anche con un 328 :grin:

Il 644 te lo posso anticipare io: max freq. 20 MHz (sulla carta). Nella Uzebox lavora a 5V.

50MHz smiley-eek? Se lo vede Banzi si morde le mani, sapendo che poteva far la DUE (ma anche una 1½ smiley) anche con un 328 smiley-mr-green

:D, no però quello del video è un'atmega8 e no 328.
Certo che quel tipo lì ha una bella strumentazione, approposito nel video si capisce che usa un'oscillatore esterno e quindi CKSEL0..3 = 0000,
e non è detto che con un quarzo le cose vadano alla stessa maniera.

Stabile fino a 2.77Vdc, sotto questa sballa il tempo di oscillazione e diventa instabile.

Il 644 te lo posso anticipare io: max freq. 20 MHz (sulla carta). Nella Uzebox lavora a 5V.

Si avevo visto per Uzebox, per il 644 le cose potrebbero essere un pò meglio visto anche le dimensioni.

Nota che la SOA presume che il micro lavori assorbendo la massima corrente specificata nel datasheet, almeno così ricordo riguardo alla SOA.
Se fosse così sono ancora dentro SOA e devo stare attento che il limite massimo non è più 200mA ma meno di quanto non lo so.

Credo che riducendo la tensione e alzando la frequenza la corrente di commutazione della porta sale sopra il valore di sicurezza.

Una cosa che devo verificare - La frequenza di oscillazione dipende dal quarzo ma anche dal valore dei condensatori e forse (non so in che misura) anche dall' ESR. Probabilmente Astro qui saprebbe dire meglio.

Ciao.

MauroTec:

50MHz smiley-eek? Se lo vede Banzi si morde le mani, sapendo che poteva far la DUE (ma anche una 1½ smiley) anche con un 328 smiley-mr-green

:D, no però quello del video è un'atmega8 e no 328.
Certo che quel tipo lì ha una bella strumentazione, approposito nel video si capisce che usa un'oscillatore esterno e quindi CKSEL0..3 = 0000,
e non è detto che con un quarzo le cose vadano alla stessa maniera.

Stabile fino a 2.77Vdc, sotto questa sballa il tempo di oscillazione e diventa instabile.

Sì avevo capito che fosse un 8, ma il 328 dovrebbe lavorare più o meno allo stesso modo, anche se le famiglie sono leggermente diverse; la strumentazione è seria!

MauroTec:

Lo sai che lo fai lavorare piú che con la doppia frequenza ammessa? A 3,5V il limite é 12MHz.

Si sono abbondantemente fuori SOA, solo che non ho consideranto "il quanto fuori" perchè qualsiasi frequenza sopra i 20MHz è fuori SOA per il datasheet.

Sei fuori perché a 3,5V il limite secondo datasheet é 12MHz non 20 e si abbassa ancora se abbassi la tensione di alimentaione.

Ciao Uwe

Sei fuori perché a 3,5V il limite secondo datasheet é 12MHz non 20 e si abbassa ancora se abbassi la tensione di alimentaione.

Ho riletto ciò che ho scritto e in effetti mi sono espresso male. Io volevo dire questo:

Dal momento che il limite massimo (con buon senso) è di 5.5 Vdc, qualunque frequenza sopra i 20MHz porta il micro a lavorare fuori zona di sicurezza SOA. Io non ho ritenuto importante "il quanto fuori". È evidente che a 29MHz e 3.5Vdc sono molto fuori, rispetto a 29 e 5.5Vdc. Solo che la SOA ricordo sia valida considerando di fare lavorare il micro alla massima corrente, purtroppo non trovo documentazione riguardo alla SOA per le MCU.

Ciao.

fagli eseguire un pò di matematica pesante magari con i float) i cui risultati sono stati precalcolati col micro con un clock "sicuro" (NON dal pc, i due sistemi non sono deterministici tra loro)

MauroTec:
qualunque frequenza sopra i 20MHz porta il micro a lavorare fuori zona di sicurezza SOA.

Il limite di 20 MHz ha ben poco a che vedere con la tensione, è un limite operativo massimo imposto dal produttore sia in base alle specifiche di progetto che in base a test, molto approfonditi, su moltissimi micro.
Il fatto che apparentemente il micro lavora anche a frequenza notevolmente superiori non significa che lo fa in modo affidabile e, sopratutto, che non commette errori di elaborazione perché un registro viene letto prima che abbia il tempo di cambiare il suo valore.
Spingere un micro, o qualunque altro componente, oltre il limite massimo imposto dal produttore è sempre una cattiva idea, va da se che se invece di 20 MHz faccio funzionare un ATmega 328 a 20.5-21 MHz quasi sicuramente non ci sono problemi, un leggero overclock è sempre ammesso perché i limiti imposti dai produttori sono sempre per difetto.

fagli eseguire un pò di matematica pesante magari con i float) i cui risultati sono stati precalcolati col micro con un clock "sicuro" (NON dal pc, i due sistemi non sono deterministici tra loro)

Avevo anche io pensato sta cosa solo che la matematica float non è hardware ma software e non credo di metterlo in difficoltà perchè il software usa la matematica intera del micro per ricavare i float.

Io avevo pensato di scrivere in ram in eprom e di inviare via seriale, usando le porte per fare accendere qualche led, ma il codice richiede un pò più di tempo che non ho.

Per la comparazione del calcolo float non è un problema ho Arduino 2009, posso fare un pò di calcoli e inviarli al pc per poi confrontarli.

Penso che a questa frequenza il principale limite è il tempo minimo supportato dalla porta per cambiare stato o modo I/O. Per la seriale si deve trovare il baud con minore errore ecc.

Ok Astro che test posso fare?
Hai info su come determinano la SOA per le MCU, per i bjt c'è molta documentazione ed è uno standard, mentre per le MCU non ho idea.

Ciao.

inizia a testare che la parte computazionale regga il clock senza problemi, poi puoi passare a controllare le interfaccie hardware una per una, come la seriale (cohe in realtà il suo test è intrinseco a quello del float), l'i2c, etc... controlli inutili se la parte computazionale non regge.

Comunque i test da Te eseguiti e superati in modo positivo non danno granzia del funzionamento i futuro.
Ciao Uwe

Che poi alla lunga l'overclock non giova per niente.
Vi ricordate quando anni fa ci fu quella partita di Intel Celeron 600 made in Malaysia che potevano essere overcloccati a 900 MHz? Io lo feci ]:smiley: ma non durò al lungo.. :sweat_smile:
Col tempo perse proprio di precisione nei calcoli.

Difatti lavorare così fuori specifiche comportava un problema sui transistor/piste della die del micro (elettromigrazione se non ricordo male) con una lenta ma inesorabile distruzione del core.