Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 32-битный таймер для захвата из двух 16-битных - как?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Dot
Железо разведено для использования входа у канала 2 таймера 2. Тактовая частота таймера -- системная по-максимуму.

Хотелось бы, чтобы таймер был 32-битным, т.е. к нему надо как-то приляпать 2-ой таймер. Не пойму, как это можно сделать. Получается (пока чисто теретически), что с ведущего таймера можно подать либо счетные импульсы, либо сигнал захвата, но никак ни оба сигнала одновременно.

Или здесь есть какой-то трюк?

Пока в голову приходит только брать сигнал захвата с ведущего таймера, а тактовую частоту для зависимого брать системную, но поделенную предделителем (у которого коэффициент деления такой же, как и у 1-го таймера). И оба таймера стартовать синхронно.
nx6310
Можно вроде сигнал переполнения ведущего таймера завести на вход ведомого таймера.
Первый таймер будет выступать как делитель для второго таймера. об этом можно прочитать на странице 350 RM0008 Reference manual
разделы:
14.3.15 Timer synchronization
Using one timer as prescaler for the another.
Dot
Можно-то можно, да только модуль для связи TRG0->TRGI у таймера только один. Как тогда заводить еще и сигнал "capture"?
GetSmart
Есть вариант обойтись без второго таймера. Достаточно успеть обработать прерывание (прочитать CAP REG) до того как таймер успеет пройти целый "круг" относительно точки захвата. Для работы понадобится активировать прерывание (MAT) по переполнению таймера (65535->0) и там программно инкрементить старшие/мнимые 16 бит где-то в переменной. Плюс в прерывании CAP понадобятся несколько сравнений.
nx6310
Вам нужен захват при 32-х разрядном таймере? Попробуйте сделать первый таймер ведомым, а тактировать его вторым. Т.е. Счетные импульсы по переполнению ведущего таймера будут подаваться на вход ведомого таймера в котором настроен модуль захвата.
Dot
Цитата(GetSmart @ Nov 30 2013, 20:37) *
Есть вариант обойтись без второго таймера. Достаточно успеть обработать прерывание (прочитать CAP REG) до того как таймер успеет пройти целый "круг" относительно точки захвата. Для работы понадобится активировать прерывание (MAT) по переполнению таймера (65535->0) и там программно инкрементить старшие/мнимые 16 бит где-то в переменной. Плюс в прерывании CAP понадобятся несколько сравнений.


Да, на крайняк можно сделать и так. Даже скорее всего для моей задачи именно так и надо делать, поскольку темп обоих прерываний будет порядка 400 в сек.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.