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.

[参考译文] MSP430F5438A:ADC12存储器寄存器

Guru**** 2589280 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/719806/msp430f5438a-adc12-memory-registers

器件型号:MSP430F5438A

您好!

我正在尝试对内部温度传感器执行 ADC 读取并将其存储在存储器8中、但是存储器8的中断标志永远不会触发 、只在存储器0上工作。 如果我分别将 ADC12SHT1_8、ADCMCTL8和 ADC12IE8替换为 ADCSHT0、8、ADCMCTL0和 ADC12IE0

这是我的初始化代码:

/*初始化共享基准模块*/
REFCTL0 |= REFMSTR + REFVSEL_0 + REFON;//启用内部1.5V 基准

/*初始化 ADC12_A */
ADC12CTL0 = ADC12SHT1_8 + ADC12ON;//设置采样时间
ADC12CTL1 = ADC12SHP; //启用采样计时器
ADC12MCTL8 = ADC12SREF_1 + ADC12INCH_10;// ADC 输入通道 A10 =>温度感测
ADC12IE = ADC12IE8; // conv result-ADCMEMO 上的 ADC_IFG

_DELAY_CYCLES (75); //延迟以使 Ref 稳定
//基于默认 DCO 频率。
//请参阅数据表以了解典型的趋稳情况
//时间。
ADC12CTL0 |= ADC12ENC;


和中断例程:

#if defined (__TI_Compiler_version__)|| defined (__IAR_systems_icc_)
#pragma vector=ADC12_vector
__interrupt void ADC12ISR (void)
#elif defined (__GNU__)
void __attribute__((interrupt (ADC12_vector)))) ADC12ISR (void

编译器#else 不支持!
#endif
{
switch (__even_in_range (ADC12IV、34))
{
case 0:break; //向量0:无中断
情况2:中断; //向量2:ADC 溢出
情况4:中断; //向量4:ADC 时序溢出
情况6: //向量6:ADC12IFG0
温度= ADC12MEM0; //移动结果,IFG 被清除
_BIC_SR_REGISTER_ON_EXIT (LPM4_BITS);//退出活动 CPU
break;
case 8:break;
case 10:break; //向量10:ADC12IFG2
大小写12:break; //向量12:ADC12IFG3
case 14:break; //向量14:ADC12IFG4
情况16:中断; //向量16:ADC12IFG5
情况18:中断; //向量18:ADC12IFG6
案例20:中断; //向量20:ADC12IFG7
案例22: //向量22:ADC12IFG8
温度= ADC12MEM8; //移动结果,IFG 被清除
_BIC_SR_REGISTER_ON_EXIT (LPM4_BITS);//退出活动 CPU
中断;
案例24:中断; //向量24:ADC12IFG9
大小写26:break; //向量26:ADC12IFG10
case 28:break; //向量28:ADC12IFG11
case 30:break; //向量30:ADC12IFG12
大小写32:break; //向量32:ADC12IFG13
case 34:break; //向量34:ADC12IFG14
默认值:break;
}
} 




ADC 读数是否可以分配给任何内存插槽、或者是否必须按顺序使用? 也就是说、如果内存0已被使用、我只能使用内存1?

谢谢、

Vlad

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

    用户指南第28.2.6节规定:

    CSTARTADDx 位定义用于任何转换的第一个 ADC12MCTLx。 如果转换模式是单通道或重复单通道、则 CSTARTADDx 指向要使用的单个 ADC12MCTLx。