PIC單片機CCP模塊在轉矩傳感器脈沖信號采集系統中的應用
軟件設計
本文引用地址:http://dyxdggzs.com/article/146835.htm為了達到程序簡(jiǎn)單明了、易于閱讀、調試方便、采樣率高及可靠性好的目的,采用結構化的程序設計方法。本研究采用的是MATLAB IDE V8.76控制系統的軟件作為開(kāi)發(fā)環(huán)境,并采用Hitech公司開(kāi)發(fā)的PICC編譯器進(jìn)行編寫(xiě)、調試和編譯程序。主要有CCP模塊的初始化以及中斷程序,具體實(shí)現如下:
////InitCCP//////////
void initCCP(void)
{
///CCP3//////
TRISC6=1; //RC6作為捕捉輸入引腳
CCP3IF=0; //捕捉標志位清零
CCP3IE=1; // 捕捉中斷使能
CCP3CON=0X07; //捕捉模式,每16個(gè)上升沿
C3TSEL=1; //CCP3 定時(shí)器選擇位,為0時(shí) CCP3 基于TMR1產(chǎn)生
///CCP4//////
TRISC7=1; //RC7作為捕捉輸入引腳
CCP4IF=0; //捕捉標志位清零
CCP4IE=1; // 捕捉中斷使能
CCP4CON=0X07; //捕捉模式,每16個(gè)上升沿
C4TSEL=1; //CCP4定時(shí)器選擇位,為0時(shí) CCP4基于TMR1產(chǎn)生
//////////////////
PEIE=1; //外圍中斷使能
GIE=1; //總中斷使能
T1CON=0X01; //關(guān)閉獨立時(shí)鐘振蕩器;時(shí)鐘來(lái)源于Fosc/4;使能定時(shí)器計數;內部定時(shí),無(wú)分頻
}
////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相關(guān)文章:pwm是什么
脈沖點(diǎn)火器相關(guān)文章:脈沖點(diǎn)火器原理 脈寬調制相關(guān)文章:脈寬調制原理
評論