请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430G2553 我编写一个程序、该程序应将来自 A6 (引脚1.6)的信号数字化。 在进行90次采样后、我想检查电池状态。 为此、我将 INCH_x 更改为 A7 (引脚1.7)。
我的问题:在 ADC 停止后(复位 ENC 和 ADC10SC)、INCH_x 更改为 A7并重新启动(设置 ENC 和 ADC10SC)、ADC 不再被触发。 我调试了程序、引脚1.7的第一次转换工作正常。 但之后再也不会进入 ISR。
以下是我的代码:
#pragma vector=ADC10_vector
__interrupt void ADC10_ISR (void){
反 ISR++;
//标准转换
if (counterISR < 90){
tempRaw = ADC10MEM;
serial_write_int (tempRaw);
}
//发送数据并更改 ADC 的输入通道
否则、如果(counterISR = 90){
tempRaw = ADC10MEM;
serial_write_int (tempRaw);
stoppadc ();
ADC10CTL1 = INCH_7;
startadc ();
}
//不发送数据,只需添加值
否则、如果(90 <反 ISR &&反 ISR < 100){
tempRaw = ADC10MEM;
batteryLevel += tempRaw;
}
否则、如果(counterISR =100){
tempRaw = ADC10MEM;
batteryLevel += tempRaw;
int batAmage = batteryLevel / 10;
serialWrite ('!');
serialWrite ('!');
serial_write_int (batAseage);
stoppadc ();
ADC10CTL1 = INCH_6;
startadc ();
反 ISR = 0;
}
}
void startADC (void){
ADC10CTL0 |= ENC + ADC10SC;
}
void stoppADC (void){
ADC10CTL0 &=~ENC;
ADC10CTL0 &=~ADC10SC;
}
void configADC (void){
P1SEL = BIT6 + BIT7;
ADC10CTL0 = 0;
ADC10CTL0 = ADC10SHT_3 + SREF_1 + REFON + ADC10ON + ADC10IE;
ADC10CTL1 = INCH_6 + SHS1 + CONSEQ1;
ADC10AE0 = BIT6 + BIT7;
}