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 Mega 2560定时器中断_Timer_Arduino_Microcontroller_Interrupt - Fatal编程技术网

Timer Arduino Mega 2560定时器中断

Timer Arduino Mega 2560定时器中断,timer,arduino,microcontroller,interrupt,Timer,Arduino,Microcontroller,Interrupt,我试图用Arduino Mega 2560和A4988s控制两台步进电机。由于A4988需要一个脉冲来运行,我决定使用定时器中断。我使用的是定时器4和定时器5(没有特别的理由选择它们,如果它们不合适,请让我知道)。我不熟悉微控制器,对定时器有一些基本的了解。我根据我目前的知识编写了以下简单代码,但它并没有像我预期的那样工作。我在引脚36和37上添加了两个LED(在使用电机之前,我使用LED进行验证),这些LED以相同的速度闪烁。但其中一个LED应比另一个LED闪烁更快。请指导我解决此问题 voi

我试图用Arduino Mega 2560和A4988s控制两台步进电机。由于A4988需要一个脉冲来运行,我决定使用定时器中断。我使用的是定时器4和定时器5(没有特别的理由选择它们,如果它们不合适,请让我知道)。我不熟悉微控制器,对定时器有一些基本的了解。我根据我目前的知识编写了以下简单代码,但它并没有像我预期的那样工作。我在引脚36和37上添加了两个LED(在使用电机之前,我使用LED进行验证),这些LED以相同的速度闪烁。但其中一个LED应比另一个LED闪烁更快。请指导我解决此问题

void setup() {
    DDRC |= B00000011;

    cli();
    OCR4A = 15624;
    OCR5A = 7812;

    TCCR4B = _BV(WGM42) | _BV(CS40) | _BV(CS42);
    TCCR5B = _BV(WGM52) | _BV(CS50) | _BV(CS52);

    TIMSK4 |= (1 << OCIE4A);
    TIMSK5 |= (1 << OCIE5A);

    sei();
}

void loop() {
}

ISR(TIMER4_COMPA_vect)
{
    PORTC ^= B00000001;
}

ISR(TIMER5_COMPA_vect)
{
    PORTC ^= B00000010;
}
void setup(){
DDRC |=B00000011;
cli();
OCR4A=15624;
OCR5A=7812;
TCCR4B=_BV(WGM42)| u BV(CS40)| u BV(CS42);
TCCR5B=_BV(WGM52)| u BV(CS50)| u BV(CS52);

TIMSK4 |=(1 arduino通常初始化所有计数器以准备PWM,因此我肯定会重新初始化所有相应的寄存器。并且可能尝试一次只测试其中一个。