ATtiny85 PWM频率低于预期

时间:2018-02-23 02:12:53

标签: avr-gcc pwm attiny

我是编程MCU的新手,我正在尝试在ATtiny85上使用PWM。我在网上浏览过各种教程,并设法让它使用下面的代码。我的问题是我希望PWM频率为8MHz / 256 = 31.25kHz,但实际上是3.9kHz,这表明正在使用8的预定标器值。我查看了数据表,但仍无法弄明白。

#define F_CPU 8000000
#include <avr/io.h>

int main(void)
{
  //Table 11-3 Compare Output Mode, Fast PWM mode
  //Table 11-5 Waveform Generation Mode Bit Description
  //COM0A0 - non-inverting
  TCCR0A |= (0<<WGM02)|(1<<WGM01)|(1<<WGM00)|(1<<COM0A1);
  //Table 11-6 Clock Select Bit Description
  TCCR0B |= (0<<CS02)|(0<<CS01)|(1<<CS00); //pre-scale factor = 1

  OCR0A=128; // 128/256 = 0.5 duty cycle

  //make PWM pin output
  DDRB |= (1<<DDB0);

  while(1){}

  return 0;
}

我使用带有avrdude和avr-gcc的Raspberry Pi对MCU进行编程,根据这个指示:http://www.instructables.com/id/Programming-the-ATtiny85-from-Raspberry-Pi/

非常感谢任何帮助或建议。 谢谢:))

1 个答案:

答案 0 :(得分:0)

我发现默认情况下,ATtiny85上的保险丝设置为将8MHz时钟除以8,这就是我遇到的明显的比例因子8。我按照fuse calculator更改了保险丝,效果很好。奇怪的是,我读过的这些教程都没有提到这一点,但希望我的挣扎可以帮助那些遇到同样问题的人。