Qual é a filosofia ou abordagem adotada para implementar funções altamente críticas em microcontroladores, se houver alguma?
Estou trabalhando em um projeto que envolve uma forma de onda precisa de onda quadrada de frequência variável. Eu fiz isso usando um timer e uma função de interrupção. No entanto, mesmo para implementar isso corretamente, tive que calibrar o deslocamento para o número de ciclos de relógio realizados durante a rotina de serviço de interrupção. Eu imagino que essa precisão seja perturbada por ter outra forma de onda funcionando ao lado (digamos que a frequência precise ser alterada exatamente ao mesmo tempo). Ter um microcontrolador para cada uma dessas funções críticas parece um desperdício.
Tomemos outro exemplo, da implementação de uma função de relógio (como na hh: mm: ss). Não consigo imaginar que todos os microncontroladores / computadores de alto nível tenham um chip de relógio em tempo real dedicado apenas para acompanhar o tempo. No entanto, acho difícil imaginá-lo sendo medido com precisão usando o processador principal, que está ocupado atendendo uma infinidade de funções que ocorrem em intervalos assíncronos nesse meio tempo. Eu imagino que a contagem do tempo teria erros de deslocamento, que mudam dependendo das funções que estão sendo executadas.
Existe um processo ou abordagem de design para conter ou tolerar a precisão alcançável? Ou alguém tem alguma sugestão ou sugestão sobre onde eu poderia encontrar mais informações sobre isso?