在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)
但是我找了数据手册没找到触发的软件源啊?
就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置
后面尝试了参考temperature conv的例程,但是:
AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
sensorSample = AdcResult.ADCRESULT1;
sensorSample有时候能读到转换的结果,有时候不行。
请帮忙看看怎么实现我要求的功能,谢谢
Jones Chen:
软件触发不需要触发源,硬件触发才需要。
软件触发只需要写一句话就可以了。配置下面这个寄存器。
在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)
但是我找了数据手册没找到触发的软件源啊?
就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置
后面尝试了参考temperature conv的例程,但是:
AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
sensorSample = AdcResult.ADCRESULT1;
sensorSample有时候能读到转换的结果,有时候不行。
请帮忙看看怎么实现我要求的功能,谢谢
hua liu:
回复 Jones Chen:
那怎么知道AD转换完成呢?
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}?
还是说软件触发只能用延时来读取他的结果?
在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)
但是我找了数据手册没找到触发的软件源啊?
就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置
后面尝试了参考temperature conv的例程,但是:
AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
sensorSample = AdcResult.ADCRESULT1;
sensorSample有时候能读到转换的结果,有时候不行。
请帮忙看看怎么实现我要求的功能,谢谢
Forrest:
回复 hua liu:
有中断产生,ADCINT1 置位就说明他完成转换了。除非设置了ADCCTL1[INTPULSEPOS]=0
在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)
但是我找了数据手册没找到触发的软件源啊?
就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置
后面尝试了参考temperature conv的例程,但是:
AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
sensorSample = AdcResult.ADCRESULT1;
sensorSample有时候能读到转换的结果,有时候不行。
请帮忙看看怎么实现我要求的功能,谢谢
hua liu:
回复 Forrest:
AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)
不可能吧,马上触发马上转换完成,转换的速度比CPU还快,而且假如我把ADCCTL1[INTPULSEPOS]=0,执行
AdcRegs.ADCSOCFRC1.all = 0x03;后,.ADCINTFLG.bit.ADCINT1也等于1,这是为什么呢?
在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)
但是我找了数据手册没找到触发的软件源啊?
就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置
后面尝试了参考temperature conv的例程,但是:
AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
sensorSample = AdcResult.ADCRESULT1;
sensorSample有时候能读到转换的结果,有时候不行。
请帮忙看看怎么实现我要求的功能,谢谢
hua liu:
回复 Forrest:
AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)
不可能吧,马上触发马上转换完成,转换的速度比CPU速度还快,
而且假如我把ADCCTL1[INTPULSEPOS]=0,执行
AdcRegs.ADCSOCFRC1.all = 0x03; 后,.ADCINTFLG.bit.ADCINT1也等于1,这是为什么呢?
在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)
但是我找了数据手册没找到触发的软件源啊?
就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置
后面尝试了参考temperature conv的例程,但是:
AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
sensorSample = AdcResult.ADCRESULT1;
sensorSample有时候能读到转换的结果,有时候不行。
请帮忙看看怎么实现我要求的功能,谢谢
Forrest:
回复 hua liu:
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}有没有用,ADCCTL1[INTPULSEPOS]=0有没有效果。你可以
CpuTimer0Regs.TCR.bit.TSS = 0;
….
…
CpuTimer0Regs.TCR.bit.TSS = 1;
测试一下,看看CpuTimer走了几个时钟周期。
在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)
但是我找了数据手册没找到触发的软件源啊?
就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置
后面尝试了参考temperature conv的例程,但是:
AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
sensorSample = AdcResult.ADCRESULT1;
sensorSample有时候能读到转换的结果,有时候不行。
请帮忙看看怎么实现我要求的功能,谢谢
Hong Ji:
回复 Forrest:
请问可以同时配置ADCINT1和ADCINT2 吗?如SOC1是软件触发,ADCINT2响应。SOC2是EPWM触发,ADCINT1响应。
在TMS320F28035的寄存器中ADCSOCxCTL的TRIGSEL位定义为0的话为软件触发(ADCTRIG0 – Software only.)
但是我找了数据手册没找到触发的软件源啊?
就是我想AD转换的时候,就马上触发AD转换,等待转换结果完成后读取AD转换结果,但是看看了AD的数据手册不知道怎么配置
后面尝试了参考temperature conv的例程,但是:
AdcRegs.ADCSOCFRC1.all = 0x03;(发现AdcRegs.ADCINTFLG.bit.ADCINT1直接被设置为1,后面的)
while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}(变得多余了)
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
sensorSample = AdcResult.ADCRESULT1;
sensorSample有时候能读到转换的结果,有时候不行。
请帮忙看看怎么实现我要求的功能,谢谢
囧:
回复 Hong Ji:
可以,都可以灵活配置