智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2999|回复: 6
打印 上一主题 下一主题

PWM续~~~~~急~~郁闷中

[复制链接]

0

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
威望
266
贡献
72
兑换币
50
注册时间
2008-12-19
在线时间
8 小时
跳转到指定楼层
1#
发表于 2008-12-25 19:17:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<>感谢回帖的兄弟们!最近做一个用SCI调试PWM的占空比程序,但出现了点问题,还请大家帮忙, 以下是SCI的中断,这个程序在PWM没弄成级联的时候还能用 比如PWMDTY45改成PWMDTY5当然相应的PWM.C程序里也做改动,就可以实现!但是已改成PWMDTY45用级联的占空比就一直不变~~看了一下中断进去了,PWMDTY45的值也改变了,但是输出的波形却一点也没变华!</P><P>/*--------中断程序-----------------------*/<BR>void interrupt 20 Serv_int(void)<BR>{<BR>&nbsp;unsigned char data;<BR>&nbsp;DisableInterrupts;<BR>&nbsp;data=SciRx();<BR>&nbsp;SciTx(data);<BR>&nbsp;switch(data) <BR>&nbsp;{<BR>&nbsp;&nbsp;case &#39;+&#39;WMDTY45+=5;SciTx(&#39;a&#39;);break;<BR>&nbsp;&nbsp;case &#39;-&#39;:PWMDTY45-=5;SciTx(&#39;c&#39;);break;<BR>//&nbsp;&nbsp; case &#39;1&#39;:PTP_PTP3=1;break;<BR>//&nbsp;&nbsp; case &#39;2&#39;:PTP_PTP3=0;break;<BR>&nbsp;&nbsp; case &#39;3&#39;:PWMDTY5 =0;break;<BR>&nbsp;&nbsp;default: break;<BR>&nbsp;}<BR>&nbsp;SciTx(&#39;&#92;n&#39;);<BR>&nbsp;SciTx(&#39;&#92;r&#39;);<BR>&nbsp;EnableInterrupts;<BR>}</P><P>主程序</P><P>void main(void) {<BR>&nbsp; /* put your own code here */<BR>&nbsp; EnableInterrupts;<BR>&nbsp; PLL_Init();<BR>&nbsp; Start_PLL();</P><P>&nbsp; <BR>&nbsp; PWM_Init();<BR>&nbsp; SciInit();<BR>&nbsp;SciTx(&#39;b&#39;);<BR>&nbsp;</P><P><BR>&nbsp;<BR>&nbsp; for(;;) {<BR>&nbsp; } /* wait forever */<BR>&nbsp; /* please make sure that you never leave this function */<BR>}<BR></P>

0

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
威望
266
贡献
72
兑换币
50
注册时间
2008-12-19
在线时间
8 小时
2#
 楼主| 发表于 2008-12-25 19:57:11 | 只看该作者

Re:PWM续~~~~~急~~郁闷中

刚把PWMDTY45改成PWMDTY4,PWM.C的程序还是级联的,程序可以用了,我想所谓的级联就把PWMDTY4、5的寄存器连在一起,一个高8位,一个低8位,我现在的做法就是只改变了低8位的值来改变整个占空比,但是改变值的话用PWMDTY45应该也没问题但是为啥还动不了呢?这个还是有疑问的
回复 支持 反对

使用道具 举报

14

主题

929

帖子

1

精华

功勋会员

WJ

Rank: 10Rank: 10Rank: 10

积分
6304

特殊贡献奖章

威望
1456
贡献
4674
兑换币
17
注册时间
2008-4-6
在线时间
87 小时
3#
发表于 2008-12-25 20:56:01 | 只看该作者

Re:PWM续~~~~~急~~郁闷中

<>void vPWMInit(void)&nbsp; <BR>{<BR>&nbsp; PWME=0x00;<BR>&nbsp; PWMPRCLK=0x22;//clockB=24M/4=6M;clockA=24M/4=6M<BR>&nbsp; PWMSCLB=12; <BR>&nbsp; PWMCTL_CON01=1;<BR>&nbsp; PWMCTL_CON23=1;<BR>&nbsp; PWMCLK=0X08;<BR>&nbsp;&nbsp; <BR>&nbsp; PWMPOL=0xff;//polarity=1,duty=high<BR>&nbsp; PWMCAE=0x00;//left aligned<BR>&nbsp; <BR>&nbsp; PWMPER01=600;<BR>&nbsp; PWMDTY01=100;<BR>&nbsp; <BR>&nbsp; PWMPER45=640;<BR>&nbsp; PWMDTY45=0;</P><P>&nbsp; <BR>&nbsp; PWMPER23=5000;</P><P>&nbsp; PWME=0xff;<BR>&nbsp; <BR>}</P><P>1、检查你级联的代码。</P><P>2、改变PWMDTY45的值是可以的。</P>
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
威望
266
贡献
72
兑换币
50
注册时间
2008-12-19
在线时间
8 小时
4#
 楼主| 发表于 2008-12-25 22:03:51 | 只看该作者

Re:Re:PWM续~~~~~急~~郁闷中

<>恩,级联的代码没错,因为之前用过的!我试了下面几种情况</P><P>&nbsp;&nbsp;case &#39;1&#39;WMDTY45+=70;printp("&#92;n 1 : %%X PWMDTY45++ is: %X",PWMDTY45);break;<BR>&nbsp;&nbsp;case &#39;2&#39;:PWMDTY45-=70;printp("&#92;n 1 : %%X PWMDTY45-- is: %X",PWMDTY45);break;<BR>&nbsp;&nbsp;case &#39;3&#39;:PWMDTY4+=1;printp("&#92;n 1 : %%X PWMDTY4++ is: %X",PWMDTY45);break;<BR>&nbsp;&nbsp;case &#39;4&#39;:PWMDTY4-=1;printp("&#92;n 1 : %%X PWMDTY4-- is: %X",PWMDTY45);break;<BR>&nbsp;&nbsp;case &#39;5&#39;:PWMDTY5+=200;printp("&#92;n 1 : %%X PWMDTY5++ is: %X",PWMDTY45);break;<BR>&nbsp;&nbsp;case &#39;6&#39;:PWMDTY5-=200;printp("&#92;n 1 : %%X PWMDTY5-- is: %X",PWMDTY45);break;<BR>&nbsp;&nbsp;case &#39;7&#39;:PWMDTY45++;printp("&#92;n 1 : %%X PWMDTY5++ is: %X",PWMDTY45);break;<BR>&nbsp;&nbsp;case &#39;8&#39;:PWMDTY45--;printp("&#92;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>
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
威望
266
贡献
72
兑换币
50
注册时间
2008-12-19
在线时间
8 小时
5#
 楼主| 发表于 2008-12-26 05:05:44 | 只看该作者

Re:Re:PWM续~~~~~急~~郁闷中

我觉得还有一种可能就是它占空比变了,但示波器上没办法这么精确的显示!
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
威望
266
贡献
72
兑换币
50
注册时间
2008-12-19
在线时间
8 小时
6#
 楼主| 发表于 2008-12-26 05:37:41 | 只看该作者

Re:PWM续~~~~~急~~郁闷中

还有一个问题就是PWM的最小调整精度是不是在输出频率为50HZ,PWMDTY45为40000的时候精度已经是达到极限了呢?我算了一下,PWMDTY45不能超过65500而频率又固定在50HZ那时钟只能是2MHZ。
回复 支持 反对

使用道具 举报

0

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
QQ
威望
273
贡献
34
兑换币
0
注册时间
2008-1-9
在线时间
9 小时
7#
发表于 2008-12-30 08:09:15 | 只看该作者

Re:PWM续~~~~~急~~郁闷中

我想问问一下级联问题 原来没级联的时候 还能实现电机反转 ,但是级联后就不能反转了 这是为什么呢》<br>还有我也用的是SCI改变PWM45&nbsp; 该怎么解决呢&nbsp; 谢谢<br>(我认为不是代码问题 ,难道跟33886有关?)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-23 02:33 , Processed in 0.059142 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表