将PWM从引脚3移至11(Arduino Nano)

时间:2016-07-25 07:53:43

标签: arduino pwm

我正在尝试修改此代码以将PWM从引脚3移至11(Arduino Nano v3),但没有取得多大成功。怎么办呢?

pinMode(3, OUTPUT);       // enable the PWM output
TCCR2A = B00100011;      // Fast PWM change at OCR2
TCCR2B = B11001;         // Timer running at full system clock
OCR2A = 21;              //  output frequency = 16,000,000/(OCR2A+1)
pinMode(3, OUTPUT);      // enable the PWM output 
OCR2B = 11;    // 50% duty cycle

1 个答案:

答案 0 :(得分:1)

引脚11位于PB3上,标记为OC2 A - 表示它绑定到OCR2A寄存器,因此该寄存器不能用作计数器TOP值。

因为没有使用OCR2A作为TOP的模式(除了使用0xFF作为最高值),在这种情况下你就是不能使用它。

但是,如果只需要50%,则可以使用CTC模式在溢出时切换OC2A。

根据评论,这样的事情应该处理它(快速PWM模式):

  pinMode(11, OUTPUT);
  OCR2A = 7; // 19 -> 400kHz, 7 -> 1MHz, 10 -> 727.72kHz 
  TCCR2A = _BV(COM2A0) | _BV(WGM21) | _BV(WGM20); // Fast PWM mode, OC2A toggle on compare match + =TOP
  TCCR2B = _BV(WGM22) | 1; // start timer