Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Определение минимального интервала между импульсами
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Алексей ВМ
Добрый день,

имеется задача - определение интервала между импульсами. Импульсы заведены на отдельные входы прерываний (всего 4), следуют с периодом ~500 мс. Надо оценить сдвиг между этими импульсами, выработать управляющие сигналы. Позволит ли сочетание AT91SAM9G45 400MHz + Линух это сделать, если точность оценки должна быть не ниже 50 - 80 нс?
aaarrr
Нет. И даже трудно представить себе что-то столь же неподходящее для решения задачи измерения времянок импульсов.
GDI
Ну, один канал высокоточного измерения импульсов я делал на SAM9263 с использованием режима захвата таймера, пришлось патчить ядро, конечно. Разрешение было получено 40нс при клоке 200МГц и это не предел, можно было и 20нс получить, просто измеряемые импульсы были секундными, и счетчик переполнялся. Так что, если найдется 4 входа захвата и свободные таймера, то почему нет?
Алексей ВМ
Цитата(aaarrr @ Apr 18 2011, 19:40) *
Нет. И даже трудно представить себе что-то столь же неподходящее для решения задачи измерения времянок импульсов.


А в чем может быть засада? Латентность обработки прерывания в Линухе?


Цитата(GDI @ Apr 19 2011, 10:53) *
Ну, один канал высокоточного измерения импульсов я делал на SAM9263 с использованием режима захвата таймера, пришлось патчить ядро, конечно. Разрешение было получено 40нс при клоке 200МГц и это не предел, можно было и 20нс получить, просто измеряемые импульсы были секундными, и счетчик переполнялся. Так что, если найдется 4 входа захвата и свободные таймера, то почему нет?


То есть Вы делали измерение 1 сек интервала с точностью 40 нс, правильно я понимаю? У меня несколько другая задача - надо померить разность между несколькими каналами и ещё успеть выработать сигнал управления.
GDI
Цитата(Алексей ВМ @ Apr 19 2011, 10:33) *
То есть Вы делали измерение 1 сек интервала с точностью 40 нс, правильно я понимаю? У меня несколько другая задача - надо померить разность между несколькими каналами и ещё успеть выработать сигнал управления.

Да, именно так, задача была лишь измерить длительность импульса. Ваша задача тоже может быть решена на регистрах сравнения таймеров. Проблема только в том, чтобы найти нужное количество таймеров и подклюить сигналы на их входы сравнения. У SAM9263 есть 3 таймера и каждый имеет по 2 регистра захвата-сравнения. С SAM9G45 я не работал, но, думаю, там таймеров не меньше. Сами измерения при этом будут происходить аппаратно, ну а результат и управляющее воздействие - это отдельная задача. У меня результат читался в юзерспейсе и воздействие было очень медленным, с интервалом в десятки секунд. В общем курите раздел Timer Counter Вашего контроллера, а именно Capture Mode.
aaarrr
Цитата(Алексей ВМ @ Apr 19 2011, 11:33) *
А в чем может быть засада? Латентность обработки прерывания в Линухе?

С латентностью прерываний вообще, безотносительно к ОС. Используйте capture, как уже советовали. Такая задача должна решаться "железными" средствами.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.