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

 
 
 
Reply to this topicStart new topic
> Частотомер, вопросов много по МК AT91SAM7A3
Sneg_87
сообщение Oct 14 2009, 03:37
Сообщение #1


Участник
*

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



что есть в наличии:
отладочная плата AT91SAM7A3-EK, среда разработки IAR, такс еще есть JTAG, а остальное вроде генератора, COM-порта и проводов думаю не так существенно.

Объясняю ситуацию smile.gif Необходимо разработать алгоритм по измерению частоты (попросту частотомер). В институте дело с МК обстояло худо (одна всего дисциплина на обучении).

Из прочитанного на форумах и найденного в интернете, понял что для измерения частоты необходимо применение таймеров, а также АЦП для оцифровки входного сигнала. Частота измеряется с точностью 0,1 Гц, время измерения не более 100мс, в сигнале присутствует несколько шумов временных и амплитудных. Диапазон частот до 6,5 кГц.

Во-первых, хотелось бы убрать из сигнала постоянную состовляющую, насколько помню сделать можно с помощью цифровых фильтров. Вопрос в том каких, можно ли по другому убрать постоянную сост. сигнала?
Во-вторых, вопрос по алгоритму: сколько таймеров потребуется для измерения частоты. В какой книжке мона найти описание цифровых алгоритмов измерения частоты? Найденное мной в сети - описание МК, пару книжек по МК вообщем.
В-третьих, скажем частоту успеть померить надо за 0,1c, ну понятно будет есть частота равна 5кГц - будет несколько периодов, но в голове моей не помещается как можно за тоже время измерить скажем частоту 1Гц - не успеет же МК. Объясните, пожалуйста, как!


--------------------
coding, кодинг, koDinГ, copyriting, printing ....
Go to the top of the page
 
+Quote Post
akl
сообщение Oct 14 2009, 05:15
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 4-04-07
Из: Ижевск
Пользователь №: 26 773



Здравствуйте. Посмотрите эту веточку
http://electronix.ru/forum/index.php?showtopic=29796
Go to the top of the page
 
+Quote Post
Sneg_87
сообщение Oct 16 2009, 04:29
Сообщение #3


Участник
*

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



для измерения частоты необходимо два счетчика, режим их работы - захват? или один в режиме генератора, а другой на захват.


--------------------
coding, кодинг, koDinГ, copyriting, printing ....
Go to the top of the page
 
+Quote Post
akl
сообщение Oct 16 2009, 06:26
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 4-04-07
Из: Ижевск
Пользователь №: 26 773



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


Участник
*

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



Подскажите, пожалуйста, последовательность действий при подключении в проекте IAR библиотеку?
Как делаю я: в листинге пишу строчку #include "conio.h" и при вызове свойств проекта нажимаю на Add->Add Files... далее выбираю файл.


--------------------
coding, кодинг, koDinГ, copyriting, printing ....
Go to the top of the page
 
+Quote Post
Sneg_87
сообщение Oct 19 2009, 09:49
Сообщение #6


Участник
*

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



как проверить что прерывание по захвату произошло, в каком регистре у ARM можно найти это отражение?


--------------------
coding, кодинг, koDinГ, copyriting, printing ....
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 19 2009, 09:54
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Sneg_87 @ Oct 19 2009, 13:49) *
как проверить что прерывание по захвату произошло, в каком регистре у ARM можно найти это отражение?

В TC_SR. Только не забывайте, что статусы сбрасываются при чтении.
Go to the top of the page
 
+Quote Post
Sneg_87
сообщение Oct 20 2009, 02:51
Сообщение #8


Участник
*

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



2 aaarrr Спасибо за ответ
Подскажите с помощью чего можно убрать постоянную составляющую из сигнала Uпост (на рисунке). Насколько знаю цифровая фильтрация в этом может помочь?
Прикрепленные файлы
Прикрепленный файл  ______.bmp ( 253.41 килобайт ) Кол-во скачиваний: 29
 


--------------------
coding, кодинг, koDinГ, copyriting, printing ....
Go to the top of the page
 
+Quote Post
Sneg_87
сообщение Oct 21 2009, 09:48
Сообщение #9


Участник
*

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



