⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 f28xqep.c

📁 在ccs编程环境下
💻 C
字号:

#include "IQmathLib.h"
#include "DSP28_Device.h"
#include "f28xqep.h"
#include "f28xbmsk.h"


void  F28X_EV2_QEP_Init(QEP *p)
{
 		  
 		  EvbRegs.CAPCONB.all = QEP_CAP_INIT_STATE;
          //EvaRegs.CAPCON.all = QEP_CAP_INIT_STATE;     /* Set up capture units */
          EvbRegs.T4CON.all = QEP_TIMER_INIT_STATE;
          //EvaRegs.T2CON.all = QEP_TIMER_INIT_STATE;    /* Set up capture timer */
		  
          EvbRegs.T4PR = 0xFFFF;
          //EvaRegs.EVAIFRC.bit.CAP3INT = 1;     /* Clear CAP3 flag */
          EvbRegs.EVBIFRC.bit.CAP6INT = 1;
          //EvaRegs.EVAIMRC.bit.CAP3INT = 0;
          //EvaRegs.EVAIMRC.bit.CAP3INT = 1;     /* Enable CAP3 Interrupt*/
          EvbRegs.EVBIMRC.bit.CAP6INT = 1;
          //GpioMuxRegs.GPAMUX.all |= 0x0700;    /* Set up the capture pins to primary functions */
		  GpioMuxRegs.GPBMUX.all |= 0x0700;
}    

//////////
void F28X_EV2_QEP_Calc(QEP *p)
{

	 _iq delta_cnt;
	 _iq speedx;
	 

     p->dir_QEP = 0x4000&EvbRegs.GPTCONB.all;//计数方向
     p->dir_QEP = p->dir_QEP>>14;

     p->QEP_cnt = EvbRegs.T4CNT;
	 if (p->dir_QEP ==1)//增计数
     	delta_cnt=p->QEP_cnt + p->QEP_cnt_idx- p->QEP_cnt_old ;
     else
     	delta_cnt=p->QEP_cnt - p->QEP_cnt_idx- p->QEP_cnt_old ;     
     	
     p->QEP_cnt_old = p->QEP_cnt;
     p->QEP_cnt_idx=0;
     
     p->delta_cnt =delta_cnt<<1;//IQ1
     speedx= _IQmpyIQX(_IQ(0.008),24,p->delta_cnt,1);
     
     p->speed=speedx;
          
}

void F28X_EV2_QEP_Isr1(QEP *p)
{
	/*计数器上溢中断*/
     p->QEP_cnt_idx += EvbRegs.T4CNT;//0xFFFF;//EvbRegs.T4CNT-1;
     //EvbRegs.T4CNT = 0;
     p->index_sync_flag = 0x00F0;

}
void F28X_EV2_QEP_Isr2(QEP *p)
{
	/*计数器下溢中断*/
     p->QEP_cnt_idx += 0xFFFF;//EvbRegs.T4CNT;
     //EvbRegs.T4CNT = 0xFFFF;
     p->index_sync_flag = 0x00F0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -