Atmega2560在上升沿设置PWM和中断

时间:2015-04-02 15:40:05

标签: c++ arduino avr atmega

我试图在同一个定时器上进行2次操作:PWM和正边沿中断。我可以使两者单独工作,但似乎无法让它们一起工作。我正在使用Arduino板上的atmega2560芯片并尝试在Timer1上进行,这是执行PWM的代码:

TCCR1A = 0;
TCCR1B = 0;
TCCR1A |= (1<<WGM11)|(1<<COM1A1)|(1<<COM1B1);
TCCR1B |= (1<<WGM12)|(1<<WGM13)|(1<<CS10);
ICR1 = 29999;
OCR1A = 0;
OCR1B = 0;

ICR1将频率设置为约533Hz,OCR1A为占空比;我在其余的软件中都有所不同,因为它是为了控制直流电机。我接下来要做的是在533Hz的每个正边沿,是触发和中断。我试过使用TIMSK1,但似乎无法使其工作。谁会知道如何编程呢?感谢

1 个答案:

答案 0 :(得分:0)

你应该为正边缘检测和pwm提供单独的代码,因为你说你可以让它们单独工作。这样可以更容易地看到你正在做什么,以及为什么他们不能一起工作,而不是让我们无需工作。 PWM和中断的实现取决于环境和你的ic,但一般算法是相同的。它很可能是你在代码中忽略的一些东西,所以我会把它包括在内以获得更多的回复。

相关问题