![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| RebornCrusader |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 18.1.2007 Где: Владивосток Репутация: нет Всего: 6 |
Вообще мне требуется засечь время, прошедшее между двумя сигналами, с точностью до 1 мс. Может я должен работать с прерываниями, каждый раз получать и пересчитывать какие-то внутренние тики в милисекунды? В документации много написно про таймеры, но как я понимаю, это не то что мне нужно. Контроллер ATmega8515, компилятор CodeVisionAVR. --------------------
"Fais se que dois, - adviegne que peut. C'est commande au chevalier" |
|||
|
||||
| Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 3 Всего: 154 |
Как раз наоборот, тебе нужно использовать режим "захвата"(Capture) таймера. Настраиваешь таймер на нужную частоту и режим, далее при приходе сигнала на вход захвата таймера, значение счетчика таймера сохраняется в регистре (ICR), и генерируется прерывание(что-бы генерировалось нужно его сначала настроить). В обработчике считываешь значение счетчика и обнуляешь счетчик таймера, вот и все. Так можно частоту сигнала измерить, главное правильно настроить таймер, что-бы он не переполнялся и считал с нужной точностью(точность измерения будет равна периоду таймера).
Нет, для этого к контроллеру нужно подключить микросхему RTC, либо реализовать программно на одном из таймеров(это хуже и сложнее). |
||||
|
|||||
| RebornCrusader |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 18.1.2007 Где: Владивосток Репутация: нет Всего: 6 |
Спасибо. Много непонятных слов, но уже есть за что зацепиться. Можно пример, если не трудно?
--------------------
"Fais se que dois, - adviegne que peut. C'est commande au chevalier" |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 3 Всего: 154 |
Этот код для ATMega128 - компилятор - WinAvr (Code Vision - хлам))
здесь настраивается 3-й таймер на режим захвата
принцип работы такой: на вход захвата таймера идут импульсы с частотой f, таймер работает с частотой ft. ft > f, и ft зависит от нужной точности измерения периода. При каждом новом импульсе на входе захвата, таймер помещает значение счетчика TCNTn в регистр захвата (ICRn), после этого вызывается прерывание. В прерывании нужно сначала прочитать регистр ICRn в переменную, потом обнулить счетчик таймера TCNTn. В результате в переменной содержится количество тиков таймера между 2мя последними импульсами, пришедшими на вход захвата таймера. Зная частоту таймера, можно расчитать частоту входного сигнала, а так-же период. Точность зависит от частоты таймера, чем она больше, тем точнее измерение. Если не хватает разрядности таймера, то можно обрабатывать прерывание переполнения таймера. Это сообщение отредактировал(а) Lazin - 29.11.2007, 09:09 |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
Думаю в данном случае (точность до 1 мс) таймера хватит за глаза. RebornCrusader, теперь тебе осталось только узнать какое же значение сидит в переменной time_span. Можно просто 8 диодиков повесить и выдавать бинарное представление числа (что годится для чисел <=0xff), для остального пользуйся printf... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| RebornCrusader |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 18.1.2007 Где: Владивосток Репутация: нет Всего: 6 |
Большое спасибо!
Вывод - отдельная задача, будет несколько семисегментников с динамической индикацией. Сейчас я пока ими занимаюсь и с этим всё понятно. --------------------
"Fais se que dois, - adviegne que peut. C'est commande au chevalier" |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
А что будет за прибор то?
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| RebornCrusader |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 18.1.2007 Где: Владивосток Репутация: нет Всего: 6 |
А фиг знает
--------------------
"Fais se que dois, - adviegne que peut. C'est commande au chevalier" |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
А с чем же он тогда дружит?
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |