We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi all! must your help here.
I working of EFM32G222F128 and use with TIMER0 as PWM.
When I set freq of PWM (on code) = 1kHz -> I got 1kHz
When I set freq of PWM = 500Hz -> I got 500Hz
When I set freq of PWM = 50Hz -> I got ~790Hz (this frequency needed)
When I set freq of PWM = 3Hz -> I got 3kHz
What's going on here?!
The code for freq:
sl_pwm_config_t pwm_servo_config = { .frequency = 50, .polarity = PWM_ACTIVE_HIGH, };
and for TIMER0:
void TIMER0_Init (void) { /* Enable clock for TIMER0 module */ CMU_ClockEnable(cmuClock_TIMER0, true); /* Select TIMER0 parameters */ TIMER_Init_TypeDef timerInit = { .enable = true, .debugRun = true, .prescale = timerPrescale1024, .clkSel = timerClkSelHFPerClk, .fallAction = timerInputActionNone, .riseAction = timerInputActionNone, .mode = timerModeUp, .dmaClrAct = false, .quadModeX4 = false, .oneShot = false, .sync = false, }; /* Enable overflow interrupt */ TIMER_IntEnable(TIMER0, TIMER_IF_OF); /* Enable TIMER0 interrupt vector in NVIC */ NVIC_EnableIRQ(TIMER0_IRQn); /* Set TIMER Top value */ TIMER_TopSet(TIMER0, 1000); /* Configure TIMER */ TIMER_Init(TIMER0, &timerInit);
}
Thanks,
Gal.