Timer do microcontrolador: prescaler e OCR para a frequência
Informe o clock, a frequência desejada, o modo e o tamanho do timer para ver o prescaler, o valor do OCR e a frequência real com o erro.
- Roda no seu navegador
Resultado
O resultado aparece aqui.
Escolhendo prescaler e OCR
OCR = F_CPU ÷ (N · k · f) − 1; f real = F_CPU ÷ (N · k · (1 + OCR)); k = 2 com toggle e 1 em interrupção; N ∈ {1, 8, 64, 256, 1024}
Com clock de 16 MHz e frequência desejada de 1.000 Hz, o menor prescaler que cabe no registrador é 1, com OCR de 7.999. A frequência real é de 1.000 Hz, com erro de 0%.
Frequência baixa
Para 2 Hz com timer de 16 bits, o prescaler sobe para 256 e o OCR para 31.249; a frequência real é de 2 Hz, com erro de 0%. Quando nenhum prescaler cabe, a página avisa que a frequência está fora do alcance do timer.
Limites
- Os prescalers de 1, 8, 64, 256 e 1024 são os do Timer1 do ATmega328P; outros timers e microcontroladores têm outros valores. Confira o datasheet do chip.
- O clock de 16 MHz é o do Arduino Uno e é editável; placas de 8 MHz e 20 MHz têm outros valores.
- A página escolhe o menor prescaler possível, que dá a melhor resolução; o erro vem do arredondamento do OCR.
Perguntas frequentes
Como calcular o prescaler e OCR do timer?
OCR = F_CPU ÷ (prescaler · f) − 1 no modo CTC. Com 16 MHz, interrupção de 1 kHz e timer de 8 bits, o prescaler é 64 e o OCR, 249.
Qual a frequência real do timer do Arduino?
F_CPU ÷ (prescaler · (1 + OCR)), com o fator 2 no modo toggle. O erro vem do arredondamento do OCR.
Qual prescaler escolher no timer?
O menor que mantenha o OCR dentro do registrador, de 255 em 8 bits ou 65535 em 16 bits, porque dá a melhor resolução.