在PCMC模式下的移相全桥的user guide里面有这样一句话:只要比较器输出在一个PWM 半周期内变为高电平,瞬时为高电平的ePWM2 模块输出(ePWM2A 或ePWM2B)被立即下拉为低电平,而其它PWM2 模块输出在一个适当的死区时间窗口后被拉至高电平(dbAtoP)。ePWM4A 和ePWM4B 输出驱动方式类似。
请教一下,怎么设置才能实现?
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.
在PCMC模式下的移相全桥的user guide里面有这样一句话:只要比较器输出在一个PWM 半周期内变为高电平,瞬时为高电平的ePWM2 模块输出(ePWM2A 或ePWM2B)被立即下拉为低电平,而其它PWM2 模块输出在一个适当的死区时间窗口后被拉至高电平(dbAtoP)。ePWM4A 和ePWM4B 输出驱动方式类似。
请教一下,怎么设置才能实现?
我用的28035
(*ePWM[n+1]).DCTRIPSEL.bit.DCAHCOMPSEL = DC_COMP1OUT; // DCAH = Comparator 1 output
(*ePWM[n+1]).TZDCSEL.bit.DCAEVT1 = TZ_DCAH_HI; // DCAEVT1 = DCAH high(will become active
// as Comparator output goes high)
(*ePWM[n+1]).DCACTL.bit.EVT1SRCSEL = DC_EVT_FLT; // DCAEVT1 = DC_EVT_FLT (filtered)
(*ePWM[n+1]).DCACTL.bit.EVT1FRCSYNCSEL = DC_EVT_ASYNC; // Take async path
// Enable DCAEVT1 as a one-shot source
(*ePWM[n+1]).TZSEL.bit.DCAEVT1 = 1; // Enable One-Shot Trip
// Following code for the sync mechanism based on the same trigger event - COMPxOUT
(*ePWM[n+1]).DCACTL.bit.EVT1SYNCE = 1; // Sync enabled
// What do we want the DCAEVT1 event to do? - Initial Configuration
(*ePWM[n+1]).TZCTL.bit.TZB = TZ_NO_CHANGE;
(*ePWM[n+1]).TZCTL.bit.TZA = TZ_FORCE_LO;
谢谢你的回答。NOP还真一直有个疑问:
在ISR中,是有很多NOP,我原先理解是up_cnt的设置是为了配置下一个周期的PWM。
MOVW DP,#_EPwm3Regs.AQCTLA
MOV @_EPwm3Regs.AQCTLA, #0x0021
MOV @_EPwm3Regs.AQCTLB, #0x0002
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV @_EPwm3Regs.AQCTLA, #0x0020
按照我的理解就是EPwm3Regs.AQCTLA=0x0020,而上面的语句没有用。
按照你的意思,我理解错了,应该怎么理解呢?
(*ePWM[n+1]).CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // Load on CTR = Zero:TBCTR = Ox0000
(*ePWM[n+1]).CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Shadow mode
(*ePWM[n+1]).CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
(*ePWM[n+1]).CMPCTL.bit.SHDWBMODE = CC_SHADOW;
epwm2的比较器寄存器是shadow register,上个pwm周期配置的CMPA CMPB,怎么在下个pwm周期利用NOP产生死区?想不通啊。
这个程序越看疑问越多:
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTRU_CMPA; // INT on CMPA event
在 ET_CTRU_CMPA产生中断,只有100K,如何在isr中产生200k的计算?在isr中up_cnt和dwn_cnt都是直接跳出中断的,不应该是100k吗