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

📄 f28xcap.c

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

#include "IQmathLib.h"
#include "DSP28_Device.h"
#include "f28xcap.h"

void  F28X_EV1_CAP_Init(CAPTURE *p)
{
        EvaRegs.CAPCON.all = CAP_INIT_STATE;      /* Set up capture units           */
        EvaRegs.T2CON.all = CAP_TIMER_INIT_STATE;      /* Set up capture timer           */
        EvaRegs.T2PR = 0xFFFF;                 /* Set up timer period            */

        EALLOW;                       /* Enable EALLOW */
        GpioMuxRegs.GPAMUX.all |= 0x0700;     /* Set up the capture pins to primary functions */
        EDIS;                         /* Disable EALLOW */
}    


int F28X_EV1_CAP_Read(CAPTURE *p)
{
        //p->time_stamp = EvaRegs.CAP1FIFO;
        if((EvaRegs.CAPFIFO.all&0x0100) != 0)  /* Check status of one entry of CAP1 */
        {
        p->time_stamp = EvaRegs.CAP1FIFO;
        return(0);
        } 
        else
        {
        return(1);
        }

}
void F28X_EV1_CAP_Calc(CAPTURE *p)
{
	_iq event_period;
	_iq speedx;


    p->FIFO_state = EvaRegs.CAPFIFO.all&0x0300;
    p->FIFO_state = p->FIFO_state>>8;
       
    //if((EvaRegs.CAPFIFO.all&0x0100) != 0)
    {
        //p->time_stamp = EvaRegs.CAP1FIFO;
        p->time_stamp = EvaRegs.T2CNT;
        event_period = p->time_stamp_idx + p->time_stamp-p->time_stamp_old;
        p->time_stamp_idx = 0;
        p->time_stamp_old =p->time_stamp;
        if (event_period <= 0)
     		event_period += 65535;   /* 7FFFh = 32767 */

     	event_period=event_period<<10;

		speedx =_IQ10toIQ(_IQ10div(_IQ10(23.4375),event_period));

     	p->speed=speedx;

     	p->skip_time = 1;
     	
    } 
    
}

void F28X_EV1_CAP_ISR(CAPTURE *p)
{
	p->time_stamp_idx += EvaRegs.T2CNT;
	EvaRegs.T2CNT = 0;
}

⌨️ 快捷键说明

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