工具/软件:Code Composer Studio
我已经编写了一个用于转换9个 ADC 通道的代码。 我使用了级联转换模式。 ADC 由软件触发。 触发源被放置在每1ms 执行一次的 timer0 ISR 中。 timer0运行正常、但未进行 ADC 转换。 我已尝试对其进行调试、但问题仍然存在。 有人可以提供帮助吗? 代码如下所示。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#include "DSP280x_Device.h"
#include "DSP280x_examples.h"
_interrupt void CPU_timer0_ISR (void);
中断空 ADC_ISR (空)
void main (void)
{
InitSysCtrl();
Dint;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
InitAdc();
AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;//ADC 初始化以级联模式运行。 9通道转换。
AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;
AdcRegs.ADCTRL1.bit.CONT_RUN = 1;
AdcRegs.ADCTRL1.bit.SEQ_OVRD = 1;
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1;
AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x2;
AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x3;
AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x4;
AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0x5;
AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 0x6;
AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 0x7;
AdcRegs.ADCCHSELSEQ3.bit.CONV08 = 0x8;
AdcRegs.ADCMAXCONV.BIT.MAX_CONV1 = 0x8;
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2 = 1;
EALLOW;
SysCtrlRegs.HISPCP。all = ADC_MODCLK;
EDIS;
EALLOW;
PieVectTable.TINT0 =&CPU_timer0_ISR;
PieVectTable.ADCINT =&ADC_ISR;
EDIS;
InitCpuTimer();
ConfigCpuTimer (&CpuTimer0、100、1000);
CpuTimer0Regs.TCR.ALL = 0x4000;
IER |= M_INT1;
PieCtrlRegs.PIEIER1.bit.INTx6=1;
PieCtrlRegs.PIEIER1.bit.INTx7=1;
EINT;
ERTM;
for (;;)
{
_asm ("NOP");
}
}
_interrupt void CPU_timer0_ISR (void)//计时器每1ms 执行一次
{
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;//启用 SEQ1的软件触发器
AdcRegs.ADCTRL2.bit.RST_SEQ2 = 1;
AdcRegs.ADCTRL2.bit.SOC_SEQ2 = 1;//启用 SEQ2的软件触发
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;
}
中断空 ADC_ISR (空)
{
A[0]=AdcRegs.ADCRESULT0>>4;
A[1]=AdcRegs.ADCRESULT1 >>4;
A[2]=AdcRegs.ADCRESULT2 >>4;
A[3]=AdcRegs.ADCRESULT3 >>4;
A[4]=AdcRegs.ADCRESULT4 >>4;
A[5]=AdcRegs.ADCRESULT5 >>4;
A[6]= AdcRegs.ADCRESULT6 >>4;
A[7]= AdcRegs.ADCRESULT7 >> 4;
A[8]=AdcRegs.ADCRESULT8 >> 4;
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;//为下一个 ADC 序列重新初始化
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
AdcRegs.ADCTRL2.bit.RST_SEQ2 = 1;//为下一个 ADC 序列重新初始化
AdcRegs.ADCST.bit.INT_SEQ2_CLR = 1;
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;//确认 PIE 中断
返回;
}