性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

51實(shí)現(xiàn)SPWM算法,請(qǐng)高手指點(diǎn)

用51的兩個(gè)定時(shí)器,T0控制頻率,T1控制脈寬,實(shí)現(xiàn)載波比N=150的SPWM,用的是規(guī)則采樣法,在T0的中斷里查表計(jì)算T1的計(jì)數(shù)值來(lái)改變脈寬,現(xiàn)在遇到的問(wèn)題是,我感覺(jué)算法沒(méi)問(wèn)題,因?yàn)槿绻徊楸淼脑?huà),輸出波形沒(méi)問(wèn)題,但是加入計(jì)算的話(huà),輸出波形就不對(duì)了,就這一句,T1CNT=(M*sin[i]+10000)*T0CNT/2/10000 ;這句轉(zhuǎn)換成匯編的話(huà),我看了下要40句,應(yīng)該是這條語(yǔ)句拖住了單片機(jī),應(yīng)高手指點(diǎn)一下怎么辦

核心程序:

void timer0_ISR(void) interrupt 1  //頻率控制

{

spwm1=~spwm1;

spwm2=~spwm1;

TH0=T0_high;

TL0=T0_low;

T1CNT=(M*sin[i]+10000)*T0CNT/2/10000 ;   //規(guī)則采樣法公式簡(jiǎn)化

T1CNT=65535-T1CNT;  //note

TH1=T1CNT>>8;

TL1=T1CNT%256;

TR1=1;

i++;

if(i==150)

i=0;

}

void timer1_ISR(void) interrupt 3 //脈寬控制

{

spwm1=~spwm1;

spwm2=~spwm1;

TR1=0;

}

全部回復(fù)(2)
正序查看
倒序查看
wells
LV.4
2
2011-08-14 11:40

可能你來(lái)錯(cuò)地方了。你到數(shù)字電源部分走走。

0
回復(fù)
2011-10-06 10:45
@wells
可能你來(lái)錯(cuò)地方了。你到數(shù)字電源部分走走。
不要用計(jì)算,用查表,寫(xiě)一個(gè)SIN函數(shù)表,要快很多,如果沒(méi)有AD取樣反饋計(jì)算,幾個(gè)微妙完成,加入反饋計(jì)算40微妙內(nèi)能完成
0
回復(fù)
發(fā)