您好!
我尝试读取由 Timer0触发的 ADC0至 ADC3通道。
当我将 ADC0乘以 Timer0时,我可以读取 true 值,但当我对 ADC0和 ADC1进行 TRIG 时,我在 ADCRESULT0上测量了错误值,而且尽管 ADC1上没有任何模拟值,我在 ADCRESULT1上读取了一些值。
void SetupADCSoftware() { uint16 acqps; acqps = 14; EALLOW; AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;//SOC0将转换引脚 A0 AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps;//采样窗口为 acqps + AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 1; AdcaRegs.ADCSOC1CTL.bit.CHSEL = 1;//SOC1将转换引脚 A1 AdcaRegs.ADCSOC1CTL.bit.ACQPS = acqps;//采样窗口为 acqps +//1 SYSCLK 周期 AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 1; AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2将转换引脚 A2 AdcaRegs.ADCSOC2CTL.bit.ACQPS = acqps;//采样窗口为 acqps + AdcaRegs.ADCSOC2CTL.bit.TRIGSEL = 1; AdcaRegs.ADCSOC3CTL.bit.CHSEL = 3;//SOC3将转换引脚 A3 AdcaRegs.ADCSOC3CTL.bit.ACQPS = acqps;//采样窗口为 acqps + AdcaRegs.ADCSOC3CTL.bit.TRIGSEL = 1; AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0x3;// SOC3结束将设置 INT1标志 AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1标志 AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保 INT1标志被清除 EDIS; }
void ConfigureADC (void) { EALLOW; //写入配置 AdcaRegs.ADCCTL2.bit.prescale = 0;//将 ADCCLK 分频器设置为/1 AdcSetMode (ADC_ADCA、ADC_resolution_12位、ADC_SIGNALMODE_SINGLE); //将脉冲位置设置为晚期 AdcaRegs.ADCCTL1.bit.INTPULSEPOS=1; //为 ADC 加电 AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1; DELAY_US (1000); EDIS; }
有人能不能对其原因有所了解?