PIC单片机CCP模块在转矩传感器脉冲信号采集系统中的应用
软件设计
本文引用地址:https://www.eepw.com.cn/article/146835.htm为了达到程序简单明了、易于阅读、调试方便、采样率高及可靠性好的目的,采用结构化的程序设计方法。本研究采用的是MATLAB IDE V8.76控制系统的软件作为开发环境,并采用Hitech公司开发的PICC编译器进行编写、调试和编译程序。主要有CCP模块的初始化以及中断程序,具体实现如下:
////InitCCP//////////
void initCCP(void)
{
///CCP3//////
TRISC6=1; //RC6作为捕捉输入引脚
CCP3IF=0; //捕捉标志位清零
CCP3IE=1; // 捕捉中断使能
CCP3CON=0X07; //捕捉模式,每16个上升沿
C3TSEL=1; //CCP3 定时器选择位,为0时 CCP3 基于TMR1产生
///CCP4//////
TRISC7=1; //RC7作为捕捉输入引脚
CCP4IF=0; //捕捉标志位清零
CCP4IE=1; // 捕捉中断使能
CCP4CON=0X07; //捕捉模式,每16个上升沿
C4TSEL=1; //CCP4定时器选择位,为0时 CCP4基于TMR1产生
//////////////////
PEIE=1; //外围中断使能
GIE=1; //总中断使能
T1CON=0X01; //关闭独立时钟振荡器;时钟来源于Fosc/4;使能定时器计数;内部定时,无分频
}
////Interrupt server function
void interrupt ISR(void)
{
///CCP3 Interrupt///
if(CCP3IF &&CCP3IE)
{
CCP3IF = 0;
if(LastData3 == 0)
{
LastData3 = CCPR3H;
LastData3 = (LastData3<<8)+CCPR3L;
}
else
{
NewData3 = CCPR3H;
NewData3 = (NewData3<<8)+ CCPR3L;
g_Period3 = NewData3-LastData3; //测量周期计算
g_Frequency3 = (long)10000000/g_Period3; //频率计算
LastData3 = 0;
CdataL3 = g_Frequency3;
CdataH3 = (g_Frequency3>>8);
}
}
///CCP4 Interrupt///
if(CCP4IF &&CCP4IE)
{
CCP4IF = 0;
if(LastData4 == 0)
{
LastData4 = CCPR4H;
LastData4 = (LastData4<<8)+CCPR4L;
}
pwm相关文章:pwm是什么
脉冲点火器相关文章:脉冲点火器原理 脉宽调制相关文章:脉宽调制原理
评论