hi
i work with stm32f107
pleas answer me
how i can measure frequency in 50 hz with input pwm
i read about it and find out i can measure frequency with input pwm up to 1100 but input pwm have TIM_ICPrescaler that i think devide pwm frequncy
it is true ?
if no , please say me how i can measure 50 hz?
thanks for your answer
i get pwm with micero controller and i wanted measure frequncy and duty cycle and i can measure 1100 hz
i have some problem please answer me :
this is my code :
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0; NVIC_InitStructure.NVIC_IRQChannelSubPriority =1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_ICInit(TIM3, &TIM_ICInitStructure); TIM_PWMIConfig(TIM2, &TIM_ICInitStructure); TIM_SelectInputTrigger(TIM2,TIM_TS_TI1FP1); TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset); TIM_SelectMasterSlaveMode(TIM2,TIM_MasterSlaveMode_Enable); TIM_Cmd(TIM2, ENABLE); TIM_ITConfig(TIM2,TIM_IT_CC1,ENABLE);
and this is my handler :
{ GPIO_SetBits(GPIOC,GPIO_Pin_2); TIM_ClearITPendingBit(TIM2, TIM_IT_CC2); IC2Value = TIM_GetCapture1(TIM2); // IC1=TIM_GetCapture1(TIM2); // IC2=TIM_GetCapture2(TIM2); if (IC2Value != 0) { /* Duty cycle computation */ DutyCycle = (TIM_GetCapture2(TIM2) * 100) / IC2Value; /* Frequency computation */ Frequency = SystemCoreClock / IC2Value; IC2Value=0; } else { DutyCycle = 0; Frequency = 0; } }
please say when during the current code i go to this handler
For low speeds you'd need to configure the timebase to run slower so the ticks in the period you are measuring don't exceed the 16-bit counter's limit.
Use the timebase prescaler to divide down the SystemCoreClock
yes
I did this work but was like befor , it didn't has effect.