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. 这个问题出现的机率有多大?
2. 其它PWM引脚上有发现这个问题吗?
3. 能标注一下波形吗?
4. 能否描述一下PWM初始化的过程?有和我们提供的例程比对一下吗?
您好,請參考下列資訊 :
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)