在使用TMS320F28069的AD模块碰到这么一个问题,通过对ad模块寄存器的设置,28069能够进入ad中断1,这个说明ad中断1的中断标志位可以被置位的,但是我当我没有给ad中的地址时而是用查询法莱判断ad模块转换是否结束(即判断中断标志位是否被置位)时,发现这个中断标志位始终不能置位,也就是说始终为0这是什么原因;还有就是怎么实现不同的soc对同一个adin口采样呢?我只用一个soc采样一个adin口可以,但多个soc采样同一个adin口好像不对,这又是什么原因?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
在使用TMS320F28069的AD模块碰到这么一个问题,通过对ad模块寄存器的设置,28069能够进入ad中断1,这个说明ad中断1的中断标志位可以被置位的,但是我当我没有给ad中的地址时而是用查询法莱判断ad模块转换是否结束(即判断中断标志位是否被置位)时,发现这个中断标志位始终不能置位,也就是说始终为0这是什么原因;还有就是怎么实现不同的soc对同一个adin口采样呢?我只用一个soc采样一个adin口可以,但多个soc采样同一个adin口好像不对,这又是什么原因?
外设中断都是要手动清除的,而且AdcRegs.INTSEL1N2.bit.INT1CONT = 0;这位这么设置就必须在手动清除ad中断标志位后才能在EOC的到来触发ad中断脉冲(No further ADCINTy pulses are generated until ADCINTy flag (in ADCINTFLG register) is cleared by user),所以查询法应该能跟踪的
1.关于查询方式,为什么中断标志位不能置位
1)要确定ADC能够产生中断,类似下面的代码
EALLOW;
AdcRegs.INTSEL1N2.bit.INT1SEL = 1; //Connect ADCINT1 to EOC1
AdcRegs.INTSEL1N2.bit.INT1E = 1; //Enable ADCINT1
2) 在查询后要清除标志位
//Wait for end of conversion.
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){} //Wait for ADCINT1
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //Clear ADCINT1
3)如果上述你程序中都有添加,那就要确认一下是否有ADC的触发源触发ADC转换。
2. 不同的SOC对同一个ADCIN采样时没有问题的,只要配置成相同的触发源。
建议你在例程的基础上进行测试。
在ADC的说明文档中,要注意采样窗某些特定值不能设置。
Eric