Usb функциональный генератор на ad9833

Функциональный DDS генератор на базе микросхемы AD9833

AD9833

На страницах сайта Радиолоцман, в разделе «Схемы», опубликовано множество схем DDS генераторов, от простых, на одном микроконтроллере, до сложных на базе ПЛИС с богатыми функциональными возможностями. Мы рассмотрим еще одну конструкцию такого прибора, функцию DDS синтеза аналогового сигнала в котором выполняет специализированная микросхема AD9833, производства компании Analog Devices, являющейся одним из лидеров в этой области.

Основные характеристики генератора:

  • Выходная частота от 1 Гц до 5 МГц;
  • Точность 0.1 Гц;
  • Форма выходного сигнала: прямоугольные, треугольные, синус;
  • Возможность регулировки скважности импульсов;
  • 5 В ТТЛ выход;
  • Аналоговый выходной сигнал с размахом от +15 В до –15 В;
  • Возможность подстройки постоянного смещения в пределах от +15 В до –15 В;
  • Пользовательский интерфейс: двухстрочный ЖК индикатор и 16-кнопочная клавиатура.

Прямой цифровой синтез (DDS) – метод, позволяющий получить аналоговый сигнал за счет генерации временной последовательности цифровых отсчетов и их дальнейшего преобразования в аналоговую форму посредством цифро-аналогового преобразователя. Так как сигнал изначально синтезируется в цифровой форме, такое устройство может обеспечить быстрое переключение частоты, высокое разрешение по сетке частот, работу в широком диапазоне частот. На сегодняшнем уровне развития схемотехники DDS синтезаторы представляют собой очень компактные микросхемы с низким потреблением.

Выбор микросхемы AD9833 основан на следующих ее преимуществах:

  • низкая стоимость,
  • малое потребление,
  • последовательный интерфейс управления,
  • простые команды,
  • минимальное количество необходимых внешних компонентов,
  • высокая точность выходного сигнала.

Расположение выводов микросхемы AD9833

В качестве источника тактовых импульсов для микросхемы синтезатора необходимо использовать осциллятор со встроенным генератором, простой кварцевый резонатор не подходит для использования совместно с микросхемой. В техническом описании на микросхему указано значение тактовой частоты 25 МГц, но автор применил генератор на 50 МГц, при тестировании устройства никаких проблем не было выявлено.

Прибор снабжен ЖК индикатором, клавиатурой для управления и настройки и переменными резисторами для регулирования уровня, смещения и симметрии. Управление микросхемой DDS синтезатора и всей периферией осуществляет микроконтроллер Atmel AVR ATmega32.

Условно схема DDS генератора разбита на несколько частей: схема питания, микроконтроллерная часть, модуль DDS на микросхеме AD9833, выходная аналоговая часть и пользовательский интерфейс.

Схема питания построена на интегральных регуляторах напряжения и обеспечивает двуполярное напряжение ±15 В для выходной аналоговой части и напряжение +5 В для питания микроконтроллера и периферии.

Микроконтроллер тактируется от встроенного RC осциллятора 8 МГц. Стандартный двухстрочный ЖК индикатор на базе контроллера HD44780 подключен к порту C (Port C) микроконтроллера по 4-битному интерфейсу. Резистор R1 предназначен для регулировки контрастности. К сигнальной линии PC7/TOSC2 подключен звуковой излучатель (буззер), который используется для звукового оповещения пользователя при переключении режимов и настройке. Потенциометр R2, подключенный к каналу ADC0 встроенного АЦП микроконтроллера, используется для цифровой регулировки уровня выходного аналогового сигнала. Регулировка уровня выполнена на базе микросхемы цифрового потенциометра MCP41010 (см. схему выходной аналоговой части), которая управляется микроконтроллером по интерфейсу SPI.

Схема микроконтроллерной части DDS генератора

Управление микросхемой DDS синтезатора осуществляется по линиям микроконтроллера PD0 (DDSDATA), PD1 (DDSFSYNC), PD2 (DDSCLK). Микросхема DDS, осциллятор и несколько пассивных компонентов обвязки конструктивно составляют отдельный подключаемый модуль, что позволит использовать его в других конструкциях или в экспериментах.

