工具/软件:Code Composer Studio
您好!
我的英语不好、请理解。
下面是我的示例代码、
我想在转换后检查从 ePWM1A_SOCA 到 ADC_INTERRUPT 的延迟。
我想、根据这个代码、用于 ADC_ISR 中断的 EOC 是 EOC15、所以我设置寄存器 AdcRegs.INTSEL1N2.bit.INT1SEL = 15;
我想、如果我设置16kHz PWM 频率、那么中断频率必须为16kHz
但是、我 按示波器检查脉冲的值(启动 ADC_ISR A = 1时;A = 0产生脉冲)、
当我设置 INT1SEL = 7时、脉冲为16kHz、但我设置 INT1SEL = 15时、脉冲为150kHz。
在同步模式中、ADCINA7和 ADCINB7的转换完成、只有 EOC7发生? 或者我的代码是错误的?
如果仅发生 EOC7、EOC15始终为1?
我正在等待您的回答。
谢谢你。
//我的示例代码//
//包含的文件
//
#include "DSP28x_Project.h"
//
//函数原型
//
_interrupt void ADC_ISR (void);
void ADC_Config (void);
//
//全局
//
uint16环计数;
UINT16转换计数;
uint16 Voltage0;
uint16 Voltage1;
uint16 Voltage2;
uint16 Voltage3;
uint16 Voltage4;
uint16 Voltage5;
uint16 Voltage6;
uint16 Voltage7;
uint16 Voltage8;
uint16电压9;
uint16 Voltage10;
uint16 Voltage11;
uint16 Voltage12;
uint16 Voltage13;
uint16 Voltage14;
uint16 Voltage15;
uint16 a;
//
//主函
//
void main (void)
{
Dint;
IER = 0x0000;
IFR = 0x0000;
InitSysCtrl();
InitPieCtrl();
InitPieVectTable();
EALLOW;
PieVectTable.ADCINT1 =&ADC_ISR;
EDIS;
PieCtrlRegs.PIEIER1.bit.INTx1 = 1;
IER |= M_INT1;
InitAdc();
AdcOffsetSelfCal();
ADC_Config ();
LoopCount = 0;
ConversionCount = 0;
EINT;
ERTM;
for (;;)
{
LoopCount++;
}
}
//
//函数
//
_interrupt void ADC_ISR (void)
{
A = 1;
A = 0;
Voltage0 = AdcResult.ADCRESULT0;
Voltage1 = AdcResult.ADCRESULT1;
Voltage2 = AdcResult.ADCRESULT2;
Voltage3 = AdcResult.ADCRESULT3;
Voltage4 = AdcResult.ADCRESULT4;
Voltage5 = AdcResult.ADCRESULT5;
Voltage6 = AdcResult.ADCRESULT6;
Voltage7 = AdcResult.ADCRESULT7;
Voltage8 = AdcResult.ADCRESULT8;
Voltage9 = AdcResult.ADCRESULT9;
Voltage10 = AdcResult.ADCRESULT10;
Voltage11 = AdcResult.ADCRESULT11;
Voltage12 = AdcResult.ADCRESULT12;
Voltage13 = AdcResult.ADCRESULT13;
Voltage14 = AdcResult.ADCRESULT14;
Voltage15 = AdcResult.ADCRESULT15;
ConversionCount++;
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
PieCtrlRegs.PIEACk.bit.ACK1=1;
}
空 ADC_Config (空)
{
EALLOW;
AdcRegs.ADCCTL2.bit.ADCNONOVERLAP = 1;
AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1;
AdcRegs.INTSEL1N2.bit.INT1E = 1;
AdcRegs.INTSEL1N2.bit.INT1CONT = 0;
AdcRegs.INTSEL1N2.bit.INT1SEL = 15;
AdcRegs.ADCSOC0CTL.bit.CHSEL = 0;
AdcRegs.ADCSOC2CTL.bit.CHSEL = 1;
AdcRegs.ADCSOC4CTL.bit.CHSEL = 2;
AdcRegs.ADCSOC6CTL.bit.CHSEL = 3;
AdcRegs.ADCSOC8CTL.bit.CHSEL = 4;
AdcRegs.ADCSOC10CTL.bit.CHSEL = 5;
AdcRegs.ADCSOC12CTL.bit.CHSEL = 6;
AdcRegs.ADCSOC14CTL.bit.CHSEL = 7;
AdcRegs.ADCSAMPLEMODE.BIT.SIMULEN0 = 1;
AdcRegs.ADCSAMPLEMODE.BIT.SIMULEN2 = 1;
AdcRegs.ADCSAMPLEMODE.BIT.SIMULEN4 = 1;
AdcRegs.ADCSAMPLEMODE.BIT.SIMULEN6 = 1;
AdcRegs.ADCSAMPLEMODE.BIT.SIMULEN8 = 1;
AdcRegs.ADCSAMPLEMODE.BIT.SIMULEN10 = 1;
AdcRegs.ADCSAMPLEMODE.BIT.SIMULEN12 = 1;
AdcRegs.ADCSAMPLEMODE.BIT.SIMULEN14 = 1;
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC6CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC8CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC10CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC12CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC14CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC0CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC1CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC2CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC3CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC4CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC5CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC6CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC7CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC8CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC9CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC10CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC11CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC12CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC13CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC14CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC15CTL.bit.ACQPS = 6;
EPwm1Regs.ETSEL.bit.SOCAEN = 1;
EPwm1Regs.ETSEL.bit.SOCASEL = 4;
EPwm1Regs.ETPS.bit.SOCAPRD = 1;
EPwm1Regs.CMPA.half.CMPA = 0x0080;
EPwm1Regs.TBPRD = 0xFFFF;
EPwm1Regs.TBCTL.bit.CTRMODE = 0;
}
