快速PWM和Atmega1280

时间:2012-11-05 08:57:02

标签: atmega pwm

您好我有一些问题需要了解如何将Timer绑定到Pin,因此我的代码没有运行...

#include <avr/io.h>


void init_PWM(void)
{
    TCCR0A|=(1<<WGM00)|(1<<WGM01)|(1<<COM0A1)|(1<<CS00);


    //Set OC0 PIN as output. It is  PB3 on ATmega16 ATmega32

    DDRB|=(1<<PB7);
}

void setPWM(uint8_t duty)
{
   OCR0A = duty;
}


void main (void)
{
   uint8_t brightness = 0;
   init_PWM();

   for (brightness=0; brightness<=255; brightness++)
   {
      setPWM(brightness);
      _delay_ms(100);
   }
}

我的问题是如何将计时器分配给PB7?

我的目标是使用FastPWM模式在PB7上闪烁LED ......

提前致谢

1 个答案:

答案 0 :(得分:1)

对于mega1280,

是TCCR0B中的CS00而不是TCCR0A

void init_PWM(void) {
    TCCR0A|=(1<<WGM00)|(1<<WGM01)|(1<<COM0A1);
    TCCR0B|=(1<<CS00);
    DDRB|=(1<<PB7);
}