Синтезатор для "шарманки" на AD9833 |
Здравствуйте, гость ( Вход | Регистрация )
Синтезатор для "шарманки" на AD9833 |
Yur |
17.2.2013, 9:31
Сообщение
#1
|
Участник Группа: Продвинутый Сообщений: 466 Регистрация: 21.8.2011 Пользователь №: 3 162 |
17 февраля 2012
Как то бедно у нас с этим вопросом для этой частоты.... (IMG:style_emoticons/default/sad.gif) Синтезатор разработан для диапазона 1500кГц (музыканты) и любителям "поалекать" до 1805кГц. Точность частоты зависит от опорника в данном случае примерно +(-) 20гЦ. Обычно через пол часа опорник "устаканивается" - частота становится , как "вкопанная". Соответственно нет девиации частоты задающего ГПД т.е " в телеграфе разбирается ваша АМ " - шаг регулируется 2 кнопками. -- 20гц -- 100Гц -- 1кГц -- 10кГц -- 100кГц - Возможность работать "напрямую" , только как ГПД (1500кГц- 1805кГц) - либо с возможностью + ПЧ (465кГц) т.е 1500кГц +ПЧ и до 1805кГц + ПЧ - как вариант можно использовать в простом радиоприемнике вместо штатного гетеродина и получится уже АМ трансивер . (На приемнике только входные контура будут штатным КПЕ подстраиваться ) - Память рабочей частоты при выключении . ( Примерно 10минут не трогаем кнопки , валкодер и т.д. - частота запоминается ) - Два варианта предварительного (УМ) усилителя мощности для Up-p = 2v и Up-p = 10v. ( Up-p = 10v уже можно попробовать напрямую "качнуть" лампу буфера , например 6П3С ) Этот синтезатор с динамической индикацией для АЛС и подобных. -------------------------------------------- Чуть позже сегодня будет схема и прошивка Схема синтезатора и предварительного УМ Эскизы прикрепленных изображений |
aastac |
23.7.2013, 17:47
Сообщение
#2
|
Участник Группа: Пользователи Сообщений: 105 Регистрация: 28.5.2009 Из: KO85WR Пользователь №: 1 795 |
Вот "набросок" функции передачи данных на чип DDS. Пока что в стадии разработки, т.к. плата синтезатора ещё не готова и отлаживать программу "в железе" возможности нет. Функция даже не содержит математической части, просто процесс передачи данных с микроконтроллера на синтезатор. В ближайшее время буду дорабатывать.
Код bit power; // PORTB.0 - DATA // PORTB.1 - W_CLK // PORTB.2 - FQ_UD void synth(unsigned long int codeData) { // Объявление локальных переменных unsigned long int ch; unsigned long int test; unsigned char k; // Передача кода частоты, побитовое чтение переменной codeData ch = 0b00000000000000000000000000000001; for (k=0;k<32;k++) { PORTB.1 = 1; // Тактирование delay_ms(5); // Задержка для облегчения отладки test = codeData & ch; // Чтение бита if (test != 0) { PORTB.0=1; putchar('1'); // Вывод на терминал для отладки } else { PORTB.0=0; putchar('0'); // Вывод на терминал для отладки } ch = ch << 1; // Сдвиг разряда delay_ms(5); // Задержка для облегчения отладки PORTB.1 = 0; // Сброс тактирования PORTB.0 = 0; // Сброс бита данных delay_ms(10); // Задержка для облегчения отладки } // Передача контрольных разрядов (нули, если необходимы единицы - установить PORTB.0 = 1 при передаче PORTB.1 = 1; // Тактирование delay_ms(10); // Задержка для облегчения отладки PORTB.1 = 0; // Сброс тактирования delay_ms(10); // Задержка для облегчения отладки PORTB.1 = 1; // Тактирование delay_ms(10); // Задержка для облегчения отладки PORTB.1 = 0; // Сброс тактирования delay_ms(10); // Задержка для облегчения отладки // Контрольные биты переданы PORTB.1 = 1; // Тактирование delay_ms(5); // Задержка для облегчения отладки PORTB.0 = power; // Передача бита работы синтезатора delay_ms(5); // Задержка для облегчения отладки PORTB.1 = 0; // Сброс тактирования delay_ms(10); // Задержка для облегчения отладки // Передача данных о фазе, в этой версии - заглушка for (k=0;k<5;k++) { PORTB.1 = 1; // Тактирование delay_ms(10); // Задержка для облегчения отладки PORTB.1 = 0; // Сброс тактирования } // Данные переданы PORTB.2 = 1; // Сигнал об окончании передачи данных delay_ms(5); // Задержка для облегчения отладки PORTB.2 = 0; // Сброс сигнала окончания передачи printf("_STOP "); // Вывод на терминал для отладки } |
Текстовая версия | Сейчас: 26.11.2024, 8:54 |