IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

PIC 18F2550 WDT et Sleep


Sujet :

C

  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 304
    Par défaut PIC 18F2550 WDT et Sleep
    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

  2. #2
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Si tu utilises l'oscillateur interne, la précision est très mauvaise. Tu pourrais envisager de jouer sur le registre OSCTUN avec une calibration personnalisée pour chaque processeur (sauvegarde en flash à la première mise sous tension par exemple), mais hélas l'oscillateur interne est très sensible aux variations de température. Ne compte surtout pas dessus pour implémenter une RTC.

    A+

    Pfeuh

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 304
    Par défaut
    Alors, je me suis rendu compte que j'utilisais un PCF8583 (une horloge) et que dans cet PCF contient une alarme

    Je vais me concentrer la dessus.

Discussions similaires

  1. comment réveiller pic après Sleep()
    Par isa3000 dans le forum Embarqué
    Réponses: 10
    Dernier message: 22/03/2012, 14h08
  2. [PIC 18F2550] Communication via l'I2C
    Par selmani300 dans le forum Autres architectures
    Réponses: 1
    Dernier message: 02/07/2009, 22h25
  3. [TComport] communiquer avec un PIC
    Par tracks dans le forum C++Builder
    Réponses: 5
    Dernier message: 09/06/2004, 13h11
  4. [PIC] Enregistrement de données permanentes
    Par Grulou dans le forum Autres architectures
    Réponses: 6
    Dernier message: 15/03/2004, 19h31
  5. [langage] fonction sleep + probleme fenetre dos
    Par yokito dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2003, 19h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo