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.

[参考译文] MSP430FR5949:ADC/定时器错误行为

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/856907/msp430fr5949-adc-timer-misbehavior

器件型号:MSP430FR5949

尊敬的团队:

我在我的项目中使用 MSP430FR5949/47。 我的应用是读取模拟数据、并根据另一侧通过串行端口的请求将其发送到外部媒体。

我每50uS 有一个 timerA3 ISR (计时器时钟为 SMCLK 初始化为8MHz)和 SCI 接收 ISR。

初始化的 ADC、以一次转换单个通道。 在计时器中断中、轮询 ADC 转换标志并读取结果。

接收到另一端的数据请求后,我正在串行端口上传输数据。

在某些卡中、另一个终端设备会在一段时间后接收免费数据。

在这里、我的疑问是:

一段时间后、ADC 是否停止转换? 因此、不会设置 ADC 标志、数据也不会加载到我的内部变量中

由于 TimerA3的优先级与串行 ISR 相比最低、因此由于重复的串行 ISR、计时器 ISR 不会被触发

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

    您好、Sai、

    您可以在调试模式下运行、以便在问题发生时(终端设备正在接收免费数据)找到程序的执行情况、并观察相关寄存器、便于分析。

    此致

    Johnson

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

    尊敬的 Johnson:

    感谢您的回复

    仅在现场的某些卡中发现问题。

    无法在字段中使用调试器。

    从器件勘误表 ADC42:

    在手动触发模式下 、需要通过在开始新的转换之前首先检查 adc12BUSY 位来确保每个 ADC 转换

    在这里、我一次使用单通道、 在检查 ADC12_B_IFG0后、只将结果加载到我的本地变量中、并开始下一个通道的转换、而不检查 ADC12BUSY 标志。  在数据表中、当序列、采样或转换处于活动状态时、ADC12BUSY 将被置位。  读取之前的结果后、我将触发下一个通道。

    1。即使在 ADC12_B_IFG0被置位后、ADC12BUSY 位是否有可能保持置位

    2.在单通道手动触发模式下开始下一次采样和转换之前、是否需要确保 ADC12BUSY 位清零

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

    您好、Sai、

    作为《勘误表》中 ADC42的说明、

    "在前一个转换结束之前触发连续 ADC 时、ADC 停止转换"

    受影响的 ADC 模式:通道序列、单通道重复和通道重复序列。

    如果您将 ADC12CONSEQx 寄存器设置为00 (单通道、单次转换)、则此勘误表不会影响该结果。

    对于您的第一个问题:

    ADC12BUSY 在有效采样或转换操作中被置位、而 ADC12_B_IFG0将在完成此转换时被置位、因此 您描述的情况不会发生。

    第二个问题:

    您需要检查 ADCBUSY 位是否为低电平、然后开始下一次采样和转换。 使用这种方法来确保 ADC 转换的正确性和准确性。

    此致

    Johnson

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

    您好、Sai、

    我已经七天没有听到您的声音,因此我假设您能够解决您的问题。 如果情况并非如此,请单击“这无法解决我的问题”按钮,并使用更多信息回复此主题。 如果此主题锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。

    此致、

    Johnson

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

    之前、我的软件中有两个中断。 一个是计时器 ISR、另一个是 sci 接收 ISR。 一段时间后,计时器 ISR 不会被触发。 从器件数据表中可以看出、与计时器 A3 ISR 相比、sci ISR 的优先级最高。 因此、由于重复的 sci 接收 ISR、可能会有计时器 ISR 无法被处理的情况。 然后、删除了 sci 接收 ISR 并使用了计时器 A3 ISR。 在我的应用中、需要读取8个 ADC 通道、并且需要根据主器件的请求发送数据。  软件流程如下、在定时器 ISR 中、根据 adcifg 触发单个 ADC 通道、读取结果并触发下一个通道。 在读取8个通道的结果后、这将持续到8个通道、从而触发第一个通道。 应主控 I.E.的请求、在定时器 ISR 中轮询 scirxflag、当标志被置位时、向主控器发送数据。 在某些卡中、根据主器件的请求发送免费数据。 我怀疑为什么 adcifg 没有被设置。 如果设置了 adcifg 标志、则转换后的值将加载到内部缓冲器中、并且免费数据不会发送到主器件。

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

    您好、Sai、

    您是否意味着在启用 ADC 采样计时器中断时 ADCIFG 不会置位?

    您能否提供有关此问题的一些详细信息?

    例如: 与定时器/ADC 中断和配置相关的代码。

    此致

    Johnson

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

    您好、Sai、

    您的问题如何?

    此致

    Johnson