在正常模式下在Arduino Uno上生成200khz脉冲

时间:2018-06-29 07:08:06

标签: timer arduino arduino-uno

我需要从Arduino Uno获得200KHz。我正在使用Timer0。我已将其配置为在正常模式下运行,并且预分频器设置为clk / 8(Arduino的时钟频率为16Mhz)。 TCNT0设置为0xFB,并且在设置定时器溢出标志时,代码切换PORTB的2个引脚。这是我的代码:

#include <avr/io.h>


int main(void)
{
    DDRB = 0x03;
    PORTB |= 0x02;
    while (1) 
    {
        TCNT0 = 0xFB;
        TCCR0A = 0X00;
        TCCR0B = 0x02;
        while ( (TIFR0 & 0x01) == 0 );
        PORTB ^= 0x03;
        TCCR1A = 0x00;
        TCCR1B = 0x00;
        TIFR0 = 0X01;
   }
}

当我检查示波器时,它显示脉冲为166Khz而不是200Khz。 尽管我可以使用快速PWM模式并使用中断,但我只是想知道为什么它不起作用?我做错了吗?

0 个答案:

没有答案