Схема DDS модуля генератора на микросхеме AD9833

К аналоговой выходной части генератора предъявляются особые требования, т.к. не так просто усилить сигнал с амплитудой 400 мВ до уровня ±15 В, с выходным током 300 мА на частоте 5 МГц. Поэтому был применен сверхбыстродействующий операционный усилитель LM7171 с обратной связью по напряжению и схема двухтактного транзисторного усилителя мощности. Блокировочные конденсаторы по питанию операционных усилителей на печатной плате должны быть расположены как можно ближе к микросхемам.

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

На выводе микроконтроллера PD7 генерируются прямоугольные импульсы, которые поступают через буфер на микросхеме 74HC14 на ТТЛ выход генератора.

Схема выходной аналоговой части DDS генератора

ТТЛ выход генератора

Модуль готовой матричной клавиатуры с организацией 4×4 подключается к порту B (Port B). Строки матрицы клавиатуры подключены к линиям порта PB0-PB3, столбцы – подключены к линиям PB4-PB7.

Загрузки

Исходный код и прошивка микроконтроллера – скачать

Перевод: Vadim по заказу РадиоЛоцман

USB функциональный генератор на AD9833

Один из инструментов, без которого я бы пропал в своей домашней лаборатории, является функциональный генератор. Он довольно дорогой, поэтому я не купил его. Я подумал, что можно попытаться сделать его самостоятельно. Нашел довольно распространенную DDS (Direct Digital Synthesis, прямой цифровой синтез) микросхему AD9833. Теперь надо добавить только USB-совместимый AVR микроконтроллер и возможно немного аналоговых элементов.

Эта плата не обеспечивает регулировку амплитуды или смещения сигнала. Выход устанавливается 0-4В. Я планирую сделать ещё одну полностью аналоговую плату для регулировки амплитуды и смещения.

Элементы

Неотъемлемой частью этой конструкции является DDS микросхема AD9833 от Analog Devices. Микросхема имеет входной тактовый сигнал 25 МГц, внутреннюю фазовую автоподстройку частоты, таблица поиска синусов и АЦП. Контролируя её по интерфейсу SPI, вы можете получить на выходе синусоидальный, пилообразный и прямоугольный сигнал с частотным диапазоном от 0,01 Гц до 3 МГц. Частота может быть выше, до

7 МГц, но на такой высокой частоте синусоидальный сигнал выглядит ужасно.

Для управления этой микросхемой, я использовал дешевый USB-совместимый AVR микроконтроллер Atmel AT90USB162. Он будет обеспечивать виртуальный последовательный интерфейс по USB и интерпретировать команды переданные по этому интерфейсу для изменения выходного сигнала DDS надлежащим образом.

OPA357 используется для усиления выходного сигнала DDS. Номинальное напряжение на выходе AD9833 0.6Vpp, со средним значение 0.3В. OPA357 была выбрана потому, что она поддерживает необходимые высокие частоты и её можно получить в качестве бесплатного образца от компании Texas Instruments.

Схема

Схема и печатная платы были разработаны в KiCad, довольно приличном EDA (EDA, автоматизация проектирования электронных приборов) с открытым исходным кодом. Здесь приведены некоторые части схемы. Если вас интересует более подробная схема, её можно скачать ниже в формате PDF.

Устройство может питаться или от USB, или от отдельного источника +5В. Два диода Шоттки установлены, чтобы напряжения нашли друг на друга, если они поступаю из обоих входов.

Схема построена на DDS AD9833. Блокировочные конденсаторы и их номиналы взяты из даташита. Источник тактового сигнала может быть выбран при помощи JP1. Может использоваться встроенный генератор и внешний источник тактового сигнала через BNC разъем. Выход из DDS сначала проходит через ФНЧ и затем усиливается. На выходе есть резистор 50 Ом, чтобы обеспечить выходное сопротивление 50 Ом. По всему пути прохождения сигнала есть контрольные точки, что обеспечивает удобство тестирования.

Читайте также  Кодовый замок для гаража

Печатная плата

Разводка довольно проста. Вот скриншот платы в 3D-виде KiCad:

