6431|7

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

PIC12F683 定时输出PWM的问题 [复制链接]

10芯积分
我手里刚好有12F683这款单片机,想实现定时输出PWM,对这个毫无头绪,哪位大神帮忙写个例程,用C语言写,我想学习参考下
我想实现的功能:
1、开机1-6h后,输出PWM 70%的占空比,频率1KHZ
2、6-8h后,输出PWM 50%的占空比,频率1KHZ
3、8-11h后,输出PWM 30%的占空比,频率1KHZ
4、11-12h后,输出PWM 60%的占空比,频率1KHZ

单片机的5脚输出PWM.
断电后复位,重新开始

另外我还有个想法,不知道能不能实现,比如在7脚输入低电平(拉地)的时候,上述4条程序,时间缩短至相隔10S循环执行,目的就是为了实物检测,不然要等的时间太长了


最新回复

PWM设置相关的程序示例:(源于正常产品中程序的节选) 使用的MCU型号:PIC12F615 MCU使用频率:8MHz(时钟节拍为2MHz) PWM功能:使用CCP1模块,在GPIO2管脚上输出频率为16KHz,脉宽可变的PWM信号(分辩率接近7位) 此时,PWM中CCP1的比较数量最大值是:2MHz/16KHz=125,(PWM_MAX=125) 那么,CCP1模块的数据是:    ①  CCP1CON = 0x0C; //普通PWM模式,CCP1输出高电平有效 [attach]339775[/attach]      高电平有效,指的是在PWM开始时,管脚输出H电平,当CCP1的数据达到设定值后,IO输出L电平。    ②CCPR1L = (PWM_MAX);       产品中,先是将PWM设定为最高,再向下调节;这段指的是PWM的输出管脚目前恒为H电平。    ③T2CON = 0x00;       T2的前后分频均为1,目前是关闭T2的,等管脚设置完成后再打开。     ④PR2 = (PWM_MAX-1);       此处是重点:PR2的值一定要比设定的最大脉宽值少1,否则在最大脉宽时,PWM输出将不正常。       原因在于T2与PR2匹配后,到下个递增周期时才复位为0: [attach]339776[/attach]   详情 回复 发表于 2018-1-12 09:28
点赞 关注(1)
 

回复
举报

664

帖子

104

TA的资源

纯净的硅(中级)

沙发
 
这个还得靠你自己来。你有硬件,其他人没有,无法验证。
PWM输出功能不复杂,对照寄存器搞吧。
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
那有没有大致的思路呢,不是明白呢
 
 
 

回复

3471

帖子

11

TA的资源

五彩晶圆(高级)

4
 
思路是这样的。认真阅读手册,PWM的初始化过程。涉及到哪些寄存器。每个寄存器配置成多少。
实现pwm 输出功能。
再找相关寄存器。看看和占空比相关的。尝试更改的方法。实现改变占空比。
时间问题,如果用外部时钟芯片,可以通过访问时钟芯片获取时间。以实现随时间变化,占空比。
没有外部时钟片。可以用定时器。看手册里的说明。把工作频率调低。计数周期设长。再对周期数,进行记录。通过周期数,判断经过的时间。
产生对应动作。
 
 
 

回复

637

帖子

2

TA的资源

版主

5
 
PIC的8位MCU配置PWM还是要有注意的地方,我刚开始使用这个模块也费了点时间。明天我将以前做的程序发上来给你参考下。
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

6
 
新人进来学习,坐下听行家解答
 
 
 

回复

637

帖子

2

TA的资源

版主

7
 
PWM设置相关的程序示例:(源于正常产品中程序的节选)
使用的MCU型号:PIC12F615
MCU使用频率:8MHz(时钟节拍为2MHz)
PWM功能:使用CCP1模块,在GPIO2管脚上输出频率为16KHz,脉宽可变的PWM信号(分辩率接近7位)
此时,PWM中CCP1的比较数量最大值是:2MHz/16KHz=125,(PWM_MAX=125)
那么,CCP1模块的数据是:
   ①  CCP1CON = 0x0C; //普通PWM模式,CCP1输出高电平有效


     高电平有效,指的是在PWM开始时,管脚输出H电平,当CCP1的数据达到设定值后,IO输出L电平。
   ②CCPR1L = (PWM_MAX);
      产品中,先是将PWM设定为最高,再向下调节;这段指的是PWM的输出管脚目前恒为H电平。
   ③T2CON = 0x00;
      T2的前后分频均为1,目前是关闭T2的,等管脚设置完成后再打开。
    ④PR2 = (PWM_MAX-1);
      此处是重点:PR2的值一定要比设定的最大脉宽值少1,否则在最大脉宽时,PWM输出将不正常
      原因在于T2与PR2匹配后,到下个递增周期时才复位为0:

赞赏

1

查看全部赞赏

 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

8
 
非常感谢各位的热心解答,现在有点思路了
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表