Timer 无引脚控制的Arduino定时器中断
请帮我解决Arduino定时器中断的问题 如何在没有引脚控制的情况下启动计时器OCR0A或OCR2A来启动自定义函数Output1显示?间隔1毫秒Timer 无引脚控制的Arduino定时器中断,timer,arduino,interrupt,Timer,Arduino,Interrupt,请帮我解决Arduino定时器中断的问题 如何在没有引脚控制的情况下启动计时器OCR0A或OCR2A来启动自定义函数Output1显示?间隔1毫秒 ATmega328P,8MHz石英。首先,您应该搜索并下载328P数据表,其中包含计时器设置的详细信息。我建议您只使用Timer2,因为Timer0用于其他您可能不想弄糟的事情 由于数据表在开始时可能会让人困惑,因此您需要以下内容:首先,您需要选择一个时钟定标器。Timer2可以直接对主时钟进行计数,或者除以8、32、64、128、256或1024以
ATmega328P,8MHz石英。首先,您应该搜索并下载328P数据表,其中包含计时器设置的详细信息。我建议您只使用Timer2,因为Timer0用于其他您可能不想弄糟的事情 由于数据表在开始时可能会让人困惑,因此您需要以下内容:首先,您需要选择一个时钟定标器。Timer2可以直接对主时钟进行计数,或者除以8、32、64、128、256或1024以获得较慢的速率。请注意,Timer2使用一个8位计数器,因此在加载255次时,最慢的时间是预刻度时钟的256个刻度。如果您有一个8 MHz时钟,并且想要一毫秒的定时器间隔,您可以将预分频器设置为1/32,以获得250000 Hz的计数器时钟,然后将OCR2A加载249,以获得一个除以250的1000 Hz中断率。设置代码如下所示:
TCCR2A = 2; // Set CTC mode. Same as TCCR2A = _BV(WGM21);
TCCR2B = 3; // Prescaler to divide by 32 (CS21 and CS20 only)
TCNT2 = 0; // Clear the counter
OCR2A = 249; // Set for 1 msec rate
TIMSK2 = 2; // Set OCIE2A to begin counting with Compare A
您的中断处理程序声明如下,应该在设置之后和循环之前出现:
ISR(TIMER2_COMPA_vect)
{
// Your code goes here
}
请注意,如果需要,可以在串行命令的主循环中设置计时器,例如在获得其他所需数据之前不想启动中断。或者,您可以保留所有设置,但最终TIMSK2=2除外;这可以通过串行命令给出,如何提问?如何创建最小、完整且可验证的示例