Вы можете видеть BNC разъем для подачи внешнего тактового сигнала на этом скриншоте, но у меня не было необходимости его припаивать.

Я разработал плату для использования генератора для поверхностного монтажа, но у меня не было генератора нужной частоты. У меня был подходящий генератор в DIP корпусе, поэтому я припаял его к плате так:

Немного некрасиво, но работает не хуже.

У меня также была небольшая ошибка в оригинальной разводке. VUSB контакт AVR должен быть подключен к источнику питания, а не к USB VUSB. В таком случае, если я питаю устройство от внешнего источника, USB периферия все равно получает питание и может инициализироваться. Перерезать дорожку и припаять перемычку достаточно, что бы исправить это. К статье прилагается исправленная версия платы.

Протокол

Плата подключена к компьютеру через виртуальный последовательный порт по USB. Должен быть стандартный способ обмена информацией, поэтому я написал простой стандарт перед тем, как я начал писать код. Я решил использовать ASCII для включения человека при написании команд во время тестирования и для облегчения отладки и читабельности кода.

sf1 [freq] #в Гц
sf2 [freq] #в Гц
sp1 [phase] #в градусах
sp2 [phase] #в градусах
sfo [1/2/m(modulation)] #frequency output
spo [1/2/m(modulation)] #phase output
so [o(off-выключен)/s(sine-синусоида)/t(triangle-треугольник)/q(square-прямоугольный сигнал)] #режим выхода
sm [freq] #частота модуляции

Все команды должны заканчиваться возвратом каретки-новой строкой.

Так например, для установки выходной частоты от 1 до 100 Гц, вы должны отправить «sf1 100 rn».

Программа для AVR

Функциональность USB была предоставлена ​​отличной LUFA USB библиотекой для микроконтроллеров AVR. Я повторил код, который я написал, прежде чем обмениваться информацией по SPI и относительно функциональную библиотеку для AD9833. Потом я написал код, преобразовывающий команды, посылаемые через последовательный интерфейс в обращение к функции библиотеки AD9833.

Я получил проблему, используя Doxygen для комментирования своего кода и создания документации. Подробнее об этом можно узнать, перейдя по ссылке.

Программное обеспечение для ПК

Программное обеспечение написано на Python3. Я начал изучать его пару месяцев назад и до сих пор использую его для создания простых интерфейсов. Я использовал графическую основу tkinter для создания графического интерфейса пользователя и pyserial для последовательного соединения. Код пользовательского интерфейса не очень хорош, я ещё не совсем разобрался с Python. Это прекрасный язык, но я предпочитаю работать с микроконтроллерами и писать код на С.

Пользовательский интерфейс оказался весьма хорошим и хорошо работающим. Есть некоторые вещи, которые я хотел-бы сделать по-другому. Например, выбор модуляции выходного сигнала должен иметь собственные кнопки. Если бы я хотел добавить кнопку сдвига амплитуды, то её было бы просто некуда поставить. Возможно, я попытаюсь разместить её где то.

Работа очень проста: приложение просто посылает соответствующие команды на виртуальный последовательный порт USB, когда любое значение изменяется в пользовательском интерфейсе.

Результат

Я снял короткое видео, демонстрирующее работу функционального генератора. Кажется, он работает довольно хорошо!

Проект на github, документация для AVR-кода

DDS синтезатор AD9833

Понадобился мне, в мойх поделках, генератор сигналов различной формы, а именно: синус, меандр, треугольник ну и плюс постоянное напряжение (но это уже другой вопрос), да не простой а чтобы занимал мало места на плате а главное программно управляемый. После недолгого гугления наткнулся на семейство DDS синтезаторов от Analog Devices, которые все это в себе совмещают (кроме постоянного напряжения). Три из четырех очень неплохо (подумал я) и прикупил парочку.

Принципы работы DDS синтезаторов частоты

DDS — принцип не новый, а значит теории по этому вопросу в инете и не только — навалом. Лично мне хватило пары статей, чтобы «войти в курс дела». Одну из них, со скромным названием «All About Direct Digital Synthesis», можно почитать на сайте Analog Devices. Для тех кто не дружит с английским языком, есть перевод данной статьи.

