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

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