dsPIC33FJ 做出来的比较PWM为什么是这样?

[复制链接]
 楼主| aoshi0603 发表于 2011-5-25 10:55 | 显示全部楼层 |阅读模式
本帖最后由 aoshi0603 于 2011-5-25 13:41 编辑
  1. PR2 = 50000; //PWM周期
  2. OC1R = 0; //初始占空比
  3. OC1RS = 10000; //占空比
  4. OC1CONbits.OCM = 6;//OC1处于PWM 模式,禁止故障引脚
  5. OC1CONbits.OCTSEL = 0;//Timer2是OC1的时钟源

  6. T2CONbits.TCKPS = 1;
  7. T2CONbits.TON = 1;
有错吗?为什么PWM引脚输出是下边图片这样的?有两个高电平.
这个程序只做了PWM这么一个功能, 会有其它什么干扰到这个IO口了吗?
我用的是protues仿真

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
dodome521 发表于 2011-5-25 11:43 | 显示全部楼层
程序是不是在修改占空比?
 楼主| aoshi0603 发表于 2011-5-25 11:48 | 显示全部楼层
本帖最后由 aoshi0603 于 2011-5-25 13:57 编辑

问题解决了,程序没有问题,是proteus不行,原来用proteus7.4 SP3,改用proteus7.7 SP2就OK了
 楼主| aoshi0603 发表于 2011-5-25 13:40 | 显示全部楼层
本帖最后由 aoshi0603 于 2011-5-25 15:13 编辑

问题又来了,进不了中断,不知为什么,上如边一行代码:
OC1CONbits.OCM = 6;     //OC1处于PWM 模式,禁止故障引脚

OCM<2:0>:输出比较模式选择位:
111 = OCx 处于PWM 模式,使能故障引脚
110 = OCx 处于PWM 模式,禁止故障引脚
101 = 初始化OCx 引脚为低电平,在OCx 引脚上产生连续输出脉冲
100 = 初始化OCx 引脚为低电平,在OCx 引脚上产生单个输出脉冲
011 = 比较事件使OCx 引脚的电平翻转
010 = 初始化OCx 引脚为高电平,比较事件强制OCx 引脚为低电平
001 = 初始化OCx 引脚为低电平,比较事件强制OCx 引脚为高电平
000 = 禁止输出比较通道

OC1CONbits.OCM = 5就能进入OC1中断,6就不能进入中断.
下面是针对OC1配置脉宽调制的一段话:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| aoshi0603 发表于 2011-5-25 15:19 | 显示全部楼层
中断问题貌似解决了,OC1对连续输出模式和PWM模式时,用的不是一个中断,前一个是OC1中断,后一个是所用TIMR中断(T2,周期匹配中断)
但是我在T2中断中翻转引脚,为什么会比PWM边延快一点呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

6

主题

113

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

6

主题

113

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部