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

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

1 30 189

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

Ещё бы! Редкий операционник "долетит до середины Днепра"...
В смысле - до 1МГц.

Но из дешёвых, всё таки, можно найти - те же компараторы LM339 и LM393.
Время установления при трансляции меандра не превышает 0,2мкс не зависимо от напряжения питания. Для сравнения - у LM358 этот же параметр до 10мкс при питании +-5В и уменьшается немного при +-15В.

Компаратор даже пилу на 1МГц транслирует один в один, не говоря уже о синусе.
Синус можно усиливать - вчера поигрался с вариантами постоянного смещения выходного сигнала (работает), и так получилось, что усиление было 2 раза (наверно, можно и больше, специально не пробовал). Выход синуса чистый, хоть КНИ усилителей меряй...

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

 

madgrey: в свете выдающихся достижений GM в деле повышения максимальной генерируемой частоты...
Подкалываете ? Ну-ну.

Завершил программу, которая принимает посылку установки частоты по уарту на скорости 9600 бод. Посылка состоит из пяти байт. Первый байт 0х03 - команда. Бит0=1 означает состояние dds пуск (соответственно бит0=0 - стоп), бит1=1 означает обращение к первому dds, бит2=1 означает обращение ко второму dds. Остальные 4 байта - 32-битный код частоты, первым идёт младший байт кода. После посылки должна быть пауза длительностью в один байт на передачу. Т.о., вгрубе весь цикл занимает 6 мс.

 

DWD: Ещё бы! Редкий операционник "долетит до середины Днепра"...
В смысле - до 1МГц.

ХА! (2 раза) Наверное для советских это и было актуально

GM: Подкалываете ? Ну-ну.
Отнюдь, констатация факта. Я хз как Вы в семь тактов вписались, в свое время ломали голову над схожей проблемой, но чтоб ТАК... Даже интересно стало

GM: Завершил программу, которая принимает посылку установки частоты по уарту на скорости 9600 бод.
И где я Вам на 48-меге возьму свободный уарт? Или это промежуточный результат?

Я разобрался с драйвером нокии3310 (маловат правда, зато дешевый и абсолютно доставаемый). Он у нас индикатором будет.

GM, я там первого декабря для Вас картинки с валкодера выложил.

Кстати, повторю вопрос к "сочувствующим":
madgrey: оконечник сдерем у Леонида Ивановича или свое измыслим?
Ибо он становится актуальным...

 

1) У нас тут шутят: редкий программер долетит до середины Ламанша

2) Семь тактов не так уж и сложно, хотя с другой стороны, Vad_Petr до сих пор разбирается, времени говорит мало...10 строк кода разобрать. Могу показать, как это делается, если интересно.

3) Ну 6 мс не такая уж большая потеря в производительности для управляющего МК, можно сделать софтовый уарт, на передачу это займёт те же 10 строк кода...или вы хотите его сутками крутить? (На электрониксе была темка про энкодер с выходной частотой импульсов 2.5 МГц, я прикинул - моя програмуля справилась бы)

4) Нужны были картинки с валкодера DWD, у него была с ним проблема, но она само собой рассосалась...А вот почему у вас дребезга контактов не видно на картинках?

 

GM: 1) У нас тут шутят: редкий программер долетит до середины Ламанша
Это смотря как пнуть
GM: Могу показать, как это делается, если интересно.
Очень!!!
GM: 3) Ну 6 мс не такая уж большая потеря в производительности для управляющего МК, можно сделать софтовый уарт, на передачу это займёт те же 10 строк кода...или вы хотите его сутками крутить? (На электрониксе была темка про энкодер с выходной частотой импульсов 2.5 МГц, я прикинул - моя програмуля справилась бы)
Я имел ввиду ведомого. Там уарта вроде не планировалось. А с ведущим разберемся
GM: 4) Нужны были картинки с валкодера DWD, у него была с ним проблема, но она само собой рассосалась...А вот почему у вас дребезга контактов не видно на картинках?
А я снял их со своего законченного проекта, в котором стоит этот валкодер и предприняты минимальные меры по подавлению этого дребезга. Зачем размножать мозг с программой, если в железе могу сделать адекватный сигнал?

 

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


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

 

GM: Вылавливайте
спасибо, отосплюсь - подумаю над этим строчками

 

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

 

GM: Потянет до 40 мА на ногу. Потребление тока - степень двойки, старший - 20мА, второй - 10, третий - 5 и т.д. Фокус в том, что при малых нагрузках на выходные ключи их можно считать идентичными. А при увеличении нагрузки появится разница, и как следствие начнет НЕПРИЛИЧНО ВЫЛЕЗАТЬ ВТОРАЯ ГАРМОНИКА генерируемого сигнала. При больших резисторах паразитные емкости мешают, а при малых начинаются искажения... Выбор верхней частоты, как и номиналы резисторов матрицы, должен быть хорошо взвешен.
GM: 2) Семь тактов не так уж и сложно, хотя с другой стороны, Vad_Petr до сих пор разбирается, времени говорит мало...10 строк кода разобрать. Разобрать несложно, посмотрел и все ясно.. Времени трудно найти на работу в этом направлении. У меня сейчас других проблем хватает....пока никак не взяться.
КСТАТИ! На контроллере в самом критическом цикле приходится делать многобайтные сложения.А 8-ми битник плохо заточен под такие дела. КТО СМОЖЕТ ОЦЕНИТЬ РАЗМЕР И СТОИМОСТЬ ПЛИСИНЫ, функция которой будет заключаться во взятии этих внешних данных (с контроллера код заданной частоты), с ПЗУ тек.значение синуса, арифметических операций со схемой быстрого переноса ( 32разр.АЛУ только на сложение) и выдачу результата для ЦАПа.
GM: Что ж будет, если я вам расскажу о 4 тактах на выборку? Это если ПЗУ увеличить...табличный метод? Иначе, вроде никак не просматривается.... Не скромничайте, мы поймем...

 

Не регулярно, но с интересом читаю тему, интересно, чем дело закончится: начиналось вполне доступно и "народно", но с учетом постоянных поползновений "улучшить" - х.з. что выйдет в итоге
Учитывая ограниченное время и незабвенную поговорку "лучшее - враг хорошего", хотелось бы, чтобы "лучшее" - перешло в следующую версию, а просто "хорошее" быстренько довелось до ума.

Я сам немного занимался аналогичным на 2313 - просто немного модифицировал известный проект да написал свою программку для компа - для задания частоты генерации.
В этой связи очень любопытно было, как в цикл DDS вписалось безразрывное изменение частоты кнопками. А от компьютера, судя по всему, безразрывного у Вас тоже не будет?
Успехов!