智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1973|回复: 3
打印 上一主题 下一主题

求助!定时器产生PWM程序问题

[复制链接]

2

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
QQ
威望
273
贡献
71
兑换币
0
注册时间
2011-4-18
在线时间
15 小时
跳转到指定楼层
1#
发表于 2011-4-20 18:41:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人新手  ,用定时器产生PWM信号,下面是初始化
void PWM1_Init(void)
{
     /* T2SC: TOF=0,TOIE=0,TSTOP=1,TRST=1,??=0,PS2=0,PS1=0,PS0=1 */
     T2SC = 0x31;                              /* Stop and reset counter */
   
     RatioStore = 0xECCC;                 /* Store initial value of the ratio */

    T2MOD = 0x9C3F;                        /* and to the period-modulo register , T2MOD = 39999  */

    T2CH0 = 0x9087;                         /* Store initial value to the duty-compare register,T2CH0 = 36999      */
   
    /* T2SC0: CH0F=0,CH0IE=0,MS0B=0,MS0A=1,ELS0B=0,ELS0A=0,TOV0=1,CH0MAX=0 */
    T2SC0 = 0x12;                             /* Set output signal level to low */
   
    /* T2SC0: CH0F=0,CH0IE=0,MS0B=0,MS0A=1,ELS0B=1,ELS0A=1,TOV0=1,CH0MAX=0 */
    T2SC0 = 0x1E;                             /* Set up PWM mode */  
}   

周期20ms,预想设置脉宽为1.5ms,
先前已经编译过,但出现的信号脉宽为18.5ms,于是设置T2CH0 = 0x0BB7(2999),编译后仿真,出现的信号脉宽还是18.5ms,这是为什么啊??那应该怎么改变参数才能使脉宽为1.5ms呢??求解答!

2

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
224
威望
182
贡献
42
兑换币
0
注册时间
2010-9-23
在线时间
0 小时
2#
发表于 2011-4-21 08:48:51 | 只看该作者
挂示波器  不停的改值  一直到对了
回复 支持 反对

使用道具 举报

2

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
QQ
威望
273
贡献
71
兑换币
0
注册时间
2011-4-18
在线时间
15 小时
3#
 楼主| 发表于 2011-4-23 15:19:11 | 只看该作者
办法是T2SC0 = 0x1E改为0x1A,波形就反过来了。
问题是修改T2CH0的值,脉宽根本就不改变,这是为什么了?
回复 支持 反对

使用道具 举报

2

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
QQ
威望
273
贡献
71
兑换币
0
注册时间
2011-4-18
在线时间
15 小时
4#
 楼主| 发表于 2011-4-24 16:53:07 | 只看该作者
自己解决了,初始化没问题,主程序中有控制处理的语句修改了T2SC0的值,所以初始化中无论怎么修改,T2SC0的值只与后面的处理语句有关
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 18:42 , Processed in 0.044236 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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