Thread 中讨论的其他器件:controlSUITE
尊敬的所有人
我尚未测试下面的代码。
有人可以说它是否起作用吗? 请注意两种情况
可以检测到任何错误吗?
高电平有效、互补输出、递增计数、PWM4、5、6、以生成三相正弦信号
(二
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;
EDIS;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm4Regs.TBPRD = 4500;//设置定时器周期
EPwm4Regs.TBPHS.Half.TBPHS = 0x0000;//相位为0
EPwm4Regs.TBCTR = 0x0000;//清除计数器
//
//设置 TBCLK
//
EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;//向上计数
EPwm4Regs.TBCTL.bit.PHSEN = TB_DISABLE;//禁用相位加载
EPwm4Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm4Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//时钟与 SYSCLKOUT 的比率
EPwm4Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm4Regs.CMPCTL.bit.SHDWAMODE = CC_SHADODE;//每0加载一次寄存器
EPwm4Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm4Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm4Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
//
//设置比较
//
EPwm4Regs.CMPA.half.CMPA = 0;
//
//设置操作
//
EPwm4Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm4Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm4Regs.AQCTLB.bit.ZRO = AQ_CLEAR;
EPwm4Regs.AQCTLB.bit.CAU = AQ_SET;
//
//有源互补高 PWM -设置死区
//
EPwm4Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE;
EPwm4Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
EPwm4Regs.DBCTL.bit.IN_MODE = DBA_ALL;
EPwm4Regs.DBRED = 90;
EPwm4Regs.DBFED = 90;
EPwm5Regs.TBPRD = 4500;//设置定时器周期
EPwm5Regs.TBPHS.Half.TBPHS = 0x0000;//相位为0
EPwm5Regs.TBCTR = 0x0000;//清除计数器
//
//设置 TBCLK
//
EPwm5Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;//向上计数
EPwm5Regs.TBCTL.bit.PHSEN = TB_ENABLE;//禁用相位加载
EPwm5Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm5Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm5Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//时钟与 SYSCLKOUT 的比率
EPwm5Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm5Regs.CMPCTL.bit.SHDWAMODE = CC_SHADODE;//每0加载一次寄存器
EPwm5Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm5Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm5Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
//
//设置比较
//
EPwm5Regs.CMPA.half.CMPA = 0;
//
//设置操作
//
EPwm5Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm5Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm5Regs.AQCTLB.bit.ZRO = AQ_CLEAR;
EPwm5Regs.AQCTLB.bit.CAU = AQ_SET;
//
//高电平有效 PWM -设置死区
//
EPwm5Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE;
EPwm5Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
EPwm5Regs.DBCTL.bit.IN_MODE = DBA_ALL;
EPwm5Regs.DBRED = 90;
EPwm5Regs.DBFED = 90;
EPwm6Regs.TBPRD = 4500;//设置定时器周期
EPwm6Regs.TBPHS.Half.TBPHS = 0x0000;//相位为0
EPwm6Regs.TBCTR = 0x0000;//清除计数器
//
//设置 TBCLK
//
EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;//向上计数
EPwm6Regs.TBCTL.bit.PHSEN = TB_ENABLE;//禁用相位加载
EPwm6Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm6Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm6Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//时钟与 SYSCLKOUT 的比率
EPwm6Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm6Regs.CMPCTL.bit.SHDWAMODE = CC_SHADODE;//每0加载一次寄存器
EPwm6Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm6Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm6Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
//
//设置比较
//
EPwm6Regs.CMPA.half.CMPA = 0;
//
//设置操作
//
EPwm6Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm6Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm6Regs.AQCTLA.bit.ZRO = AQ_CLEAR;
EPwm6Regs.AQCTLA.bit.CAU = AQ_SET;
//
//高电平有效 PWM -设置死区
//
EPwm6Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE;
EPwm6Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
EPwm6Regs.DBCTL.bit.IN_MODE = DBA_ALL;
EPwm6Regs.DBRED = 90;
EPwm6Regs.DBFED = 90;
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;
EDIS;
秘书长的报告
高电平有效、独立输出、递增计数、PWM4、5、6、以在两个相位之间生成斜坡
(三
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;
EDIS;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm4Regs.TBPRD = 4500;//周期= 4500 TBCLK 计数
EPwm4Regs.CMPA.half.CMPA = 0;//比较 A = 0 TBCLK 计数
EPwm4Regs.CMPB = 0;//比较 B = 0 TBCLK 计数
EPwm4Regs.TBPHS.Half.TBPHS = 0x0000;//相位为0
EPwm4Regs.TBCTR = 0;//清除 TB 计数器
EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm4Regs.TBCTL.bit.PHSEN = TB_DISABLE;//相位加载被禁用
EPwm4Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm4Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;// TBCLK = SYSCLK
EPwm4Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm4Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm4Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm4Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm4Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm4Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm4Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm4Regs.AQCTLB.bit.ZRO = AQ_SET;
EPwm4Regs.AQCTLB.bit.CBU = AQ_CLEAR;
EPwm4Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;
EPwm5Regs.TBPRD = 4500;//周期= 4500 TBCLK 计数
EPwm5Regs.CMPA.half.CMPA = 0;//比较 A = 0 TBCLK 计数
EPwm5Regs.CMPB = 0;//比较 B = 0 TBCLK 计数
EPwm5Regs.TBPHS.Half.TBPHS = 0x0000;
EPwm5Regs.TBCTR = 0;//清除 TB 计数器
EPwm5Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm5Regs.TBCTL.bit.PHSEN = TB_DISABLE;//相位加载被禁用
EPwm5Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm5Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm5Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;// TBCLK = SYSCLK
EPwm5Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm5Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm5Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm5Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm5Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm5Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm5Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm5Regs.AQCTLB.bit.ZRO = AQ_SET;
EPwm5Regs.AQCTLB.bit.CBU = AQ_CLEAR;
EPwm5Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;
EPwm6Regs.TBPRD = 4500;//周期= 4500 TBCLK 计数
EPwm6Regs.CMPA.half.CMPA = 0;//比较 A = 0 TBCLK 计数
EPwm6Regs.CMPB = 0;//比较 B = 0 TBCLK 计数
EPwm6Regs.TBPHS.Half.TBPHS = 0x0000;
EPwm6Regs.TBCTR = 0;//清除 TB 计数器
EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm6Regs.TBCTL.bit.PHSEN = TB_DISABLE;//相位加载被禁用
EPwm6Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm6Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm6Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;// TBCLK = SYSCLK
EPwm6Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm6Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm6Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm6Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm6Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm6Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm6Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm6Regs.AQCTLB.bit.ZRO = AQ_SET;
EPwm6Regs.AQCTLB.bit.CBU = AQ_CLEAR;
EPwm6Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;
EDIS;
(一
谢谢
Luis Gonçalves ó n