Laquelle de ces approches pour une horloge de surveillance?

8

J'ai récemment découvert les horloges de surveillance, et j'essaie d'en implémenter une pour mon circuit dans le but de réinitialiser mon microcontrôleur (AVR) s'il se bloque (c'est-à-dire qu'il ne répond pas au chien de garde).

D'après certaines recherches, il me semble qu'il existe environ quatre options:

  1. Connecter mon microcontrôleur à un circuit intégré dédié spécifique au chien de garde .
  2. Connecter mon microcontrôleur à un microcontrôleur supplémentaire (certains très basiques et peu coûteux), ce dernier étant codé dans le seul but spécifique de la synchronisation du chien de garde.
  3. Disposez mon propre circuit de surveillance basé sur une minuterie 555 et connectez-le à mon microcontrôleur.
  4. Utilisez la fonction de minuterie de surveillance interne sur mon microcontrôleur.

.

Laquelle des approches ci-dessus classeriez-vous plus haut et pourquoi?

Je voudrais définir un temps de surveillance d'environ 6 secondes, en fonction de certains critères pour la façon dont je fais le reste de ma conception et de mon code (l'appareil sera un enregistreur de température périodique alimenté par batterie).

Une petite note : Ma préférence serait l'option 1, pour plus de simplicité, cependant, sur la base du couple que j'ai trouvé, ces pièces semblent être chères (j'aimerais une solution inférieure à 1,25 USD au maximum), ou ne permettent que moins de 2 secondes pour la période de synchronisation du chien de garde.

morsure
la source
1
4) est bon marché et simple. Votre objection est-elle seulement que vous ne pouvez pas la fixer à 6 secondes? C'est assez long selon les normes des microcontrôleurs
pjc50
1
@ pjc50: C'est vraiment bon marché :) Et même le timing de 6 secondes est possible je crois. Cependant, des articles comme celui-ci suggèrent que le chien de garde interne peut ne pas être aussi robuste qu'un chien externe dédié. Et la raison du temps de 6 secondes est, sur mon microcontrôleur, j'ai un chargeur de démarrage Arduino qui comprend un temps d'attente de 4 secondes au premier démarrage. (Je pourrais apprendre à reprogrammer cela mais cela est toujours sur ma courbe d'apprentissage)
boardbite
1
Vous devez absolument réparer le chargeur de démarrage. Les 4 secondes d'attente sont 4 secondes supplémentaires de consommation de batterie dont vous pouvez vous débarrasser. Au lieu d'attendre, demandez-lui par exemple d'échantillonner une broche dédiée qui est tirée vers le bas lors du déploiement.
Igor Skochinsky

Réponses:

14
  1. Plus cher, comme vous l'avez déjà découvert. Mais cela devrait vous donner le plus haut niveau de fiabilité: parce que le chien de garde est complètement indépendant du microcontrôleur, il continuera de fonctionner et réinitialisera le microcontrôleur lorsque ce dernier est en feu, pour ainsi dire. Voir 4)
  2. Brian est contre, mais il y a des microcontrôleurs bon marché dans un petit boîtier, comme le PIC10F200 dans SOT-23, que vous pouvez utiliser comme MMV (multivibrateur monostable) redéclenchable, ce que le chien de garde est en fait. Si vous considérez un 555, un 10F200 est meilleur: pas de pièces externes et un timing plus précis (précision de 1%).
  3. un 555? Sérieusement?
  4. Le chien de garde interne fera l'affaire si le circuit intégré dédié est trop cher. Si vous êtes vraiment paranoïaque, vous pouvez penser à un scénario où une erreur matérielle bloquera le microcontrôleur et le chien de garde avec. Je ne l'ai jamais su, mais je ne sais pas comment tu dors bien.

Comme pjc50dit que 6 secondes, c'est long. Un microcontrôleur typique exécutera des dizaines de millions d'instructions pendant cette période, et alors beaucoup de choses peuvent mal se passer. Supposons que vous contrôliez une certaine charge avec PWM, et un faible rapport cyclique de 10% maintient la dissipation faible. Le microcontrôleur passe à la banane et la sortie est bloquée à un niveau de service élevé de 100%. La charge ne l'aime pas et meurt. Vous ne voulez pas attendre 6 secondes pour que cela se produise. Il devrait y avoir une partie de votre code où vous passez beaucoup plus de fréquences. Une boucle principale peut être aussi courte que 10 ms, alors vous pouvez définir le timeout du chien de garde à 100 ms, par exemple. Si vous donnez un coup de pied au chien toutes les 10 ms, un temps mort signifie que vous l'avez manqué 10 fois! Une fois, OK, mais dix fois c'est un désastre, et vous devez agir. La charge sera coupée après 100 ms au lieu de 6 secondes,

Stevenvh
la source
2
@ Nick - Nice que vous aimez, mais en fait je ne passe plus de temps à écrire le reste de la réponse :-).
Steven
1
Quel est le problème avec 555 minuteries? :)
Justin ᚅᚔᚈᚄᚒᚔ
3
@Justin - Il y a des gens pour qui un 555 est une religion: vous pouvez résoudre tous les problèmes du monde, puis certains avec un 555. Eh bien, un 555 est assez polyvalent, les applications typiques sont les multivibrateurs monostables et astables, PWM, mais ce n'est pas le meilleur pour tout. Dans cette question / réponse, OP passe quelques semaines à concevoir un circuit 555 pour une tâche qui n'est pas faite pour. Le même travail pourrait être programmé dans un microcontrôleur en une heure. Je ne remets pas en cause les compétences d'OP ni son approche, si je comprends bien, il a dû utiliser un 555 ...
stevenvh
2
Chaque fois que quelqu'un utilise des mots comme "absolument", je me sens obligé de trouver un contre-exemple. Dans ce cas: un microcontrôleur est plus sensible aux rayons cosmiques et aux radiations qu'un 555, donc dans certaines applications, un 555 serait préférable en termes de fiabilité.
apalopohapa
2
@apalopohapa - Je me tiens corrigé. Dans les vaisseaux spatiaux, les 555 peuvent être un meilleur choix que les microcontrôleurs. Bien sûr, les ordinateurs composés de 555 sont (approximativement) 15 ordres de grandeur moins précis , plus gros, plus gourmands en énergie et pas si faciles à programmer en C ++ ou Ada ... :-)
stevenvh
5
  1. La minuterie du chien de garde est simple, fonctionne, pas chère. Choix ambitieux.
  2. Un microcontrôleur supplémentaire est exagéré. Ce n'est pas utile car il faut le programmer, c'est plus cher, plus d'espace.
  3. C'est logique. Mais je ferais 1 à la place. Plus moderne.
  4. Je l'utiliserais si cela fonctionne. Ils se demandent seulement s'il peut être réglé sur 6 secondes.
Brian Carlton
la source
Merci pour la comparaison. La seule chose cependant, c'est que le n ° 1 ne semble pas être bon marché! Je n'ai pas trouvé de circuit intégré compatible avec une horloge de surveillance avec un prix de quantité inférieur à un dollar comme je l'ai mentionné, alors que comme vous le savez probablement, il existe de nombreux microcontrôleurs (pour l'option n ° 2) qui sont inférieurs à 0,50 USD.
boardbite
2

Si votre circuit / appareil ne contrôle pas le matériel vital, vous pouvez probablement vous en sortir en utilisant le chien de garde interne. Sinon (ou en fait, en tout cas) consultez ces deux excellents articles de Jack Ganssle:

http://www.ganssle.com/watchdogs.htm

http://www.ganssle.com/articles/watchdogsredux.htm

Soit dit en passant, si vous ne pouvez pas définir le chien de garde à un intervalle long, vous pouvez essayer l'approche de se réveiller assez souvent pour donner un coup de pied au chien de garde, mais en ne faisant que la mesure complète / l'écriture des journaux de temps en temps.

Igor Skochinsky
la source