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

 
 
> ATTINY24A и TIMER1 в режиме INPUT CAPTURE
Slonofil
сообщение Jul 6 2012, 08:45
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Товарищи из опытных, хочется уточнить у Вас некоторые детали работы Timer1 в режиме Input Capture от входа ICP.

Из документации не сумел уяснить следующие моменты:
1. При настройке таймера 1 нужно ли проводить инициализацию TCNT1 некоторым (нулевым) значением? Или для этой задачи это не принципиально?
2. Когда происходит захват, и TCNT1 загружается в ICR1, что дальше происходит со значением TCNT1? Оно обнуляется? Или счёт продолжается от захваченного значения до переполнения? И как тогда высчитывать время между событиями?
3. Поскольку стоит задача померять период импульсов и само их наличие (если импульсов нет, то на входе может быть либо постоянный 0, либо постоянная 1), то актуально ли использование простого переполнения от Timer1 для фиксации момента пропадания ипульсов (если было переполнение - значит, захвата за время счёта не произошло). Для этого ведь необходимо, чтобы после захвата происходил сброс рабочего регистра таймера (см. п. 2)...
4. Необходимо ли настраивать программно пин ICP на вход или это сделает механика таймера-счётчика? Слышал, что в атмеловских творениях такая функция имеется.

Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
Палыч
сообщение Jul 6 2012, 09:06
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



1. Можно, но не обязательно, поскольку Вам нужна разность между двумя моментами, то не имеет значения откуда идет счет. Однако, в некоторых случаях заносить ноль - удобно: когда оба фиксируемых события происходят на интервале счета таймера до переполнения.
2. После захвата счетный регистр продолжает считать в соответствии с режимом работы счетчика. При вычислении интервала времени между двумя событиями (периода) необходимо учитывать переполнения (вести подсчет их количества).
4. По сбросу этот вывод МК настроет на ввод.
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Jul 6 2012, 09:21
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Спасибо!

Значит, если мне надо считать короткие импульсы (до 150 кГц), то учитывать переполнения не нужно, удобнее считать от нуля (в момент захвата обнулять счётный регистр). Должно вполне хватить младшего байта ICR1L, старший достаточно будет проверять на 0.

Хотел бы спросить у Вас как новичёк у опытного: подскажите, есть ли возможность добыть как-то данные регистров из ATTINY24A при помощи AVRISP II? До этого работал с PIC12/18/32 и ICD2/ICD3, про их работу в режиме отладчика знаю, а вот про ATTINY не знаю, где поглядеть. Отладкой в среде пользовался, но она не поможет мне при захвате.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 6 2012, 10:26
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Slonofil @ Jul 6 2012, 13:21) *
Значит, если мне надо считать короткие импульсы (до 150 кГц), то учитывать переполнения не нужно, удобнее считать от нуля (в момент захвата обнулять счётный регистр). Должно вполне хватить младшего байта ICR1L, старший достаточно будет проверять на 0.

Э-э-э... Что-то мы друг друга не понимаем...
Обнуляем счетчик. Фиксируем первое значение (показание счетчика в момент первого импульса), затем то же для начала второго импульса. Из показаний счетчика при втором импульсе вычитаем первое показание и разность умножаем на период следования счетных импульсов. Это - если переполнение таймера происходит за период заведомо бОльший, чем два измеряемых периода. Важно забрать захваченное значение до прихода следующего импулься: при частоте 150кГц у Вас на это будет всего-то сотня тактов... Кроме, того: прикиньте какая точность измерения получится, а какая Вам нужна? Если частота измеряемых импульсов мало меняется за некоторый период, то можно поставить внешний предделитель и считать время прихода 4, 8, 16.... импульсов для повышения точности. При измерении такого длительного интервала, вероятно, таймер станет переполняться. В этом случае прийдется считать/учитывать и переполнения таймера...

Цитата(Slonofil @ Jul 6 2012, 13:21) *
Хотел бы спросить у Вас как новичёк у опытного: подскажите, есть ли возможность добыть как-то данные регистров из ATTINY24A при помощи AVRISP II? До этого работал с PIC12/18/32 и ICD2/ICD3, про их работу в режиме отладчика знаю, а вот про ATTINY не знаю, где поглядеть. Отладкой в среде пользовался, но она не поможет мне при захвате.

AVRISP - это программатор. Посмотреть регистры при работе МК с помощью него не удастся. Можно выводить некоторую информацию для отладки на светодиоды, подключенные к портам (в tiny их не богато), или выводить по последовательному интерфейсу на терминал, или использовать AVR JTAGICE mkII.
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Jul 6 2012, 10:36
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Ситуация моя такая: есть две частоты - 115 кГц и 133 кГц. Мне надо их "распознать". На каждый "распознанный" импульс надо выдать на другую ногу "0" или "1". Декодер такой извратный. Частота высокая, стало быть, достаточно использовать младший байт регистра захвата (импульсов даже меньше сотни будет, полагаю). При возникновении захвата планирую обнулять счётный регистр таймера, чтобы ничего не пришлось вычитать etc - времени в основной программе на это нет, да и "Вася у папы не силён в математике". Если захвата нет, но есть переполнение - значит, импульсов на входе нет, и надо выставить "1" принудительно. Вот как-то так я это вижу.

С отладкой совсем кисло - свободными можно признать лишь часть ног (конкретно, две), занятых программатором. Остальное занято. Отладчика нету =(

Сообщение отредактировал IgorKossak - Jul 6 2012, 13:53
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
GDI
сообщение Jul 6 2012, 11:28
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



На время отладки режима захвата таймера остальные ноги можно и не использовать по прямому назначению.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Jul 6 2012, 11:37
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Цитата(GDI @ Jul 6 2012, 14:28) *
На время отладки режима захвата таймера остальные ноги можно и не использовать по прямому назначению.

На остальных ногах висят: полевики в full bridge (4 ноги), датчики (которые не отключить, 3 ноги), программатор. Если я буду беспорядочно щёлкать полевиками, то есть шанс устроить "сквозняк" и запалить схему. Устраивать соревнование "чей источник тока сильнее" между ногами контроллера и выходными буферами датчиков тоже малоперспективно. Жаль, что в этом дохлячке нет USART - хоть какой-то шанс был бы... а так, похоже, придётся методом тыка-с.

Сообщение отредактировал Slonofil - Jul 6 2012, 11:38
Go to the top of the page
 
+Quote Post
GDI
сообщение Jul 6 2012, 12:05
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



А вариант порезать дорожки/поднять ноги полевикам/отключить питание полевиков Вы не рассматриваете? Или просто взять отдельный Тини и на макетку припаять, да что на макетку, его можно прямо на разъем припаять который потом в программатор воткнуть.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Jul 6 2012, 12:06
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Цитата(GDI @ Jul 6 2012, 15:05) *
А вариант порезать дорожки/поднять ноги полевикам/отключить питание полевиков Вы не рассматриваете? Или просто взять отдельный Тини и на макетку припаять, да что на макетку, его можно прямо на разъем припаять который потом в программатор воткнуть.

Это, конечно, выход - надо попробовать на отдельной плате помыкаться.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th June 2025 - 05:25
Рейтинг@Mail.ru


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