想用atmega48產生相位修正的pwm,datasheet里說的是在bottom置位中斷標志TOVn,因此我想在中斷里改變占空比,但是就是不出來波形,不知道問題出在哪,各位大俠幫忙給看看,謝謝!
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
SIGNAL(SIG_OVERFLOW0)
{
OCR0A =128; //比較設定值
OCR0B=128;
}
void timer_init()
{
TCCR0A=0b10110001; //升序比較匹配時OC0A=0,降序時比較匹配時置OC0A=1,TOP固定等于255
TCCR0B=0b00000001; //時鐘不分頻,一旦設定時鐘,TCNT0就開始不斷的計數
TIMSK0=1<<0; //使能定時器0中斷
}
void port_init()
{
DDRD=(1<<6)|(1<<5); //端口方向設置為輸出才有效
}
void device_init()
{
timer_init();
port_init();
}
int main(void)
{
device_init();
while (1);
}
|