关于msp430单片机,积分型adc的问题
时间:10-02
整理:3721RD
点击:
先贴代码
//-----测量8次参考电阻值-----
if(REF_Mreasure_Ready<8) // 判断是否继续测量参考电阻值
{
Slope_Measure_REF(); //测参考电阻值
R_REF_Sum=R_REF_Sum+R_REF; //累加电阻值
if(REF_Mreasure_Ready==7) R_REF=R_REF_Sum>>3; //测量完毕求出参考电阻的平均值
REF_Mreasure_Ready++; //测量次数累加
}
//-----得到参考电阻值后,开始不停的测量传感器电阻值-----
else
Slope_Measure_SENS(); //测完参考电阻才测传感器电阻
Charge_Ready=0; //测完一次,又该充电了
void Slope_Measure_REF()
{
Slope_Measure_Flag=0; //置全局变量标志,表明此次测量的是参考电阻
PORT_SENS_HZ; //传感器电阻所连IO高阻,去除对电路影响
TAR_CLEAR; //TA主时钟清零
PORT_REF_LOW; //开启参考电阻放电通道,开始计数测量放电时间
}
void Timer0_A3_init(void)
{
//----捕获模式----
TA0CTL = TASSEL_2+ID_0+MC_2; //连续计数开始
TA0CCTL1 = CM_1 + CCIS_1 + SCS + CAP +OUTMOD_0 + CCIE; //OUTMOD_0是Grace强行配送的,可不加
}
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIMER0_A1_ISR_HOOK(void)
{
switch (__even_in_range(TA0IV, TA0IV_TAIFG)) // Efficient switch-implementation
{
case TA0IV_TACCR1:
Slope_TA_CCI1B(); break;
case TA0IV_TACCR2: break;
case TA0IV_TAIFG: break;
default:break;
}
}
问题:为什么上面可以直接读取前面8次的参考电压值,中间不需要延时,可以在计数清零后,进入中断。
//-----测量8次参考电阻值-----
if(REF_Mreasure_Ready<8) // 判断是否继续测量参考电阻值
{
Slope_Measure_REF(); //测参考电阻值
R_REF_Sum=R_REF_Sum+R_REF; //累加电阻值
if(REF_Mreasure_Ready==7) R_REF=R_REF_Sum>>3; //测量完毕求出参考电阻的平均值
REF_Mreasure_Ready++; //测量次数累加
}
//-----得到参考电阻值后,开始不停的测量传感器电阻值-----
else
Slope_Measure_SENS(); //测完参考电阻才测传感器电阻
Charge_Ready=0; //测完一次,又该充电了
void Slope_Measure_REF()
{
Slope_Measure_Flag=0; //置全局变量标志,表明此次测量的是参考电阻
PORT_SENS_HZ; //传感器电阻所连IO高阻,去除对电路影响
TAR_CLEAR; //TA主时钟清零
PORT_REF_LOW; //开启参考电阻放电通道,开始计数测量放电时间
}
void Timer0_A3_init(void)
{
//----捕获模式----
TA0CTL = TASSEL_2+ID_0+MC_2; //连续计数开始
TA0CCTL1 = CM_1 + CCIS_1 + SCS + CAP +OUTMOD_0 + CCIE; //OUTMOD_0是Grace强行配送的,可不加
}
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIMER0_A1_ISR_HOOK(void)
{
switch (__even_in_range(TA0IV, TA0IV_TAIFG)) // Efficient switch-implementation
{
case TA0IV_TACCR1:
Slope_TA_CCI1B(); break;
case TA0IV_TACCR2: break;
case TA0IV_TAIFG: break;
default:break;
}
}
问题:为什么上面可以直接读取前面8次的参考电压值,中间不需要延时,可以在计数清零后,进入中断。