|
Измерение периода AVR микронтроллером |
|
|
|
May 24 2008, 15:09
|
Частый гость
 
Группа: Свой
Сообщений: 80
Регистрация: 17-05-08
Из: Питер
Пользователь №: 37 575

|
Вопрос заключается в следующем. Необходимо измерить малый период с достаточно высокой точностью, используя микроконтроллер. Просмотрев литературу на эту тему пришел к выводу, что лучше всего это было бы реализовать с помощью усреднения на некотором интервале времени. Но к сожалению не нашел алгоритмов расчета среднего значения для микроконтроллеров. Все что удалось мне найти - это алгоритмы для микропроцессоров с ПЗ и ФЗ. Кто-нибудь мог бы мне посоветовать какие-нибудь интернет-ссылки или литературу на эту тему???
|
|
|
|
|
 |
Ответов
|
May 24 2008, 17:06
|
Местный
  
Группа: Свой
Сообщений: 215
Регистрация: 10-04-07
Пользователь №: 26 929

|
Вообще то поможет, только криво.
Можно померять интервал времени для 0x2000 измеряемых импульсов. 400нс - это всего лишь 2,5MHz. Вообщем надо один из 16-битных счетчиков тактировать от внешнего измеряемого сигнала, а саму AVR запустить от 16MHz кварца. Второй 16-бит таймер тактируем от 16MHz.
Теперь на счетчик 2,5MHz ставим прерывание по переполнению, и записываем в него (0xFFFF - 0x2000). сразу же обнуляем второй таймер.
В момент возникновения прерывания, значение в TIMER2 будет соответствовать количеству периодов 16MHZ, уместившихся в 0x2000 периодов 2,5MHZ измеряемого сигнала.
Только результат может быть неправидльным, тоестьокругленным, если 2,5MHz сигнал имеет джиттер.
|
|
|
|
|
May 24 2008, 18:08
|
Частый гость
 
Группа: Свой
Сообщений: 80
Регистрация: 17-05-08
Из: Питер
Пользователь №: 37 575

|
Цитата(zltigo @ May 24 2008, 21:36)  А с 16бит разрешением это "всего лишь" в шестьдесят пять тысяч пятьсот трицать пять раз больше... Сколько это будет в Гигагерцах? Если я не ошибся в расчетах - 40 Цитата(zltigo @ May 24 2008, 20:07)  О это волшебное заклинание "AVR!!!!". Не поможет - ну не действует оно всегда и везде. Не действует. Moderator: Тему перенес. Я на форуме не давно. Но правила читал  Поэтому тему разместил в этом разделе, т.к. реализацию этого устройства желательно провести на AVR. У которых фиксированная архитектура и команды. Цитата(Amper25 @ May 24 2008, 21:06)  Вообще то поможет, только криво.
Можно померять интервал времени для 0x2000 измеряемых импульсов. 400нс - это всего лишь 2,5MHz. Вообщем надо один из 16-битных счетчиков тактировать от внешнего измеряемого сигнала, а саму AVR запустить от 16MHz кварца. Второй 16-бит таймер тактируем от 16MHz.
Теперь на счетчик 2,5MHz ставим прерывание по переполнению, и записываем в него (0xFFFF - 0x2000). сразу же обнуляем второй таймер.
В момент возникновения прерывания, значение в TIMER2 будет соответствовать количеству периодов 16MHZ, уместившихся в 0x2000 периодов 2,5MHZ измеряемого сигнала. Только результат может быть неправидльным, тоестьокругленным, если 2,5MHz сигнал имеет джиттер. Спасибо! Идея мне понравилась. Но это было бы слишком просто. Просто я не правильно сформулировал задачу. Длительность импульса 400 нс, но частота следования 1 Гц. Вот в чем проблема. Поэтому и нужно осреднение и статистическая обработка. Цитата(zltigo @ May 24 2008, 20:07)  О это волшебное заклинание "AVR!!!!". Не поможет - ну не действует оно всегда и везде. Не действует. Moderator: Тему перенес. Хотя чувствую как бы не пришлось бы применять Пентиум-шментиум или 486 для измерения...
|
|
|
|
|
May 24 2008, 18:09
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(lex_84 @ May 24 2008, 21:03)  Если я не ошибся в расчетах - 40 Ошиблись - 2.5mHz * 65535 = 163.8 ГГц нереальная частота. Цитата Просто я не правильно сформулировал задачу. Длительность импульса 400 нс, но частота следования 1 Гц. Вот в чем проблема. Поэтому и нужно осреднение и статистическая обработка. А можно поинтересоваться зачем измерять его длительность если Вы и так знаете что длительность == 400нс? Цитата Хотя чувствую как бы не пришлось бы применять Пентиум-шментиум или 486 для измерения... не поможет. вот простенькая, но резвая CPLD, была бы кстати.
|
|
|
|
|
May 24 2008, 18:18
|
Частый гость
 
