AD配置: #define ADC_MACRO_INIT(ChSel,Trigsel,ACQPS) \
DELAY_US(ADC_usDELAY); \
AdcRegs.ADCCTL1.all=ADC_RESET_FLAG; \
asm(" NOP "); \ asm(" NOP "); \
EALLOW; \
AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; /* Power up band gap */ \
DELAY_US(ADC_usDELAY); /* Delay before powering up rest of ADC */ \
AdcRegs.ADCCTL1.bit.ADCREFSEL = 0;
\ AdcRegs.ADCCTL1.bit.ADCREFPWD = 1; /* Power up reference */
\ AdcRegs.ADCCTL1.bit.ADCPWDN = 1; /* Power up rest of ADC */
\ AdcRegs.ADCCTL1.bit.ADCENABLE = 1; /* Enable ADC */
\ asm(" RPT#100 || NOP"); \
AdcRegs.ADCCTL1.bit.INTPULSEPOS=1; \
AdcRegs.ADCCTL1.bit.TEMPCONV=0; \
DELAY_US(ADC_usDELAY); \
\ \ /******* CHANNEL SELECT *******/ \
AdcRegs.ADCSOC0CTL.bit.CHSEL = ChSel[0]; \
AdcRegs.ADCSOC1CTL.bit.CHSEL = ChSel[1]; \
AdcRegs.ADCSOC2CTL.bit.CHSEL = ChSel[2]; \
AdcRegs.ADCSOC3CTL.bit.CHSEL = ChSel[3]; \
AdcRegs.ADCSOC4CTL.bit.CHSEL = ChSel[4]; \
AdcRegs.ADCSOC5CTL.bit.CHSEL = ChSel[5]; \
AdcRegs.ADCSOC6CTL.bit.CHSEL = ChSel[6]; \
AdcRegs.ADCSOC7CTL.bit.CHSEL = ChSel[7]; \
AdcRegs.ADCSOC8CTL.bit.CHSEL = ChSel[8]; \
AdcRegs.ADCSOC9CTL.bit.CHSEL = ChSel[9]; \
AdcRegs.ADCSOC10CTL.bit.CHSEL = ChSel[10]; \
AdcRegs.ADCSOC11CTL.bit.CHSEL = ChSel[11]; \
AdcRegs.ADCSOC12CTL.bit.CHSEL = ChSel[12]; \
AdcRegs.ADCSOC13CTL.bit.CHSEL = ChSel[13]; \
AdcRegs.ADCSOC14CTL.bit.CHSEL = ChSel[14]; \
AdcRegs.ADCSOC15CTL.bit.CHSEL = ChSel[15]; \
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = Trigsel[0]; /* Set SOC0 start trigger on EPWM1A */ \
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = Trigsel[1]; \
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = Trigsel[2]; \
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = Trigsel[3]; \
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = Trigsel[4]; \
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = Trigsel[5]; \
AdcRegs.ADCSOC6CTL.bit.TRIGSEL = Trigsel[6]; \
AdcRegs.ADCSOC7CTL.bit.TRIGSEL = Trigsel[7]; \
AdcRegs.ADCSOC8CTL.bit.TRIGSEL = Trigsel[8]; \
AdcRegs.ADCSOC9CTL.bit.TRIGSEL = Trigsel[9]; \
AdcRegs.ADCSOC10CTL.bit.TRIGSEL = Trigsel[10]; \
AdcRegs.ADCSOC11CTL.bit.TRIGSEL = Trigsel[11]; \
AdcRegs.ADCSOC12CTL.bit.TRIGSEL = Trigsel[12]; \
AdcRegs.ADCSOC13CTL.bit.TRIGSEL = Trigsel[13]; \
AdcRegs.ADCSOC14CTL.bit.TRIGSEL = Trigsel[14]; \
AdcRegs.ADCSOC15CTL.bit.TRIGSEL = Trigsel[15]; \
AdcRegs.ADCSOC0CTL.bit.ACQPS = ACQPS[0];/* Set SOC0 S/H Window to 6+1 ADC Clock Cycles */ \
AdcRegs.ADCSOC1CTL.bit.ACQPS = ACQPS[1]; \
AdcRegs.ADCSOC2CTL.bit.ACQPS = ACQPS[2]; \
AdcRegs.ADCSOC3CTL.bit.ACQPS = ACQPS[3]; \
AdcRegs.ADCSOC4CTL.bit.ACQPS = ACQPS[4]; \
AdcRegs.ADCSOC5CTL.bit.ACQPS = ACQPS[5]; \
AdcRegs.ADCSOC6CTL.bit.ACQPS = ACQPS[6]; \
AdcRegs.ADCSOC7CTL.bit.ACQPS = ACQPS[7]; \
AdcRegs.ADCSOC8CTL.bit.ACQPS = ACQPS[8]; \
AdcRegs.ADCSOC9CTL.bit.ACQPS = ACQPS[9]; \
AdcRegs.ADCSOC10CTL.bit.ACQPS = ACQPS[10]; \
AdcRegs.ADCSOC11CTL.bit.ACQPS = ACQPS[11]; \
AdcRegs.ADCSOC12CTL.bit.ACQPS = ACQPS[12]; \
AdcRegs.ADCSOC13CTL.bit.ACQPS = ACQPS[13]; \
AdcRegs.ADCSOC14CTL.bit.ACQPS = ACQPS[14]; \
AdcRegs.ADCSOC15CTL.bit.ACQPS = ACQPS[15]; \
EDIS; \
初始化后为何ad就一直在转换。
AdcRegs.ADCSOCFRC1.all = 0x00FF;
while(AdcRegs.ADCSOCFLG1.all != 0){};
软件触发,我在while前设置了个断点,看了一下寄存器,ADCSOCFRC1寄存器并没有被置1
Eric Ma:
你程序中配置的触发源是什么,PWM吗?
Eric
AD配置: #define ADC_MACRO_INIT(ChSel,Trigsel,ACQPS) \
DELAY_US(ADC_usDELAY); \
AdcRegs.ADCCTL1.all=ADC_RESET_FLAG; \
asm(" NOP "); \ asm(" NOP "); \
EALLOW; \
AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; /* Power up band gap */ \
DELAY_US(ADC_usDELAY); /* Delay before powering up rest of ADC */ \
AdcRegs.ADCCTL1.bit.ADCREFSEL = 0;
\ AdcRegs.ADCCTL1.bit.ADCREFPWD = 1; /* Power up reference */
\ AdcRegs.ADCCTL1.bit.ADCPWDN = 1; /* Power up rest of ADC */
\ AdcRegs.ADCCTL1.bit.ADCENABLE = 1; /* Enable ADC */
\ asm(" RPT#100 || NOP"); \
AdcRegs.ADCCTL1.bit.INTPULSEPOS=1; \
AdcRegs.ADCCTL1.bit.TEMPCONV=0; \
DELAY_US(ADC_usDELAY); \
\ \ /******* CHANNEL SELECT *******/ \
AdcRegs.ADCSOC0CTL.bit.CHSEL = ChSel[0]; \
AdcRegs.ADCSOC1CTL.bit.CHSEL = ChSel[1]; \
AdcRegs.ADCSOC2CTL.bit.CHSEL = ChSel[2]; \
AdcRegs.ADCSOC3CTL.bit.CHSEL = ChSel[3]; \
AdcRegs.ADCSOC4CTL.bit.CHSEL = ChSel[4]; \
AdcRegs.ADCSOC5CTL.bit.CHSEL = ChSel[5]; \
AdcRegs.ADCSOC6CTL.bit.CHSEL = ChSel[6]; \
AdcRegs.ADCSOC7CTL.bit.CHSEL = ChSel[7]; \
AdcRegs.ADCSOC8CTL.bit.CHSEL = ChSel[8]; \
AdcRegs.ADCSOC9CTL.bit.CHSEL = ChSel[9]; \
AdcRegs.ADCSOC10CTL.bit.CHSEL = ChSel[10]; \
AdcRegs.ADCSOC11CTL.bit.CHSEL = ChSel[11]; \
AdcRegs.ADCSOC12CTL.bit.CHSEL = ChSel[12]; \
AdcRegs.ADCSOC13CTL.bit.CHSEL = ChSel[13]; \
AdcRegs.ADCSOC14CTL.bit.CHSEL = ChSel[14]; \
AdcRegs.ADCSOC15CTL.bit.CHSEL = ChSel[15]; \
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = Trigsel[0]; /* Set SOC0 start trigger on EPWM1A */ \
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = Trigsel[1]; \
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = Trigsel[2]; \
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = Trigsel[3]; \
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = Trigsel[4]; \
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = Trigsel[5]; \
AdcRegs.ADCSOC6CTL.bit.TRIGSEL = Trigsel[6]; \
AdcRegs.ADCSOC7CTL.bit.TRIGSEL = Trigsel[7]; \
AdcRegs.ADCSOC8CTL.bit.TRIGSEL = Trigsel[8]; \
AdcRegs.ADCSOC9CTL.bit.TRIGSEL = Trigsel[9]; \
AdcRegs.ADCSOC10CTL.bit.TRIGSEL = Trigsel[10]; \
AdcRegs.ADCSOC11CTL.bit.TRIGSEL = Trigsel[11]; \
AdcRegs.ADCSOC12CTL.bit.TRIGSEL = Trigsel[12]; \
AdcRegs.ADCSOC13CTL.bit.TRIGSEL = Trigsel[13]; \
AdcRegs.ADCSOC14CTL.bit.TRIGSEL = Trigsel[14]; \
AdcRegs.ADCSOC15CTL.bit.TRIGSEL = Trigsel[15]; \
AdcRegs.ADCSOC0CTL.bit.ACQPS = ACQPS[0];/* Set SOC0 S/H Window to 6+1 ADC Clock Cycles */ \
AdcRegs.ADCSOC1CTL.bit.ACQPS = ACQPS[1]; \
AdcRegs.ADCSOC2CTL.bit.ACQPS = ACQPS[2]; \
AdcRegs.ADCSOC3CTL.bit.ACQPS = ACQPS[3]; \
AdcRegs.ADCSOC4CTL.bit.ACQPS = ACQPS[4]; \
AdcRegs.ADCSOC5CTL.bit.ACQPS = ACQPS[5]; \
AdcRegs.ADCSOC6CTL.bit.ACQPS = ACQPS[6]; \
AdcRegs.ADCSOC7CTL.bit.ACQPS = ACQPS[7]; \
AdcRegs.ADCSOC8CTL.bit.ACQPS = ACQPS[8]; \
AdcRegs.ADCSOC9CTL.bit.ACQPS = ACQPS[9]; \
AdcRegs.ADCSOC10CTL.bit.ACQPS = ACQPS[10]; \
AdcRegs.ADCSOC11CTL.bit.ACQPS = ACQPS[11]; \
AdcRegs.ADCSOC12CTL.bit.ACQPS = ACQPS[12]; \
AdcRegs.ADCSOC13CTL.bit.ACQPS = ACQPS[13]; \
AdcRegs.ADCSOC14CTL.bit.ACQPS = ACQPS[14]; \
AdcRegs.ADCSOC15CTL.bit.ACQPS = ACQPS[15]; \
EDIS; \
初始化后为何ad就一直在转换。
AdcRegs.ADCSOCFRC1.all = 0x00FF;
while(AdcRegs.ADCSOCFLG1.all != 0){};
软件触发,我在while前设置了个断点,看了一下寄存器,ADCSOCFRC1寄存器并没有被置1
yongliang li1:
回复 Eric Ma:
是pwm触发,但是我没打开呢,我软件触发采样的到6个数据以后再打开,pwm触发。我初始化完成后,我在ccs里面就看到ADCRESULT有更新啊,没触发怎么在不断转换。。。。!?
AD配置: #define ADC_MACRO_INIT(ChSel,Trigsel,ACQPS) \
DELAY_US(ADC_usDELAY); \
AdcRegs.ADCCTL1.all=ADC_RESET_FLAG; \
asm(" NOP "); \ asm(" NOP "); \
EALLOW; \
AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; /* Power up band gap */ \
DELAY_US(ADC_usDELAY); /* Delay before powering up rest of ADC */ \
AdcRegs.ADCCTL1.bit.ADCREFSEL = 0;
\ AdcRegs.ADCCTL1.bit.ADCREFPWD = 1; /* Power up reference */
\ AdcRegs.ADCCTL1.bit.ADCPWDN = 1; /* Power up rest of ADC */
\ AdcRegs.ADCCTL1.bit.ADCENABLE = 1; /* Enable ADC */
\ asm(" RPT#100 || NOP"); \
AdcRegs.ADCCTL1.bit.INTPULSEPOS=1; \
AdcRegs.ADCCTL1.bit.TEMPCONV=0; \
DELAY_US(ADC_usDELAY); \
\ \ /******* CHANNEL SELECT *******/ \
AdcRegs.ADCSOC0CTL.bit.CHSEL = ChSel[0]; \
AdcRegs.ADCSOC1CTL.bit.CHSEL = ChSel[1]; \
AdcRegs.ADCSOC2CTL.bit.CHSEL = ChSel[2]; \
AdcRegs.ADCSOC3CTL.bit.CHSEL = ChSel[3]; \
AdcRegs.ADCSOC4CTL.bit.CHSEL = ChSel[4]; \
AdcRegs.ADCSOC5CTL.bit.CHSEL = ChSel[5]; \
AdcRegs.ADCSOC6CTL.bit.CHSEL = ChSel[6]; \
AdcRegs.ADCSOC7CTL.bit.CHSEL = ChSel[7]; \
AdcRegs.ADCSOC8CTL.bit.CHSEL = ChSel[8]; \
AdcRegs.ADCSOC9CTL.bit.CHSEL = ChSel[9]; \
AdcRegs.ADCSOC10CTL.bit.CHSEL = ChSel[10]; \
AdcRegs.ADCSOC11CTL.bit.CHSEL = ChSel[11]; \
AdcRegs.ADCSOC12CTL.bit.CHSEL = ChSel[12]; \
AdcRegs.ADCSOC13CTL.bit.CHSEL = ChSel[13]; \
AdcRegs.ADCSOC14CTL.bit.CHSEL = ChSel[14]; \
AdcRegs.ADCSOC15CTL.bit.CHSEL = ChSel[15]; \
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = Trigsel[0]; /* Set SOC0 start trigger on EPWM1A */ \
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = Trigsel[1]; \
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = Trigsel[2]; \
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = Trigsel[3]; \
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = Trigsel[4]; \
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = Trigsel[5]; \
AdcRegs.ADCSOC6CTL.bit.TRIGSEL = Trigsel[6]; \
AdcRegs.ADCSOC7CTL.bit.TRIGSEL = Trigsel[7]; \
AdcRegs.ADCSOC8CTL.bit.TRIGSEL = Trigsel[8]; \
AdcRegs.ADCSOC9CTL.bit.TRIGSEL = Trigsel[9]; \
AdcRegs.ADCSOC10CTL.bit.TRIGSEL = Trigsel[10]; \
AdcRegs.ADCSOC11CTL.bit.TRIGSEL = Trigsel[11]; \
AdcRegs.ADCSOC12CTL.bit.TRIGSEL = Trigsel[12]; \
AdcRegs.ADCSOC13CTL.bit.TRIGSEL = Trigsel[13]; \
AdcRegs.ADCSOC14CTL.bit.TRIGSEL = Trigsel[14]; \
AdcRegs.ADCSOC15CTL.bit.TRIGSEL = Trigsel[15]; \
AdcRegs.ADCSOC0CTL.bit.ACQPS = ACQPS[0];/* Set SOC0 S/H Window to 6+1 ADC Clock Cycles */ \
AdcRegs.ADCSOC1CTL.bit.ACQPS = ACQPS[1]; \
AdcRegs.ADCSOC2CTL.bit.ACQPS = ACQPS[2]; \
AdcRegs.ADCSOC3CTL.bit.ACQPS = ACQPS[3]; \
AdcRegs.ADCSOC4CTL.bit.ACQPS = ACQPS[4]; \
AdcRegs.ADCSOC5CTL.bit.ACQPS = ACQPS[5]; \
AdcRegs.ADCSOC6CTL.bit.ACQPS = ACQPS[6]; \
AdcRegs.ADCSOC7CTL.bit.ACQPS = ACQPS[7]; \
AdcRegs.ADCSOC8CTL.bit.ACQPS = ACQPS[8]; \
AdcRegs.ADCSOC9CTL.bit.ACQPS = ACQPS[9]; \
AdcRegs.ADCSOC10CTL.bit.ACQPS = ACQPS[10]; \
AdcRegs.ADCSOC11CTL.bit.ACQPS = ACQPS[11]; \
AdcRegs.ADCSOC12CTL.bit.ACQPS = ACQPS[12]; \
AdcRegs.ADCSOC13CTL.bit.ACQPS = ACQPS[13]; \
AdcRegs.ADCSOC14CTL.bit.ACQPS = ACQPS[14]; \
AdcRegs.ADCSOC15CTL.bit.ACQPS = ACQPS[15]; \
EDIS; \
初始化后为何ad就一直在转换。
AdcRegs.ADCSOCFRC1.all = 0x00FF;
while(AdcRegs.ADCSOCFLG1.all != 0){};
软件触发,我在while前设置了个断点,看了一下寄存器,ADCSOCFRC1寄存器并没有被置1
Martin Yu:
回复 yongliang li1:
PWM模块那边初始化设置是什么信号产生SOC信号的呢?TBCTR = ?建议检查下是不是PWM模块产生了SOC信号。
AD配置: #define ADC_MACRO_INIT(ChSel,Trigsel,ACQPS) \
DELAY_US(ADC_usDELAY); \
AdcRegs.ADCCTL1.all=ADC_RESET_FLAG; \
asm(" NOP "); \ asm(" NOP "); \
EALLOW; \
AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; /* Power up band gap */ \
DELAY_US(ADC_usDELAY); /* Delay before powering up rest of ADC */ \
AdcRegs.ADCCTL1.bit.ADCREFSEL = 0;
\ AdcRegs.ADCCTL1.bit.ADCREFPWD = 1; /* Power up reference */
\ AdcRegs.ADCCTL1.bit.ADCPWDN = 1; /* Power up rest of ADC */
\ AdcRegs.ADCCTL1.bit.ADCENABLE = 1; /* Enable ADC */
\ asm(" RPT#100 || NOP"); \
AdcRegs.ADCCTL1.bit.INTPULSEPOS=1; \
AdcRegs.ADCCTL1.bit.TEMPCONV=0; \
DELAY_US(ADC_usDELAY); \
\ \ /******* CHANNEL SELECT *******/ \
AdcRegs.ADCSOC0CTL.bit.CHSEL = ChSel[0]; \
AdcRegs.ADCSOC1CTL.bit.CHSEL = ChSel[1]; \
AdcRegs.ADCSOC2CTL.bit.CHSEL = ChSel[2]; \
AdcRegs.ADCSOC3CTL.bit.CHSEL = ChSel[3]; \
AdcRegs.ADCSOC4CTL.bit.CHSEL = ChSel[4]; \
AdcRegs.ADCSOC5CTL.bit.CHSEL = ChSel[5]; \
AdcRegs.ADCSOC6CTL.bit.CHSEL = ChSel[6]; \
AdcRegs.ADCSOC7CTL.bit.CHSEL = ChSel[7]; \
AdcRegs.ADCSOC8CTL.bit.CHSEL = ChSel[8]; \
AdcRegs.ADCSOC9CTL.bit.CHSEL = ChSel[9]; \
AdcRegs.ADCSOC10CTL.bit.CHSEL = ChSel[10]; \
AdcRegs.ADCSOC11CTL.bit.CHSEL = ChSel[11]; \
AdcRegs.ADCSOC12CTL.bit.CHSEL = ChSel[12]; \
AdcRegs.ADCSOC13CTL.bit.CHSEL = ChSel[13]; \
AdcRegs.ADCSOC14CTL.bit.CHSEL = ChSel[14]; \
AdcRegs.ADCSOC15CTL.bit.CHSEL = ChSel[15]; \
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = Trigsel[0]; /* Set SOC0 start trigger on EPWM1A */ \
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = Trigsel[1]; \
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = Trigsel[2]; \
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = Trigsel[3]; \
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = Trigsel[4]; \
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = Trigsel[5]; \
AdcRegs.ADCSOC6CTL.bit.TRIGSEL = Trigsel[6]; \
AdcRegs.ADCSOC7CTL.bit.TRIGSEL = Trigsel[7]; \
AdcRegs.ADCSOC8CTL.bit.TRIGSEL = Trigsel[8]; \
AdcRegs.ADCSOC9CTL.bit.TRIGSEL = Trigsel[9]; \
AdcRegs.ADCSOC10CTL.bit.TRIGSEL = Trigsel[10]; \
AdcRegs.ADCSOC11CTL.bit.TRIGSEL = Trigsel[11]; \
AdcRegs.ADCSOC12CTL.bit.TRIGSEL = Trigsel[12]; \
AdcRegs.ADCSOC13CTL.bit.TRIGSEL = Trigsel[13]; \
AdcRegs.ADCSOC14CTL.bit.TRIGSEL = Trigsel[14]; \
AdcRegs.ADCSOC15CTL.bit.TRIGSEL = Trigsel[15]; \
AdcRegs.ADCSOC0CTL.bit.ACQPS = ACQPS[0];/* Set SOC0 S/H Window to 6+1 ADC Clock Cycles */ \
AdcRegs.ADCSOC1CTL.bit.ACQPS = ACQPS[1]; \
AdcRegs.ADCSOC2CTL.bit.ACQPS = ACQPS[2]; \
AdcRegs.ADCSOC3CTL.bit.ACQPS = ACQPS[3]; \
AdcRegs.ADCSOC4CTL.bit.ACQPS = ACQPS[4]; \
AdcRegs.ADCSOC5CTL.bit.ACQPS = ACQPS[5]; \
AdcRegs.ADCSOC6CTL.bit.ACQPS = ACQPS[6]; \
AdcRegs.ADCSOC7CTL.bit.ACQPS = ACQPS[7]; \
AdcRegs.ADCSOC8CTL.bit.ACQPS = ACQPS[8]; \
AdcRegs.ADCSOC9CTL.bit.ACQPS = ACQPS[9]; \
AdcRegs.ADCSOC10CTL.bit.ACQPS = ACQPS[10]; \
AdcRegs.ADCSOC11CTL.bit.ACQPS = ACQPS[11]; \
AdcRegs.ADCSOC12CTL.bit.ACQPS = ACQPS[12]; \
AdcRegs.ADCSOC13CTL.bit.ACQPS = ACQPS[13]; \
AdcRegs.ADCSOC14CTL.bit.ACQPS = ACQPS[14]; \
AdcRegs.ADCSOC15CTL.bit.ACQPS = ACQPS[15]; \
EDIS; \
初始化后为何ad就一直在转换。
AdcRegs.ADCSOCFRC1.all = 0x00FF;
while(AdcRegs.ADCSOCFLG1.all != 0){};
软件触发,我在while前设置了个断点,看了一下寄存器,ADCSOCFRC1寄存器并没有被置1
yongliang li1:
回复 Martin Yu:
#define ADC_Trigger \ /* Set up Event Trigger with period enable for Time-base of EPWM1 */ \ EPwm1Regs.ETSEL.bit.SOCAEN = 1; /* Enable SOCA */ \ EPwm1Regs.ETSEL.bit.SOCASEL = 2; /* Enable period event for SOCA */ \ EPwm1Regs.ETPS.bit.SOCAPRD = 1; /* Generate SOCA on the 1st event */ \ EPwm1Regs.ETCLR.bit.SOCA = 1; /* Clear SOCA flag */ \ AdcRegs.INTSEL1N2.bit.INT1E = 1; /*Enabled ADCINT1*/ \ AdcRegs.INTSEL1N2.bit.INT1CONT = 0; /*Disable ADCINT1 Continuous mode*/ \ AdcRegs.INTSEL1N2.bit.INT1SEL = 3; /*setup EOC3 to trigger ADCINT1 to fire*/ \这是触发ADC的配置
AD配置: #define ADC_MACRO_INIT(ChSel,Trigsel,ACQPS) \
DELAY_US(ADC_usDELAY); \
AdcRegs.ADCCTL1.all=ADC_RESET_FLAG; \
asm(" NOP "); \ asm(" NOP "); \
EALLOW; \
AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; /* Power up band gap */ \
DELAY_US(ADC_usDELAY); /* Delay before powering up rest of ADC */ \
AdcRegs.ADCCTL1.bit.ADCREFSEL = 0;
\ AdcRegs.ADCCTL1.bit.ADCREFPWD = 1; /* Power up reference */
\ AdcRegs.ADCCTL1.bit.ADCPWDN = 1; /* Power up rest of ADC */
\ AdcRegs.ADCCTL1.bit.ADCENABLE = 1; /* Enable ADC */
\ asm(" RPT#100 || NOP"); \
AdcRegs.ADCCTL1.bit.INTPULSEPOS=1; \
AdcRegs.ADCCTL1.bit.TEMPCONV=0; \
DELAY_US(ADC_usDELAY); \
\ \ /******* CHANNEL SELECT *******/ \
AdcRegs.ADCSOC0CTL.bit.CHSEL = ChSel[0]; \
AdcRegs.ADCSOC1CTL.bit.CHSEL = ChSel[1]; \
AdcRegs.ADCSOC2CTL.bit.CHSEL = ChSel[2]; \
AdcRegs.ADCSOC3CTL.bit.CHSEL = ChSel[3]; \
AdcRegs.ADCSOC4CTL.bit.CHSEL = ChSel[4]; \
AdcRegs.ADCSOC5CTL.bit.CHSEL = ChSel[5]; \
AdcRegs.ADCSOC6CTL.bit.CHSEL = ChSel[6]; \
AdcRegs.ADCSOC7CTL.bit.CHSEL = ChSel[7]; \
AdcRegs.ADCSOC8CTL.bit.CHSEL = ChSel[8]; \
AdcRegs.ADCSOC9CTL.bit.CHSEL = ChSel[9]; \
AdcRegs.ADCSOC10CTL.bit.CHSEL = ChSel[10]; \
AdcRegs.ADCSOC11CTL.bit.CHSEL = ChSel[11]; \
AdcRegs.ADCSOC12CTL.bit.CHSEL = ChSel[12]; \
AdcRegs.ADCSOC13CTL.bit.CHSEL = ChSel[13]; \
AdcRegs.ADCSOC14CTL.bit.CHSEL = ChSel[14]; \
AdcRegs.ADCSOC15CTL.bit.CHSEL = ChSel[15]; \
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = Trigsel[0]; /* Set SOC0 start trigger on EPWM1A */ \
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = Trigsel[1]; \
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = Trigsel[2]; \
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = Trigsel[3]; \
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = Trigsel[4]; \
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = Trigsel[5]; \
AdcRegs.ADCSOC6CTL.bit.TRIGSEL = Trigsel[6]; \
AdcRegs.ADCSOC7CTL.bit.TRIGSEL = Trigsel[7]; \
AdcRegs.ADCSOC8CTL.bit.TRIGSEL = Trigsel[8]; \
AdcRegs.ADCSOC9CTL.bit.TRIGSEL = Trigsel[9]; \
AdcRegs.ADCSOC10CTL.bit.TRIGSEL = Trigsel[10]; \
AdcRegs.ADCSOC11CTL.bit.TRIGSEL = Trigsel[11]; \
AdcRegs.ADCSOC12CTL.bit.TRIGSEL = Trigsel[12]; \
AdcRegs.ADCSOC13CTL.bit.TRIGSEL = Trigsel[13]; \
AdcRegs.ADCSOC14CTL.bit.TRIGSEL = Trigsel[14]; \
AdcRegs.ADCSOC15CTL.bit.TRIGSEL = Trigsel[15]; \
AdcRegs.ADCSOC0CTL.bit.ACQPS = ACQPS[0];/* Set SOC0 S/H Window to 6+1 ADC Clock Cycles */ \
AdcRegs.ADCSOC1CTL.bit.ACQPS = ACQPS[1]; \
AdcRegs.ADCSOC2CTL.bit.ACQPS = ACQPS[2]; \
AdcRegs.ADCSOC3CTL.bit.ACQPS = ACQPS[3]; \
AdcRegs.ADCSOC4CTL.bit.ACQPS = ACQPS[4]; \
AdcRegs.ADCSOC5CTL.bit.ACQPS = ACQPS[5]; \
AdcRegs.ADCSOC6CTL.bit.ACQPS = ACQPS[6]; \
AdcRegs.ADCSOC7CTL.bit.ACQPS = ACQPS[7]; \
AdcRegs.ADCSOC8CTL.bit.ACQPS = ACQPS[8]; \
AdcRegs.ADCSOC9CTL.bit.ACQPS = ACQPS[9]; \
AdcRegs.ADCSOC10CTL.bit.ACQPS = ACQPS[10]; \
AdcRegs.ADCSOC11CTL.bit.ACQPS = ACQPS[11]; \
AdcRegs.ADCSOC12CTL.bit.ACQPS = ACQPS[12]; \
AdcRegs.ADCSOC13CTL.bit.ACQPS = ACQPS[13]; \
AdcRegs.ADCSOC14CTL.bit.ACQPS = ACQPS[14]; \
AdcRegs.ADCSOC15CTL.bit.ACQPS = ACQPS[15]; \
EDIS; \
初始化后为何ad就一直在转换。
AdcRegs.ADCSOCFRC1.all = 0x00FF;
while(AdcRegs.ADCSOCFLG1.all != 0){};
软件触发,我在while前设置了个断点,看了一下寄存器,ADCSOCFRC1寄存器并没有被置1
Eric Ma:
回复 yongliang li1:
你检查一下PWM的寄存器是否有在计数。
ERIC