Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 03.03.2012
Сообщений: 12

Таймер в режиме Reset и внешние стопы

29.09.2017, 13:01. Показов 3327. Ответов 6

Студворк — интернет-сервис помощи студентам
Привет, никак не могу разобраться с таймером в режиме сброса по внешнему событию,
сам сброс работает, таймер сбрасывается, вопрос вот в чём, могу ли я в этом режиме использовать захват на оставшихся каналах?
т.е. по внешнему событию сбрасывать таймер, и потом внешними событиями записывать сколько он протикал с момента сброса?

STM32F429ZI
СИ + VisualGDB + HAL + Cube
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.09.2017, 13:01
Ответы с готовыми решениями:

Зайти на роутер TP-link 841nd через порт WAN, в режиме Reset
Здравствуйте Помогите решить одну проблему, связанную с роутером TP-link 841nd v8 Проблема заключается в том, что роутер пингуется...

Таймер с возможностью старта, стопа, сброса, привязки события Tick (у DispatcherTimer нет Reset'a!)
Экземпляр DispatcherTimer можно стартануть, остановить привязать к нему событие Tick, не нельзя сбросить в 0 пройденное время. Т. е. если...

Выбор правильных вариантов по Git: git reset --hard, git reset --mixed , git reset --soft
1. Выберите верное утверждение: git reset --hard a. сохраняет изменения (и в stage, и в working directory) b. сохраняет изменения...

6
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
30.09.2017, 11:01
Цитата Сообщение от TIGER535 Посмотреть сообщение
никак не могу разобраться с таймером в режиме сброса по внешнему событию,
Покажите как вы инициируете таймер и какой?

Добавлено через 17 минут
Цитата Сообщение от TIGER535 Посмотреть сообщение
т.е. по внешнему событию сбрасывать таймер, и потом внешними событиями записывать сколько он протикал с момента сброса?
непонятно, что и где у вас там тикает. Давайте подробнее. Посмотрел в мануал - там этот режим со сбросом действительно описан только в применении с внутренним клоком. И в принципе, это я думаю, логично - одними ногами считаем, другими - сбрасываем.

Сброс таймера можно сделать обычным прерыванием по внешнему сигналу, так сказать, "программно". Вас, я так понимаю, интересует строгая синхронизация сброса, раз вы не рассматриваете этот вариант?
0
1 / 1 / 0
Регистрация: 03.03.2012
Сообщений: 12
02.10.2017, 13:38  [ТС]
Кубик генерит такие настройки


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/* TIM3 init function */
static void MX_TIM3_Init(void)
{
 
  TIM_ClockConfigTypeDef sClockSourceConfig;
  TIM_SlaveConfigTypeDef sSlaveConfig;
  TIM_MasterConfigTypeDef sMasterConfig;
  TIM_IC_InitTypeDef sConfigIC;
 
  htim3.Instance = TIM3;
  htim3.Init.Prescaler = 59999;
  htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim3.Init.Period = 65535;
  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
 
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
 
  if (HAL_TIM_IC_Init(&htim3) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
 
  sSlaveConfig.SlaveMode = TIM_SLAVEMODE_RESET;
  sSlaveConfig.InputTrigger = TIM_TS_TI1F_ED;
  sSlaveConfig.TriggerPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
  sSlaveConfig.TriggerFilter = 0;
  if (HAL_TIM_SlaveConfigSynchronization(&htim3, &sSlaveConfig) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
 
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
 
  sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
  sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
  sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
  sConfigIC.ICFilter = 0;
  if (HAL_TIM_IC_ConfigChannel(&htim3, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
 
  if (HAL_TIM_IC_ConfigChannel(&htim3, &sConfigIC, TIM_CHANNEL_2) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
 
  if (HAL_TIM_IC_ConfigChannel(&htim3, &sConfigIC, TIM_CHANNEL_3) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
 
}
Добавлено через 1 час 30 минут
Цитата Сообщение от Voland_ Посмотреть сообщение
Сброс таймера можно сделать обычным прерыванием по внешнему сигналу, так сказать, "программно". Вас, я так понимаю, интересует строгая синхронизация сброса, раз вы не рассматриваете этот вариант?
Я не против использовать любой рабочий вариант, просто я наткнулся на этот режим и решил попробовать реализовать через него, но информации корме даташите очень мало.
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
02.10.2017, 14:26
Цитата Сообщение от TIGER535 Посмотреть сообщение
просто я наткнулся
наткнуться-то наткнулись. А вы уверены что TIM3 его поддерживает в Вашем МК? Я, допустим, нет.
PS: в кубике я не разбираюсь. Я разбираюсь в SPL и верю в мануалы.
0
1 / 1 / 0
Регистрация: 03.03.2012
Сообщений: 12
02.10.2017, 15:10  [ТС]
Исходя из "DocID018909 Rev 15" стр. 629
должен поддерживать
0
 Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
02.10.2017, 18:35
TIGER535, ну в ДШ вроде как ничего не написано по поводу, что нельзя. Ну кубик вам нагенерировал портянки они работает или нет? По захвату над генерировать прерывание и проверять флаг CCxIF, где x - номер канала. В прерывании забираете TIMx->CNT куда вашей душе угодно и сбрасываете флаг. Прерываний в вашем коде не видно, как и их настройки.
0
1 / 1 / 0
Регистрация: 03.03.2012
Сообщений: 12
13.10.2017, 17:56  [ТС]
Чуть не забыл отписаться, всё легко настраивается и работает, первому каналу указыаем откуда брать сброс,
остальные работают как обычно, проблема была в дебаггере сбрасывающем флаги при чтении регистров, а так всё работало.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.10.2017, 17:56
Помогаю со студенческими работами здесь

Таймер в режиме захвата
Доброго времени суток! Написал программу для захвата сигнала для stm32f103. Измеряю ширину импульса, сигнал подаю с пина платы. В...

Таймер в режиме CTC
Господа, помогите понять. В моем проекте таймер работает в режиме CTC, а на событие достижения счетчиком значения OCR0A имеется...

Таймер в режиме захвата
Пытаюсь запустить таймер в режиме захвата. Так как железа нету пока пользуюсь протеусом/иаром для моделирования. Написал код для...

Таймер в режиме энкодера
Запускаю таймер в режиме энкодера работает нормально только с предделителем 1, почему так? TIMx->CCMR1 |= TIM_CCMR1_IC2F | ...

Таймер в графическом режиме
Подскажите, пожалуйста, код для отображения некоего значения в графическом режиме. Пытаюсь вывести текст по таймеру, но ничего не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru