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

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

1 4 189

AlexPivkin
Я буфер вообще выкинул - тоже сигнал гадил, особенно на прямоугольнике.

 

GM писал:
Не маловат диапазон генератора, всего 65 кГц? Есть простой способ расширить диапазон до 125 кГц при тех же минимальных 16 выборках на период (это на 125 кГц, на 65 кГц будет 32 выборки). Не хотите попробовать?

Хочу очень.
И фузы в CVAVR можно уточнить.
Спасибо.

 

Кто подскажет.
Примерно до 5-10 кгц сигнал более менее.
А выше пошли искажения, особенно треугольники и прямоугольники.
И как в CVAVR поставить максимальный сигнал.
Спасибо.

 

Какие искажения, фронты завалились что ли?

 

Да, прямо с выхода контроллера, и с вывода HS тоже.

 

AlexPivkin Можете отфоткать эти самые искажения для более точного диагноза?

AlexPivkin: и с вывода HS тоже. А вот это очень даже интересно, т.к. по схеме HS прямиком с порта контроллера идеть...
То, чем форму смотрели в исправном состоянии? Полоса пропускания соответствует наблюдаемому сигналу?

 

AlexPivkin: GM писал: Не маловат диапазон генератора, всего 65 кГц? Есть простой способ расширить диапазон до 125 кГц при тех же минимальных 16 выборках на период (это на 125 кГц, на 65 кГц будет 32 выборки). Не хотите попробовать? Хочу очень. И фузы в CVAVR можно уточнить

В программе надо найти строчки if ((0xFFFF-SG.freq)>=SG.deltafreq) и заменить на if ((0x1FFFF-SG.freq)>=SG.deltafreq). Верхняя частота должна измениться вдвое.

По поводу завалов частоты, возможно, виноват ОУ LM358N - слишком большая входная ёмкость. Вообще, он плохо работает от 5В, попробуйте запитать его от 12В.

Сделал себе ввод частоты от клавиатуры, причем НЕ ПРЕРЫВАЯ генерации. Мне показалось, что так удобнее.

 

Собирал этот генератор примерно год назад.
Помучился с фузами, помню, заработал.
И фронты были хорошие. Даже на 8 мгц.
Потом понадобился контроллер и я его пристроил в другое место.
Через некоторое время купил новый контроллер, решил запаковать
прибор в корпус. Повозился с фузами, и пошли завалы после 5-10 кгц,
а на HS после 1-2 мгц.
Ни чего не помогает, с Фузами, которые на сайте, совсем не запускается,
одни квадраты на дисплее.
Периодически пробую довести до ума, но увы.
Фото сигналов могу прислать в понедельник-аппарат на работе.
Программатор PROTTOSS AVR910 USB Programmer. Прошивал HEX, а EEP забыл, может это !!!!!
Только сейчас дошло.
LM358 -питание +-12в, на пока отключил.
Контроллер другой, вроде менял.

Просьба к GM.
Можно выложить Вашу прошивку с фузами в CVAVR?
Меня тоже достало, все время нажимать кнопку стоп, при перестройке и при смене сигнала.
И так же при перестройке не запоминается шаг перестройки, выключил с одним шагом,
при след.вкл. опять 100гц. Нельзя сделать?
Спасибо всем за помощь.

 

Ну никак не могу прикрепить картинку с фузами.

в рабочем окне CodeVisionAVR
ГАЛОЧКИ УСТАНОВЛЕНЫ У СЛЕДУЮЩИХ ФУЗ :
SUT0
SUT1
BODEN
BOTSZ1
EESAVE
ОСТАЛЬНЫЕ ФУЗЫ БЕЗ ГАЛОК

 

К сожалению, у меня другая схема генератора, правда, добавил кварц 20 МГц. Как видите, там нет дисплея, есть только 3 кнопки и 4 светодиода. Отсюда и программа другая, так что прошивка для ATtiny2313 вряд ли вам поможет.

Fuse High Byte = 0xDF, разрешён SPIEN, остальные фьюзы оставлены непрошитыми, т.е.в единичках. Прога написана на ассеблере. Работаю я в AVRstudio4.18, прошиваю программу драконом.

Немного о моей программе. Частота выдачи fS= 2Мвыб/с, 32-битный аккумулятор фазы, занимает 780 байт флеши. Одной кнопкой изменяется шаг перестройки Df: fMIN, 100Гц, 1кГц, 10кГц, 100кГц, загорается соответствующий диод, двумя другими "+" и "-" изменяется частота f=f±Df. Ещё есть антидребезг на кнопки, плюс имеется возможность ввода любой частоты по последовательному каналу. Естественно, при нажатии на кнопки или при вводе частоты генерация не прерывается. Интересно наблюдать на осцилле, как генератор мгновенно переходит с одной частоты на другую.

Что касается вашей программы. Программа не совсем оптимальна с точки зрения основной функции - генерации синуса. Цикл занимает 10 тактов, что при 16 МГц кварце даёт fS=1.6Мвыб/с, и всё это при 24-разрядном аккумуляторе. Можно было бы сделать 7 тактов, что дало бы fS=2.28Мвыб/с и, в свою очередь, увеличило бы максимальную частоту генерируемого синуса без потери качества.