[PIC®/AVR®/dsPIC®产品]

使用MCC学习PIC单片机 – CCP 捕捉/比较/PWM (捕捉模式)

[复制链接]
3829|4
手机看帖
扫描二维码
随时随地手机跟帖
oxygenzz|  楼主 | 2019-5-6 17:53 | 显示全部楼层 |阅读模式
本帖最后由 oxygenzz 于 2019-5-6 17:58 编辑

CCP是由Capture(捕捉)、Compare(比较)、PWM三个单词的首字母组成。顾名思义,它有三种功能,即信号捕捉、定时器比较和PWM脉冲串。本帖解释信号捕捉功能。

MCC配置界面:

CCP_capture_mcc.png

原理框图:

CCP_capture_block.png


捕捉信号源

信号源可以是引脚引入的外部数字信号,也可以是MCU内部由其他外设产生的内部信号。

捕捉事件

捕捉的对象是信号源上的边沿变化事件(上升沿/下降沿)。可以每个边沿捕捉,也可以每隔几个边沿进行捕捉,由具体的捕捉模式设定来决定。

捕捉模式

-        每个边沿(上升沿或下降沿)
-        每个上升沿
-        每个下降沿
-        每4个上升沿
-        每16个上升沿

捕捉后输出方式

-        设置中断标志、产生中断
-        捕捉状态由引脚输出
-        从定时器中获取捕捉时刻的16位定时值,保存在专门的寄存器中

定时器

定时器只能选择奇数标号的定时器Timer1/3/5等。CCP所使用的定时器,需要在MCC中选择并配置。



MCC代码

Ccp1.c中

初始化
void CCP1_Initialize(void);

中断服务程序
void CCP1_CaptureISR(void);

设置中断回调函数,参数为回调函数指针。
void CCP1_SetCallBack(void (*customCallBack)(uint16_t));

由于使用了中断,main.c中需要将全局中断和外设中断使能。

    // Enable the Global Interrupts
    INTERRUPT_GlobalInterruptEnable();

    // Enable the Peripheral Interrupts
    INTERRUPT_PeripheralInterruptEnable();

此外,tmr1.c中有Timer1的MCC代码。


使用特权

评论回复
猴三棒| | 2019-5-7 13:59 | 显示全部楼层
学习了

使用特权

评论回复
奔波儿熊| | 2019-5-10 18:44 | 显示全部楼层
赞一个

使用特权

评论回复
643757107| | 2019-5-10 20:52 | 显示全部楼层
对,PIC这一块做的非常好。

使用特权

评论回复
jwdlh| | 2020-12-7 09:57 | 显示全部楼层
点赞

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

190

帖子

11

粉丝