Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Timer 无引脚控制的Arduino定时器中断_Timer_Arduino_Interrupt - Fatal编程技术网

Timer 无引脚控制的Arduino定时器中断

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以

请帮我解决Arduino定时器中断的问题

如何在没有引脚控制的情况下启动计时器OCR0A或OCR2A来启动自定义函数Output1显示?间隔1毫秒


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除外;这可以通过串行命令给出,

如何提问?如何创建最小、完整且可验证的示例