Перейти к содержанию
    

YDM86

Участник
  • Постов

    12
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Изучаю спящие режимы. AtMega8 не входит в режим ADC noise reduction. Между ножкой PORTD4 и землёй светодиод, и он моргает, хотя не должен бы, т.к. регистром MCUCR я вроде как отправил МК в вышеуказанный режим, причём все прерывания запрещены. Текст программы: #include <iom8.h> #include <ina90.h> #define bit(n) (1<<(n)) /* set i-bit */ #define setbit(port,n) (port|=bit(n)) /* set n-bit in port */ #define clrbit(port,n) (port&=(~bit(n))) /* clr n-bit in port */ int t=0; void main(void) { _CLI(); /* interruptions disabled */ DDRD=0xFF; PORTD=0xEF; clrbit(MCUCR,6); clrbit(MCUCR,5); setbit(MCUCR,4); setbit(MCUCR,7); /* entered the ADC noise reduction mode */ for(;;) { for(t=0;t<0xFFFF;t++)setbit(PORTD,4); for(t=0;t<0xFFFF;t++)clrbit(PORTD,4); } } Где я ошибаюсь?
  2. Я физик по образованию, но по данной теме знаком лишь с волнами и телеграфными уравнениями. Нужна книга по теории антенн, которая: 1. Будет ориентирована на описание реальных антенн 2. Содержит не список формул, упавших с потолка, а честные выводы хотя бы основных соотношений. 3. Излагает материал ясно и последовательно. 4. Позволяет от теории перебросить мост на практику(расчёт и конструирование излучающих и приёмных антенн для радиолюбительских целей). Ну, короче, ищу что-то типа учебника Сивухина или Иродова, но не про общую физику, а про физику антенн.
  3. Сделал, как указывал ilqiz через job, получил pdf-файл (для слоя top). Но при печати все размеры оказались раза в полтора больше реальных. Не могу найти, как это исправить.
  4. Область применения - просто регистрация сигнала определённой частоты(обнаружение передатчика, но надо ещё организовать и счёт импульсов, для этого и цифровой фильтр). Человек, который формально числится моим научным руководителем, сказал: "А давай ещё и цифровой фильтр попробуем". Он сам уже такую штуку делал, на таком же контроллере, говорит, что успевает контроллер по идее.(у него успевал). Консультировать меня подробно ему не хочется почему-то. :( Но! Пытаюсь отлаживать с помощью Debugger, так в эту функцию(DigFil) он не может зайти и значение её посчитать - даже разово, а не с частотой сколько-то там Гц. Что подозрительно и неясно, почему.
  5. Контроллер 32-битный(AT91SAM7S) Частота сэмплирования(дискретизации) 2000 Гц. Тактовая частота контроллера 48МГц, у АЦП - 4 МГц. Вопрос такой: при инициализации цифрового фильтра - правильно ли то, что я делаю операцию x=DigFil(0,1); причём 1 раз. Это именно то, что называется "инициализация фильтра нулями", насколько я вижу, или всё-таки не совсем?
  6. Код (тот, что создал filter solution): /******************************************************************************/ /* Filter Solutions Version 10.0 Nuhertz Technologies, L.L.C. */ /* www.nuhertz.com */ /* +1 602-206-7781 */ /* 6th Order Band Pass Butterworth */ /* Bilinear Transformation with Prewarping */ /* Sample Frequency = 2.000 KHz */ /* Standard Form */ /* Arithmetic Precision = 4 Digits */ /* */ /* Lower Corner Frequency = 20.00 Hz */ /* Upper Corner Frequency = 24.00 Hz */ /* */ /******************************************************************************/ /* */ /* Input Variable Definitions: */ /* Inputs: */ /* invar float The input to the filter */ /* setic int 1 to initialize the filter to zero */ /* */ /* There is no requirement to ever initialize the filter. */ /* The default initialization is zero when the filter is first called */ /* */ /******************************************************************************/ /* */ /* This software is automatically generated by Filter Solutions. There are */ /* no restrictions from Nuhertz Technologies, L.L.C. regarding the use and */ /* distributions of this software. */ /* */ /******************************************************************************/ double DigFil(invar, setic) double invar; int setic; { float sumnum, sumden; int i; static float delay[13] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; static float znum[13] = { 6.006e-14, 0.0, -3.603e-13, 0.0, 9.009e-13, 0.0, -1.201e-12, 0.0, 9.009e-13, 0.0, -3.603e-13, 0.0, 6.006e-14 }; static float zden[12] = { .9526, -11.45, 63.11, -210.9, 475.9, -764.1, 894.8, -770.3, 483.7, -216.1, 65.19, -11.92 }; if (setic==1){ for (i=0;i<=12;i++) delay = 9.045e+13*invar; return 0.0; } else{ sumden=0.0; sumnum=0.0; for (i=0;i<=11;i++){ delay = delay[i+1]; sumden += delay*zden; sumnum += delay*znum; } delay[12] = invar-sumden; sumnum += delay[12]*znum[12]; return sumnum; } }
  7. Здравствуйте! Вопрос ламмерский, но по теме.Не получается воспользоваться рассчитанным в системе filter solution 10.0 полосовым(band pass) цифровым фильтром на 22Гц с полосой 4 Гц 6 порядка. Я пользуюсь микроконтроллером, программирую его на Си. Т.е. взял Си-код(файл DigFil1.c), сгенерированный вышеуказанной программой, присоединил его к своему проекту. Проинициализировал, т.е. написал в начале программы x=DigFil(0,1); Далее пытаюсь снимать с АЦП показания(частота дискретизации соответствует указанной в программке), передавать их на функцию фильтра: x=DigFil(data,0); Но х оказывается неопределён. При отладке напротив переменной x пишется не значение, а 0.NaN. Помогите, пожалуйста, заставить фильтр работать.
  8. Не было меня несколько дней - к сожалению. Отвечаю на возникшие вопросы: Не ошибаетесь. Есть некий объект, на котором установлен трансмиттер - мощный передатчик фирмы пипетроникс, генерирующий 22 Гц(прерывисто, 1/3 секунды генерация есть, 2/3 - "молчит"). Объект движется в пространстве, а спомощью приёмника, который я пытаюсь сделать, его надо обнаружить, когда он подъедет(а он обязательно это сделает) к контрольному пункту - там приёмник и стоит. По специфике места есть наводки сетевые, от всякой техники и т.д. На 50+/-0,5 Гц после антенны стоит режекторный активный фильтр, также сделаны фильтры, убирающие более высокие частоты. Воспользовался рекомендациями, получилось узкополосность сделать требуемую. Всем, кто дельные вещи написал и показал - спаибо. С постоянной составляющей вроде борюсь, правда примитивным способом - вычислением среднего с накоплением. и его вычитанием(до Герцеля). Здесь проблем не встретил. Почему хочу ускорить - потому что генерация прерывистая, т.е. есть риск, что передатчик испустит пачку 22Гц импульсов далеко, приёмник не стработает, а устройство с передатчиком проедет и следующая пачка будет опять-таки далеко от места регистрации испущена и незамечена.
  9. У меня реальная физическая система - антенна, фильтры, микроконтроллер. Что значит менять фильтр, ведь это алгоритм вычисления по формулам, в которые входят частота дискретизации, величина выборки, собственно частота, амплитуду которой я ищу (22Гц) и значения сигнала, снятые с АЦП. Естественно, я при изменении величины выборки или частоты дискретизации меняю соответствующие сонстанты в функции алгоритма Герцеля. Т.е. если я хочу проверять наличие 22Гц составляющей 10 раз в секунду, то время измерения будет 0,1с а ситуация по частоте будет плохая - df=10Гц. Обидно, а вообще есть обходные пути(Если не строить цифровой фильтр), чтобы измерять 10 раз в секунду, а диапазон частот 22+/-0,5 Гц?
  10. Так всё же - мне отправляться от величины выборки для Герцеля и подбирать под неё частоту дискретизации или наоборот? Требуется просто обнаружить 22 Гц и всё. Я пробовал 50 точек в выборке с частотой дискретизации 200 Гц(именно по алгоритму Герцеля). При этом был хороший результат - при сигнале 22,5 Гц мощность(22Гц-овой компоненты), рассчитанная по Герцелю была меньше на порядок, чем если подать именно 22Гц. При 500Гц дискр-ии уже хуже - что 22Гц подавай, что 23, а результат вычисления 22 герцовой компоненты почти один и тот же. Предложите, пожауйста рецепт - я раньше не работал ни сБПФ, ни с ДПФ, так что в предыдущий постах понял не всё, простите меня,теоретика.
  11. Добрый день! Есть задача - определение в сигнале составлющей 22 Гц. АЦП достаточно мощный. Мне требуется в секунду делать порядка 10 проверок того, что сигнал 22Гц есть. Как оптимизировать частоту дискретизации и величину выборки на обработку для данной задачи?(при величине выборки 50 на высоких частотах дискретизации у меня получается полная фигня) В инете копал, но не нашёл прямого ответа на этот вопрос. Книга Блейхута же так написана, что мне, несмотря на физическое образование, не хватает математической подготовки, чтобы её расшифровать.
  12. А где настраиваится этот MEMMAP и/или пишется контрольная сумма? Я ещё только-только начинаю заниматься микроконтроллерами. Профильные разделы читал, но ответа на вопрос(у меня проблема в аккурат как у автора этой темы) не нашёл. Среда - IAR 4.41, контроллер армовский AT91SAM7Sx.
×
×
  • Создать...