Почему AD9833?

У этого DDS синтезатора есть ряд преимуществ, по сравнению со своими собратьями: низкая стоимость, малое потребление, последовательный интерфейс обмена данными (всего три проводка), простые команды и вычисления, минимальный обвес AD9833, относительно высокая точность выходного сигнала (10-битный ЦАП, 28-битный фазовый аккумулятор, который позволяет получить выходной сигнал с точностью до 0.1 Гц, при максимальном тактирующем сигнале в 25.0 МГц), отличное соотношение Сигнал/Шум без применения какой либо фильтрации

60dB. Также AD9833 обладает несколькими режимами энергосбережения, что тоже не маловажно.

Описание схемы


Рис.1 Цоколевка AD9833

Как видно из цоколевки, разработчики буквально поделили AD9833 на две части: первая часть — управляющая, в которую входят линии ввода команд/данных, тактирующий и выходной сигналы, и вторая часть отвечающая за питание ИС. Поскольку я впервые имел дело с AD9833, то решил сделать отдельный подопытный модуль, плюс такой модуль обладает большой мобильностью и при желании его можно использовать в нескольких проектах, а также легко локализовать и исправить неполадки (разделяй и властвуй). На рис.2 показана схема сего модуля, в которой все управляющие линии, выходной сигнал и питание собраны в коннекторе CONN1 (этакий интерфейс), через который он будет общаться с управляющей частью.


Рис.2 Схема тестового модуля

Основные требования к модулю

Как было упомянуто раньше, AD9833 очень неприхотливая ИС и для того чтобы получить готовый выходной сигнал ей нужны буквально пара конденсаторов, тактовый генератор и операционный усилитель, поскольку необработанный выходной сигнал составляет

0.65V (peak-to-peak), плюс небольшой оффсет

40mV, в режимах с использованием ЦАП’a.

Тактовый генератор — в качестве источника тактового сигнала следует выбрать резонатор со встроенным генератором (Crystal Clock Oscillator), обычный кварц здесь не подойдет.

CAP/2.5V — при напряжении питания больше 2.7V, к этому пину надо подключить конденсатор в 100 нФ (на рис.2 показано перемычкой), в противном случае (напряжение питания меньше 2.7V), этот пин следует подключать напрямую к источнику питания (ставить перемычка между CAP/2.5V и VCC).

Операционный усилитель — при выборе ОУ следует исходить из предусмотренной, максимальной частоты выходного сигнала, генерируемого AD9833. Это означает что амплитудо-частотная характеристика ОУ должна соответствовать (превышать) этой самой максимальной частоте, иначе вместо усиления сигнала получим подавление. Кстати у меня такого ОУ не оказалось, пришлось заказывать парочку высокочастотных. Но к моему счастью, потребности разрабатываемого прибора ограничиваются несколькими килогерцами, так что и низкочастотные ОУ пойдут в дело.

Пример: чтобы обработать выходной сигнал с максимально-возможной частотой, которую способен воспроизвести AD9833, а это MCLKмакс/2 = 12,5 МГц (половина частоты опорного тактирующего сигнала, по закону Найквиста), диапазон рабочих частот ОУ должен быть как минимум 13МГц, а лучше и все 20МГц — кто знает что за ОУ попадется.

Примечания к созданию фильтра нужных низких частот

Читайте также  Питание ис шим контроллера и драйверов затвора стабилизированным напряжением

Как я уже говорил, соотношение Сигнал/Шум у AD9833 приличное и без всякой фильтрации, а поскольку генератор будет работать на очень большом диапазоне частот, то избавиться от оставшихся «хвостов» не получится, если только не использовать программируемый цифровой фильтр, но те что мне встречались работали с частотами до 50..100 КГц (для меня в самый раз, но в остальных случаях не пойдут), так что, по сути, конденсатор C5 является единственным фильтром! Но несмотря на это я все-же использовал фильтр Баттерворта 4-го порядка на 100 КГц, для фильтрации высокочастотного шума исходящего от тактового генератора и управляющей логики (микроконтроллера). Кстати я тут рассусоливаю про фильтрующий конденсатор а сам забыл его вставить в свой подопытный модуль.

