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.

[参考译文] TMS320F28335:设置触发区中断和强制触发区中断

Guru**** 2563740 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/640348/tms320f28335-setting-up-trip-zone-interrupt-and-forcing-trip-zone-interrupt

器件型号:TMS320F28335
Thread 中讨论的其他器件:controlSUITE

您好!

我当前尝试在跳变区6上启用中断。 我想通过使用 TZFRC 寄存器强制执行中断来测试我的中断服务例程。 但是、当我尝试强制执行中断时、我的中断服务例程的调用不会像我所说的那样进行(我在 ISR 中将 GPIO 输出设置为1以验证服务例程是否实际被调用)。 当我在主循环中正常调用 TrippingHandler 时、数字输出设置为1。 但是、当我尝试设置 TZFRC 中的位时、数字输出保持为0、所以我猜我设置了一些寄存器是错误的?

下面是我用来设置中断的代码:

EALLOW;
EPwm6Regs.TZSEL.bit.OPTHT6=1;//启用 TZ6
EPwm6Regs.TZCTL.bit.TZA=2的一次性跳闸事件;//无反应/更改 TZ6的 TZ6跳闸;



//无响应/更改 TZ6的 EPZ6跳闸;tZ6 = TRIM.TZ6。//寄存器中断处理程序
IER IER|=BIT1;//启用中断2
EDIS; 

以下是 ISR 中的代码:

void TrippingHandler (void){
isTripset=true;
setoutput (true); //将数字输出设置为1
EALLOW;
EPwm6Regs.TZEINT.BIT.OST=0;//禁用 TZ6中断
EPwm6Regs.TZSEL.bit.OSHT6=0;//禁用 TZ6操作
EPwm6Regs.TZCLR.bit.K2=1;//
清除 PIDE.CLART0;

//将 PECT.CLK2= 0位设置为确认中断 

我使用以下代码强制中断:

EALLOW;
EPwm6Regs.TZFRC.bit.OST=1;
EDIS; 

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

    也许我应该补充一点、当我设置时:

    EPwm6Regs.TZEINT.BIT.OST=1; 

    TZFLAG 已设置、因此我想 ePWM 模块寄存器已正确设置、但其他寄存器存在问题。

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

    Denis、

    我首先要注意的是、您在 ISR 前面缺少了"interrupt"关键字。 您应该看看如何在 controlSUITE 中编写中断驱动代码! 我希望看到类似于"interrupt void ISR_name void"的内容。

    其次、您应该检查是否设置了 TZFLG.OST。 另一个值得检查 的优点是、您启用了整个中断链、如图78所示。 系统控制和中断用户指南的"概述:使用 PIE 块的中断多路复用" 对该链进行了很好的描述。

    此致、
    Cody