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.

[参考译文] MSP430F5659:ADC_12's TI lib (v2.91.13.01)例程中可能存在错误

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1419758/msp430f5659-possible-bug-in-adc_12-s-ti-lib-v2-91-13-01-routine

器件型号:MSP430F5659

工具与软件:

我遇到了如何在 TI 库中实现 ADC12_a_disableConversions ()的问题(使用 v2.91.13.01)

请参见下图。 似乎"否则"  总是会被证明为真。

根据用户手册、只有当 ADC12CONSEQx = 00时(例如、单通道、单次转换)、'else if '才应变为真。 由于应用程序中的这个错误、我们可能会看到 WDT 重新启动。

谢谢!

Pradeep Patolia

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

    您可能会将 ADC12CONSEQ_3与其他内容相混淆。

    #define ADC12CONSEQ_0          (0x0000)       /* ADC12 Conversion Sequence Selec
    t: 0 */
    #define ADC12CONSEQ_1          (0x0002)       /* ADC12 Conversion Sequence Selec
    t: 1 */
    #define ADC12CONSEQ_2          (0x0004)       /* ADC12 Conversion Sequence Selec
    t: 2 */
    #define ADC12CONSEQ_3          (0x0006)       /* ADC12 Conversion Sequence Select: 3 */
    

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

    感谢 David 的快速回复。

    我想说-'else if'中的条件始终评估为 true、因此编译器甚至不会费心生成相应的汇编代码。 该"else if"被编译器视为"else"。

    ~(HWREG8 (baseAddress + OFS_ADC12CTL1_L)& ADC12CONSEQ_3)  --> 在这里、由于 ADC12CONSEQ_3定义 为0x06、因此该表达式始终求值为二进制1111xx1 (例如始终为非零值)、因此"else if"中的条件始终为 true。

    不应该像这样  

    否则、如果((HWREG8 (baseAddress + OFS_ADC12CTL1_L)& ADC12CONSEQ_3)= ADC12CONSEQ_0)

        //为了防止单通道单次转换的优先选项、我们必须这样做
        等待 ADC 内核完成转换
        while (adc12_a_isBusy(baseAddress ));

    }

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

    ~(HWREG8 (baseAddress + OFS_ADC12CTL1_L)& ADC12CONSEQ_3)

    啊、现在我看到了问题。 这应该使用逻辑反转"!" 而不是按位"~"。 相似但不同。

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

    感谢 David 的确认。

    我希望 TI 的人注意到这一点、并将在下一个版本的库中修复。

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

    尊敬的 Pradeepkumar:


    我将与我们的软件团队讨论、让他们知道您找到了什么。 非常感谢。


    此致、
    Diego Abad