Заземление — в общем заземление должно соответствовать всем требованием заземления в системах со смешанными сигналами: заземляющая площадь должна быть как можно больше, цифровая и аналоговая земля должны соединятся только в одной точке. Подробней об этом можно почитать в статье: Заземление в системах со смешанными сигналами.


Рис.3 Подопытный модуль — вид сверху


Рис.4 Подопытный модуль — вид снизу

Программная реализация

В качестве управляющего мк я использовал ATMega16. AD9833 может изменять значение частотных регистров двумя способами: путем последовательной записи двух 14-битных слов (проще говоря записи 28-битного слова), либо записывать по отдельности старших/младших 14-бит (так называемый coarse/fine tuning). Данная библиотека работает только в режиме 28-битного слова, то есть происходит полное обновление значения частотного регистра (все 28-бит).

Как я уже говорил, в моей поделке мне необходим также и ЦАП. Чтобы не цеплять внешний, решил использовать внутрений 10-битный ЦАП AD9833. Следующая функция позволяет использовать AD9833 в качестве простого ЦАП’a. В зависимости от напряжения питания (VSUPPLY) AD9833 можно получать постоянное напряжение от 0 до VSUPPLY. Напряжение питания следует указать в макросе VSUPPLY — в милливольтах. В этой функции используется фазовый регистр № 0.
Описание функции: если кратко то сбрасываем AD9833, тем самым обнуляем все внутренние регистры, устанавливаем частоту в 0.0 Гц и треугольную форму сигнала, чтобы уровень напряжения был в прямой зависимость от значения фазы, а дальше при помощи фазового регистра прибавляем нужную фазу. Также ниже есть график небольшого эксперимента с использованием различных форм сигнала.


Рис.5 Вывод постоянного напряжения с использованием
синусоидальной и треугольной форм сигналов. В одном случае смещение фазы
приводит к смещению по синусоидальной траектории, в другом — по прямой

Эксперимент состоял в определении зависимости и соответсвии подоваемого мной цифрового значения (шаг 500 — который должен был соответствовать 500мВ), и получения на выходе соответствующего значения напряжения. Из графика виден оффсет при использовании внутреннего ЦАП’a:

0.38mV * K, где К — коэффициент усиления ОУ. Также из графика видно, что я этот самый коэффициент усиления не докрутил до значения при котором можно получить на выходе AD9833 напряжение VSUPPLY. Если подытожить эксперимент, то на выходе получил изменение напряжение с равным шагом (

0.4V) а также прямая зависимость VOUT от цифры. Так что при последующей реализации сего модуля надо будет предусмотреть компенсацию оффсета, соответствующий коэффициент усиления и не забыть про фильтрующий конденсатор :).

Ну и на последок функция инициализации. Первым делом следует сбросить все внутренние регистры, затем установить желаемые значения в фазовые и частотные регистры, так как их значение при сбросе не изменяется и по началу там находится мусор. После всех этих операции AD9833 стартует с так называемого midscale значения. Это значение соответствует половине VSUPPLY. Это означает что по умолчанию, AD9833 стартует с 2.5В (VSUPPLY/2), при 90 о — VOUT равно 5В и так далее по синусоидальной/треугольной траектории. Я же привык чтобы синус стартовал с минимального значения, плюс в случае инициализации AD9833 с частотой 0.0 Гц, не желательно чтобы на выходе AD9833 торчало 2.5V (VSUPPLY/2). Для этого, в используемый фазовый регистр (по умолчанию это регистр № 0) загонаю 270 о градусов, для старта с минимального значения. Во второй «от нечего делать» загнал 180 о градусов. Ну и в конце выбираем форму выходного сигнала.


Рис.6 Траектории со смещением в 270 о и без смещения

Тестируем код

Зубцы на форме выходного сигнала отчасти «работа» осциллографа, ну и конечно сказывается отсутствие фильтрующего конденсатора.

На сайте Analog Devices можно поиграться с AD9834 Interactive Design Tool, хотя AD9833 и AD9834 чуть отличаются.

