主题中讨论的其他部件:C2000WARE
工具/软件:Code Composer Studio
你好
我想通过使用一些I/O引脚来测量ISR环路的精确时间
因此,我配置GPIO52就好像它是否正确。
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO1 = 1;//在GPIO2上禁用上拉(EPWM1A)
GpioCtrlRegs.GPAPUD.bit.GPIO2 = 1;//在GPIO2上禁用上拉(EPWM2A)
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1;//将GPIO2配置为EPWM1A
GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1;//将GPIO2配置为EPWM2A
gpioCtrlRegs.gpdata.bit.GPIO52 = 1;
EDIS;
......
...
__interrupt void epwm1_isr (void)
{
//*在这里,我的代码将一个新的sin值分配给比较reg,但sin波PWM //逻辑的负端反相。*/
a1=sin (pi*pi*i1 0.02);
GpioDataRegs.GPBDAT.bit.GPIO52 = 0;
如果(A1>=0)
{
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;//在事件A上设置PWM1A,UP
EPwm1Regs.AQCTLA.bit.CAD =AQ_set;//清除事件B上的PWM1A,关闭
EPwm1Regs.CMPA.bit.CMPA =B1[i1];
}
否则
{
EPwm1Regs.AQCTLA.bit.CAU =AQ_set;//在事件A上设置PWM1A,向上
EPwm1Regs.AQCTLA.bit.CAD = AQ_Clear;//清除事件B上的PWM1A,关闭
EPwm1Regs.CMPA.bit.CMPA =B1[i1];
}
I1++;
如果(i1==401)
{
I1=0;
}
EPwm1Regs.ETCLR.bit.INT = 1;
PieCtrlRegs.PIEACG.ALL = PIEACK_Group3;
}
__interrupt void epwm2_isr (void)
{
//*在这里,我的代码将一个新的sin值分配给比较reg,但sin波PWM //逻辑的负端反相。*/
a2=sin (pi*pi*i2 0.02);
如果(A2>=0)
{
EPwm2Regs.AQCTLA.bit.CAU = AQ_Clear;//在事件A上设置PWM2A
EPwm2Regs.AQCTLA.bit.CAD =AQ_set;//清除事件B上的PWM2A,关闭
EPwm2Regs.CMPA.bit.CMPA =B2[i2];
}
否则
{
EPwm2Regs.AQCTLA.bit.CAU =AQ_set;//在事件A上设置PWM2A,向上
EPwm2Regs.AQCTLA.bit.CAD = AQ_Clear;//清除事件B上的PWM2A,关闭
EPwm2Regs.CMPA.bit.CMPA =B2[i2];
}
I2 ++;
如果(i2=401)
{
I2=0;
}
EPwm2Regs.ETCLR.bit.INT = 1;
PieCtrlRegs.PIEACG.ALL = PIEACK_Group3;
GpioDataRegs.GPBDAT.bit.GPIO52 = 1;
}