Pages: [1]   Go Down
Author Topic: Attiny 85 e risparmio energetico  (Read 1005 times)
0 Members and 1 Guest are viewing this topic.
Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti
Leggendo il codice di Micrologio di Leonardo (http://www.leonardomiliani.com/?p=487) ho scoperto che si possono disabilitare alcuni servizi del micro (atmega328) per risparmiare energia.

Questo il codice in questione:

Code:
//maximum power saving! disable all the unused periphericals
void powerSaver() {
    //set the internal registers to reduce power consumes
    PRR &= ~((1<<PRUSART0) | (1<<PRADC) | (1<<PRSPI) | (1<<PRTIM1) | (PRTWI)); //shut down the following:  USART, ADC, I2C, Timer1, SPI
    ADCSRA &= ~(1<<ADEN); //shut down the ADC
    ACSR = (1<<ACD); //shut down the analog comparator
    DIDR0 = ((1<<ADC5D) | (1<<ADC4D) | (1<<ADC3D) | (1<<ADC2D) | (1<<ADC1D) | (1<<ADC0D)); //shut down digital input buffers on pins ADC0..5
    DIDR1 = (1<<AIN1D)|(1<<AIN0D); //shut down digital input buffer on AIN0..1
    MCUCR |= (1<<BODS); //BOD disabled
    WDTCSR &= ~((1<<WDCE) | (1<<WDE)); //watchdog disabled

    //prepare the sleep mode
    set_sleep_mode(SLEEP_MODE_PWR_SAVE); // set the sleep for POWER SAVE mode
    sleep_enable(); // sleep ready to use
}

E' possibile fare lo stesso per l'attiny85? ed eventualmente quali sono questi servizi?


Grazie
Logged


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

Sì, solo che sul tiny85 non funzionano tutte le modalità del 328P
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

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

Sì, solo che sul tiny85 non funzionano tutte le modalità del 328P
Esatto. Essendo un micro limitato nelle funzionalità, non ha tutte le periferiche del fratello maggiore né tutte le sue modalità di risparmio energetico. E' comunque tutto riportato sul datasheet, da cui puoi prendere i vari registri e fare dei test.
Logged


Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Da quello che capisco leggendo il ds le uniche due cose che si possono disabilitare sono il convertitore analogico e i digital in.
Ora, tornado al mio progetto, avrei bisogno di 3 ingressi digitali ed 1 uscita (ed 1 entrata) per il seriale (immagino sempre digitale), quindi niente analogico.
Ho abilitato il clock interno a 16Mhz (questo per la disabilitazione dei timer)

Una cosa del genere potrebbe andare?

Code:
void powerSaver() {
    //set the internal registers to reduce power consumes
    PRR &= ~((1<<PRADC) | (1<<PRTIM1) ); //shut down the following:  ADC, Timer1
    ADCSRA &= ~(1<<ADEN); //shut down the ADC
    ACSR = (1<<ACD); //shut down the analog comparator

    MCUCR |= (1<<BODS); //BOD disabled
    WDTCSR &= ~((1<<WDCE) | (1<<WDE)); //watchdog disabled

    //prepare the sleep mode
    set_sleep_mode(SLEEP_MODE_PWR_SAVE); // set the sleep for POWER SAVE mode
    sleep_enable(); // sleep ready to use
}
« Last Edit: October 14, 2012, 11:25:53 pm by erpomata » 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

1) il timer 1 sul Tiny85 mi pare gestisca millis() quindi attento che poi devi riattivarlo se vuoi usare i delay o appunto millis;
2) a 16 MHz il risparmio energetico è relativo. Ma devi proprio lavorare a 16 MHz?
3) il BOD ed il WD puoi disattivarli anche con i fuse, quindi puoi evitare di rimetterli nel codice. Io l'ho fatto perché, essendo un progetto distribuito, non posso avere la certezza che l'utente metta i fuse che consiglio. Ma tu non hai di questi problemi.
Logged


Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

1) il timer 1 sul Tiny85 mi pare gestisca millis() quindi attento che poi devi riattivarlo se vuoi usare i delay o appunto millis;
2) a 16 MHz il risparmio energetico è relativo. Ma devi proprio lavorare a 16 MHz?
3) il BOD ed il WD puoi disattivarli anche con i fuse, quindi puoi evitare di rimetterli nel codice. Io l'ho fatto perché, essendo un progetto distribuito, non posso avere la certezza che l'utente metta i fuse che consiglio. Ma tu non hai di questi problemi.

1) ok non si disabilita il timer 1  smiley
2) Bè mi serve la maggiore reattività dalla lettura del digital in, nella trasmissione del segnale seriale e nell'attuazione dei relè (sul modulo ricevente)
3) E qui come faccio? smiley-razz
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

1) puoi disabilitare il timer 0, se proprio vuoi disabilitare un timer  smiley-razz
2) OK ma poi ricordati che il clock influisce maggiormente sui consumi, molto più di una periferica disattivata. Ma ad 8 MHz non basterebbe?
3) vai su http://www.engbedded.com/fusecalc/ e ti alleni  smiley-wink
Logged


Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

1) andata per il timer 0
2) preferisco mantenermi su un processore più cloccato, tanto non è un circuito che rimarrà attivo h24.
3) farò allenamento (non conoscevo il sito)


Grazie.
Logged


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

3) vai su http://www.engbedded.com/fusecalc/ e ti alleni  smiley-wink
sì, ma fai attenzione, non è proprio difficilissimo brickare un micro smiley-wink
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

Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Infatti non ci ho capito nulla da quel sito e penso proprio che eliminerò l'idea del risparmio energetico.
Tanto non dovendo essere acceso h24 non è quello l'importante.

Pensavo fosse più semplice.

Grazie
Logged


Pages: [1]   Go Up
Jump to: