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.

[参考译文] CCS/MSP430FR2311:ADC 中断服务例程

Guru**** 2618835 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/677496/ccs-msp430fr2311-adc-interrupt-service-routine

器件型号:MSP430FR2311
void initadc (void){
//配置 ADC10
ADCCTL0 |= ADCSHT_7 | ADCON; // ADC 采样保持时间= 192个周期、ADC ON 位被置位
ADCCTL1 |= ADCSHP | ADCCONSEQ_1; //采样保持脉冲模式选择、Clk = ACLK
ADCCTL2 |= ADCRES; //10 -位分辨率
ADCIE |= ADCIE0; //中断使能
ADCMCTL0|= ADCINCH_0 + ADCINCH_1 + ADCINCH_3| ADCSREF_1;

PMMCTL0_H = PMMPW_H; //解锁 PMM 寄存器
PMMCTL2 |= INTREFEN_0; //禁用内部基准
_DELAY_CYCLES (10); //基准趋稳延迟
}






// ADC 中断服务例程
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=ADC_vector
__interrupt void ADC_ISR (void)
#Elif defined (__GNU__)
void __attribute__(interrupt (interrupt (ADC_vector)
#else
)#error!
#endif
{
switch (__evo_in_range (ADCIV、ADCIV_ADCIFG))
{
案例 ADCIV_NONE:
中断;
ADCIV_ADCOVIFG 案例:
中断;
案例 ADCIV_ADCTOVIFG:
中断;
ADCIV_ADCHIIFG 案例:
中断;
ADCIV_ADCLOIFG 案例:
中断;
ADCIV_ADCINIFG 案例:
中断;
案例 ADCIV_ADCIFG://通道5
ADC_SM[索引]= ADCMEM0;
DONE = 0;
索引++;
LOOP = 1;
if (索引>=50)
{
索引= 0;
LOOP = 0;
DONE = 1;
//__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits); //退出 LPM0
__no_operation();
}
中断;
默认值:
中断;
}
} 

我正在尝试从 A0、A1和 A3获取 ADC 读数、我无法确定这与 ADC 服务例程中对应的通道。 这是我的中断例程、我的 ADC 设置为从不同的通道或同一个通道读取。 我只需要能够区分我要从哪个引脚获得它。谢谢。


工具/软件:Code Composer Studio

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    > ADCMCTL0|= ADCINCH_0 + ADCINCH_1 + ADCINCH_3| ADCSREF_1;
    ADCINCH 不是位矢量、而是整数。 它指示要从中进行倒计数的(起始)通道编号。 如果(CONSEQ=1)您设置 ADCINCH_4、它将按该顺序对4、3、2、1、0进行采样(另请参阅 SLAU45G、图20-11)。

    如果您读取 ADCINCH 字段、则表示"当前"通道编号、但这实际上意味着(CONSEQ=1)接下来将执行的通道(图20-11中的"x"值)。 您可以将1添加到这个值(对于 ADCINCH_4为模数(4+1))、以获得与 ADCMEM0中采样相对应的通道。 (也可以在单独的索引变量中对模数(4+1)进行计数、但如果您错过了模数、您将永远处于关闭状态。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    上面的小错误:我想到的是 CONSEQ=3;如果 ADCINCH 读出为0、则表示 CONSEQ=1、这种说法不明确。

    我建议您使用 CONSEQ=3 (SLAU45G、图20-15)。 如果 MSC=0 (我建议 FR2x ADC 使用该值)、它的作用将非常类似于 CONSEQ=1、而不会产生 ADCINCH 模糊性。