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.

[参考译文] MSP430FR59941:无法写入 ADC12CTL0

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/954174/msp430fr59941-unable-to-write-to-adc12ctl0

器件型号:MSP430FR59941

尊敬的 Sirs:

  我正在使用 ADC12B A/D 转换器来测量温度传感器。  它足够快、无需在中断下运行。  它运行一段时间、然后开始读取0。

初始化似乎无法写入 ADC12CTL0寄存器。  功能如下:

//只要 ADC12ENC=0,就配置 ADC12
ADC12CTL0 &=~ADC12ENC;//将 ADC12ENC 设置为0                                        在此指令之后、ADC12CTL0读取0x800

ADC12CTL0 =(ADC12ON + ADC12SHT0_2);//打开 ADC12,设置采样时间               在此说明之后、ADC12CTL0仍读取0800
ADC12CTL1 = ADC12SHP;//使用采样计时器。 ADC12SHP 是采样保持脉冲
ADC12CTL2 = ADC12RES_2;// 12位转换结果


ADC12MCTL0 = ADC12INCH_15 | ADC12VRSEL_4;// VR+= VeREF+(外部)且 VR-=AVss、INCH_15 =A15、INCH_12=A12 P3.0
//ADC12MCTL0 = ADC12INCH_30 | ADC12VRSEL_4;//温度传感器为 x1E=30d
ADC12CTL0 |= ADC12ENC;//启用转换。

disable_interrupts ();
ADC12CTL0 |= ADC12SC;//开始转换软件触发
while (!(Stat & BIT0))//始终为 BIT0
STAT=ADC12IFGR0;;
ADCvar = ADC12MEM0;//读取转换结果(显然第一个 conv 进入 mem0)
__no_operation();//在此设置断点

enable_interrupts ();
返回 ADCvar;//返回 bat V

希望您能看到这有什么问题!

谢谢

John Moore

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

    > while (!(Stat & BIT0)//always BIT0
    >Stat=ADC12IFGR0;;

    如何(以及在何处)声明 Stat? 就在这个片段中、您可能会检查过时状态。 引起关注的原因是 ADC42 [参考勘误表(SLAZ681M) p 4],它只适用于 CONSEQ>0,但谁知道?

    我可能会更像这样对它进行编码:

    >执行{Stat=ADC12IFGR0;}while (!(Stat & BIT0));//始终为 BIT0

    ----

    0x800看起来是奇数。 您的程序中是否有任何设置 SHT0=8的内容?

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

    Bruce:

      STAT 在调用堆栈上声明、但它可能过时、因为存在与另一个 ADC 读数的串扰!

    仍在检查对 adc12ctl0的写入。

    John

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

    大家好、Bruce:

      由于某种原因、调试器无法读取 ADC12CTL0。  因此、您必须查看调试屏幕顶部的寄存器、其中显示的是正确的。

    谢谢

    John

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

    好的、我得到它- 0x800是 ADC12CTL0的地址(我没有想到)。  

    现在情况有什么不同吗?

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

    布鲁斯:

    ADC 现在工作良好。

    谢谢、

    John