Простой генератор звуковых частот на AD9833 для тестирования БПФ.

Для тестирования БПФ в светомузыке мне нужен был генератор звуковых частот. Я использовал советский Г3-112, но он себя давно изжил.

Все думал купить чего то такое, и в конце концов сделал самостоятельно на AD9833. Мне понравились возможности AD9833 и я решил поделиться проектом. Он позволяет синтезировать частоты от 0,1 герца до 2,5 МГц, что для моих работ более чем достаточно. Есть возможность выбора дискретности изменения шага частоты от 0,1 герца до 999 герц. Также есть возможность ввода значений частоты в килогерцах, что ускоряет оперативность задания новой частоты. Регулируется уровень сигнала на выходе, а также возможность получение меандра (два вида). Все заданные параметры запоминаются в EEPROM микроконтроллера, что удобно для последующего использования, при отключении питания. Встроена подсказка, помощь в работе, на трех языках: английском, украинском, и русском.

Управление Синтезатором частоты, осуществляется через энкодер, что достаточно удобно. Меню работы предоставляет следующие возможности:

Выбор формы выходного сигнала – возможность выбрать из 4 вариантов: синусоида, треугольник, меандр и меандр с частотой, деленной на 2.

Задание дискретности набора частоты. Проблема заключается в том, что предусмотрено задание, точности частоты с шагом 0,1 Гц. Но это может стать неудобным, если надо задавать, например, для тестирования частоты 10-20-30… Гц, это будет неудобно при шаге в 0,1 Гц. Для этого и предназначено это меню. Выставив, например, шаг 10,0 Гц можно легко одним щелчком энкодера устанавливать требуемую частоту.

Для быстрой настройки частоты выше 1кГц предназначено следующее меню. Здесь набор частоты идет с дискретностью 1кГц.

Плавное задание частоты, с заданной дискретностью в следующем разделе. Результирующее значение частоты показывается вверху дисплея.

Амплитуду синусоиды и треугольного сигнала можно изменять от 0 до 100%, это приблизительно до 3 вольт. Амплитуду меандра менять нельзя, она всегда будет 100%.

Для подсказок оператору о выполнении необходимых действий служит меню помощи. Здесь можно выбрать подсказки из трех языков, Английский, Украинский, Русский, есть также возможность отключить подсказки.

Теперь перейдем к принципиальной схеме функционального генератора. Схему в формате pdf, можно скачать здесь.

Собирал схему из того, что было под рукой, AD9833 – приобрел в виде модуля в интернет магазине ALIEXPRESS, рекомендую. Микроконтроллер PIC18F26K40, OLED дисплей RET012864E. Энкодер можно любой с нормальным кодирование, (если будут код Грея) то надо будет немного подправить программу. Кнопка энкодера, используется для переключения функция – параметр. Для регулировки уровня сигнала использовал MCP41010 (10 кОм). Для усиления 1:4 операционник MCP601T, у него полоса до 2,8 МГц, что вполне подойдет для диапазона звуковых частот. Сигнал синуса и треугольника формируется на выходе синтезатора с уровнем 0,6 вольта и для удобства был применен такой механизм регулировки амплитуды, цифровой потенциометр + усилитель. Меандр берется напрямую с выхода DDC, так как его амплитуда равна напряжению питания, он в усилении не нуждается и для уменьшения искажений было принято его не пускать через усилитель. Коммутатор был выбран (потому, что был в наличии) HEF4066B. На этом все особенности генератора и заканчиваются.

Читайте также  Простой мощный параллельный стабилизатор на транзисторах

Собрал генератор на макетной плате, но работа AD9833 мне понравилась, поэтому планирую в ближайшем будущем сделать для него печатную плату и корпус.

Прошивка для микроконтроллера можно скачать здесь.

Видео работы генератора сигналов.

DDS генератор на AD9833

Наконец то пришли все детали для конструкции с соседнего ресурса «DDS генератор на AD9833» от пользователя под ником grott
Плату вытравил,компоненты запаял, подцепил программатор-микросхема определилась. Зашил сперва фъюзы как описано в статье:EXTENDED — 0xFE, HIGH — 0xFF, LOW — 0xB7 — после этого МК залочился и уже не окликался.
По калькулятору фъюзов AVR я понял , что отрубил фъюз бит SPIEN

