Jump to content

    

my504

Свой
  • Content Count

    305
  • Joined

  • Last visited

Community Reputation

0 Обычный

About my504

  • Rank
    Местный
  • Birthday 09/24/1959

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    М.О. г.Фрязино

Recent Profile Visitors

1541 profile views
  1. Мои комментарии в коде выделены цветом, как и сам странный код. У Вас, мягко говоря, все нестандартно...
  2. Вы исходите из того, что все написали правильно, но код почему то работает совсем не так, как Вы написали... ))) Иначе бы Вы привели этот самый код. Вход в прерывания АВТОМАТИЧЕСКИ запрещает прерывания путем гашения GIE (того самого INTCON, 7 - не стоит писать не именованные константы, ибо не все знают номер бита глобального разрешения прерываний). Выход из прерывания с помощью retfie АВТОМАТИЧЕСКИ разрешает прерывания путем взведения того же GIE. То есть управлять глобальным разрешением в обработчике нельзя/нет необходимости. Бит PEIE (INTCON, 6) в выше описанной процедуре участия не принимает и дергать его совершенно бессмысленно.
  3. Пульсации ЦАПа на ШИМе зависят от порядка ФНЧ включенного после ШИМа. Спектр ШИМа - это модулирующий сигнал и частоты ШИМа (первая и последующие гармоники с соотношением амплитуд определяемым фронтами и средней скважностью). То есть, легко посчитать ФНЧ для заданных пульсаций. И скорость тут вообще не причем.
  4. А чего их крестить? В десятке (Х) компиляторы устанавливаются автоматически если Микрочиповские и несложными манипуляциями, если чужие. В 8-ке чуть менее, чем автоматически. В меню среды есть закладка с выбором путей к экзешникам компилятора и есть закладка с выбором конкретного компиля из установленных в среде. И среда это далеко не только отладчик. И отладчик - не только среда. Есть еще железка.
  5. Это широко распространенное заблуждение. Время разработчика дорогое только в неэффективных проектах. То есть когда на выходе одноразовый результат. Серьезные проекты требуют фундаментальной проработки. Про банки в пиках изрядно посмешили... И что там такого сложного? При правильном построении проекта их переключают крайне редко. Практически только при обращении к управляющим регистрам периферии. ПИКи деланы и на 180 и на 90 мкм. А dsPIC33C так вообще на 70 или 50 (могу ошибаться). Косвенно о проектных нормах говорит цена. За 2,9 доллара исходной цены сейчас можно купить двухядерный 100 МИПСовый чип с эксклюзивными возможностями архитектуры типа 5 наборов РОНов для практически мгновенного переключения контекста в вытесняющей ОСРВ или четыре PLL по 2 на каждое ядро для асинхронного тактирования ядер и периферии... Ну и много чего еще, чего нет у конкурентов. Если Вы не в курсе о нынешнем положении дел, то не стоит и рассуждать на эту тему. Ну и по поводу примеров из первого сообщения. Вы в курсе, что использованный Вами синтаксис - это обращение К СТРУКТУРЕ (элементу структуры), а не к биту? Мало того, модификация бита в порту должна исключить риски RMW. Поэтому писать нужно не красиво и без понимания смысла, а ЭФФЕКТИВНО и с пониманием работы компилятора с данной платформой. С инкрементом указателя примерно тоже самое. Из исходного кода непонятна размерность массива, который адресует указатель. И это может оказаться совсем не инкремент... )))
  6. Я так и не понял к чему вообще открыта тема... Чушь какая то... Не нравится писать на АСМе - не пиши. Не нравится Микрочип - не используй. Никаких лишних команд компилятор не вставляет. Приведите пример кода и дизасм к нему. Да, можно на АСМе написать короче, но тогда эта АСМ вставка не обеспечит принятых соглашений Си в режиме дебага. Я, например, на 8-битных ПИКах на Си писал только HID USB-UART мост. И то, только потому, что стек взял готовый и лишь допилил под себя. Плач по поводу "запоминания" трех десятков простейших в мнемонике команд АСМа выглядит смешно. И последнее. Нежелание писать смешанный код (а паче чистый АСМ) НА ЛЮБОМ МК приводит к тому, что либо выбирается более дорогой чип, либо завышается потребление. Для любительских целей - безразлично, для профессиональных - безответственно.
  7. Радиоканал на 20кГц-ах? Вы о чем? Может все таки речь идет об индуктивной связи? Во вторых, нужно сначала сделать оптимальный приемник и понять какое отношение сигнал/шум на его выходе без избыточного кодирования. И лишь потом выбирать тип этого кодирования. Что касается количества обнаруженных и исправленных ошибок, то это зависит не столько от типа, сколько от внесенной избыточности.
  8. Не детектор, а гетеродин детектора, коим является семплирующий генератор. Следящая система (синхронный детектор имеет гетеродин включенный в ФАПЧ по сигналу) имеет пороговое входное отношение сигнал/шум при котором происходит срыв слежения и резко ухудшается выходное отношение сигнал/шум. Синхронные детекторы очень капризны к уровню входных шумов. Кроме того, петля ФАПЧ - это просто ЛИНЕЙНЫЙ узкополосный фильтр и устранить импульсные помехи В ПОЛОСЕ СИГНАЛА он не в состоянии ПО ОПРЕДЕЛЕНИЮ. Но у Вас даже не ФАПЧ, а какой то странный квадратурный детектор, в котором фаза гетеродина вручную ДОВОРАЧИВАЕТСЯ ДО СИГНАЛА. То есть максимум, что ТЕОРЕТИЧЕСКИ можно получить - 6 дБ и то если помеха случайным образом в данном кадре оказалась ортогональна. В слудующем никакой ортогональности не будет, поскольку фаза сигнала каждый кадр переопределяется накачкой. ЗЫ. В догон. Как итог. Я не очень понимаю к чему все эти дебаты. Неужели так трудно ПРОВЕРИТЬ чужой опыт? Это не требует пайки макета, это требует только написания несложного кода. Ну еще требует некоторых ресурсов МК, конечно. Но ради такого можно детектировать СТАТИЧЕСКУЮ метку, где ресурсы будут сильно меньше, ибо можно отказаться от реального времени.
  9. Это шутка такая? Нет никакой ортогональной сигналу части помехи. Помеха вообще не может быть ортогональна сигналу, ибо НЕКОГЕРЕНТНА этому сигналу. Что касается импульсных помех, то они, помехи, ВСЕ ТАКИЕ - импульсные. И от процессора и от преобразователей - от всего. На квадратурных составляющих это выглядит как хаотичные произвольной величины всплески. Уверяю Вас, у моего оборудования абсолютно такие же постановщики помех. Я изучаю вопрос с помехами чуть менее, чем разрабатываю оборудование. Поэтому знаю о чем говорю. Вы не понимаете физического смысла квадратурной обработки. При фильтрации комплексных составляющих сигнала ОТДЕЛЬНО, как раз и достигается возможность удаления помех наиболее эффективно. А то, что не сможет убрать линейная и нелинейная фильтрация - вообще невозможно убрать. Патамушта это помеха неотличимая от сигнала.
  10. А зачем ее вычислять? Фаза при АМПЛИТУДНОМ квадратурном детектировании вообще не нужна. И следить за ней нет никакого смысла. Это в следящей системе НЕИЗБЕЖНО возникают шумы в петле слежения. При фильтрации ДО НАХОЖДЕНИЯ МОДУЛЯ по предложенному выше алгоритму помех НЕТ ВООБЩЕ. Их нет как раз после нелинейной фильтрации. Устройство может не видеть сигнал на выходе нелинейного фильтра по причине высокого уровня СИНХРОННЫХ помех, но эта ситуация вообще ни при каких условиях не может быть разрулена.
  11. Это ОЧЕНЬ БОЛЬШАЯ ошибка. Одинакова будет только НАЧАЛЬНАЯ фаза. Частота накачки может не совпадать с частотой свободных колебаний контура и фаза будет разбегаться. Мало того, даже начальная фаза может быть ЛЮБОЙ, стабильной для данного образца метки, но иной для другого. Так же это зависит от многих схемотехнических факторов, включая софтовые задержки при преобразовании сигнала в цифру. Синусно-косинусное (квадратурное) преобразование позволяет получить высококачественное амплитудное детектирование. И не требует особых ресурсов от МК. Фаза. к слову, Вам не нужна. Считать нужно только модуль-амплитуду. Но и для этого нужен комплексный сигнал. Это с какого перепуга? Сигнал от способа обработки неизменен. Это феерично... Вы наступаете на грабли и уверяете, что квадратурная обработка не нужна... даже и не знаю как это комментировать. PS. Я Вам дал ГОТОВЫЙ СЕРИЙНЫЙ алгоритм (изделия под его управлением имеют тиражи примерно 10...15К+ в год). Изделия с практически идентичным принципом работы. Все о чем я умолчал - это примененная мной нелинейная фильтрация в вертикальных фильтрах. Но Вы можете взять медианную. Тоже прокатит. На ранних этапах я ее и применял.
  12. После умножения на синус и косинус следует фильтровать КИХом оба массива с целью выделения самих квадратурных сигналов. Далее каждая из квадратурных составляющих становится строкой матриц. Отдельно матрица синусов, отдельно косинусов. Следующий кадр сигнала будет следующей строкой матриц и так далее. Строки в матрицах будут образовывать скользящее окно - каждая новая строка будет вытеснять самую старую. Столбцы в матрице, если кадры сигнала идентичны, должны иметь строго одинаковые значения. Но из-за помех эти значения будут иметь статистический характер. То есть каждый столбец в матрицах будет кольцевым буфером для фильтрации. Полоса пропускания у этого вертикального фильтра должна определяться не спектром сигнала, а временем удержания метки относительно антенны. Например, если период следования кадров 5 мс, а допустимое время обнаружения 100 мс, то вертикальный размер матрицы максимум может быть вдвое больше отношения времени обнаружения к периоду кадров. То есть 2*100/5=40. Но в течении этих 100 мс сигнал должен быть стабилен. Способ фильтрации столбцов и является предметом ваших изысканий. Я, например, использую в своих изделиях нелинейную фильтрацию и обычное усреднение после нее. Чтобы наглядно представить себе механизм того, что я вам описал, приведу аналогию из осциллографа. По сути, это накопление осциллограмм сигнала на экране покадрово. Получается размазанная по вертикали осциллограмма. Задача - найти статистически достоверную линию графика сигнала, анализируя поведение каждого вертикального сечения размытого изображения. Как то так. Ниже привел графическую иллюстрацию многоканального вертикального фильтра. Таких должно быть ДВА - отдельно по Real и Imaginary компонентам сигнала. После раздельной фильтрации можно посчитать значения модулей по каждой точке выходных буферов по известной тригонометрической формуле корня из суммы квадратов Re и Im. Это и будет искомый принятый сигнал.
  13. А не надо сомневаться. Надо просто открыть даташит в самом начале. 4 страница. Ядро. https://www.analog.com/media/en/technical-documentation/data-sheets/adsp-bf700_bf701_bf702_bf703_bf704_bf705_bf706_bf707.pdf По поводу Пикколо. Читаем референсный мануал на С2803х http://www.ti.com/lit/ug/sprui10/sprui10.pdf в части 10.5.2.1 ADC Early Interrupt to CLA Response И удивляемся... Контекст ядра не требует сохранения - это сделано автоматически. По поводу латентности легко найти в этих и аналогичных документах. Количество РОНов с DSP ядром никак не связано. В Шарке (уж куда круче?) РОНов 16 на фикспойнт и 16 на флоат. И совершенно не требуется их пихать в стек в обработчике. В стек пихают регистр состояний ядра и РОНы используемые в обработчике. Для переброса АЦП в ОЗУ требуется не более 1...2 РОНов. Аминь.
  14. Пикколо, милостивый государь, это обычный МК. Обозначенные мной латентности, например, справедливы для Блекфина в режиме выключенной вложенности прерываний. При включенной чуть больше, но незначительно. Регистров общего назначения там всего 8. В Пикколо нынче освежу память, но 100%, что примерно такой же порядок. В dsPIC33 тоже самое. Радикальное отличие в Шарке. Но там и прерывания устроены по другому. Там даже название другое у этого инструмента. Иногда высовывайте голову из своего болота...
  15. Еще раз, потери на загрузку в прерывании ничтожны по сравнении с фильтрацией. И фильтрация может продолжаться все время накопления данных, если данные после загрузки буферизовать. Обработчик АЦП предельно короткий. Пересылка по указателю и инкремент указателя с проверкой окончания массива. Ясен пень, что с ДМА удобнее, но и цена другая. А можно и не Техас взять. Будет еще дешевле.