Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: обнуление параметров
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Sneg_87
у меня на плату с МК идет синусоида с генератора -> сигнал оцифровывается на АЦП -> происходит рассчет частоты.
после выключения генератора программа в МК запоминает последние значения всех переменных и как бы "зависает", а необходимо обнулить все переменные при отключении. Если кто сталкивался с подобной проблемой - оптишитесь, пожалуйста, как вы ее решили.
OLEG_BOS
Цитата(Sneg_87 @ Dec 9 2009, 20:11) *
.. программа в МК запоминает последние значения всех переменных и как бы "зависает",

Недостаточно данных для решения проблемы:
1. Что за МК ?
2. Куда "запоминает последние значения всех переменных" ?
3. А что разве кому-то еще нужны "обнуленные данные " в МК после его выключения ?
4. Непонятно что откуда и куда идет : "у меня на плату с МК идет синусоида с генератора" - это как ?

В общем ничего непонятно из сказанного Вами
rezident
Sneg_87, какой диапазон частот измеряете и какой у вас временной период для выдачи результата частоты? ИМХО период подсчета частоты слишком большой.
И пользуйтесь все-таки знаками препинания, чтобы вас понимали.
Sneg_87
Цитата(OLEG_BOS @ Dec 9 2009, 23:28) *
Недостаточно данных для решения проблемы:


1 микроконтроллер AT91SAM7A3
2 в программе есть место для хранения переменных. какая память используется для хранения не знаю
3 микроконтроллер не выключается, выключается генератор.
Дело в том, что после выключения ГЧ на выходе АЦП получается "плавающее" значение (ввиду наводок), а его не должно быть т.к. генератор физически отключен. в этом вся и загвоздка.
Поэтому и необходимо обнулять параметры после выключения генератора.
4 на плату с микроконтроллером идет от генератора-частоты (ГЧ-...) сигнал

Цитата(rezident @ Dec 9 2009, 23:43) *
Sneg_87, какой диапазон частот измеряете и какой у вас временной период для выдачи результата частоты? ИМХО период подсчета частоты слишком большой.

Диапазон частот от 0,1 Гц до 6,5кГц, в среднем время измерения одного периода около 40 мс (в зависимости от частоты), время индикации в этих же пределах.

Усреднение по частоте происходит каждый 2000 отсчет из 50 000. Если 2000 отсчет попадает на середину или в момент близкий к концу периода сигнала, то алгоримт домеряет до последнего значения периода. Где может произойти ошибка, если частота будет около 0.
ЗЫ насчет "знаками препинания" - приму к сведению.
SasaVitebsk
1) вы можете подгрузить вход АЦП, если сигнал генератора мощный.
2) если у вас частота в пределах, например, 100-1000, то отфильтровывайте остальные частоты.
3) Сделайте программный детектор частоты. Критерии могут быть следующие:
а) Амплитуда не менее ....
б) Частота не меняется не менее ... интервала времени

ну и так далее
Sneg_87
Цитата(SasaVitebsk @ Dec 10 2009, 01:46) *
ну и так далее

1 до входа на АЦП стоит схема ограничивающая сигнал по амплитуде.
2 какие алгоритмы, способы используются для отфильтровки остальных составляющих?
3 если есть ссылки с "типичной" программой частотного детектора, то буду очень благодарен.
Dog Pawlowa
Цитата(Sneg_87 @ Dec 10 2009, 08:11) *
1 до входа на АЦП стоит схема ограничивающая сигнал по амплитуде.

Ну так что мешает анализировать амплитуду сигнала до схемы ограничения?
Нет ограничения - данные о частоте не действительны.
Sneg_87
Цитата(Dog Pawlowa @ Dec 10 2009, 10:06) *
1 Ну так что мешает анализировать амплитуду сигнала до схемы ограничения?
2 Нет ограничения - данные о частоте не действительны.

1 микросхема может "сгореть" от перенапряжения. и схема ограничения еще помимо прочего убирает наводимые шумы, поэтому до нее мерять можно, конечно, но не желательно.
2 а вот эту фразу не понял. прошу пояснить

Да все просто на самом деле: сигнал есть - МК измеряет необходимые параметры сигнала, сигнала нет - все параметры по нулям. вот и взя задача, только как ее решить?
OLEG_BOS
Цитата(Sneg_87 @ Dec 10 2009, 10:10) *
сигнала нет - все параметры по нулям. вот и взя задача, только как ее решить?

Как первый вариант, можна организовать дополнительную схему индикации полезного сигнала: пиковый детектор + компаратор. Вход компаратора настраивается на минимальную амплитуду полезного сигнала. Выход компаратора подключается к порту контроллера. Если полезный сигнал отсутсвует (его амплитуда ниже порогового уровня), на входе порта контроллера будет "0" - что значит полезного сигнала нет и данные нужно обнулить smile.gif
Второй вариант сделать тоже самое, но с помощью программного алгоритма wink.gif Определяем пиковые значения сигнала за интервал времени, усредняем его сравниваем с пороговым уровнем, в зависимости от результата обнуляем данные или делаем дальнейшие преобразования.
Выбор варианта реализации зависит от того на сколько загружен МК сторонними задачами.
Ant_m
Цитата(Sneg_87 @ Dec 9 2009, 22:04) *
Диапазон частот от 0,1 Гц до 6,5кГц, в среднем время измерения одного периода около 40 мс (в зависимости от частоты), время индикации в этих же пределах.

Усреднение по частоте происходит каждый 2000 отсчет из 50 000. Если 2000 отсчет попадает на середину или в момент близкий к концу периода сигнала, то алгоримт домеряет до последнего значения периода. Где может произойти ошибка, если частота будет около 0.


При частоте 0,1 Гц с описанным вами алгоритмом усреднения у вас частота будет устанавливаться очень дооооолго, замучаетесь ждать. Может в этом причина?

Приходилось мерять частоту от 1/60Гц до 100Гц. На нижнем пределе измерения делал таймер, отсчитывающий время от начала импульса. Если время превышало, с запасом, 80сек - считал что сигнала нет, и сбрасывал результат измерения.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.