Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: захват с обнулением таймера?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
alexf
Вопрос к знатокам. Мне надо сохранять интервалы времени между приходящими импульсами. F407 CPU. Настроил таймер, интерапт по capture ch1, читаю count, вычитаю предыдущий. Все хорошо. Но хотелось бы еще лучше. Можно ли настроить таймер так, чтобы он при поступлении импульса сохранял счетчик (скажем по DMA) и автоматом обнулял? Тогда бы не надо было вычитать и не надо прерывания на каждый импульс.
adnega
Цитата(alexf @ Apr 20 2018, 05:22) *
Можно ли настроить таймер так, чтобы он при поступлении импульса сохранял счетчик (скажем по DMA) и автоматом обнулял?

Конечно можно. Читать RM в районе полей SMS и TS регистра SMCR.
Цитата
Bits 6:4 TS[2:0]: Trigger selection
This bit-field selects the trigger input to be used to synchronize the counter.
...
101: Filtered Timer Input 1 (TI1FP1)
110: Filtered Timer Input 2 (TI2FP2)
...
Bits 2:0 SMS: Slave mode selection
When external signals are selected the active edge of the trigger signal (TRGI) is linked to the
polarity selected on the external input (see Input Control register and Control Register
description.
...
100: Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter
and generates an update of the registers.
...
scifi
Цитата(alexf @ Apr 20 2018, 05:22) *
Можно ли настроить таймер так, чтобы он при поступлении импульса сохранял счетчик (скажем по DMA) и автоматом обнулял? Тогда бы не надо было вычитать и не надо прерывания на каждый импульс.

DMA - здравая идея. А вот "не надо было бы вычитать" - это напрасно. Неужели так трудно вычесть? К тому же эти обнуления могут привести к неочевидным побочным эффектам, там нужно хорошенько подумать.
alexf
Цитата(scifi @ Apr 20 2018, 01:29) *
DMA - здравая идея. А вот "не надо было бы вычитать" - это напрасно. Неужели так трудно вычесть? К тому же эти обнуления могут привести к неочевидным побочным эффектам, там нужно хорошенько подумать.


Вычитать не жалко, благо не в столбикsm.gif Но делать это надо сразу, чтобы записывать в память только 8 бит. Если импульсы приходят очень часто, не хочется интерапт на каждый. В крайнем случае можно конечно писать по DMA в буффер, отдельно в цикле вычитать и писать в другой буффер, но если можно заставить железо все делать, почему бы и нет?

Можно поподробнее какие грабли возможны с обнулением?


Цитата(adnega @ Apr 19 2018, 20:10) *
Конечно можно. Читать RM в районе полей SMS и TS регистра SMCR.


Да, я смотрел на slave mode, но не понял. можно ли и capture, и reset делать по одному и тому же фронту. Попробую, спасибо.
adnega
Цитата(alexf @ Apr 21 2018, 02:53) *
Да, я смотрел на slave mode, но не понял. можно ли и capture, и reset делать по одному и тому же фронту. Попробую, спасибо.

Можно. Кста, можно сделать анти-ШИМ: в одном регистре будет период импульсов (расстояние между передними фронтами с обнулением),
а во втором длительность импульса (расстояние между фронтом и спадом).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.