у таймера есть регистр (IDR) запрещения прерываний от канала ТС, при конфигурации таймера я разрешил прерывания по захвату и переполнению. при вызове функции:

void DISABLE_INTERRUPT (AT91PS_TC pTc)
{
pTc->TC_IDR = 0x28;
}

будут запрещены все прерывания или по захвату?


--------------------
coding, кодинг, koDinГ, copyriting, printing ....
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 21 2009, 10:23
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Sneg_87 @ Oct 21 2009, 13:48) *
будут запрещены все прерывания или по захвату?

Будут запрещены LDRAS: RA Loading и CPBS: RB Compare.

P.S. Старайтесь пользоваться именоваными идентификаторами для битов, запись типа Reg = 0xabcd - потенциальный источник грабель.
Go to the top of the page
 
+Quote Post
Sneg_87
сообщение Oct 21 2009, 18:39
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 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 ....
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 21 2009, 18:49
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Sneg_87 @ Oct 21 2009, 22:39) *
Видимо не померить мне этими методами сигнал, который прикрепленн к #8 моему посту. Ведь сигнал не логический, а сложной формы.

Смотря что нужно измерять. Но сигнал, естественно, так или иначе придется сначала облечь в цифровую форму.

Цитата(Sneg_87 @ Oct 21 2009, 22:39) *
А по совпадению с RC?

По совпадению RC не будут.
Go to the top of the page
 
+Quote Post
Sneg_87
сообщение Oct 22 2009, 03:41
Сообщение #13


Участник
*

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



Цитата(aaarrr @ Oct 22 2009, 00:49) *
Смотря что нужно измерять. Но сигнал, естественно, так или иначе придется сначала облечь в цифровую форму.

Частоту сигнала необходимо померить, данные - оцифрованное напряжение на ацп, а не меандры.
Как применить таймеры для измерения сложного сигнала у меня пока в голове не укладывается ввиду малого опыта. Алгоритм предложенный =GM= читал не один раз


--------------------
coding, кодинг, koDinГ, copyriting, printing ....
Go to the top of the page
 
+Quote Post
Lotor
сообщение Nov 3 2009, 08:50
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(Sneg_87 @ Oct 22 2009, 06:41) *
Частоту сигнала необходимо померить, данные - оцифрованное напряжение на ацп, а не меандры.
Как применить таймеры для измерения сложного сигнала у меня пока в голове не укладывается ввиду малого опыта. Алгоритм предложенный =GM= читал не один раз

Ну можно даже и без таймеров померить частоту, только с помощью АЦП. Реализовать программно компаратор ничего сложного - сравнивать текущее и прошлые результаты измерения, ловля "смену знака". Определение производной, экстремумов помните? Ну вот, определив по смене знака максимумы и минимумы можно определить и частоту сигнала.
Только проще все же с помощью детекторов нуля привести сигнал к тому, что словит Ваш микроконтроллер и посчитать таймерами.


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
Sneg_87
сообщение Nov 11 2009, 10:42
Сообщение #15


Участник
*

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



Цитата(Lotor @ Nov 3 2009, 13:50) *
Ну можно даже и без таймеров померить частоту, только с помощью АЦП. Ну вот, определив по смене знака максимумы и минимумы можно определить и частоту сигнала.

В целом так и получается, правда смотрю не максимум и минимум у сигнала, а начинаю отсчет периода с точки пересечения среднего значения сигнала.
Для статических данных проводил и медианную фильтрацию и поиск экстремумов-работает просто на "УРА". Как перехожу к системе реального времени, медианная фильтрация искажает сигнал более существенно чем имп. помехи. Макс и мин тож не всегда получается словить smile.gif

Частоту с усреднением за 10 периодов я начал мерить, но сейчас у меня "нога застряла" на другой ступени лестницы. Сигнал у меня идет от низкочастотного генератора на ножку порта ввода-вывода, после идет оцифровка (на АЦП) и вычисление частоты. Так вот, как сделать, чтобы при выключении генератора можно было определить, что сигнал синусоиды не поступает на PIO?
ЗЫ может в регистрах ПВВ, может в AIC, и др. вообщем много пересмотрел и не нашел sad.gif


--------------------
coding, кодинг, koDinГ, copyriting, printing ....
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 18:00
Рейтинг@Mail.ru


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