新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機CCP模塊在轉矩傳感器脈沖信號采集系統中的應用

        PIC單片機CCP模塊在轉矩傳感器脈沖信號采集系統中的應用

        ——
        作者:梁學修 陳志 偉利國 時間:2013-06-26 來源:電子產品世界 收藏

          軟件設計

        本文引用地址:http://www.104case.com/article/146835.htm

          為了達到程序簡單明了、易于閱讀、調試方便、采樣率高及可靠性好的目的,采用結構化的程序設計方法。本研究采用的是MATLAB IDE V8.76控制系統的軟件作為開發環境,并采用Hitech公司開發的C編譯器進行編寫、調試和編譯程序。主要有的初始化以及中斷程序,具體實現如下:

          ////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是什么


        脈沖點火器相關文章:脈沖點火器原理
        脈寬調制相關文章:脈寬調制原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 临高县| 通州市| 庆城县| 贵州省| 蒙自县| 齐河县| 永清县| 西华县| 新郑市| 海口市| 常德市| 庄浪县| 墨脱县| 辽宁省| 两当县| 共和县| 张北县| 陈巴尔虎旗| 济源市| 县级市| 广元市| 莱西市| 泗洪县| 峨边| 石渠县| 宜都市| 黎城县| 龙门县| 方山县| 华宁县| 兰溪市| 苗栗县| 樟树市| 新竹县| 富锦市| 攀枝花市| 内丘县| 荆门市| 大邑县| 阿克苏市| 赤城县|