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.

[参考译文] SM320F28335-EP:我在 F28335上使用自由 Modbus、如果我不想中断 ADC ISR、我应该如何处理"enter_critical _section"如果我不想中断 ADC ISR?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1034202/sm320f28335-ep-i-am-use-free-modbus-on-f28335-what-should-i-do-with-enter_critical_section-if-i-don-t-want-adc-isr-be-interrupted

器件型号:SM320F28335-EP

您好!

我在 DSP F28335上使用免费的 Modbus。

DSP 项目中有一些不想被中断的关键中断(ADC ISR)、 我应该怎么做  

"#define ENTER_critical SECTION () "
"#define EXIT_CRITICE_SECTION ()  "

谢谢!

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

    默认情况下、当您在 C28x 上进入 ISR 时、中断被禁用、因此除非您有意在 ISR 中采取某些操作来重新启用中断、否则您不需要担心不必要的中断嵌套。

    您是否在问您应该如何定义这些关键段宏? 如果您只是在全局启用/禁用中断、我希望您只能使用 EINT 和 DINT。

    惠特尼

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

    实际上,如果我定义  enter_critical section() DINT,  DSP 处理  sci 通信将花费几百 us 的时间。

    应每50us 执行一次的 ADC 中断被强制推迟、并且在 ADC 中断中执行的 PWM 更新可能会带来一些安全风险。 所以如果我不想这种隐藏的危险、也不想中断 ADC 中断、我该怎么办?

    顺便说一下,我 有一个长期困扰我的问题,关于 ePWM:

    如上所示、高级表示 ADC ISR、如果我在此 ADC ISR 中的每个周期更新 PWM 寄存器值、并且我使用 PWM 比较影子寄存器、 C 代码就像这样:

    中断空 ADCISC (空)

      …

      EPwm1Regs.CMPA.half.CMPA = A1;
      EPwm4Regs.CMPA.half.CMPA = A2;
      EPwm2Regs.CMPA.half.CMPA = B1;       ///<--------------------
      EPwm5Regs.CMPA.half.CMPA = B2;
      EPwm3Regs.CMPA.half.CMPA = C1;
      EPwm6Regs.CMPA.half.CMPA = C2;

      (笑声)

    是否存在这样的可能性:  当 DSP  完成 “EPwm2Regs.CMPA.half.CMPA = B1;”后 ,PWM 将所有影子寄存器的值传输到 PWM 操作寄存器,这会导致“EPwm2Regs.CMPA.half.CMPA”的值成为新周期计算的结果,而“EPwm5Regs.CMPA.CMPA”的值仍是前一半周期计算结果。 如果这两个 PWM 控制同一电桥的上管和下管,是否可以 直接连接上桥和下桥?

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

    正如我说过的、除非您在 ISR 中放入代码以重新启用中断、否则在 C28x 上 ISR 默认不会被中断。 您的意思可能是 ADC ISR 的执行被 enter_critical SECTION ()延迟?

    如果希望 ADC ISR 不受 enter_critical section()影响,则可以清除 IER 寄存器中除与 ADC 中断对应的位外的所有位,然后在退出临界区时恢复原始 IER 值,从而禁用更具针对性的中断。 您需要在 ADC ISR 中小心谨慎、不要接触任何需要受临界区保护的内容。 您的想法是这样吗?

    对于您的 ePWM 问题、请创建一个单独的线程、以便我们将其分配给我们的 ePWM 专家之一。

    惠特尼

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

    非常感谢! 这 解决了我的问题!