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

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

1 36 189

DWD: На всякий случай, объясните, пожалуйста...
Ниже приведен кусок хекс-файла с двумя таблицами, одна начинается с 0х0600, ищите строку ":100600...", и кончается в строке ":1006F0....", вторая - с 0х0700, ищите строку ":100700..." и кончается строкой ":1007F0...". Ну вот, таблицу от начала и до конца можно легко подменить любым текстовым редактором, никто и не заметит.


:1006000000000000000000000000000000000000EA
:1006100000000000000000000000000000000000DA
:1006200000000000000000000000000000000000CA
:1006300000000000000000000000000000000000BA
:1006400000000000000000000000000000000000AA
:10065000000000000000000000000000000000009A
:10066000000000000000000000000000000000008A
:10067000000000000000000000000000000000007A
:10068000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
:10069000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
:1006A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
:1006B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
:1006C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
:1006D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
:1006E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
:1006F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
:10070000808386898C8F9295989B9EA1A4A7AAAD81
:10071000B0B3B6B9BBBEC1C3C6C9CBCED0D2D5D794
:10072000D9DBDEE0E2E4E6E7E9EBECEEF0F1F2F44F
:10073000F5F6F7F8F9FAFBFBFCFDFDFEFEFEFEFE0A
:10074000FFFEFEFEFEFEFDFDFCFBFBFAF9F8F7F6F0
:10075000F5F4F2F1F0EEECEBE9E7E6E4E2E0DEDB03
:10076000D9D7D5D2D0CECBC9C6C3C1BEBBB9B6B31B
:10077000B0ADAAA7A4A19E9B9895928F8C898683E1
:100780007F7C797673706D6A6764615E5B585552E1
:100790004F4C494644413E3C393634312F2D2A28AE
:1007A0002624211F1D1B1918161413110F0E0D0BD3
:1007B0000A090807060504040302020101010101F8
:1007C00000010101010102020304040506070809F2
:1007D0000A0B0D0E0F1113141618191B1D1F2124BF
:1007E00026282A2D2F313436393C3E414446494C87
:1007F0004F5255585B5E6164676A6D707376797CA1

 

GM: Ну вот, таблицу от начала и до конца можно легко подменить любым текстовым редактором, никто и не заметит.
И еще контрольную сумму пересчитать.
А то, некоторые могут и заметить

 

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

 

Tadas: Так частота его вроде и будет равна частоте DDS (если что, GM поправит)
Частота будет равна частоте DDS в среднем, однако, джиттер может быть до 0.5 мкс, поскольку частота выдачи самплов - 2000 ksps, т.е. переход 0-1 или 1-0 у меандра может случиться не в любое мгновение, а строго через промежутки 0,5 мкс.

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

 

GM, ATLab, я искренне рад, что имплантация управления от ПК тинькой прошла успешно, однако в меге 16, которая у нас является ведущим контроллером всего один УАРТ, я его могу размножить для нескольких ведомых ведомых, но делить на три для общения с ПК - считаю нецелесообразным. По крайней мере в первой версии генератора. А лишних пинов и выч. ресурсов МК, а также моего желания городить софтяной уарт для внутренних нужд генератора тоже не наблюдается. Так что связь с ПК - задел на будущее.
Кстати, гляньте: сюда там находится еще одна интересная разработка Леонида Ивановича. Меня, помимо характеристик и дизайна прибора меня особенно заинтересовал протокол обмена данными с ПК. ATLab, Вы с WAKE сталкивались?

 

1) Здесь проблемы нет, можно легко и на три сделать, но зачем вообще делить? Зачем вообще связь ведущего МК с ПК?

2) Тиня должна работать от кварца 20 МГц, а мега16, по-моему, работает только до 16 МГц, у нас что, уже два кварца? Неразумно и расточительно.

3) Лет так 8 назад, помнится, прорабатывал я построение программного генератора импульсов на аврке, все параметры были примерно такие же, как у Л.И., только дискрет был 25 нс по вполне понятной причине. Жалко руки не дошли до практической реализации...

 

GM: Не, если заменять строками, то не надо.
Да, если строки получены в результате трансляции исходного текста.
Как-то упоминание текстового редактора вызвало ассоциацию с правкой в ручную

GM: однако, джиттер может быть до 0.5 мкс
Для частоты 1 МГц это конечно страшная вещь, а для 10 кГц - более приемлемо.

GM: чтобы получить меандр заданной частоты, лучше всего подать чистый синус
Опять же легко получить чистый синус для 10 кГц и совсем непросто для 1 МГц.
Так что качество полученного меандра будут близко для обоих методов, только в первом случае меньше аппаратуры.
А в случае, когда частота семплирования и выходная частота в точности кратны, то с компаратором может статься и хуже.

 

GM: Теперь Сycle = 10 по умолчанию, разрядность аккумулятора вынесена в настройки, а код частоты я так и считал, просто до конца не описал вычисления.
Пробуйте версию 0.11 http://atlab.narod.ru/files/ddscontrol_011.zip

По поводу крокозябр: я не нашел возможности явного указания в программе кодовой страницы для текста, поэтому смотрите у себя в системе, возможно нет кириллицы, или кодовая страница для кириллицы не та (что то такое припоминается по поводу проблем кодовой страницы 851...)

madgrey: С Wake дела не имел, просто мельком смотрел - вроде протокол несложный. А что? Там на сайте есть много информации по этой теме, есть что почитать при нужде.

 

Tadas: При периоде в 1 мкс. фронты 0.2 мкс. это конечно не фонтан. Будет недалеко от синуса

Всё относительно.
Если я выложу осциллограмму такого сигнала, то Вы скажете, что по форме она скорее меандр, чем что-то другое.

 

ATLab: Версию 0.1 программы для компьютера берем по
http://atlab.narod.ru/files/ddscontrol_01.zip

И что с ней делать?
Как её подключать к МК?