Tengo el L432KC Nucleo. Estoy tratando de medir velocidades bajas con un sensor de 1 PPR (pulso por revolución). Para PPR bajos, se sugiere el uso del Método de Medición del Período. Si obtengo el período de la señal, puedo aplicar la fórmula:
RPM = 60 / (Período de pulso)
Esto es lo que tengo:
En CubeMx he configurado el modo de captura de entrada del temporizador 2, canal 3. Mi frecuencia APB2 es de 1 MHz. El preescalador TIM2 es 1000 y el período de contador es 10000. Cada vez que se administra un pulso, se produce un flanco descendente.
Ahora, en el código que tengo:
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIM_IC_CaptureCallback could be implemented in the user file
*/
if(htim->Instance == TIM2){
inputCaptureVal = __HAL_TIM_GetCounter(htim);
__HAL_TIM_SetCounter(htim,0);
}
}
En el bucle while tengo otra variable:
counterVal = __HAL_TIM_GetCounter(htim2);
¿Es esta la manera correcta de obtener el período? Agradecería cualquier orientación, ya que es la primera vez que utilizo la captura de entrada.