【问题标题】:Atmega2560 setup PWM and interrupt on positive edgeAtmega2560 在上升沿设置 PWM 和中断
【发布时间】:2015-04-02 15:40:05
【问题描述】:

我试图在同一个定时器上执行 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,但似乎无法使其工作。有人知道如何编程吗?谢谢

【问题讨论】:

    标签: c++ arduino avr atmega


    【解决方案1】:

    您应该为正边缘检测和 pwm 提供单独的代码,因为您说过您可以让它们单独工作。这会让你更容易看到你在做什么以及为什么他们不一起工作,而不是让我们没有任何工作可做。 PWM和中断的实现取决于环境和你的ic,但一般算法是一样的。它很可能是您在代码中忽略的一些小问题,因此我将其包括在内以获得更多响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 2015-10-29
      • 2016-01-17
      • 2015-10-06
      • 2021-06-20
      • 1970-01-01
      相关资源
      最近更新 更多