Pages: 1 [2]   Go Down
Author Topic: Circuito risparmioso  (Read 940 times)
0 Members and 1 Guest are viewing this topic.
Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22635
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tralascia la SoftwareSerial, che usi come una comune seriale.
Concentrati su sleep e interrupt:
http://www.arduino.cc/playground/Learning/arduinoSleepCode

Inizia studiando quegli esempi e cerca di imparare il più possibile. Poi aggiungici la SoftwareSerial e fai dei test per vedere se l'invio di un dato al micro in sleep risveglia quest'ultimo oppure no.
Logged


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

Ok ci sono riuscito ed ora mi è tutto più chiaro dal punto di vista hardware.
Per il software non ho capito se lo sleep è meglio o uguale al leggermi il datasheet cap 7.4 "Minimizing Power Consumtion" (cosa che ancora non ho fatto) o me lo devo leggere ugualmente? Cioè si può migliorare ancora il consumo di corrente oltre che a mettere in sleep il micro?

Inoltre mi pare di capire che la softwareserial gestisce processori cloccati come minimo a 8Mhz. Sbaglio?

Grazie

EDIT: forse dipende dal livello di sleep impostato?
« Last Edit: November 09, 2012, 01:18:51 am by erpomata » Logged


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

Ok ci sono riuscito ed ora mi è tutto più chiaro dal punto di vista hardware.
Per il software non ho capito se lo sleep è meglio o uguale al leggermi il datasheet cap 7.4 "Minimizing Power Consumtion" (cosa che ancora non ho fatto) o me lo devo leggere ugualmente? Cioè si può migliorare ancora il consumo di corrente oltre che a mettere in sleep il micro?
Per capire lo sleep devi leggerti quel capitolo. In questo modo capisci "perché" lo sleep fa risparmiare energia. Lo fa togliendo il clock ad alcune periferiche interne. Togliere il clock non significa però disattivarle. Se agisci sui registri di sistema puoi anche letteralmente togliere la corrente a queste periferiche, in modo che anche se non attive (=senza clock) esse non consumino proprio nulla perché la "spina è staccata".
Ad esempio, l'ADC è quello che consuma maggiormente corrente: in sleep resta comunque alimentato. Togliere l'alimentazione all'ADC significa abbattere i consumi in sleep del 40%.

Quote
Inoltre mi pare di capire che la softwareserial gestisce processori cloccati come minimo a 8Mhz. Sbaglio?

Grazie

EDIT: forse dipende dal livello di sleep impostato?
No, è un limite insito all'implementazione, sotto agli 8 MHz l'emulazione SW va fuori specifiche ed otterresti una trasmissione piena di errori.
Logged


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

Tutto chiaro appena posso mi leggo il ds.

Per questo punto:

EDIT: forse dipende dal livello di sleep impostato?

forse, non mi sono spiegato bene.
Era riferito a:

Per il software non ho capito se lo sleep è meglio o uguale al leggermi il datasheet cap 7.4 "Minimizing Power Consumtion" (cosa che ancora non ho fatto) o me lo devo leggere ugualmente? Cioè si può migliorare ancora il consumo di corrente oltre che a mettere in sleep il micro?

Comunque è tutto chiaro devo leggermi il ds.
Per ora grazie.
Logged


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

Ah, non avevo capito.
Certo, di sleep ne esistono più livelli: gli Attiny ne hanno 3, gli Atmega normalmente 5. Ogni livello stacca il clock a sempre più periferiche, però in questo modo si disattivano via via sempre più funzioni del micro ed andando negli "strati profondi" poi devi studiarti bene il modo per risvegliare il micro perché il metodo che andava per un livello meno aggressivo potrebbe non bastare più.
Logged


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

Tornando alla discussione.
Vorrei sapere che differenza c'è, se ce n'è, tra il disabilitare i circuiti di cui non si ha bisogno tramite i fuse o tramite la libreria

Code:
#include <avr/power.h>

dove trovo:

Code:
  power_adc_disable();
  power_spi_disable();
  power_timer0_disable();
  power_timer1_disable();
  power_timer2_disable();
  power_twi_disable();

Non mi dite che la differenza sta solo nel fatto che la libreria power reimposta tutto ogni volta che si accende il micro e quindi riparte il software caricato mentre i fuse sono pronti già all'attivazione del micro.
Logged


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

Ci sono dei moduli che non puoi disattivare con i fuse. Questi gestiscono solo il Brown-Out ed il WatchDog, tutti gli altri moduli devi disattivarli via SW.
Logged


Pages: 1 [2]   Go Up
Jump to: