Свежие обсуждения
Измерения

DDS-генератор на AVR - нужна помощь

1 11 189

madgrey: Минус - ее модели нету в Proteus...
А зачем нужна модель в протеусе ?
Ведь это игрушка для школьников
Наличие ЦАПа в хмеге это конечно дело хорошее, но
madgrey: давайте ограничим аппетиты и обозначим верхнюю генерируемую частоту с учетом "народности" этого генератора.
хмега еще не очень народная.
По моему хорошим компромиссом для главного (ддс-овского) мелкоконтроллера может быть Mега48(P)A со своей 20 МГц тактовой.
ЦАП конечно придется внешний цеплять, но имея китайский тестер отобрать с достаточной точностью R-2R не составит труда.

 

Отвечу, не по порядку, но и не по важности

madgrey: 2. Мне симпатична идея двухканального генератора (даже если второй будет ущербным и опционным). Насколько нужна такая фича в Вашей деятельности?

Товарищи толковали о метках, вот второй генератор можно приспособить для меток. Вообще, каждый может просто добавить ещё один DDS-генератор, надо только продумать заранее о возможности их синхронизации. Я, например, так и собираюсь поступить, мне нужны два квадратурных сигнала, поскольку я работаю с аналитическими сигналами по основной работе. Кроме того, уже для души, квадратуры позволяют легко и просто формировать практически все известные радиотехнические виды модуляции, SSB, BPSK, KAM и т.д.

madgrey: 4. Хотелось бы услышать более внятно о желаемых режимах работы, генерируемых сигналах и т.д. Я пока вижу 2 сигнальных вывода и один для синхронизации. Думаю, не стоит подмешивать "вспышки" в сигнал свипа, лучше подключиться к синхровходу осциллографа отдельным кабелем. Такой вход есть у 99 аналоговых и цифровых осциллографов, поэтому никто не будет в обиде.

Думаю, отдельный провод будет лучше всего, и тогда всяк будет волен им распорядиться по-своему. Хотя по поводу вспышек, есть у меня одна мысль, надо будет её опробовать, потом доложу.

Далее, DDS позволяет формировать разные формы периодических сигналов, пила, трезубец, синк, ступенчатая пила, много чего, это нормально, но я категорически против меандра - на всех частотах, а особенно на частотах выше 100 кГц появляется чудовищный джиттер. Лучше поставить компаратор, или ОУ с высоким Ку и гистерезисом...

 

madgrey: Кстати, давайте ограничим аппетиты и обозначим верхнюю генерируемую частоту с учетом "народности" этого генератора.

Тут особо не разбежишься, всё повязано тактовой частотой проца и количеством тактов на один отсчёт. Скажем, при 20 МГц тактовой, можно получить10 тактов, 9 тактов, 8 тактов, 7 тактов, ну и с мелкими ухищрениями, 4 такта (это пока не обсуждаем, потом как-нибудь).

Отсюда частоты выдачи отсчётов fS=2000, 2222, 2500 и 2857 квыб/с. Последняя не позволяет менять частоту, не прерывая генерации. Более высокие частоты требуют большего объёма памяти программ, к примеру, на тайни2313 для 2500 может не получиться генерация синуса или свип в одном флаконе из-за малого количества флеши.

В теории можно получить DDS-сигнал от 0 вплоть до частоты Найквиста, т.е. fS/2. Практически надо делать скидку на коэффициент прямоугольности НЧ-фильтра, и на мин. уровень полосы задержания.

Кстати вот, andlos давал ссылку на ддс/свип в электоре, смех и слёзы, 18 тактов на отсчёт, а проц разогнали до 25 МГц, получается 1389 квыб/с, естественно с ПРЕРЫВАЕНИЕМ генерируемой частоты, ну а генерируемые частоты 50Гц-50кГц. А свип вообще что-то: в течение 2/4 мс генерит частоту из сетки заранее выбранных частот, потом переходит в следующей. Даже не смешно.

 

madgrey: Кстати, давайте ограничим аппетиты и обозначим верхнюю генерируемую частоту с учетом "народности" этого генератора. Полагаю, разумная верхняя частота определяется от схемы/конструкции ФНЧ и количества выборок на период. А это, прежде всего, минимизация количества рабочих тактов в цикле генерации мелкопроцессорного DDS. Другими словами, от возможности убрать из задачи первого контроллера все, что только возможно.Vlad_Petr: Как переложить МАКСИМУМ всех действий на второй контроллер,Может сначала об этом? Для известных чипов подсчитаем минимально возможное время цикла, минимизируем и пойдем дальше.?

 

Выпилил валкодер (энкодер) из фордовской магнитолы и подключил к ддс-генератору. Сейчас начну мучить программу на предмет внедрения энкодера в процесс формирования частоты, во загнул . Короче, чтобы можно было выставлять частоту с него, а не с кнопок.

 

Vlad_Petr: Для известных чипов подсчитаем минимально возможное время цикла, минимизируем и пойдем дальше
Ну тут авровская система команд, похоже, вне конкуренции. Он легко выиграл даже у 32-битного кортекса, 7 тактов против ихних 10 (впрочем, энтузиасты настаивали на 9), но АВР по тактам выиграл чисто.

 

GM: 7 тактов против ихних 10 (впрочем, энтузиасты настаивали на 9), но АВР по тактам выиграл чисто. А в студию эти 7 строчек? Наверняка только в один порт 8 разрядов?

 

Так и есть, в один порт 8 разрядов, как иначе? Вам-то зачем "эти 5 строчек"? Там кстати, 11 строчек, а не 5

 

Так, народ, докладываю. Внедрение валкодера прошло успешно, частота инкрементируется/декрементируется в соответствии с направлением вращения валкодера. Если шаг перестройки 10 кГц/импульс, то за один оборот частота перестраивается на 90-100 кГц. Несколько полных оборотов обеспечивают перестройку во всём диапазоне генерации.

Отсюда напрашивается вывод, что нужно использовать несколько шагов, один из которых - минимальный - для точной подстройки частоты генератора.

Для быстрой оперативной связи прошу "двойных нулей" сообщить мне свой электронный адрес. Мой адрес для связи nuisance@list.ru

Список "двойных нулей": AlexPivkin, Madgrey, DWD, andlos, smg123, akl, Tadas, Vlad_Petr, NPI, Y@rik, miklin

 

GM: Отсюда напрашивается вывод, что нужно использовать несколько шагов, один из которых - минимальный - для точной подстройки частоты генератора.
А еще лучше сделать величину шага переменной, как функцию от скорости вращения.
Раз удостоился высокого звания двойного нуля , то мой адрес tadles{это-самое}gmail.com.