Всем доброго времени суток! Вообщем прочитал в документации что есть возможность захвата значения частоты и периода при помощью таймера. Использую таймер 3. Настройки: Slave Mode: Reser Mode, Trigger Source: TI1FP1, Clock Source: Interman Clock, Channel1: Input Capture direcr mode.
Так же включил прерывания.
Запускаю таймер
HAL_TIM_IC_Start_IT(&htim3, TIM_CHANNEL_1);
Как пришёл импульс в прерываниях снимаю значения.
temp = HAL_TIM_ReadCapturedValue(&htim3, TIM_CHANNEL_1);
Это как я понимаю я получаю частоту, как замерить период? Почему значения частоты плавают? По осциллографу всё нормально!
Привет!
Читая захваченное значение ты получаешь количество "тиков" таймера, которые он сделал с момента обнуления. То есть в теории работает так - при переднем фронте таймер обнуляется, при приходе заднего фронта ты считываешь количество "тиков" и переводишь их в секунды, зная на какой частоте работает таймер.
Это я понимаю, я не понимаю как сделать так чтобы таймер сначала посчитал от переднего фронта до заднего, а потом от заднего до заднего (или от переднего до переднего). У меня получилось от заднего до заднего, а как от переднего до переднего не понимаю (( Скину Вам проект на почту, если есть время посмотрите пожалуйста...
Ну он либо будет отлавливать задние, либо передние, либо и те и другие. Если надо к примеру у ШИМ сигнала измерять частоту и скважность, то настраиваются два канала, один из них захватывает передний фронт, а другой задний, при этом сигнал берут с одного входа.
Ошибся, не получается по переднего фронта до заднего... А не могли бы Вы дать пример захвата сигнала от переднего до заднего фронта?
У меня есть только для stm32f10x и без Cube - на SPL, подойдет? В принципе, вместе с драйвером HAL идет большое количество примеров для разных плат, возможно там есть подходящий для F4.