大家好、
我正在尝试使用我的电机控制代码应用 eQEP 函数。 我目前正在研究示例代码 example_2833xEqep_pos_speed。
在此代码中、单位计时器 为10ms、但我的控制周期为0.1ms。 我可以通过某种方式更改单位计时器以获得更高的精度吗?
也是如此。 速度和角度计算是由 ePWM 中断驱动的、但我不确定中断周期是多少。 它能否与我的控制器同步、这意味着周期为0.1ms。 我附加了下面的 ePWM 设置代码。
#include "DSP28x_Project.h"//器件头文件和示例 include 文件
#include "example_posspeed.h"//特定的 include 文件示例
#IF (CPU_FRQ_150MHz)
#define CPU_CLK 150e6
#endif
#IF (CPU_FRQ_100MHz)
#define CPU_CLK 100e6
#endif
#define PWM_CLK 0 // 5kHz (300rpm) EPWM1频率。 频率 可以在此处更改
#define SP CPU_CLK/(2*PWM_CLK)
#define TBCTLVAL 0x200E //向上向下计数、时基= SYSCLKOUT
void initEpwm()
{
EPwm4Regs.ETSEL.All=0x0A;// PRD 上的中断
EPwm4Regs.ETPS.All=1;
EPwm4Regs.ETFLG.All=0;
EPwm4Regs.ETCLR.All=0;
EPwm4Regs.ETFRC.All=0;
EPwm4Regs.PCCTL.All=0;
EPwm4Regs.TBCTL.ALL=0x0010+TBCTLVAL;//启用定时器
EPwm4Regs.TBPRD=SP;
}
谢谢,
杨善