[MCU] PIC单片机:ECCP可以做16位PWM?

[复制链接]
2534|11
 楼主| irun2 发表于 2015-10-27 13:11 | 显示全部楼层 |阅读模式
我在PIC的一份应用文档里看到利用ECCP的比较模式可以做一个16bit的PWM。
大概的思想是把ECCP配置为匹配时输出清0,然后TIMER1溢出后产生中断,在中断子程序把CCP1管脚置1。
让人困惑的是既然配置了比较模式,CCP1管脚就已经不受软件控制了啊,在中断是怎么做到置1 CCP1的呢?

mahaokai 发表于 2015-10-27 14:24 | 显示全部楼层
看型号吧,你用的什么型号
ayb_ice 发表于 2015-10-28 08:16 | 显示全部楼层
那就用中断控制GPIO就可以了

匹配中断清0,溢出中断置1
 楼主| irun2 发表于 2015-10-28 09:04 | 显示全部楼层
mahaokai 发表于 2015-10-27 14:24
看型号吧,你用的什么型号

你好!我用的是684
 楼主| irun2 发表于 2015-10-28 09:08 | 显示全部楼层
ayb_ice 发表于 2015-10-28 08:16
那就用中断控制GPIO就可以了

匹配中断清0,溢出中断置1

看文档描述,清0 CCP1不是中断完成的,请看附图。


本帖子中包含更多资源

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

×
ayb_ice 发表于 2015-10-28 09:26 | 显示全部楼层
irun2 发表于 2015-10-28 09:08
看文档描述,清0 CCP1不是中断完成的,请看附图。

简单看了一下手册

说的没有错啊

就按说的做就是了

本帖子中包含更多资源

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

×
 楼主| irun2 发表于 2015-10-28 14:35 | 显示全部楼层
ayb_ice 发表于 2015-10-28 09:26
简单看了一下手册

说的没有错啊

首先谢谢你的回复。
我不明白的是:
假设CCP1M<3:0>=1001,比较模式,匹配时清0输出(CCP1管脚,也就是PC5),然后等待TMR1IF中断,中断想把PC5置1,但由于设置了比较模式,PC5的输出就不再受软件控制了吧?
 楼主| irun2 发表于 2015-10-28 14:39 | 显示全部楼层
ayb_ice 发表于 2015-10-28 09:26
简单看了一下手册

说的没有错啊

难道是配置CCP1M=1010,匹配产生软件中断,CCP1管脚(PC5)不受ECCP模块控制,这样就可以用软件对PC5清0、置1了?
ayb_ice 发表于 2015-10-28 14:50 | 显示全部楼层
irun2 发表于 2015-10-28 14:39
难道是配置CCP1M=1010,匹配产生软件中断,CCP1管脚(PC5)不受ECCP模块控制,这样就可以用软件对PC5清0 ...

一看都是不喜欢看手册的主

都是硬件在控制
ayb_ice 发表于 2015-10-28 14:52 | 显示全部楼层
irun2 发表于 2015-10-28 14:35
首先谢谢你的回复。
我不明白的是:
假设CCP1M=1001,比较模式,匹配时清0输出(CCP1管脚,也就是PC5), ...

看手册吧

明明说了是事件触发了
tianfu2118 发表于 2015-10-28 20:50 来自手机 | 显示全部楼层
中断中重新给定时器或比较器赋值时关一下比较器再重新打开即可实现电平变化,有疑问@me
 楼主| irun2 发表于 2015-10-29 09:15 | 显示全部楼层
ayb_ice 发表于 2015-10-28 14:52
看手册吧

明明说了是事件触发了

再认真看了一遍,确实看漏相关字眼,一直以为处于比较模式下,CCP1管脚就完全由ECCP模块控制。
谢谢啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

18

帖子

0

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