工具与软件:
您好!
我将从 Tb0.4生成 PWM 脉冲。
param.clockSource = TIMER_B_CLOCKSOURCE_SMCLK; param.clockSourceDivider = TIMER_B_CLOCKSOURCE_DIVIDER_4; param.timerPeriod = timePeriod-1; param.timerInterruptEnable_TBIE = TIMER_B_CCIE_CCR0_INTERRUPT_DISABLE; param.captureCompareInterruptEnable_CCR0_CCIE = TIMER_B_CCIE_CCR0_INTERRUPT_DISABLE; param.timerClear = TIMER_B_DO_CLEAR; param.startTimer = false; Timer_B_initUpMode(TIMER_B0_BASE, ¶m); //Initialize compare mode to generate PWM1 param1.compareRegister = TIMER_B_CAPTURECOMPARE_REGISTER_4; param1.compareInterruptEnable = TIMER_B_CCIE_CCR0_INTERRUPT_DISABLE; param1.compareOutputMode = TIMER_B_OUTPUTMODE_SET_RESET; param1.compareValue = timePeriod*0; Timer_B_initCompareMode(TIMER_B0_BASE, ¶m1);
执行一次 100us、 我必须将占空比0%更改为100%(比较值)。 使用 TimerA0生成100us 循环。
#pragma vector = TIMER0_A0_VECTOR __interrupt void Timer0_A0_ISR (void){ #if 1 if(flag==1) { if(dCuS<50) { Dutycycle=(timePeriod*dcArray1[dCuS]); if(Dutycycle!=0) { Timer_B_setCompareValue(TB0_BASE,TIMER_B_CAPTURECOMPARE_REGISTER_4,(uint16_t)Dutycycle); dCuS+=1; } else { Timer_B_setCompareValue(TB0_BASE,TIMER_B_CAPTURECOMPARE_REGISTER_4,0); dCuS+=1; } } else { Timer_B_setCompareValue(TB0_BASE,TIMER_B_CAPTURECOMPARE_REGISTER_4,timePeriod*0.50); dCuS=1; } count+=1; } #endif Timer_A_clearTimerInterrupt(TIMER_A0_BASE); }
当在示波器中观察到每个波形时、我观察到 PWM 生成中出现一个骤降/尖峰、这正在影响我的整体波形。
如何纠正此问题?
此致、
Sarwath