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.

[参考译文] TMS320F2.8069万:启用ADC中断的推荐步骤?

Guru**** 2586355 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/655738/tms320f28069-recommended-procedure-for-enabling-adc-interrupts

部件号:TMS320F2.8069万

我们的应用程序在任何给定时间运行8个左右不同的ISR例程(许多基于HR/ECAP边缘,其他基于ADC,其他基于计时器)。  在运行时,我需要快速打开或关闭一些。  可以接受因为中断只是被清除而不是被维修而"错过"中断,或者等待我重新启用以维修它。  我们知道,在某些情况下,我们的CPU会被中断处理占用,因此我们希望关闭不必要的ISR,以防止锁定。

对于基于HR/ECAP的员工,我可以毫无问题地这样做。  我遵循3.1 TRM.TRM第1.7 节中列出的步骤。

对于基于ADC的产品(INT1和INT2都指向同一ISR),我遇到了处理器偶尔锁定的问题。

ADC中断是否有类似的必需禁用过程,或者是否有任何其他可能的方法来清晰地处理此问题?  在PIE 1.2 上使用1.7 .3.1 中的过程时,我仍然看到此问题。  我假设这是一个错误的ISR矢量,它是由于中断信号流的一些问题导致的。

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    相同的过程应适用于所有PIE中断。 您能更详细地描述一下您看到的锁定情况吗? 您是否遇到了非法指令错误或其他问题?

    此外,您是否正在执行任何基于软件的中断嵌套/优先级划分?

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

    如果未处理ADC中断,则将设置ADCINTOVF标志。 根据我的经验,如果ADCINTOVF和ADCINTFLG位未被清除,ADCINT信号可能无法触发后续PIE中断。 您可以通过启用连续中断模式来避免标记服务要求。

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

    好的,这是合理的。  希望确保没有专门针对ADC中断的特定单独过程。

    我不完全确定锁定是什么。 在调试模式下,我的一些监视变量只会暂时闪存0xBAD。  Rude Retry只是将其放入内存中没有可用代码的某个区域(所以我假设只是错误的矢量或中断触发的某些内容,但在它跳转之前被禁用?)。

    过去,这种行为与我们的处理器过载和I2C中断服务速度不够快有关(因此我们的另一个控制器看到"通信错误"并重置所有内容)。  它可能实际上已被锁定或花费了太长的时间。  我将禁用另一个控制器的重置,并查看我是否获得不同的调试行为。

    我们正在使用基于软件的中断优先级,但允许中断ADC ISR的两个中断当前未运行。

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