Выпаял МК и закатал новый. Подцепил программатор — новая микросхема определилась. Зашил фъюзы уже с учетом бита SPIEN: EXTENDED — 0xFE, HIGH — 0xDF, LOW — 0xB7 МК ОПЯТЬ ЗАЛОЧИЛСЯ!

Как думаете, какие фъюзы все же должны быть? Последний МК остался, а запустить девайс очень хочется.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Генератор сигналов на базе DDS AD9833 с управлением с компа
На базе проекта http://we.iosyitistromyss.ru/gromd1987/ . d9833.html делаю сабж. На макетке на.

генератор сигналов (DDS)
При работе над одним из проектов (домашних) у меня возникла необходимость для отладки RC-цепи.

Вопросы по ad9833
Здравствуйте! Решил освоить работу с ad9833 — развел платку, на платке у меня сама dds-ка, 2.

Контроль AD9833 (DDS) c МК PIC18F452
вот есть программа(часть выложил, в ней вопрос), которая сравнивает поступающий сигнал с нужным(.

Запаяй другой кварц, и/или другие конденсаторы в его обвязку.

PS Кварц на такую частоту может и на 3й гармонике работать. надо внимательнее выбирать.

Разве последовательность действий важна? Кристалл должен пустой(без программы) определяться. Но все равно, запаял новый МК и попытался сперва залить .hex и .eep
В обоих случаях дал ошибки при проверке МК. При заливке во флеш:

При прошивки ЕЕПРОМ:

При этом сигнатура кристалла читается нормально:

И даже заводские фъюзы читаются на ура:

Смена последовательности выявила проблему: МК не шьётся.
Имеем (условно) цепочку: Программа для программатора Компьютер USB-порт компьютера Провод Программатор Провод Устройство МК.
Какое-то из звеньев этой цепочки (а возможно и не одно) сбоит.

При прошивке устройство питается от программатора или от своего источника?
На какое напряжение настроен программатор, 3.3 В или 5 В?

Пока программа нормально не зальётся в МК, фьюзы не пишите.

При прошивке устройство питается от программатора или от своего источника?
На какое напряжение настроен программатор, 3.3 В или 5 В?

Устройство во время программирования питается от программатора 3,3В.

Вообще склоняюсь думать , что какой-то вывод МК где-то коротит. Прошивается программа нормально, а после начинается проверка/чтение того, что записалось во флеш. После прошивки контроллер стартует сразу. Видимо, что-то садит питание или порты и прочитать флеш не удается.

Несколько не так. Чтение-верификация — это составляющая часть процесса программирования, происходит при сигнале RESIT, просаженном в «0», так что контроллер в этот момент стартовать никак не может.
Чтобы не быть голословным, только что проверил на практике — залил в свою ATMiko328P прошивку, ткнувшись при этом тестором 1-ую ногу МК.
При верификации — «0».

Есть возможность зашить МК вне устройства?

Пока нет, попробую после выходных платку под TQFP вытравить. В принципе AVR Dragon есть, залоченные меги оживить смогу. А пока, как всегда, платка уходит в ящик стола, надеюсь ненадолго.

P.S: Всем спасибо за участие.

Проблему удалось все же решить. На моем стареньком программаторе есть выключатель питания (обведен желтым на фото). Так получилось , что он проводит ток, но под незначительной нагрузкой уходит в обрыв. Окислился внутри наверно.

. ВТОРАЯ ЧАСТЬ МАРЛЕЗОНСКОГО БАЛЕТА.
Что ж, прошивка наконец залита , генератор заработал. Синус дает исправно, даже при 5 мГц картинка четкая , разве что по амплитуде немного проседает. Пила тоже нормальная , но при частоте больше 1 мГц плавно перерастает в синус и уже на пилу то не похожа. То же самое и с меиндром. Тот вообще черти на что похож, но при частоте ниже 1 мГц вполне себе прямоугольные импульсы. Вот такой меиндр на аналоговом выходе при установленной частоте 1,5 мГц.