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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
#fuses WDT512 //Pour WDT512, le temps min = 512ms * 4 = 2048ms ~ 2s
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.

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;
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
}
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

un exemple
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...
Si quelqu'un aurait une petite idée, je suis preneur.

Merci