alexf 0 20 апреля, 2018 Опубликовано 20 апреля, 2018 · Жалоба Вопрос к знатокам. Мне надо сохранять интервалы времени между приходящими импульсами. F407 CPU. Настроил таймер, интерапт по capture ch1, читаю count, вычитаю предыдущий. Все хорошо. Но хотелось бы еще лучше. Можно ли настроить таймер так, чтобы он при поступлении импульса сохранял счетчик (скажем по DMA) и автоматом обнулял? Тогда бы не надо было вычитать и не надо прерывания на каждый импульс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 20 апреля, 2018 Опубликовано 20 апреля, 2018 · Жалоба Можно ли настроить таймер так, чтобы он при поступлении импульса сохранял счетчик (скажем по 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 1 20 апреля, 2018 Опубликовано 20 апреля, 2018 · Жалоба Можно ли настроить таймер так, чтобы он при поступлении импульса сохранял счетчик (скажем по DMA) и автоматом обнулял? Тогда бы не надо было вычитать и не надо прерывания на каждый импульс. DMA - здравая идея. А вот "не надо было бы вычитать" - это напрасно. Неужели так трудно вычесть? К тому же эти обнуления могут привести к неочевидным побочным эффектам, там нужно хорошенько подумать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexf 0 20 апреля, 2018 Опубликовано 20 апреля, 2018 · Жалоба DMA - здравая идея. А вот "не надо было бы вычитать" - это напрасно. Неужели так трудно вычесть? К тому же эти обнуления могут привести к неочевидным побочным эффектам, там нужно хорошенько подумать. Вычитать не жалко, благо не в столбик:) Но делать это надо сразу, чтобы записывать в память только 8 бит. Если импульсы приходят очень часто, не хочется интерапт на каждый. В крайнем случае можно конечно писать по DMA в буффер, отдельно в цикле вычитать и писать в другой буффер, но если можно заставить железо все делать, почему бы и нет? Можно поподробнее какие грабли возможны с обнулением? Конечно можно. Читать RM в районе полей SMS и TS регистра SMCR. Да, я смотрел на slave mode, но не понял. можно ли и capture, и reset делать по одному и тому же фронту. Попробую, спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 21 апреля, 2018 Опубликовано 21 апреля, 2018 · Жалоба Да, я смотрел на slave mode, но не понял. можно ли и capture, и reset делать по одному и тому же фронту. Попробую, спасибо. Можно. Кста, можно сделать анти-ШИМ: в одном регистре будет период импульсов (расстояние между передними фронтами с обнулением), а во втором длительность импульса (расстояние между фронтом и спадом). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться