>感谢回帖的兄弟们!最近做一个用SCI调试PWM的占空比程序,但出现了点问题,还请大家帮忙, 以下是SCI的中断,这个程序在PWM没弄成级联的时候还能用 比如PWMDTY45改成PWMDTY5当然相应的PWM.C程序里也做改动,就可以实现!但是已改成PWMDTY45用级联的占空比就一直不变~~看了一下中断进去了,PWMDTY45的值也改变了,但是输出的波形却一点也没变华!</P><P>/*--------中断程序-----------------------*/<BR>void interrupt 20 Serv_int(void)<BR>{<BR> unsigned char data;<BR> DisableInterrupts;<BR> data=SciRx();<BR> SciTx(data);<BR> switch(data) <BR> {<BR> case '+'
WMDTY45+=5;SciTx('a');break;<BR> case '-':PWMDTY45-=5;SciTx('c');break;<BR>// case '1':PTP_PTP3=1;break;<BR>// case '2':PTP_PTP3=0;break;<BR> case '3':PWMDTY5 =0;break;<BR> default: break;<BR> }<BR> SciTx('\n');<BR> SciTx('\r');<BR> EnableInterrupts;<BR>}</P><P>主程序</P><P>void main(void) {<BR> /* put your own code here */<BR> EnableInterrupts;<BR> PLL_Init();<BR> Start_PLL();</P><P> <BR> PWM_Init();<BR> SciInit();<BR> SciTx('b');<BR> </P><P><BR> <BR> for(;;) {<BR> } /* wait forever */<BR> /* please make sure that you never leave this function */<BR>}<BR></P>
>void vPWMInit(void) <BR>{<BR> PWME=0x00;<BR> PWMPRCLK=0x22;//clockB=24M/4=6M;clockA=24M/4=6M<BR> PWMSCLB=12; <BR> PWMCTL_CON01=1;<BR> PWMCTL_CON23=1;<BR> PWMCLK=0X08;<BR> <BR> PWMPOL=0xff;//polarity=1,duty=high<BR> PWMCAE=0x00;//left aligned<BR> <BR> PWMPER01=600;<BR> PWMDTY01=100;<BR> <BR> PWMPER45=640;<BR> PWMDTY45=0;</P><P> <BR> PWMPER23=5000;</P><P> PWME=0xff;<BR> <BR>}</P><P>1、检查你级联的代码。</P><P>2、改变PWMDTY45的值是可以的。</P>
>恩,级联的代码没错,因为之前用过的!我试了下面几种情况</P><P> case '1'
WMDTY45+=70;printp("\n 1 : %%X PWMDTY45++ is: %X",PWMDTY45);break;<BR> case '2':PWMDTY45-=70;printp("\n 1 : %%X PWMDTY45-- is: %X",PWMDTY45);break;<BR> case '3':PWMDTY4+=1;printp("\n 1 : %%X PWMDTY4++ is: %X",PWMDTY45);break;<BR> case '4':PWMDTY4-=1;printp("\n 1 : %%X PWMDTY4-- is: %X",PWMDTY45);break;<BR> case '5':PWMDTY5+=200;printp("\n 1 : %%X PWMDTY5++ is: %X",PWMDTY45);break;<BR> case '6':PWMDTY5-=200;printp("\n 1 : %%X PWMDTY5-- is: %X",PWMDTY45);break;<BR> case '7':PWMDTY45++;printp("\n 1 : %%X PWMDTY5++ is: %X",PWMDTY45);break;<BR> case '8':PWMDTY45--;printp("\n 1 : %%X PWMDTY5-- is: %X",PWMDTY45);break;</P><P>发现都可以改变PWMDTY45的值,但是PWMDTY4、5分别改变的是高8位、低8位的值,主要原因是PWM的输出并不是想我想象的哪样PWMDTY45+1就跳变0.0几%,而是只能当PWMDTY45加到一定的值,占空比才改变比如PWMDTY45+512才跳变0.2%,这样的话,有什么办法可以提高PWM占空比的跳变精度呢?</P>| 欢迎光临 智能车制作 (http://111.231.132.190/) | Powered by Discuz! X3.2 |