seagatecm 发表于 2015-7-13 16:42:25

求助:请AVR的高手帮忙写个8MRC的PWM配置

ATMEGA328P,内部8MRC,想做个490Hz的PWM输出,这个频率我一直写不出来。
请高手帮忙写下,最好能有4路输出。

seagatecm 发表于 2015-7-14 09:30:58

自己折腾出来了,自己答下吧
因为是8M的RC,所以用8分频,CS11。WGM12和WGM10是采用Fast PWM。
这里写了4个通道的PWM。
185是随便的一个占空比。

void setupPWM9() // OC1A
{
    pinMode(9, OUTPUT);
    TCCR1A = 0;
    TCCR1B = 0;
    TCCR1B |= _BV(CS11) | _BV(WGM12);
    TCCR1A |= _BV(COM1A1) | _BV(WGM10);
    OCR1A = 185;
}

void setupPWM5() // OC0B
{
    pinMode(5, OUTPUT);
    TCCR0A = 0;
    TCCR0B = 0;
   
    TCCR0B |= _BV(CS01);
    TCCR0A |= _BV(COM0B1) |_BV(WGM01) | _BV(WGM00);

    OCR0B = 185;   
}

void setupPWM6() // OC0A
{
    pinMode(6, OUTPUT);
    TCCR0A = 0;
    TCCR0B = 0;
   
    TCCR0B |= _BV(CS01);
    TCCR0A |= _BV(COM0A1) |_BV(WGM01) | _BV(WGM00);
    OCR0A = 185;
}

void setupPWM3() // OC2B
{
    pinMode(3, OUTPUT);
    TCCR2A = 0;
    TCCR2B = 0;
   
    TCCR2B |= _BV(CS21);
    TCCR2A |= _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
    OCR2B = 185;
}
页: [1]
查看完整版本: 求助:请AVR的高手帮忙写个8MRC的PWM配置