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.

[参考译文] TMS320F28379D:用用户软件中断嵌套中断

Guru**** 2589265 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1104307/tms320f28379d-nesting-interrupts-with-the-user-software-interrupt

器件型号:TMS320F28379D

您好、TI、

我正在为 C2000 DSP 开发极简的 RTOS、我对用户嵌套中断有疑问。

我的任务是使用 用户中断触发的、调度程序使用 Timer1中断。

我说过、在一段时间内、Timer1中断没有到达 CPU、Timer1周期不受尊重。当任务需要更多的时间使用用户中断时、会出现问题。

重要的是、用户中断屏蔽外部计时器中断、

我的问题是、如果我激活嵌套中断、在用户中断运行时、Timer1中断是否可以被触发?

计时器周期为200us、在本示例中、由于任务负载较低、因此情况良好。

0是定时器1中断中的切换 GPIO。

1、2和3是3个任务,1、2和3个时间周期为1*200us。

节拍1:优先级1周期1*200us

节拍2:优先 级2周期2*200us

章次3:优先 级3期3*200us

当任务负载变得更高时、

此致、

提前感谢您

S.Tarik

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

    您好!

    我将对此进行深入研究、并很快返回给您。

    谢谢
    Vasudha

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

    您好!

    谢谢!

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

    您好!

    我需要更多信息来了解该问题。 如何在应用程序中触发用户中断? 如何使用用户中断触发任务?

    谢谢
    Vasudha

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

    Vasudha、您好!

    是的、为什么不呢!

    使用 asm ("   trap #24")指令触发用户中断。

    我有影响 到中断矢量的函数任务地址。

    当我执行 TRAP 指令时、函数被调用、但不嵌套计时器中断被屏蔽。

    在某些情况下、使用用户 ISR 执行的任务需要更多的时间、并且计时器中断没有到达 CPU。

    一个问题、德州仪器 DSP 中的嵌套意味着在中断内部我们授权执行另一个中断?

    谢谢你。

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

    还有一件事、

    我一直在向项目中添加嵌套中断。

    在用户中断中、我添加了 EINT 指令以允许执行计时器中断。

    我还向计时器1中断服务例程添加了此代码。

    IER &= MINT13;//设置"全局"优先级
    EINT;

    在 F2837xD_SWPrioritedIsrLeeles.h 中、我将 Timer1设置为更高的中断。

    #define	INT1PL      0        // Group1 Interrupts (PIEIER1)
    #define	INT2PL      0        // Group2 Interrupts (PIEIER2)
    #define	INT3PL      0        // Group3 Interrupts (PIEIER3)
    #define	INT4PL      0        // Group4 Interrupts (PIEIER4)
    #define	INT5PL      0        // Group5 Interrupts (PIEIER5)
    #define	INT6PL      0        // Group6 Interrupts (PIEIER6)
    #define	INT7PL      0        // Group7 Interrupts (PIEIER6)
    #define	INT8PL      0        // Group8 Interrupts (PIEIER6)
    #define	INT9PL      0        // Group9 Interrupts (PIEIER9)
    #define	INT10PL     0        // Group10 Interrupts (PIEIER6)
    #define	INT11PL     0        // Group11 Interrupts (PIEIER6)
    #define	INT12PL     0        // Group12 Interrupts (PIEIER6)
    #define	INT13PL     1        // XINT13
    #define	INT14PL     0        // INT14 (TINT2)
    #define	INT15PL     0        // DATALOG
    #define	INT16PL     0        // RTOSINT

    仍然有问题、如果清除 INTM、我无法中断用户中断事件。

    用户中断不能用 Timer1中断来停止、在进入高优先级中断前是否需要进行任何手动运行环境?

    这是中断汇编代码:

    嵌套在调试模式中是否有限制?

    此致、

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

    您好!

    您是否在您的案例中的用户中断 ISR (即任务函数)中添加了 EINT? 上面附加的汇编代码用于哪个 ISR? 中断关键字是否与任务函数一同使用?

    谢谢
    Vasudha

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [~用户中断 ISR 中的 EINT、即您的案例中的任务函数[引用 userid="243249" URL"μ C/support/microcontrollers/C2000-microcontrollers-group/CC2000/f/C2000-microcontrollers-forume/1104307/tms320f28379d-besting-interrupts-wing-the-user-software-interrupt/4094186#4094186"]

    是的、没错。

    [引用 userid="243249" URL"~μ C/support/microcontrollers/C2000-microcontrollers-group/C2000/f/C2000-microcontrollers-forum/1104307/tms320f28379d-besting-interrupts-wing-the-user-software-interrupt/4094186#4094186"]上面附加的汇编用于哪个 ISR?

    这是用户中断的汇编代码。

    [引用 userid="243249" URL"~μ C/support/microcontrollers/C2000-microcontrollers-group/C2000/f/C2000-microcontrollers-forum/1104307/tms320f28379d-besting-interrupts-wing-the-user-software-interrupt/4094186#4094186"]是否与任务函数一同使用的中断关键字?

    是的、使用了__interrupt 关键字并调用函数。

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

    您好!

    在应用程序中、此陷阱到用户中断从何处触发? 通过陷阱触发的中断将是一个不可屏蔽的中断、因此不能被 INTM 阻止。 C28x 内核立即批准这种类型的中断并分支到相应的 ISR。 由于应用程序中有3个不可屏蔽中断、定时器 ISR 可能会因其中的任何一个而中断、并导致上述行为。

    谢谢
    Vasudha

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

    是的、我同意您的观点、

    不可屏蔽并不意味着不可中断、通过 TI 优先级示例、我可以在执行用户中断时从 PIE 分支另一个中断。

    我必须在用户内部启用中断、然后会发生中断。

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

    您好!

    是的、一旦在用户中断内部启用了中断、定时器中断应该能够中断它。 您是否能够解决此问题?

    谢谢
    Vasudha

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

    您好!  

    我的项目在使用诸如 TI 的嵌套驱动程序时遇到了一些问题、但我无法理解为什么在触发计时器中断时无法从用户中断中退出。

    因此,我想尝试一下这个...

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

    您好!

    我还会在最后尝试这个、然后返回。

    谢谢
    Vasudha

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

    您好!

    您是否对此胎纹褶皱有任何更新?

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

    不,我还没有尝试。 我将很快就此向您回复。