|
|
  |
Частотомер, вопросов много по МК AT91SAM7A3 |
|
|
|
Oct 14 2009, 03:37
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
что есть в наличии: отладочная плата AT91SAM7A3-EK, среда разработки IAR, такс еще есть JTAG, а остальное вроде генератора, COM-порта и проводов думаю не так существенно. Объясняю ситуацию  Необходимо разработать алгоритм по измерению частоты (попросту частотомер). В институте дело с МК обстояло худо (одна всего дисциплина на обучении). Из прочитанного на форумах и найденного в интернете, понял что для измерения частоты необходимо применение таймеров, а также АЦП для оцифровки входного сигнала. Частота измеряется с точностью 0,1 Гц, время измерения не более 100мс, в сигнале присутствует несколько шумов временных и амплитудных. Диапазон частот до 6,5 кГц. Во-первых, хотелось бы убрать из сигнала постоянную состовляющую, насколько помню сделать можно с помощью цифровых фильтров. Вопрос в том каких, можно ли по другому убрать постоянную сост. сигнала? Во-вторых, вопрос по алгоритму: сколько таймеров потребуется для измерения частоты. В какой книжке мона найти описание цифровых алгоритмов измерения частоты? Найденное мной в сети - описание МК, пару книжек по МК вообщем. В-третьих, скажем частоту успеть померить надо за 0,1c, ну понятно будет есть частота равна 5кГц - будет несколько периодов, но в голове моей не помещается как можно за тоже время измерить скажем частоту 1Гц - не успеет же МК. Объясните, пожалуйста, как!
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
Oct 16 2009, 04:29
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
для измерения частоты необходимо два счетчика, режим их работы - захват? или один в режиме генератора, а другой на захват.
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
Oct 16 2009, 06:26
|
Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 4-04-07
Из: Ижевск
Пользователь №: 26 773

|
В принципе, достаточно 1 таймера, имеющего прерывания по захвату и по переполнению. Числом переполнений определяете требуемое время измерения, а захватами- начало и конец счета (программным счетчиком) целого числа периодов измеряемой частоты. Это если делать методом "захвата". Например, так сделано здесь. http://radioded.ru/index.php?option=com_co...1&Itemid=49Если делать методом "временных ворот", то придется делать на двух таймерах. Один для формирования базы времени, другой для счета периодов измеряемой частоты.
|
|
|
|
|
Oct 19 2009, 04:24
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
Подскажите, пожалуйста, последовательность действий при подключении в проекте IAR библиотеку? Как делаю я: в листинге пишу строчку #include "conio.h" и при вызове свойств проекта нажимаю на Add->Add Files... далее выбираю файл.
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
Oct 19 2009, 09:49
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
как проверить что прерывание по захвату произошло, в каком регистре у ARM можно найти это отражение?
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
Oct 20 2009, 02:51
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
2 aaarrr Спасибо за ответ Подскажите с помощью чего можно убрать постоянную составляющую из сигнала Uпост (на рисунке). Насколько знаю цифровая фильтрация в этом может помочь?
Прикрепленные файлы
______.bmp ( 253.41 килобайт )
Кол-во скачиваний: 29
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
Oct 21 2009, 09:48
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
у таймера есть регистр (IDR) запрещения прерываний от канала ТС, при конфигурации таймера я разрешил прерывания по захвату и переполнению. при вызове функции:
void DISABLE_INTERRUPT (AT91PS_TC pTc) { pTc->TC_IDR = 0x28; }
будут запрещены все прерывания или по захвату?
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
Oct 21 2009, 18:39
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
Видимо не померить мне этими методами сигнал, который прикрепленн к #8 моему посту. Ведь сигнал не логический, а сложной формы. Цитата(aaarrr @ Oct 21 2009, 16:23)  Будут запрещены LDRAS: RA Loading и CPBS: RB Compare.
P.S. Старайтесь пользоваться именоваными идентификаторами для битов, запись типа Reg = 0xabcd - потенциальный источник грабель. А по совпадению с RC?
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
Oct 21 2009, 18:49
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Sneg_87 @ Oct 21 2009, 22:39)  Видимо не померить мне этими методами сигнал, который прикрепленн к #8 моему посту. Ведь сигнал не логический, а сложной формы. Смотря что нужно измерять. Но сигнал, естественно, так или иначе придется сначала облечь в цифровую форму. Цитата(Sneg_87 @ Oct 21 2009, 22:39)  А по совпадению с RC? По совпадению RC не будут.
|
|
|
|
|
Oct 22 2009, 03:41
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
Цитата(aaarrr @ Oct 22 2009, 00:49)  Смотря что нужно измерять. Но сигнал, естественно, так или иначе придется сначала облечь в цифровую форму. Частоту сигнала необходимо померить, данные - оцифрованное напряжение на ацп, а не меандры. Как применить таймеры для измерения сложного сигнала у меня пока в голове не укладывается ввиду малого опыта. Алгоритм предложенный =GM= читал не один раз
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
Nov 3 2009, 08:50
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Цитата(Sneg_87 @ Oct 22 2009, 06:41)  Частоту сигнала необходимо померить, данные - оцифрованное напряжение на ацп, а не меандры. Как применить таймеры для измерения сложного сигнала у меня пока в голове не укладывается ввиду малого опыта. Алгоритм предложенный =GM= читал не один раз Ну можно даже и без таймеров померить частоту, только с помощью АЦП. Реализовать программно компаратор ничего сложного - сравнивать текущее и прошлые результаты измерения, ловля "смену знака". Определение производной, экстремумов помните? Ну вот, определив по смене знака максимумы и минимумы можно определить и частоту сигнала. Только проще все же с помощью детекторов нуля привести сигнал к тому, что словит Ваш микроконтроллер и посчитать таймерами.
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
Nov 11 2009, 10:42
|

Участник

Группа: Участник
Сообщений: 41
Регистрация: 12-10-09
Пользователь №: 52 882

|
Цитата(Lotor @ Nov 3 2009, 13:50)  Ну можно даже и без таймеров померить частоту, только с помощью АЦП. Ну вот, определив по смене знака максимумы и минимумы можно определить и частоту сигнала. В целом так и получается, правда смотрю не максимум и минимум у сигнала, а начинаю отсчет периода с точки пересечения среднего значения сигнала. Для статических данных проводил и медианную фильтрацию и поиск экстремумов-работает просто на "УРА". Как перехожу к системе реального времени, медианная фильтрация искажает сигнал более существенно чем имп. помехи. Макс и мин тож не всегда получается словить  Частоту с усреднением за 10 периодов я начал мерить, но сейчас у меня "нога застряла" на другой ступени лестницы. Сигнал у меня идет от низкочастотного генератора на ножку порта ввода-вывода, после идет оцифровка (на АЦП) и вычисление частоты. Так вот, как сделать, чтобы при выключении генератора можно было определить, что сигнал синусоиды не поступает на PIO? ЗЫ может в регистрах ПВВ, может в AIC, и др. вообщем много пересмотрел и не нашел
--------------------
coding, кодинг, koDinГ, copyriting, printing ....
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|