Thread 中讨论的其他器件:SysConfig、 C2000WARE
大家好、我已经了解了多轴电机示例。 在每个 PWM 周期的中间有一个中断。 这对于以20kHz 的频率运行是可以的。
但是、我希望 PWM 以80KHz 的频率运行、但中断和 ADC SOC 应仅为20kHz。
我已经能够对中断进行计数、并且每4次只运行我的代码、但这并不理想。
您能否给我指出一个示例或功能、让我更好地做到这一点?
谢谢。
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.
大家好、我已经了解了多轴电机示例。 在每个 PWM 周期的中间有一个中断。 这对于以20kHz 的频率运行是可以的。
但是、我希望 PWM 以80KHz 的频率运行、但中断和 ADC SOC 应仅为20kHz。
我已经能够对中断进行计数、并且每4次只运行我的代码、但这并不理想。
您能否给我指出一个示例或功能、让我更好地做到这一点?
谢谢。
Ken 您好、
好消息! 4类 ePWM 内置了此功能、配置相对简单。 事件触发器子模块能够在 n 介于1和15之间的 n 个事件中执行一次 SOC 或中断。 如果您使用的是 SysConfig、则在 ePWM->事件触发->ADC SOC 触发器中、"SOCx 触发事件计数"以干净、快速且简单的方式完全符合您的需求。
如果您想手动调整寄存器、请使用"ePWM_setADCTriggerEventPrescale (...)" C2000Ware driverlib 中的函 数允许直接控制事件触发器预分频:SoC 预分频选择(ETPS[SOCPSSEL])寄存器和事件触发器转换启动预分频:SOCx Period2 (ETSOCPS[SOCxPRD2])寄存器。 名称较长、但基本而言;
请注意、这些功能也适用于 ET 的常规中断、而不仅仅是 SOC。
总是很乐意提供帮助、
Jason Osborn
感谢您的回复。
这是有道理的、但设置 EPWM_setADCTriggerEventPrescale 似乎没有任何变化。 我的 PWM 输出上有一个示波器、ISR 中有一个 GPIO 切换。 我可以看到每个 PWM 周期中的 GPIO 切换。
但是如果我更改这个值、它看起来确实起作用 了 ePWM_setInterruptEventCount (obj->pwmHandle[0]、4);
这有道理吗? 这是我遇到其他问题的迹象吗?
谢谢
Ken