Réaliser un watchdog

spheris

Senior Member
Bonjour, j'ai un programme informatique qui nécessite en permanence d'être contrôlé par watchdog réalisé par un picaxe.
Je l'imagine comme ceci:

Si le pc venait à planter un relais sur une sortie du picaxe et en parallèle sur le bouton reset déclencherait un reboot de ma machine.
Quant à lui le picaxe reçoit un signal série par la port com du pc pour le rafraichir toutes les 5 min par exemple.
Une sortie picaxe a une led rouge traduisant l'état de mon wd
Une led rouge clignote toutes les secondes traduit un wd actif.
Cette même led allumée en continu traduit un wd désactivé.
Cette led clignotante rapidement traduit un déclenchement imminent du reset.

Ma question est la suivante:
Comment faire clignoter la led toutes les secondes sachant que si je mets dans le programme du picaxe un:
Pause 1000
Je peux passer à coté d'un rafraichissement du wd par le port série?
Car si je comprends bien l'instruction pause 1000 me bloque le programme pendant 1000ms soit 1s.
Merci de votre aide.
 

PieM

Senior Member
Bonjour
Il faut utiliser la variable time.
Pour clignoter tte les secondes:

setfreq m32 (time incrémenté toutes les 1/2 secondes)
b0 = time // 2
if b0 = 0 ( le reste de la division est 0 )
allumer la led, sinon l'éteindre ...
 

Technoman

Senior Member
Bonsoir,
Le principe de votre watchdog est intéressant. Selon une loi connue du Picaxe, faire varier le code transmis par le PC apporterait un degré se sûreté supplémentaire .
Concernant la led, est-ce un élément auquel vous serez attentif? Ce qui importe c'est qu'il reboot votre machine lorsque c'est nécessaire.
 

spheris

Senior Member
PieM,
Merci,j e vais essayer la commande time, je ne la connaissais pas.

Technoman,
La led est une information importante, car elle est le gage 'visuel' du réarmement du WD, ce qui est une information précieuse.
De plus, il confirmerait la communication avec le port série du PC.
Que voulez- vous dire par :
faire varier le code transmis par le PC apporterait un degré se sûreté supplémentaire .
On pourrait même ajouter une option:
En passant C.0 à 1 par exemple, le picaxe ferait clignoter la led le nombre de fois qu'il a déclenché le wd dans les 24heures.
 

Technoman

Senior Member
Bonsoir,
Pour la led, si vous en avez besoin... Je suggère alors un signal vous informant qu'un reset a eu lieu.

Le chien de garde "standard" est rafraichi par une impulsion sur une sortie. Un document sur la sûreté, il y a déjà quelques temps, relatait l'inefficacité possible du chien de garde, si, pendant le plantage, le programme faisait changer aléatoirement l’état de la sortie de rafraichissement. Une solution était alors d'effectuer une succession de changements d'états selon un timing défini en localisant des segments de code à plusieurs endroits dans la plage d'adresses. Dans votre cas, pour écarter le cas improbable d'un rafraichissement par l'envoi d'un code fixe, l'idée est de faire varier ce code selon une séquence de quelques codes.
 

PieM

Senior Member
concernant le clignotant:
plus elegant:

dirB.2 = 1
Do
.......
b0 = time
OutpinB.2 = bit0 (si bit1, clignote 2 fois plus lentement)
....
Loop
 
Last edited:

spheris

Senior Member
PieM,
Je ne trouve absolument rien dans la documentation sur time.
Où avez vous eu cette info?
Merci pour votre réponse.
 
Top