Quelle est la philosophie ou l'approche adoptée pour mettre en œuvre des fonctions hautement critiques dans le temps dans les microcontrôleurs, le cas échéant?
Je travaille sur un projet impliquant la sortie d'une forme d'onde carrée précise de fréquence variable. Je l'ai fait en utilisant une minuterie et une fonction d'interruption. Cependant, même pour implémenter cela correctement, j'ai dû calibrer le décalage pour le nombre de cycles d'horloge pris pendant la routine de service d'interruption. J'imagine que cette précision serait perturbée par la présence d'une autre forme d'onde de ce type (par exemple, la fréquence devait être changée en même temps). Avoir un microcontrôleur chacun, pour chaque fonction critique de temps semble inutile.
Prenons un autre exemple, de l'implémentation d'une fonction d'horloge (comme dans hh: mm: ss). Je ne peux pas imaginer que chaque micro-contrôleur / ordinateur de haut niveau possède une puce d'horloge en temps réel dédiée uniquement pour garder une trace de l'heure. Cependant, j'ai du mal à imaginer qu'il soit mesuré avec précision à l'aide du processeur de base, qui est occupé à entretenir une pléthore de fonctions qui arrivent à des intervalles asynchrones entre-temps. J'imagine que le comptage du temps aurait des erreurs de décalage, qui changent en fonction des fonctions en cours d'exécution.
Existe-t-il un processus ou une approche de conception pour contenir ou donner une tolérance à la précision réalisable? Ou est-ce que quelqu'un a des conseils ou des suggestions sur où je pourrais trouver plus d'informations à ce sujet?