Nécessité d'une horloge de surveillance externe

19

Quel est le besoin d'une horloge de surveillance externe pour un microcontrôleur?

La plupart des microcontrôleurs sont conçus avec une minuterie de surveillance interne. Cependant, dans certains circuits, ils utilisent une horloge de surveillance externe (telle que PIC16F1824).

Photon001
la source

Réponses:

10

Certains produits doivent répondre aux exigences de sécurité, déterminées par le fabricant ou pour répondre aux normes de sécurité internationales telles que la CEI 60730-1, ou l'ancienne UL1998 qui est toujours en usage aux États-Unis. La fonctionnalité de surveillance interne d'un microcontrôleur donné peut ou non être adéquate pour être utilisée. Un WDT externe peut être utilisé en combinaison avec le WDT interne dans certains cas.

Certains microcontrôleurs comme la série Hercules de TI prennent très au sérieux les applications de systèmes critiques pour la sécurité et sont plus susceptibles de répondre à des exigences strictes, mais ils peuvent ne pas être appropriés pour des applications sensibles aux coûts.

En règle générale, le WDT est l'un des nombreux moyens de réduire la probabilité d'une défaillance causant des dommages catastrophiques aux biens ou des blessures. D'autres choses telles que la protection de la mémoire pour détecter un accès inattendu à la mémoire du MCU ou des récupérations de programme à partir de la mémoire inutilisée sont généralement utilisées en conjonction avec un WDT.

Les sous-systèmes automobiles, les contrôleurs de portes de garage et les contrôleurs d'allumage au gaz (gaz naturel ou propane) utilisés dans les fours, les sécheuses et les chauffe-eau sont des exemples de produits peu coûteux qui remplissent des fonctions essentielles à la sécurité. Bien sûr, de nombreux produits médicaux et aérospatiaux sont également essentiels à la sécurité, mais il peut y avoir suffisamment de place pour la redondance et d'autres approches. Dans certains cas, il peut ne pas y avoir d'état de sécurité facilement accessible, par exemple dans un avion.

Idéalement, le temporisateur du chien de garde est très simple, indépendant du MCU (par exemple, il doit avoir sa propre source d'horloge et peut-être un moniteur d'horloge), ne peut pas être réglé (par logiciel) sur une durée plus longue que celle qui causerait des dommages par une erreur logicielle, et rendra le système dans un état sûr s'il n'est pas "caressé" à temps, soit avec une temporisation, soit sous forme de fenêtre afin que des réinitialisations trop fréquentes puissent être détectées. Par exemple, un WDT dans une application de contrôle thermique peut être défini sur quelques secondes car aucun dommage n'est possible si le microcontrôleur se verrouille pendant cette durée.

Le WDT est le plus utile dans le cadre d'une approche au niveau système de la fiabilité et de la sécurité.

Spehro Pefhany
la source
33

Une minuterie de surveillance peut se prémunir contre les bogues matériels dans les pièces de microcontrôleurs de pointe. Celui que nous avons récemment utilisé, d'une marque célèbre, avait des broches d'E / S qui manquaient parfois leurs interruptions, parfois ne démarraient pas correctement, et où le chien de garde intégré ne parvenait parfois pas à réinitialiser le système dans un état connu.

Cela ne s'est pas révélé avant que nous commencions avec des tests de fiabilité à long terme, et il était plus facile d'ajouter un chien de garde externe que de changer le microcontrôleur.

Si vous avez plus d'un CI sur le PCB, vous pouvez également avoir besoin d'un CI de réinitialisation externe ou d'un moniteur de tension pour que tout démarre de manière fiable. Beaucoup d'entre eux peuvent également servir de chien de garde.

tuyau
la source
9
"Le chien de garde intégré n'a parfois pas réussi à réinitialiser le système dans un état connu" - cela est fonctionnellement équivalent à "il n'y a pas de chien de garde interne".
Dmitry Grigoryev
32

Il est difficile de faire valoir que l'horloge interne du chien de garde interne est en fait indépendante de toutes les autres horloges et fonctionne toujours comme elle le devrait.

