我正在尝试使用 Teensy 2.0 微控制器(基于 ATMEGA32U4 8 位 AVR 16 MHz)设置两个定时器中断程序,以独立控制两个伺服电机
经过多次尝试 - 我能够在端口 C 的引脚 7 上设置一个,但是
- 如何设置第二个 ISR 以独立于第一个进行初始化和调用?
- 我是否需要设置第二个计时器,如果需要,这样的代码会是什么样子?
这是设置代码:
int main(void)
{
DDRE = 0xFF;
TCCR1A |= 1 << WGM12; // Configure timer 1 for CTC mode
TCCR1B = (1<<WGM12) | (1<<CS11) ;
OCR1A = 1000; // initial
TIMSK1 |= 1 << OCIE1A; // Output Compare A Match Interrupt Enable
sei(); // enable interrupts
// ...code that sets pulseWidth based on app logic variable.
// Not showing as its not important
}
ISR(TIMER1_COMPA_vect)
{
if (0 == pulseWidth)
{
return;
}
static uint8_t state = 0;
int dutyTotal = 20*1000;
if (0 == state)
{
PORTC |= 0b10000000;
OCR1A = pulseWidth;
state = 1;
}
else if (1 == state)
{
PORTC &= 0b01111111;
OCR1A = dutyTotal - pulseWidth;
state = 0;
}
}