CCP是由Capture(捕捉)、Compare(比较)、PWM三个单词的首字母组成。顾名思义,它有三种功能,即捕捉、比较和PWM。本帖介绍比较模式。
MCC配置界面
功能框图
比较功能
定时器的计数值与预先设定值不断进行比较。两者匹配一致时,会在工作模式控制下,向引脚输出信号。信号的形式,由比较模式决定。
此外,比较匹配时,会置位中断标志,进而引起中断。另外,还会产生一个内部的自动触发信号,引起其他外设的运行,例如触发ADC转换等。
定时器
必须为奇数标号的定时器 Timer1/3/5等。设定的比较值为16位。CCP所使用的定时器,需要在MCC中选择并配置。
比较模式
比较匹配时,CCPx引脚上信号:
- 电平翻转,同时清零定时器TMR
- 电平翻转,不清零TMR
- 输出高电平
- 输出低电平
- 输出脉冲
- 输出脉冲,并清零定时器TMR
MCC代码
在ccp1.c中,
初始化
void CCP1_Initialize(void);
设定比较值
void CCP1_SetCompareCount(uint16_t compareCount);
得到输出状态
bool CCP1_OutputStatusGet(void);
中断服务程序
void CCP1_CompareISR(void);
在pin_manager.c中,可查看引脚配置。
TRISB = 0xB0;
ANSELB = 0xF0;
RB6PPS = 0x09; //RB6->CCP1:CCP1;
在main.c中,开启中断。
// Enable the Global Interrupts
INTERRUPT_GlobalInterruptEnable();
// Enable the Peripheral Interrupts
INTERRUPT_PeripheralInterruptEnable();
|