stm32 захват значения таймера

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Родился
Сообщения: 13
Зарегистрирован: Вт окт 08, 2013 20:37:39

Сообщение castiel92 »

Скажите,есть ли возможность как-нибудь сохранить последнее значение таймера перед его сбросом? таймер находится в режиме reset mode, сбрасывается внешним сигналом.конечно можно другим таймером замерять период сигнала update generation,но мне не подходит это.
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Сообщение blackx »

Не, надо всяко вручную сбрасывать.
Изображение only pure true norwegian blackx Изображение
Реклама
Родился
Сообщения: 13
Зарегистрирован: Вт окт 08, 2013 20:37:39

Сообщение castiel92 »

необходим именно внешний сброс,но также нужно знать последнее значение таймера. вручную никак
Вымогатель припоя
Аватара пользователя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Сообщение menzoda »

Не знаю, про что ты говоришь, но во всех МК, что я видел, у таймера есть функция "захвата" (capture). Она заключается в том, что таймер сбрасывается внешним сигналом, при этом сохраняя значение счетчика в capture-регистр. Посмотри внимательной свой даташит, может у твоего таймера тоже есть этот функционал.
Реклама
Эиком - электронные компоненты и радиодетали
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение 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);
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Как это нынче - вау , что я вижу !
Юра на STM перешел .
Приветствую!!!! :beer:
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

(c) Кругом одно и то же, а в Антартиде вдобавок холодно...
Разница не такая и большая, если месяц помучиться. :) Понадобилось в задаче 6 каналов захвата... И мелкий корпус.
Контактная информация:
Ответить

Вернуться в «ARM»