📄 f28xcap.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 + -