Donc, pour la certification, il est généralement beaucoup plus facile de placer un chien de garde externe sur la carte et de dire: regardez, il y a notre chien de garde, il doit être déclenché par le MCU à cet intervalle, ce qui est plus court que notre temps de défaillance, donc notre appareil est sûr comme nous l'avons défini.


Pour répondre à certains des commentaires:

"et toujours courir comme il se doit" - Bon point. Il peut être plus difficile de prouver que votre logiciel initialise correctement le chien de garde interne en toutes circonstances que de simplement utiliser une puce de chien de garde et de vous référer à sa fiche technique.

Ceci est généralement prouvé par un test d'insertion de défaut, que vous présentez à un organisme de certification. Vous leur montrez donc le code où se produit votre initialisation et où se produit le déclenchement du chien de garde. Ils vous demandent généralement de modifier le code de telle manière que le déclenchement du chien de garde soit arrêté après un certain temps et de vérifier si le contrôleur est correctement réinitialisé.

Ou pour prouver que votre code ne contient pas de bogue qui désactive accidentellement le chien de garde interne.

Au moins sur certains contrôleurs, le chien de garde est appelé indépendant et possède sa propre source d'horloge et ne peut pas être désactivé par des moyens logiciels, seule une réinitialisation du contrôleur désactivera le chien de garde. Au moins en théorie - il est facile de montrer que vous ne pouvez pas l'arrêter par logiciel, mais difficile de prouver que l'horloge est vraiment indépendante et ne s'arrêtera pas sous EMI.

Ou pour prouver que votre code ne s'exécute pas de manière sauvage en réinitialisant en continu le chien de garde externe aussi vite que possible. Problème résolu. ;-)

Dans ce cas, vous utilisez un chien de garde de fenêtre qui doit être déclenché à certains intervalles et si vous ne le faites pas (le déclencher trop souvent ou trop peu) réinitialisera le circuit. Le STM32 avec lequel je travaille a un chien de garde de fenêtre interne, mais il fonctionne à partir de PCLK1 qui est dérivé de l'horloge principale, donc je ne pense pas qu'il soit aussi utile qu'un chien de garde externe avec sa propre source d'horloge.

Ou qu'un génie ne place pas la routine de service de surveillance dans un temporisateur ISR, de sorte que le code principal peut planter mais l'interruption continue de se déclencher et d'entretenir parfaitement le chien de garde ...

C'est certainement vrai, mais j'espère qu'un examen remettra ce génie sur sa chaise - mais bon quand j'ai commencé, c'était aussi ma première idée: D. Pendant les processus de certification auxquels j'ai participé, ils ont toujours regardé la partie chien de garde du logiciel.

Arsenal
la source
4
"et toujours courir comme il se doit" - Bon point. Il peut être plus difficile de prouver que votre logiciel initialise correctement le chien de garde interne en toutes circonstances que de simplement utiliser une puce de chien de garde et de vous référer à sa fiche technique.
JimmyB
4
@JimmyB Ou pour prouver que votre code ne contient pas de bogue qui désactive accidentellement le chien de garde interne.
TripeHound
2
@TripeHound Ou pour prouver que votre code ne s'exécute pas de manière sauvage en réinitialisant le chien de garde externe aussi rapidement que possible. Problème résolu. ;-)
JimmyB
2
Ou qu'un génie ne place pas la routine de service de surveillance dans un temporisateur ISR, donc le code principal peut planter mais l'interruption continue de se déclencher et d'entretenir parfaitement le chien de garde ...
John U
@JohnU, qui, cependant, ne semble pas être utile à un CI externe.
ilkkachu
12

Les chiens de garde intégrés aux microcontrôleurs ont des propriétés particulières qui signifient qu’ils peuvent eux-mêmes échouer, contrairement à un chien de garde externe différent.

Par exemple, une conception courante consiste à utiliser une minuterie de surveillance fonctionnant à partir d'un oscillateur RC de faible puissance. Cet oscillateur peut échouer. Un chien de garde externe basé sur la décharge du condensateur plutôt que sur un oscillateur pourrait toujours réinitialiser le microcontrôleur dans de nombreux cas.

Une autre raison est que le chien de garde externe peut être plus robuste. Un microcontrôleur peut uniquement fonctionner de manière fiable sur une certaine plage de tension, et être un appareil complexe peut être sujet à un verrouillage d'une manière qui rend son propre chien de garde interne inefficace. Un chien de garde externe peut avoir une plage d'alimentation acceptable plus large et être moins sujet aux problèmes lorsqu'il est soumis à du bruit électrique.

