为什么VirtualWire与Arduino / ATmega328引脚D10中的PWM信号冲突?

时间:2014-01-12 00:42:48

标签: arduino

调试了我正在使用类似Arduino的板和ATmega328制作的硬件原型后,我注意到RF库VirtualWire禁用了引脚D10中的PWM信号。 为什么?

如果我注释掉下面的代码,引脚D10上的analogWrite(PWM)会再次工作:

setup() {
  ...
  vw_set_rx_pin(2);
  vw_setup(2000);    // Bits per sec
  vw_rx_start();       // Start the receiver PLL running

  analogWrite(10, 180);
  ...
}

1 个答案:

答案 0 :(得分:1)

VirtualWire通过OCR1A在定时器1上使用CTC,它们都完全禁用OC1A(在D9上)和OC1B(在D10上)的PWM操作,并防止OC1A自由运行。 OC1B仍可使用,但仅限于CTC规定的模式,其速率由VirtualWire编程到定时器中。