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.

[参考译文] TMS320F28377D-ADC:软件触发的 EP 中断停止

Guru**** 2562120 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1563851/tms320f28377d-ep-sw-triggered-adc-interrupts-stop

器件型号:TMS320F28377D-ROM EP


工具/软件:

您好:

我 EP 在产品中使用的是 TMS320F28377D-ROM。
在我的固件中、ADC 从 2 个源获取 SOC:一个通过 ePWM 模块(PWM 同步中断)、另一个通过 SW 触发的 SOC(强制 SOC 操作)。 它们分布在所有 ADC 模块 (A、B、C、D) 中。

PWM 触发的 SOC 每 50us 发生一次、其 ISR 持续大约 3us。
我每 300ms 通过软件触发一次不同的 SOC(在前一个 SOC 的 ISR 完成之前、我不会触发下一个 SOC)。   执行与 SOC 对应的 ISR 函数。  但是、经过一段时间后、我没有收到 触发 SOC 的 ISR(它不是特定的 SOC,而是来自我的序列的任何一个)、我的序列一直卡住(这意味着我几乎永远不会获取该 SOC 的 ISR)。 PWM 触发的 ISR(甚至来自同一模块的 ISR)不会在这里停止。

根据勘误表(如果未设置 INTxCONT(继续中断模式)、链接/第 12 页/中断可能会停止)、我知道当 某个其他中断将 INTFLG 置为有效时、可能会发生这种情况。

我的上述理解是否正确?

我认为勘误表中所述的条件、如果出现软件触发的 ISR、也可能发生 PWM 同步的 ISR。 但是、我根本没有为 PWM 同步的 ISR 观察到此错误。
勘误表中提到的条件是否仅适用于 SW 触发的中断而不适用于 PWM 同步的中断、或者 它是否适用于所有 ADC 中断?

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

    您好:

    对 ADC SOC 使用两个触发源并不常见、因为这可能会引起这些问题。 您需要同时使用这两个触发器是否有具体原因?

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

    斯特万·杜拉斯科维奇 

    感谢您的答复、

    我的应用要求在 PWM 信号的特定时间触发模拟感测;因此是 PWM 触发的 ADC。
    其他模拟通道不像上面那么重要、因此它们通过固件(通过强制 SOC 运行)触发;因此是通过 SW 触发的 ADC。
    (我希望这能回答您的问题)

    在调试 SW 触发器时、我无意中发现了微控制器的限制(以前没有,否则我本想避免)。

    我有一个类似的观察,如我上面引用的勘误文件中的文章所述,即.,在我重试强制 SOC 操作(在陷入没有 ISR 后),一切正常(我能够接收 ISR 和一切)。
    我问这个问题的目的是、通过重试、这是否有可能再次卡住? 此外、PWM 同步的 ISR 是否不受此影响并且具有更高的可靠性(在本例中为)?

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

    尊敬的 Keyur:

    要解决此问题、请执行以下操作:

    1.使用继续中断模式防止 ADCINTFLG 阻止其他 ADC 中断:ADCINTSEL1N2[INT1CONT]= 1;ADCSELINT1N2[INT2CONT]= 1;ADCINTSEL3N4[INT3CONT]= 1;ADCINTSEL3N4[INT4CONT]= 1;

    2.确保在下一次发生 ADC 中断之前、始终有足够的时间为 ADC ISR 提供服务并清除 ADCINTFLG、以避免出现这种情况。

    清除 ADCINTFLG 时、检查 ISR 中是否存在溢出情况。 在写入到 ADCINTFLGCLR 后立即检查 ADCINTOVF;如果已设置、则再次写入 ADCINTFLGCLR 以确保 ADCINTFLG 已被清除。 若再设置 ADCINTOVF 寄存器、则表示已丢失 ADC 转换中断

    如果这对我有帮助、请告诉我。

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

    斯特万·杜拉斯科维奇 

    您好、

    第三点可能会有帮助,谢谢。 我在调试此问题时也发现了此方法。

    但是、我想知道是否可以为 PWM 触发的 ADC 信号重新创建这种相同的行为。 在我与控制器的有限工作中、我 还没有观察到、但您能否确认?

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

    您好:

    F28377D 勘误表中     ‑的条件(“如果未设置 INTxCONT、中断可能会停止“)不限于软件‑强制 SOC–它适用于任何 ADC 中断、无论转换是由 ePWM‑触发的 SOC 还是由 Force SOC 命令启动。  如果  在写入 全局‑清除 寄存器 (INTGLFCLR) 时清除了继续‑至‑μ s 中断位 (INTxCONT) 并且 ADC 中断标志 (ADCINTFLG) 仍置为有效、则该标志可能会变为“锁存“、并且后续的 ADC 中断会被阻止、直到再次清除该标志。 使用 PWM‑触发转换也会发生同样的情况;您只是还没有达到时序角。