恩,对的,50us定频出发soc,这部分的设置如下:
EPwm1Regs.ETSEL.bit.SOCAEN = 1; // Enable SOC on A group
EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_ZERO; // Select SOC from zero
EPwm1Regs.ETPS.bit.SOCAPRD = 1; // Generate pulse on 1st event
void sInitADC(void)
{
extern void DSP28x_usDelay(INT32U Count);
EALLOW;
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
(*Device_cal)();
EDIS;
EALLOW;
AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; // Power ADC BG
AdcRegs.ADCCTL1.bit.ADCREFPWD = 1; // Power reference
AdcRegs.ADCCTL1.bit.ADCPWDN = 1; // Power ADC
// AdcRegs.ADCCTL1.bit.ADCENABLE = 1; // Enable ADC
AdcRegs.ADCCTL1.bit.ADCREFSEL = 1; // Select external BG
EDIS;
DELAY_US(5000L); // Delay 5ms before converting ADC channels
EALLOW;
AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1;//interrupt pulse generation occurs 1 cycle prior to
AdcRegs.INTSEL1N2.all = 0x002E;//0x002D; //Enable ADCINT1; EOC14 trigger ADCINT1
AdcRegs.ADCSOC0CTL.all = 0x2849; //channel A1, EPWM6SOCA trigger SOC //此通道未用
AdcRegs.ADCSOC1CTL.all = 0x2849; //channel A1, EPWM6SOCA trigger SOC //此通道未用
AdcRegs.ADCSOC2CTL.all = 0x2849; //channel A1, EPWM6SOCA trigger SOC//0x288f; //channel A2, EPWM6SOCA trigger SOC
AdcRegs.ADCSOC3CTL.all = 0x28C9; //channel A3, EPWM6SOCA trigger SOC
AdcRegs.ADCSOC4CTL.all = 0x2909; //channel A4, EPWM6SOCA trigger SOC
AdcRegs.ADCSOC5CTL.all = 0x2889; //channel A2, EPWM6SOCA trigger SOC//0x294f; //channel A5, EPWM6SOCA trigger SOC
AdcRegs.ADCSOC6CTL.all = 0x2989; //channel A6, EPWM6SOCA trigger SOC
AdcRegs.ADCSOC7CTL.all = 0x29C9; //channel A7, EPWM6SOCA trigger SOC
AdcRegs.ADCSOC8CTL.all = 0x2A09; //channel B0, EPWM6SOCA trigger SOC
AdcRegs.ADCSOC9CTL.all = 0x2889; //channel A2, EPWM6SOCA trigger SOC
AdcRegs.ADCSOC10CTL.all = 0x2A89; //channel B2, EPWM6SOCA trigger SOC
AdcRegs.ADCSOC11CTL.all = 0x2AC9; //channel B3, EPWM6SOCA trigger SOC
AdcRegs.ADCSOC12CTL.all = 0x2A49; //channel B1, EPWM6SOCA trigger SOC
AdcRegs.ADCSOC13CTL.all = 0x2B09; //channel B4, EPWM6SOCA trigger SOC//0x2B4f; //channel B5, EPWM6SOCA trigger SOC
AdcRegs.ADCSOC14CTL.all = 0x2A09; //channel B0, EPWM6SOCA trigger SOC//0x2B8f; //channel B6, EPWM6SOCA trigger SOC
// AdcRegs.ADCSOC15CTL.all = 0x2BCA; //channel B7, EPWM6SOCA trigger SOC
EDIS;
// DELAY_US(20L); //20us delay is required before performing the first ADC conversion
DELAY_US(1000L); //1ms delay is required before performing the first ADC conversion
}
我觉得如果中断没有执行完,那么100us是可以理解的,问题是第一章图那样,GPIO竟然几个ms才翻转一次。