Bonjour a tous
Je ne sais pas si c'est le bon forum ou pas, il me semble en tout cas le plus adéquat. Je laisse le soin aux Modérateurs de déplacer mon message au cas où.
Bon je vous expose mon problème,
Alors, je travaille sur un petit projet qui utilise un PIC 18F2550 alimenté par pile, pour que les piles tiennes suffisamment de temps (quelques semaines), j'endors le PIC pour qu'il ne consomme pas d'énergie en utilisant le WDT (Watch Dog Timer). Le WDT permet d'endormis le PIC un certain moment.
Donc, en utilisant le WDT512, le PIC se met en "veille" toute les 2048 ms. quand on appel la fonction sleep() le PIC s'endormira 2048 ms.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2#fuses WDT512 //Pour WDT512, le temps min = 512ms * 4 = 2048ms ~ 2s
J'ai besoin d'effectuer une tache toute les 15 minutes, par un calcul simple, pour mettre en veille le PIC pendant 15min il faut :
(int)(15*60/2,048) = 439;
En faisant quelques testes, je me suis rendu compte que le PIC se mettait en veille entre 15min16s et 15min17s et c'est aléatoire. je vous avouerai que je ne trouve pas d'explication
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 while(true) { for(i=1;i<439;i++) sleep(); MaTache();//qui ne dure que 500ms }
un exemple
Si quelqu'un aurait une petite idée, je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 05/05/09 17:42:30 05/05/09 17:57:47 //17s 05/05/09 18:13:04 //17s 05/05/09 18:28:21 //17s 05/05/09 18:43:38 //17s 05/05/09 18:58:55 //17s 05/05/09 19:14:12 //17s 05/05/09 19:29:29 //17s 05/05/09 19:44:45 //16s 05/05/09 20:00:02 //17s 05/05/09 20:15:19 //17s 05/05/09 20:30:35 //16s 05/05/09 20:45:52 //17s 05/05/09 21:01:09 //17s 05/05/09 21:16:26 //17s 05/05/09 21:31:42 //16s 05/05/09 21:46:59 //17s 05/05/09 22:02:16 //17s 05/05/09 22:17:32 //16s 05/05/09 22:32:49 //17s 05/05/09 22:48:06 //17s 05/05/09 23:03:22 //16s 05/05/09 23:18:39 //17s 05/05/09 23:33:56 //17s etc...
Merci
Partager