реклама на сайте
подробности

 
 
> STM32 32-битный таймер для захвата из двух 16-битных - как?, и возможно ли
Dot
сообщение Nov 30 2013, 13:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 13-10-05
Пользователь №: 9 595



Железо разведено для использования входа у канала 2 таймера 2. Тактовая частота таймера -- системная по-максимуму.

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

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

Пока в голову приходит только брать сигнал захвата с ведущего таймера, а тактовую частоту для зависимого брать системную, но поделенную предделителем (у которого коэффициент деления такой же, как и у 1-го таймера). И оба таймера стартовать синхронно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
nx6310
сообщение Nov 30 2013, 13:24
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 28-06-10
Пользователь №: 58 174



Можно вроде сигнал переполнения ведущего таймера завести на вход ведомого таймера.
Первый таймер будет выступать как делитель для второго таймера. об этом можно прочитать на странице 350 RM0008 Reference manual
разделы:
14.3.15 Timer synchronization
Using one timer as prescaler for the another.
Go to the top of the page
 
+Quote Post
Dot
сообщение Nov 30 2013, 13:32
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 13-10-05
Пользователь №: 9 595



Можно-то можно, да только модуль для связи TRG0->TRGI у таймера только один. Как тогда заводить еще и сигнал "capture"?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 30 2013, 16:37
Сообщение #4


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Есть вариант обойтись без второго таймера. Достаточно успеть обработать прерывание (прочитать CAP REG) до того как таймер успеет пройти целый "круг" относительно точки захвата. Для работы понадобится активировать прерывание (MAT) по переполнению таймера (65535->0) и там программно инкрементить старшие/мнимые 16 бит где-то в переменной. Плюс в прерывании CAP понадобятся несколько сравнений.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
nx6310
сообщение Dec 1 2013, 05:22
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 28-06-10
Пользователь №: 58 174



Вам нужен захват при 32-х разрядном таймере? Попробуйте сделать первый таймер ведомым, а тактировать его вторым. Т.е. Счетные импульсы по переполнению ведущего таймера будут подаваться на вход ведомого таймера в котором настроен модуль захвата.
Go to the top of the page
 
+Quote Post
Dot
сообщение Dec 2 2013, 15:01
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 13-10-05
Пользователь №: 9 595



Цитата(GetSmart @ Nov 30 2013, 20:37) *
Есть вариант обойтись без второго таймера. Достаточно успеть обработать прерывание (прочитать CAP REG) до того как таймер успеет пройти целый "круг" относительно точки захвата. Для работы понадобится активировать прерывание (MAT) по переполнению таймера (65535->0) и там программно инкрементить старшие/мнимые 16 бит где-то в переменной. Плюс в прерывании CAP понадобятся несколько сравнений.


Да, на крайняк можно сделать и так. Даже скорее всего для моей задачи именно так и надо делать, поскольку темп обоих прерываний будет порядка 400 в сек.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016