Pages: [1]   Go Down
Author Topic: Frequenza AtMega328 variabile  (Read 318 times)
0 Members and 1 Guest are viewing this topic.
Parma
Offline Offline
Edison Member
*
Karma: 20
Posts: 2359
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti,
E' possibile variare durante il funzionamento la frequenza del micro?
Mi spiego meglio, magari con una rete RC con condensatore variabile usata per generare il clock posso variare la capacità del condensatore per aumentare/diminuire il clock durante il funzionamento?
Esiste un qualche modo/qualche componente che posso addirittura "sintonizzare" da codice?
Sarebbe interessante variare la frequenza di clock in base a determinati input che pervengono al micro, combinata agli sleep si avrebbe un risparmio energetico massimo

Ciao e grazie anticipatamente a tutti
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 515
Posts: 12317
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

A mio parere potresti crearti una base dei tempi con le frequenze che ti servono ed applicarle all'XTAL1 mediante una commutazione elettronica. Ma dubito che il sistema ti funzioni, devi infatti considerare i comandi di tempo, che vengono "tarati" in base alla frequenza che dichiari in fase di programmazione; ammesso che cambiando frequenza non ti si inchiodi tutto ti sballerebbelo i vari delay, millis, ecc.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9158
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Come al solito troppa fatica leggere il data sheet:

Code:
8.11 System Clock Prescaler
The ATmega48PA/88PA/168PA/328P has a system clock prescaler, and the system clock can
be divided by setting the ”CLKPR – Clock Prescale Register” on page 37 7. This feature can be
used to decrease the system clock frequency and the power consumption when the requirement
for processing power is low. This  can be used with all clock source options, and it will affect the
clock frequency of the CPU and all synchronous peripherals.
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 515
Posts: 12317
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Come al solito troppa fatica leggere il data sheet:

Code:
8.11 System Clock Prescaler
The ATmega48PA/88PA/168PA/328P has a system clock prescaler, and the system clock can
be divided by setting the ”CLKPR – Clock Prescale Register” on page 37 7. This feature can be
used to decrease the system clock frequency and the power consumption when the requirement
for processing power is low. This  can be used with all clock source options, and it will affect the
clock frequency of the CPU and all synchronous peripherals.
Astro, c'è chi può e c'è chi no può, nel senso si saper leggere; come sto imparando a mie spese in questi giorni ci sono cose facilmente comprensibili per me che non lo sono per altri e viceversa, ecco perché dai il piacere di esistere smiley-wink Ciò significa che usando il rpescaler intterno, tramite opportuni comandi è possibile ridurre la frequenza di clock originaria in modo rapido ed inolodore per il funzionamento dello sketch? Quindi potrei prevedere un 16MHz esterno e poi agire via registri sulla sua "riduzione" senza colpo ferire?
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Parma
Offline Offline
Edison Member
*
Karma: 20
Posts: 2359
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Giusto il prescaler, l'avevo letto ma non mi era venuto in mente! Ora basta che trovo un qualche modo per abbassare anche la tensione al valore minimo che viene retto alla frequenza impostata e il risparmio energetico massimo è assicurato.
« Last Edit: March 05, 2012, 06:22:00 am by flz47655 » Logged

Milano, Italy
Offline Offline
Faraday Member
**
Karma: 11
Posts: 3091
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Anche questo mi pare fondamentale
http://arduino.cc/playground/Code/Prescaler
anche se poi mi domando, in che modo va gestito il prescaler? Cioe' come faccio a sapere se devo variare la frequenza? Ci vorrebbe un sistema automagico...
Logged

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

Parma
Offline Offline
Edison Member
*
Karma: 20
Posts: 2359
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Io pensavo ad un sistema che deve rispondere in tempi predeterminati e in cui se ricevo in input X devo fare molti calcoli e imposto la frequenza massima, se ricevo in input Y devo fare pochi calcoli ed imposto la frequenza media o minima, il resto del tempo tengo il micro in sleep

Ciao
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21252
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

dirrei di farlo col prescaler perché ogni circuito esterno per esempio un PLL Ti consuma piú corrente di quella che risparmi abbassando il clock.
Ciao Uwe
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Anche questo mi pare fondamentale
http://arduino.cc/playground/Code/Prescaler
anche se poi mi domando, in che modo va gestito il prescaler? Cioe' come faccio a sapere se devo variare la frequenza? Ci vorrebbe un sistema automagico...
Siccome in genere questo tipo di controlli sono software-dependant, puoi pilotare il prescaler in modo da impostare il clock più alto prima di eseguire pesanti algoritmi di calcolo oppure controlli molto veloci su pin e rimettere un prescaler più elevato per avere un clock inferiore quando esci da questi punti del programma.
Logged


Pages: [1]   Go Up
Jump to: