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

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

1 32 189

madgrey: Но кто напишет забесплатно и поделится исходниками проги под комп? Возьметесь? Народ спасибо большое скажет!
GM ведь описал формат управляющей посылки, я думал, управляющая программа уже есть.
Я не гений программирования - просто любитель - поэтому шедевров интерфейса от меня ждать будет опрометчиво.
Что я делал для себя:
- управление через COM порт
- частота генерации задается дискретно кнопками
- в вЫключенном состоянии генератора цифры частоты желтые, во ВКЛюченном - зеленые
- обратной связи от генератора нет
- установленное значение частоты сохраняется в ini файле
- размер программы примерно 30 кбайт.
Картинки (сюда не могу загрузить):
http://atlab.narod.ru/files/ddscontrol1.png - выключен
http://atlab.narod.ru/files/ddscontrol2.png - включен

Могу модифицировать программу под нужды данного проекта.

 

Для меня и такую программу для компа сделать проблематично.
Но уж если бы я ее делал, то добавил бы выбор типа сигнала (sin, пила... произвольная форма userа из файла) и возможность задавать границы свипа.
Учитывал бы при написании, что сом порт может присутствовать на переходнике USB-COM и поэтому номер его может быть высоким, например COM17.
Значит в программе должен быть выбор порта и задание его скорости.
GM может скажет свое слово о возможности добавления таких фичей?

 

ATLab: GM ведь описал формат управляющей посылки, я думал, управляющая программа уже есть.
Я не гений программирования - просто любитель - поэтому шедевров интерфейса от меня ждать будет опрометчиво.

Все в этом мире что то могут делать лучше, что то хуже других. Я вообще не могу писать программы для больших ПК.
Более того, в обозримом будущем не собираюсь этому учиться, т.к. других дел полно.

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

ATLab: Что я делал для себя:...
Лично меня подобный интерфейс устроил бы полностью. Только крутилка одна нужна и всё .
Если в упрощенном виде подобный интерфейс сможете реализовать, а судя по всему от Вашего проекта этот может отличаться только наличием на экране аналога валкодера и чуть большим количеством кнопок и индикаторов - сформулирую "ТЗ" на прогу и ориентировочный внешний вид.

smg123: Для меня и такую программу для компа сделать проблематично.
Но уж если бы я ее делал, то добавил бы выбор типа сигнала (sin, пила... произвольная форма userа из файла) и возможность задавать границы свипа.
Учитывал бы при написании, что сом порт может присутствовать на переходнике USB-COM и поэтому номер его может быть высоким, например COM17.
Значит в программе должен быть выбор порта и задание его скорости.
GM может скажет свое слово о возможности добавления таких фичей?

Панель виртуального генератора будет (если ATLAB согласится ) дублировать (по функциям) реальную. Режимы генерации там будут.
Высокий номер будет учтен, скорость выбирать нефиг поэтому будет фиксированной, например 9600 хватит за глаза, а то на компе это просто, а на контроллере - лишний головняк
Думаю, GM согласится с этим

 

1. С крутилкой напряженка - нет такого стандартного элемента интерфейса, поэтому я сделал декадные кнопки.
Я поищу возможные варианты, но успешного результата не гарантирую.
А нужно ли полностью дублировать "железный" интерфейс?
Мне, например, проще ввести требуемое точное значение частоты и нажать кнопку "Установить".
Для плавной перестройки частоты вместо крутилки можно использовать пару кнопок "+" "-" с динамическим изменением величины приращения. В этом случае все упрощается, а эффект тот же.
2. Сейчас номер порта прописывается в ini файле (текстовый файл) вручную. Там же задается скорость обмена.
3. Выбор формы сигнала не делал - у меня сигнал ее не менял, но добавить нет проблем - это просто еще одна кодовая посылка для МК.и несколько зависимых кнопок в интерфейсе.

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

 

В Вашем профиле кроме даты регистрации и количества сообщений ничего не видно

 

Это не ко мне, это к админу
Посмотрите на http://atlab.narod.ru/info.htm

 

GM: Вылавливайте

out portb,r13
add r11,r21
adc r12,r22
adc r30,r23
ld r13,z
add r11,r21
out portb,r13
adc r12,r22
adc r30,r23
ld r13,z
rjmp dds

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

Кстати, по поводу
GM: Всё, теперь и madgreya потеряли вдобавок к Vlad_Petrу . Что ж будет, если я вам расскажу о 4 тактах на выборку? Что ли все разбегутся? Тут и так уже никакой активности никто не проявляет, тема еле теплится...

А вот на счет 4 тактов при сохранения 24 битного аккума есть сильные сомнения.
А в продолжение программерских страшилок скажу, что на ступеньку пилы на фиксированной частоте можно сгенерить за 2 такта, период меандра - за 4 (программно). Меньше не пробовал, но подозреваю, что архитектура атмела это не позволяет

 

madgrey: Я разобрался в коде. Оригинально, однако в нем есть элемент авантюризма. Синусоидальная палка будет сильно расползаться и я уверен, Вы точно знаете почему
С чего бы ей расползаться? Не будет она расползаться, наоборот, будет стоять, как у волка на морозе..хвост .

madgrey: А вот на счет 4 тактов при сохранения 24 битного аккума есть сильные сомнения
There is not a shadow of doubt. Не надо сомневаться, я отвечаю . И аккумулятор фазы там 32-битный, а не 24-х битный.

 

GM: С чего бы ей расползаться?
Поясняю. У вас в том примере темп выдачи данных неодинаковый. Сначала 6 тактов/выборку, потом - 8, потом повторяется . На ВЧ может (и будет) возникать такая ситуация, когда в один период определенный участок сигнала формируется первой с помощи 6-ти тактовой последовательности, а другой - восьмитактовой. Особенно сильно будет это видно на верхнем пределе, где на период приходится порядка 4-х выборок. Там и так сигнал кривой, так еще и это добавится. В итоге возрастут фазовые шумы, и спектральная частота генерируемого сигнала ухудшится. И самое прискорбное, что фильтрация от этого не спасает, т.к. расползется "тонкий спектр". Вот.

Если Вы действительно не сомневаетесь, честь Вам и хвала, т.к. сегодня я обновил знания по тактам в асме у атмела и знаю что в 4 такта может поместиться весьма немного . Но мне за глаза хватает и честных 8 .

 

У меня там честные 7 тактов на выборку, где вы увидели 6 и 8?