attiny_atmega_verylowpower
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
attiny_atmega_verylowpower [2019/11/19 21:03] – [1 an avec un ATtiny / ATmega avec des piles ?] joseph | attiny_atmega_verylowpower [2019/11/21 09:27] – [Méthode 2 : utiliser des interruptions] joseph | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | (brouillon) | + | ====== |
- | + | ||
- | ====== | + | |
Pour rappel, ATmega = le chip d'un Arduino et un ATtiny c'est encore plus petit. | Pour rappel, ATmega = le chip d'un Arduino et un ATtiny c'est encore plus petit. | ||
Ligne 11: | Ligne 9: | ||
Mais il est possible d' | Mais il est possible d' | ||
- | ====== | + | **Conclusion**: |
+ | |||
+ | ====== | ||
Il suffit d' | Il suffit d' | ||
Ligne 24: | Ligne 24: | ||
void loop() { | void loop() { | ||
- | digitalWrite(4, | + | digitalWrite(4, |
- | | + | snore(1000); // puis on dort profondément pendant 1 seconde |
- | | + | |
- | snore(5000); | + | |
} | } | ||
</ | </ | ||
- | + | On descend | |
- | ====== Consommation ====== | + | Mais 1 seconde |
- | + | ||
- | On arrive | + | |
- | Mais 1 seconde peut être beaucoup pour certaines applications. Exemple avec 20ms de sommeil: | + | |
< | < | ||
Ligne 44: | Ligne 39: | ||
</ | </ | ||
- | J'ai obtenu | + | J'ai obtenu |
- | {{tag> | + | Mais on peut faire encore mieux, voir le paragraphe suivant. |
- | ====== | + | ====== |
On peut mettre l' | On peut mettre l' | ||
- | Exemple: | + | Exemple |
+ | |||
+ | < | ||
+ | #include <avr/interrupt.h> | ||
+ | #include <avr/sleep.h> | ||
+ | |||
+ | ISR(PCINT0_vect) { | ||
+ | if (digitalRead(0) == LOW) # PB0 = pin 5 enfoncé => on allume la LED | ||
+ | digitalWrite(4, | ||
+ | else if (digitalRead(1) == LOW) # PB1 = pin 6 enfoncé => on éteint la LED | ||
+ | digitalWrite(4, | ||
+ | else if (digitalRead(2) == LOW) # PB2 = pin 6 enfoncé => on allume la LED | ||
+ | digitalWrite(4, | ||
+ | } | ||
+ | |||
+ | void setup() { | ||
+ | pinMode(4, | ||
+ | pinMode(0, | ||
+ | pinMode(1, | ||
+ | pinMode(2, | ||
+ | ADCSRA = 0; // ADC disabled | ||
+ | GIMSK = 0b00100000; | ||
+ | PCMSK = 0b00000111; | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | sleep_enable(); | ||
+ | set_sleep_mode(SLEEP_MODE_PWR_DOWN); | ||
+ | sleep_cpu(); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Consommation : | ||
+ | |||
+ | * 0.2 µA en temps normal 8-) | ||
+ | * 0.3 ma = 300 uA quand un bouton est enfoncé (c'est la résistance PullUp interne à l' | ||
+ | * 5 mA quand la LED est allumé (normal) | ||
====== Références intéressantes ====== | ====== Références intéressantes ====== | ||
https:// | https:// | ||
+ | |||
+ | |||
+ | {{tag> |
attiny_atmega_verylowpower.txt · Dernière modification : 2020/04/06 16:10 de serge