Aller au contenu


Photo
- - - - -

Watchdog


8 réponses à ce sujet

#1 gundark

gundark

    Nouveau membre

  • Membres
  • 5 messages

Posté 19 janvier 2009 - 02:11

Bonjour,
je suis étudiant en iut et nous avons comme projet un ballon sonde. Nous sommes en train de vouloir activer le watchdog de notre p18f458 équipé d'un quartz à 4MHz. Malheureusement nous n'y parvenons pas. Nous avons validé le timer WDTEN=1, nous avons mis en route le timer du watchdog SWDTEN=1 le postscale réglé pour un diviseur de 128. Pourriez vous nous éclairer?
Merci.

#2 Matthieu

Matthieu

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 604 messages
  • Gender:Male

Posté 19 janvier 2009 - 04:39

Bonjour, quelle est ton problème exactement.

Si il fait des réset tout le temps : Tu as oublié de le remettre a 0 sans arrêt ou tu le fait trop tard ...

#3 Maïck

Maïck

    Membre passionné

  • Membres
  • PipPipPip
  • 390 messages
  • Gender:Male
  • Location:Suisse

Posté 19 janvier 2009 - 07:35

Il ne faut pas oublier de l'enclencher aussi dans les bits de configuration.

#4 gundark

gundark

    Nouveau membre

  • Membres
  • 5 messages

Posté 20 janvier 2009 - 10:29

Avec la première solution (WDT=ON) nous avons l'impression que le watchdog effectue un reset permanent puisque le programme n'arrive pas au main. Avec la deuxième, ce que nous avons constaté en métant un "while(1);" dans le programme c'est que sa saute cette boucle infinis et que sa passe à la suite, il ne fais pas de reset du programme. Nous en avons mis plusieurs et même constat, le watchdog ne reset pas le programme.
Comment faire en sorte qu'il laisse le programme se dérouler normalement et faire un reset du programme lorsque qu'il détecte une boucle infinis?

Notre première solution:
#pragma config WDT = ON, WDTPS = 128
#pragma config OSC = ECIO
#pragma config OSCS= OFF , BOR= OFF
#pragma config STVR=OFF , LVP = OFF, DEBUG = OFF

Notre deuxième tentative:
CONFIG2Hbits.WDTPS2=1;
CONFIG2Hbits.WDTPS1=1;
CONFIG2Hbits.WDTPS0=1; //Watchdog timer postscale 128
CONFIG2Hbits.WDTEN=1; //Watchdog Timer Enable
RCONbits.IPEN=1; //Enable priority levels on interrupt
WDTCONbits.SWDTEN=1; //Watchdog timer is on

Le logiciel utilisé est MPLAB.

#5 gundark

gundark

    Nouveau membre

  • Membres
  • 5 messages

Posté 27 janvier 2009 - 03:35

Personne ne peut nous aider?

#6 Maïck

Maïck

    Membre passionné

  • Membres
  • PipPipPip
  • 390 messages
  • Gender:Male
  • Location:Suisse

Posté 27 janvier 2009 - 05:35

As tu activé les interrupts ?? (globaux et périphérique)

#7 webshinra

webshinra

    Membre passionné

  • Membres
  • PipPipPip
  • 510 messages

Posté 28 janvier 2009 - 07:26

la meilleur solutions, pour deboguer ça, c'est de regardé le code assembleur généré, tu auras peut etre des surprise qui pourrais te donnée des indice sur la résolutions de tes soucis.

#8 gundark

gundark

    Nouveau membre

  • Membres
  • 5 messages

Posté 09 février 2009 - 09:34

Bonjour à tous. Nous avons réussis à comprendre le watchdog et son fonctionnement, c'est très simple:
- il suffit d'intégrer au projet le "p18f458.h"
- d'initialiser le watchdog " #pragma config WDT = ON, WDTPS = 1 "
- et pour finir faire un " ClrWdt(); " dans le programme principal

Sur un petit programme sa marche parfaitement. Nous avons voulus l'intégrer à notre projet et là sa ne marche pas du tout, le " ClrWdt(); " dois se faire complètement au début et dans notre projet, on fais:

void main(void)
{
int i;
char toto[8]="toto";
char reset[8]="reset";
TRISB = 0x00;
LATB = 0x00;
ClrWdt();
initLCD();
clearLCD();
afficheLCD(0,1,reset);
for(i=0;i<10000;i++);

Il ne nous fais même pas l'affichage... Une idée?

#9 gundark

gundark

    Nouveau membre

  • Membres
  • 5 messages

Posté 10 février 2009 - 09:44

Nous avons trouvé la panne. Pour chaque delai de plus ou égal à 500ms il faut faire juste avant un ClrWdt(); et pour tout ce qui est supérieure à 2,3s il faut le diviser. Voilà. J'espère que cela pourra servir à quelqu'un d'autre. +!



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users