Si tu n'as pas besoin de communiquer par l'usb
power_usart0_disable()
sur les 3 timers je pense que tu peux en éteindre 2 sans pb (mais il faut garder celui utilisé par millis ou delay).
power_timer0_disable()
power_timer1_disable()
power_timer2_disable()
Perso j'ai jamais essayé mais fais nous un retour sur les mesures de courant observées en éteignant chacun des modules.
La librairie sleep.h, je l'ai trouvée, mais pas la power.h.
J'ai trouvé quelques choses sur le site koders, mais je sais pas si c'est la bonne librairies.
J'utilise l'onglet "Tools" dans L'IDE Arduino 010 , et je configure sous "diecimila".
Je fais bien un #include<avr/power.h>, mais je n'avais pas cette librairies dans le Pack Arcuino 010, j'ai été chercher cette lib le net qu j'ai trouver sur un site qui s'appelle "Koders".
L'auteur de la librairies est le même que celui de sleep.h donc je pense que c'est la bonne.
Mais je n'arrive pas à trouver comment mettre mon code, pour sleep j'avais trouvé des exemples.
comment sais tu que tu n'as pas la lib ?
tu es allé voir dans ton .../avr/include/avr/ (sur mon linux c'est dans /usr/avr/include/avr/power.h) ?
Essaye de setter une autre board (genre NG atmega168 pour voir si ca marche la compil).
Il me semble que le fait d'avoir utilisé ces macros me fait perdre 15 µseconde par seconde... c'est pas lourd, mais sur 24 heures ça fait pas loin de 10 secondes (avec un quartz de 2Mhertz).
Donc mon horloge retardera de 1 minute pour 6 jours, 10 minutes en 2 mois... il faut que je rajoute un fonction pour la correction.
Je fais des essais avec un quartz de 32.768 kHz, mais il me semble que cela ne change rien par rapport au quartz de 1MHz, je suis toujours aux alentours de 10 mA.
Selon ce qui était dit dans un post plus haut la fonction delay() serait gourmande en courant, donc j'ai changé d'option et j'ai réécris le programme avec des boucle comme mesure de temps, je ne note pas de différence par rapport à l'ancien programme.
J'ai qd meme l'impression en lisant la datasheet en diagonale que tu as un timer (le 2) qui reste actif et qui donc est utilisable pour faire une horloge
En lisant le data sheet de l'atmega168 , il me semble qu'il a beaucoup de fonction que l'on peut éteindre, il faut encore voir comment ce serait possible de le faire.
Est ce qu'il est possible de passer par l'IDE Arduino pour programmer l'horloge interne, et n'utiliser un quartz externe 32,768 kHz que pour cadencer l'horloge ?
Petit essai ce matin avec la fonction "attachInterupt", je balance un signal d'horloge sur la pin digital 2 ou 3. Le signal d'horloge est donné par un oscillateur-diviseur cadencé par un quartz 32.768 kHz.
Le signal d'horloge récupéré est de 8 Hz, je le divise ensuite par 16 avec l'atmega. En utilisant power.h et sleep.h j'arrive à moins de 8mA pour le tout, oscillateur compris.
Le timer 0 est en fonction car il me permet d'incrémenter la variable (++) avec laquelle j'arrive à diviser mes 8Hz.