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.
Hi 大家好,
但是我在做測試的時候,很碰巧遇到一個情況,就是使用XDS100V3進行燒錄後,
程式尚未執行Run,竟然發現我有一隻PWM 腳位直接變成High…(因為這樣造成硬體損毀)
當進行程式執行時,狀態就又恢復正常了...
跟當地代理商FAE討論了一些時間都沒辦法解決...不知道有沒有人遇過或是可以給予建議,謝謝.
您好,請參考下列資訊 :
1. 这个问题出现的机率有多大?
基本上每一次都會發生,都可以重現.差別在使用XDS100V3燒錄後,等待的時間不同,時間大約都在15秒-30秒,
該腳位 EPWM2B / GPIO3 會自動變為HIGH.
2. 其它PWM引脚上有发现这个问题吗?
目前沒有發現.
3. 能标注一下波形吗?
4. 能否描述一下PWM初始化的过程?有和我们提供的例程比对一下吗?
初始化代碼請參考下列 :
void devPWM_HVCtrl_Init(CLK_Handle myClk, PWM_Handle myPwm2)
{
CLK_enablePwmClock(myClk, PWM_Number_2);
// Set timer period
PWM_setPeriod(myPwm2, HVCTRL_PWM_COUNT);
PWM_setPhase(myPwm2, 0x0000); // Phase is 0
PWM_setCount(myPwm2, 0x0000); // Clear counter
// Setup TBCLK
PWM_setCounterMode(myPwm2, PWM_CounterMode_Up);
PWM_disableCounterLoad(myPwm2); // Disable phase loading
PWM_setHighSpeedClkDiv(myPwm2, PWM_HspClkDiv_by_1); // Clock ratio to SYSCLKOUT
PWM_setClkDiv(myPwm2, PWM_ClkDiv_by_1);
PWM_setShadowMode_CmpA(myPwm2, PWM_ShadowMode_Shadow); // Load registers every ZERO
PWM_setShadowMode_CmpB(myPwm2, PWM_ShadowMode_Shadow);
PWM_setLoadMode_CmpA(myPwm2, PWM_LoadMode_Zero);
PWM_setLoadMode_CmpB(myPwm2, PWM_LoadMode_Zero);
// Setup compare
PWM_setCmpA(myPwm2, 0);
PWM_setCmpB(myPwm2, HVCTRL_PWM_COUNT);
// Set actions
PWM_setActionQual_CntUp_CmpA_PwmA(myPwm2, PWM_ActionQual_Set);
PWM_setActionQual_CntUp_CmpB_PwmA(myPwm2, PWM_ActionQual_Clear);
PWM_setActionQual_CntUp_CmpA_PwmB(myPwm2, PWM_ActionQual_Clear);
PWM_setActionQual_CntUp_CmpB_PwmB(myPwm2, PWM_ActionQual_Set);
// Active Low PWMs - Setup Deadband
devPWM_DeadbandEnable(myPwm2, true);
}
void devPWM_DeadbandEnable(PWM_Handle myPwm1, bool bEn)
{
if(bEn)
{
EALLOW;
EPwm2Regs.TZFLG.bit.CBC = 0;
EPwm2Regs.TZFLG.bit.OST = 0;
EPwm2Regs.TZCTL.bit.DCBEVT1 = 2;
EPwm2Regs.TZCTL.bit.DCBEVT2 = 2;
EPwm2Regs.TZCTL.bit.TZB = 2;
EPwm2Regs.TZFRC.bit.DCBEVT1 = 1;
EPwm2Regs.TZFRC.bit.DCBEVT2 = 1;
EPwm2Regs.TZFRC.bit.CBC = 1;
EDIS;
// Active Low PWMs - Setup Deadband
PWM_setDeadBandOutputMode(myPwm1, PWM_DeadBandOutputMode_EPWMxA_Rising_EPWMxB_Falling);
PWM_setDeadBandPolarity(myPwm1, PWM_DeadBandPolarity_EPWMxB_Inverted);
PWM_setDeadBandInputMode(myPwm1, PWM_DeadBandInputMode_EPWMxA_Rising_and_Falling);
PWM_setDeadBandRisingEdgeDelay(myPwm1, EPWM1_MIN_DB);
PWM_setDeadBandFallingEdgeDelay(myPwm1, EPWM1_MIN_DB);
}
else
{
PWM_disableDeadBand(myPwm1);
}
//================================================================================//
FAE有建議我在CCS可以勾選下列設定,但依然沒有改善 : (RealTime options)