Les chiens de garde externes offrent souvent également une gamme beaucoup plus large de valeurs de temporisation. Un microcontrôleur que j'utilise souvent, le XMEGA, a un délai maximum d'environ 7 secondes. Pour un produit, j'ai ajouté un chien de garde externe supplémentaire avec un délai d'attente de 2 heures. Cela m'a permis de réveiller le microcontrôleur une fois par heure plutôt qu'une fois toutes les quelques secondes, réduisant la consommation d'énergie dans un appareil alimenté par batterie.

Les chiens de garde externes ont parfois plusieurs fonctions, comme une minuterie et un moniteur de tension / commande de réinitialisation. Encore une fois, ceux-ci peuvent être moins puissants que le système intégré d'un microcontrôleur.

Un autre avantage intéressant d'un chien de garde externe est qu'il peut être utilisé pour réinitialiser des périphériques autres que le microcontrôleur. Par exemple, il peut contrôler la broche d'activation d'un régulateur de tension, mettant hors tension un circuit entier pour réinitialiser plusieurs appareils à la fois. En utilisant une logique simple, le signal de réinitialisation du chien de garde provenant de plusieurs sources peut être combiné, ce qui permet au chien de garde de demander à plusieurs appareils de le réinitialiser continuellement.

utilisateur
la source
Sur la base de mon expérience des wdogs externes, je dirais qu'ils sont beaucoup moins robustes que les internes, simplement parce qu'un autre circuit externe est une autre chose qui peut se casser. Soudure, EMI, ESD et ainsi de suite. Si vous parvenez à raccourcir l'entrée d'horloge à quelque chose, le wdog externe est effectivement désactivé. Je n'achète donc pas vraiment l'aspect sécurité accrue. Si vous avez les deux à la fois, alors, vous augmenterez très légèrement la sécurité.
Lundin
@Lundin la plupart d'entre eux utilisent un oscillateur RC interne ou une décharge de condensateur, plutôt qu'une horloge externe. En fait, je ne peux penser à aucune main qui utilise une horloge externe. De plus, les échecs ne sont pas additifs, si vous avez un chien de garde externe et interne et qu'un échec est clairement encore meilleur que d'en avoir un seul.
utilisateur
3

Certaines certifications, telles que UL , peuvent nécessiter une protection contre deux points de défaillance. Une horloge de surveillance externe serait considérée comme une protection contre un premier point de défaillance, le microcontrôleur.

da66en
la source
2

Un chien de garde n'est vraiment pas différent à cet égard de tout autre périphérique intégré que vous trouvez dans un MCU. Les MCU sont livrés avec des temporisateurs, des RTC, des ADC, des EEPROM et des contrôleurs de réinitialisation, mais toutes ces fonctions existent également en tant que circuits intégrés séparés. Si les blocs intégrés disponibles ne répondent pas à vos besoins, vous devez utiliser des blocs externes. Ou vous pouvez essayer de trouver un MCU avec tous les bons blocs, qui peuvent ne pas exister ou être trop chers ou difficiles à porter votre code.

Dmitry Grigoryev
la source
1

Un chien de garde est un temporisateur et active sa sortie lorsque le CI a perdu une impulsion d'entrée pendant une période.

C'est un bloc de construction et peut être utilisé pour n'importe quelle application.

Ainsi, ils peuvent être utilisés dans n'importe quelle application, par exemple pour modifier le routage des données en mode de sécurité intégrée . Lorsque l'horloge du microcontrôleur tombe en panne, nous ne pouvons pas désactiver certaines sorties critiques.

Un chien de garde externe n'est pas lié au domaine d'horloge complexe du microcontrôleur, et certains d'entre eux ont leur synchronisation de charge RC analogique ou leur horloge interne.

Les circuits numériques sous rayonnement peuvent déclencher les sorties lorsque la charge atteint leurs bascules. Mais certains circuits analogiques sont plus sûrs car ils intègrent la charge dans un condensateur, et c'est sûr lorsque nous l'intégrons.

M KS
la source