0

こんにちは私はタイマーをピンにバインドする方法を理解するのにいくつかの問題があり、そのため私のコードは実行されていません...

#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を点滅させることです...

前もって感謝します

4

1 に答える 1

1

mega1280 の場合、TCCR0B では CS00 であり、TCCR0A ではありません。

void init_PWM(void) {
    TCCR0A|=(1<<WGM00)|(1<<WGM01)|(1<<COM0A1);
    TCCR0B|=(1<<CS00);
    DDRB|=(1<<PB7);
}
于 2012-12-14T14:51:54.767 に答える