/*
__interrupt void Ecap_isr(void)
{
unsigned int cap_temp;
unsigned long int cap_temp1=0;
EALLOW;
GpioDataRegs.GPATOGGLE.bit.GPIO83 = 1;
EDIS;
cap_temp1=ECap1Regs.CAP1;
// EALLOW;
// GpioDataRegs.GPATOGGLE.bit.GPIO21 = 1;
// EDIS;
cap_temp=cap_temp1>>9;
if((cap_temp>0x14ec) && (cap_temp<0x196e))
{
g_calculate_reg.CaptureSum=g_calculate_reg.CaptureSum-g_calculate_reg.CaptureReg[g_calculate_reg.CaptureCounter];
g_calculate_reg.CaptureSum=g_calculate_reg.CaptureSum+cap_temp;
g_calculate_reg.CaptureReg[g_calculate_reg.CaptureCounter]=cap_temp;
g_calculate_reg.CaptureCounter++;
g_calculate_reg.CaptureCounter=g_calculate_reg.CaptureCounter&0x0f;
cap_temp=g_calculate_reg.CaptureSum>>4;
g_sample_reg.ff=(float)cap_temp;
g_sample_reg.ff=2929687.5/g_sample_reg.ff; //150mHZ/512*10=2929687.5,送给显示时要求保留一位小数
cap_temp = cap_temp>>1; //PWM时钟系数2的1次
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;
EDIS;
EPwm2Regs.ETSEL.bit.SOCAEN = 1; // Enable SOC on A group,75MHz时钟
EPwm2Regs.ETSEL.bit.SOCASEL = 1; // Select SOC from from
EPwm2Regs.ETPS.bit.SOCAPRD = 1; // Generate pulse on 1st event
EPwm2Regs.TBPRD = cap_temp;
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;
EDIS;
g_sample_reg.sample_counter = 0;
}
else
{
;
}
ECap1Regs.ECCLR.bit.CEVT1 = 1; //
ECap1Regs.ECCLR.bit.INT = 1; //
ECap1Regs.ECCTL2.bit.REARM = 1; //
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4; //
}
*/
// TI File $Revision: /main/2 $
// Checkin $Date: March 15, 2007 16:54:36 $
//###########################################################################
//
// FILE: DSP2833x_ECap.c
//
// TITLE: DSP2833x eCAP Initialization & Support Functions.
//
//###########################################################################
// $TI Release: DSP2833x Header Files V1.01 $
// $Release Date: September 26, 2007 $
//###########################################################################
#i nclude "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#i nclude "DSP2833x_Examples.h" // DSP2833x Examples Include File
//---------------------------------------------------------------------------
// InitECap:
//---------------------------------------------------------------------------
// This function initializes the eCAP(s) to a known state.
//
void Capture_init(void)
{
// Initialize eCAP1/2/3
ECap1Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap1Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap1Regs.ECCTL1.bit.CAPLDEN = 0; // Disable CAP1-CAP4 register loads
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0; // Make sure the counter is stopped
ECap1Regs.ECCTL2.bit.CAP_APWM = 0;
// Configure peripheral registers
ECap1Regs.ECCTL2.bit.CONT_ONESHT = 0; // 连续控制方式
ECap1Regs.ECCTL2.bit.STOP_WRAP = 1; // Stop at 1 events
ECap1Regs.ECCTL1.bit.CAP1POL = 0; // 1FALLING edge 0上升沿
/* ECap1Regs.ECCTL1.bit.CAP2POL = 1; // FALLING edge
ECap1Regs.ECCTL1.bit.CAP3POL = 1; // FALLING edge
ECap1Regs.ECCTL1.bit.CAP4POL = 1; // FALLING edge*/
ECap1Regs.ECCTL1.bit.CTRRST1 = 1; // Difference operation
/* ECap1Regs.ECCTL1.bit.CTRRST2 = 1; // Difference operation
ECap1Regs.ECCTL1.bit.CTRRST3 = 1; // Difference operation
ECap1Regs.ECCTL1.bit.CTRRST4 = 1; // Difference operation */
ECap1Regs.ECCTL2.bit.SYNCI_EN = 0; // DISable sync in
ECap1Regs.ECCTL2.bit.SYNCO_SEL = 2; // Disable sync out
ECap1Regs.ECCTL1.bit.PRESCALE = 0;
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap1Regs.ECCTL2.bit.REARM = 1; // arm one-shot
ECap1Regs.ECCTL1.bit.CAPLDEN = 1; // Enable CAP1-CAP4 register loads
ECap1Regs.ECEINT.bit.CEVT1 = 1; // 捕获事件1中断使能
//tbd...
/* ECap2Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap2Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap2Regs.ECCTL1.bit.CAPLDEN = 0; // Disable CAP1-CAP4 register loads
ECap2Regs.ECCTL2.bit.TSCTRSTOP = 0; // Make sure the counter is stopped
ECap2Regs.ECCTL2.bit.CAP_APWM = 0;
// Configure peripheral registers
ECap2Regs.ECCTL2.bit.CONT_ONESHT = 0; //
ECap2Regs.ECCTL2.bit.STOP_WRAP = 3; // Stop at 4 events
ECap2Regs.ECCTL1.bit.CAP1POL = 1; // Falling edge
ECap2Regs.ECCTL1.bit.CAP2POL = 0; // Rising edge
ECap2Regs.ECCTL1.bit.CAP3POL = 1; // Falling edge
ECap2Regs.ECCTL1.bit.CAP4POL = 0; // Rising edge
ECap2Regs.ECCTL1.bit.CTRRST1 = 1; // Difference operation
ECap2Regs.ECCTL1.bit.CTRRST2 = 1; // Difference operation
ECap2Regs.ECCTL1.bit.CTRRST3 = 1; // Difference operation
ECap2Regs.ECCTL1.bit.CTRRST4 = 1; // Difference operation
ECap2Regs.ECCTL2.bit.SYNCI_EN = 1; // Enable sync in
ECap2Regs.ECCTL2.bit.SYNCO_SEL = 0; // Pass through
ECap2Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units
ECap2Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap2Regs.ECCTL2.bit.REARM = 1; // arm one-shot
ECap2Regs.ECCTL1.bit.CAPLDEN = 1; // Enable CAP1-CAP4 register loads
ECap2Regs.ECEINT.bit.CEVT1 = 1; // 4 events = interrupt*/
/* GpioCtrlRegs.GPAPUD.bit.GPIO25 = 0; // Enable pull-up on GPIO25 (CAP2)
GpioCtrlRegs.GPAQSEL2.bit.GPIO25 = 0; // Synch to SYSCLKOUT GPIO25 (CAP2)
GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 1; // Configure GPIO25 as CAP2*/
EDIS;
}
//===========================================================================
// End of file.
//===========================================================================