工具/软件:Code Composer Studio
您好!
我使用的是 F28069 MCU
我需要在 ePWM1的第5个事件触发时生成中断信号。 我知道我可以将 事件触发器的预分频器更改为第1、第2或第3个事件。 但是、我如何才能使它适用于第四个或第五个事件?
谢谢你
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.
工具/软件:Code Composer Studio
您好!
我使用的是 F28069 MCU
我需要在 ePWM1的第5个事件触发时生成中断信号。 我知道我可以将 事件触发器的预分频器更改为第1、第2或第3个事件。 但是、我如何才能使它适用于第四个或第五个事件?
谢谢你
科迪的好地方!
实际上、我现在要做的是通过在 PWM ISR 中添加计数器来生成每 n 个事件的软件中断。 但问题是、这种方法会占用额外的处理周期、这对于我的应用至关重要(清除中断标志、确认、 然后进行计数并检查是否发生了第6个事件)、即使在提升软件中断标志和启动软件 ISR 之间存在延迟、我也不知道产生此延迟的原因。 以下是我的代码的一部分:
中断空 epwm1_ISR (空)
{//清除此计时器的 INT 标志
EPwm1Regs.ETCLR.bit.INT = 1;
//确认此中断以接收来自组3的更多中断
PieCtrlRegs.PIEACX.ALL = PIEACK_Group3;
//计数周期以更新控制
cycle_counter++;
如果(cycle_counter = max_cycle+1)
{
//设置软件 INT 标志 INT4.4
PieCtrlRegs.PIEIFR4.bit.INTx4 = 1;
cycle_counter = 1;
}
}
中断 void Software_ISR (void)//主中断函数、外部循环是全局状态机
{
IER |= M_INT3;
PieCtrlRegs.PIEIER3.bit.INTx1 = 1;//通过调整 PIEIER2来设置组优先级以允许 INT3.1中断当前 ISR
PieCtrlRegs.PIEACK.ALL = 0xFFFF;//启用 PIE 中断
asm (" NOP");//等待一个周期
EINT;
**软件 ISR 代码
提示
}
因此、我更希望有一个硬件解决方案可以节省一些处理时间。
根据您生成另一个频率较低的 PWM 的建议。 嗯、对于我的应用、PWM 周期经常突然变化、所以我不能仅仅依靠通过设置周期来对齐两个 PWM。 我想以某种方式将它们同步在一起、例如、第二个 PWM 的零点与第一个 PWM 的第二个零点同步、因此无论第一个 PWM 的周期发生什么变化、我都可以保证每6个零点的 INT
您对如何实现这一目的有什么想法吗?
谢谢你
Ahmed
编辑于5/4/18 10:25 CST
我回复得太快了、很快就回答了您对 Vasudha 的第一次回复:如果启用了同步脉冲、则每个周期都会出现... 有人使用 SWSYNC 来解决这个问题、但我的理解是它并不像听起来那么重要。
_________________________________________
Ahmed、
ePWM 一章讨论了同步方案、它包含在时基子模块的小节(3.2.2)中。
您将需要配置一个 PWM 的 SYNCO 脉冲、并在下一个 PWM 的 SYNCI 信号上选择该信号。 您还需要使用 TBCTL.PHSEN 启用相位加载、否则脉冲将被忽略。 如果需要、TBPHS 可被用于应用一个相移。
在测试系统时、我建议您有意添加相位偏移、然后对其进行校正、以确保正确设置同步链。
所有这些功能以及更多功能的完整详细信息可在先前链接的 TRM 中找到。
此致、
Cody
Ahmed、
如果您在使用变频 PWM 时需要每6个周期中断一次、我可以看到两种实现这一目的的方法。
这有道理吗?
此致、
Cody