Группа: Свой
Сообщений: 80
Регистрация: 17-05-08
Из: Питер
Пользователь №: 37 575

|
Цитата(defunct @ May 24 2008, 22:09)  Ошиблись - 2.5mHz * 65535 = 163.8 ГГц нереальная частота. А можно поинтересоваться зачем измеряться его длительность если Вы и так знаете что длительность == 400нс?
не поможет. вот простенькая, но резвая CPLD, была бы кстати. Я не то число написал - это для 14 разрядов "оцифровать период"- я под этим подразумевал, что период сигнала меняется от 0 до 400 нс. Насчет CPLD - хороший вариант, но я не знаю таких CPLD которые бы бегали под 163 ГГц Повторюсь, я ознакомился с теорией этой проблемы и мне представляется, что нужно либо реализовать на CPLD такое извращение, как нониусный метод, либо использовать стат. обработку. Но примеров практической реализации подобных устройств я не нашел... И я думаю что стат обработку на МК реализовать проще, чем нониусный метод на ПЛИС.
|
|
|
|
Сообщений в этой теме
lex_84 Измерение периода AVR микронтроллером May 24 2008, 15:09 domowoj Цитата(lex_84 @ May 24 2008, 22:09)
Воп... May 24 2008, 15:38 lex_84 Цитата(domowoj @ May 24 2008, 19:38) Малы... May 24 2008, 15:55  zltigo Цитата(lex_84 @ May 24 2008, 17:55) Измер... May 24 2008, 16:07   singlskv Цитата(zltigo @ May 24 2008, 20:07) О это... May 24 2008, 18:35    lex_84 Цитата(singlskv @ May 24 2008, 22:35) Авт... May 24 2008, 18:50     defunct Цитата(lex_84 @ May 24 2008, 21:50) Я дум... May 24 2008, 18:53      lex_84 Цитата(defunct @ May 24 2008, 22:53) Да н... May 24 2008, 18:57       defunct Цитата(lex_84 @ May 24 2008, 21:57) Но по... May 24 2008, 19:07     singlskv Цитата(lex_84 @ May 24 2008, 22:50) Очень... May 24 2008, 18:58      lex_84 Цитата(singlskv @ May 24 2008, 22:58) нас... May 24 2008, 19:20       singlskv Цитата(lex_84 @ May 24 2008, 23:13) ФЗ и ... May 24 2008, 19:29        lex_84 Цитата(singlskv @ May 24 2008, 23:29) А д... May 24 2008, 19:34         singlskv Цитата(lex_84 @ May 24 2008, 23:34) Кстат... May 24 2008, 19:49 Alhen что такое ПЗ и ФЗ? May 24 2008, 15:49 _Pasha ПАДАЖДЫТЭ!
167 ГГц тактовой - это есть до фига... May 24 2008, 16:57     defunct Цитата(lex_84 @ May 24 2008, 21:18) ... May 24 2008, 18:39   svs39 Цитата(lex_84 @ May 24 2008, 21:08) Если ... May 24 2008, 18:16 _Ivan_33 использовать прерывания по фронту и спаду сигнала ... May 24 2008, 18:27 lex_84 Цитата(_Ivan_33 @ May 24 2008, 22:27) исп... May 24 2008, 18:37 Леонид Иванович Задача очень непростая. Делал на AVR + ПЛИС измере... May 24 2008, 20:38 singlskv Цитата(Леонид Иванович @ May 25 2008, 00... May 24 2008, 20:54  Леонид Иванович Аналоговая. Интегратор, на время импульса включаем... May 26 2008, 07:52   lex_84 Цитата(Леонид Иванович @ May 26 2008, 11... May 28 2008, 19:56 lex_84 Цитата(Леонид Иванович @ May 25 2008, 00... May 24 2008, 21:58  =GM= Цитата(lex_84 @ May 24 2008, 20:58) Интер... May 24 2008, 22:30  XVR Цитата(lex_84 @ May 25 2008, 01:58) Согла... May 26 2008, 07:41 domowoj lex_84
А интересно зачем это нужно ? И зачем така... May 25 2008, 02:11 lex_84 Цитата(domowoj @ May 25 2008, 06:11) lex_... May 25 2008, 09:14
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|