新闻中心

EEPW首页>嵌入式系统>设计应用> PIC单片机CCP模块在转矩传感器脉冲信号采集系统中的应用

PIC单片机CCP模块在转矩传感器脉冲信号采集系统中的应用

——
作者:梁学修 陈志 伟利国 时间:2013-06-26 来源:电子产品世界 收藏

  软件设计

本文引用地址://m.amcfsurvey.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是什么


脉冲点火器相关文章:脉冲点火器原理
脉宽调制相关文章:脉宽调制原理


评论


相关推荐

技术专区

关闭