Страница 1 из 1
stm32 захват значения таймера
Добавлено: Чт дек 12, 2013 19:17:00
castiel92
Скажите,есть ли возможность как-нибудь сохранить последнее значение таймера перед его сбросом? таймер находится в режиме reset mode, сбрасывается внешним сигналом.конечно можно другим таймером замерять период сигнала update generation,но мне не подходит это.
Re: stm32 захват значения таймера
Добавлено: Чт дек 12, 2013 19:17:52
blackx
Не, надо всяко вручную сбрасывать.
Re: stm32 захват значения таймера
Добавлено: Чт дек 12, 2013 19:22:09
castiel92
необходим именно внешний сброс,но также нужно знать последнее значение таймера. вручную никак
Re: stm32 захват значения таймера
Добавлено: Ср дек 18, 2013 09:01:46
menzoda
Не знаю, про что ты говоришь, но во всех МК, что я видел, у таймера есть функция "захвата" (capture). Она заключается в том, что таймер сбрасывается внешним сигналом, при этом сохраняя значение счетчика в capture-регистр. Посмотри внимательной свой даташит, может у твоего таймера тоже есть этот функционал.
Re: stm32 захват значения таймера
Добавлено: Ср дек 18, 2013 10:41:47
urry
не понимаю, о чем вы говорите . Вся прелесть режима захвата заключается в том, что получаются максимально точные значения времени именно тогда, когда таймер не "дергают" - как он себе тикал, так и тикает. Любые манипуляции с счетным регистром - обнулить его, установить значение - сразу ставит крест на точности.
Код: Выделить всё
TIM_ICInitTypeDef timer_ic;
/* TIM2 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = 65535;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
/* Prescaler configuration */
/* Настраиваем захват сигнала:
- канал: 1
- направление: по нарастанию
- источник: напрямую со входа
- делитель: отключен
- фильтр: отключен */
timer_ic.TIM_Channel = TIM_Channel_1;
timer_ic.TIM_ICPolarity = TIM_ICPolarity_Rising;
timer_ic.TIM_ICSelection = TIM_ICSelection_DirectTI;
timer_ic.TIM_ICPrescaler = TIM_ICPSC_DIV1;
timer_ic.TIM_ICFilter = 0;
TIM_ICInit(TIM2, &timer_ic);
/* Разрешаем таймеру генерировать прерывание по захвату */
TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);
Re: stm32 захват значения таймера
Добавлено: Ср дек 18, 2013 11:15:23
dosikus
Как это нынче - вау , что я вижу !
Юра на STM перешел .
Приветствую!!!!

Re: stm32 захват значения таймера
Добавлено: Ср дек 18, 2013 11:22:28
urry
(c) Кругом одно и то же, а в Антартиде вдобавок холодно...
Разница не такая и большая, если месяц помучиться.

Понадобилось в задаче 6 каналов захвата... И мелкий корпус.