реклама на сайте
подробности

 
 
> ad9834, Хелп. Нужен пример работы с синтезатором!
Balun
сообщение Sep 12 2007, 12:58
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 34
Регистрация: 26-07-06
Пользователь №: 19 098



Хелп. Нужен пример работы с синтезатором ad9834! beer.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
=GM=
сообщение Sep 12 2007, 14:40
Сообщение #2


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Balun @ Sep 12 2007, 11:58) *
Хелп. Нужен пример работы с синтезатором ad9834! beer.gif

Какой хелп? Там стандартный SPI, подключаете к авр и вперёд.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Dopler
сообщение Sep 12 2007, 16:02
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



чтобы иметь возможность управлять всеми режимами микросхемы за одну команду, нужно передавать 5 слов (10 байт), делается это примерно так :

Код
;управление частотой
AppCmd6:
;Формат входных данных:
;0xXXXX        -    слово конфигурации (должно содержать команду RESET), типовое значение - 0x2100
;0xXXXX        -    частота, младшие 14 бит (два старших бита указывают адрес регистра частоты)
;0xXXXX        -    частота, старшие 14 бит (два старших бита указывают адрес регистра частоты)
;0xXXXX        -    фаза, (два старших бита указывают адрес регистра фазы)
;0xXXXX        -    слово конфигурации и запуска, типовое значение - 0x2000
;всего 10 байт, во входных данных
;21 00 45 1e 40 2e 20 00 20 00
    
    ldi        YL,        low(DataIn)
    ldi        YH,        high(DataIn)
    
;выдача пяти управляющих слов в микросхему
WordOutLoop:    
    cbi        portb,        SYNC_DDS    ; устанавливаем фрейм микросхем на каждое слово
    
    ld        tmp,    Y+
    rcall    SPIOutByte                ; выводим старший байт

    ld        tmp,    Y+
    rcall    SPIOutByte                ; выводим младший байт

    sbi        portb,        SYNC_DDS    ; убираем фрейм

    
    cpi        YL,        low(DataIn + 10)    
    brne    WordOutLoop
            
ret


А вот так эти 5 слов формируются (в текстбоксе SingleFreqTextBox частота в герцах ), системная частота - 16МГц
Код
// установка Частоты
            dataOut = new byte[10] { 0x21, 0x00, 0x6d, 0x0e, 0x40, 0x48, 0x20, 0x00, 0x20, 0x00 };

            uint freq = Convert.ToUInt32(SingleFreqTextBox.Text);
            double freqConst = Math.Pow(2, 28) / 16000000;
            uint freqReg = Convert.ToUInt32(freqConst * freq);

            //младшая часть множителя частоты
            uint freqSettingsL = 0x4000 | (freqReg & 0x3FFF);
            //старшая часть множителя частоты
            uint freqSettingsH = 0x4000 | ((freqReg >> 14) & 0x3FFF);

            dataOut[2] = Convert.ToByte((freqSettingsL >> 8) & 0xFF);
            dataOut[3] = Convert.ToByte(freqSettingsL & 0xFF);

            dataOut[4] = Convert.ToByte((freqSettingsH >> 8) & 0xFF);
            dataOut[5] = Convert.ToByte(freqSettingsH & 0xFF);
Go to the top of the page
 
+Quote Post
jasper
сообщение Sep 13 2007, 06:13
Сообщение #4


Народный чинитель
***

Группа: Участник
Сообщений: 415
Регистрация: 15-07-05
Пользователь №: 6 811



Вот драйвер для AD9843 и SPI, под WinAVR.
Комменты есть, думаю разберешься.
Прикрепленные файлы
Прикрепленный файл  ad9834_drv.zip ( 4.28 килобайт ) Кол-во скачиваний: 147
 
Go to the top of the page
 
+Quote Post
Balun
сообщение Sep 17 2007, 13:48
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 34
Регистрация: 26-07-06
Пользователь №: 19 098



Вроде запустил. Но рабтает странно. У меня системная частота 5 мгц.
Хочу получить синус 10 герц. А синтезатор меньше 200 герц не генерит. На самом минимальном значении регистра частоты. частота на выходе 200 гц. Может это быть из-за генератора 5Мгц?
Go to the top of the page
 
+Quote Post
jasper
сообщение Sep 18 2007, 04:34
Сообщение #6


Народный чинитель
***

Группа: Участник
Сообщений: 415
Регистрация: 15-07-05
Пользователь №: 6 811



Цитата(Balun @ Sep 17 2007, 19:48) *
Может это быть из-за генератора 5Мгц?

MCLK в 5MHz - вполне допустимо. Надеюсь, качество клока нормальное?

Где смотрите? Синус? А то, цифровой выход через компаратор на столь низких частотах работать не будет, там ФВЧ стоит. Может влияние выходных каскадов. Лучше для начала оторвать все лишнее и нагрузить выход на 200 Ом.

Но скорее всего, глюк обмена, программный или аппаратный, например, помехи по SPI могут быть. А по поводу программных - вышеприведенный драйвер на 100% рабочий.
Go to the top of the page
 
+Quote Post
Balun
сообщение Sep 18 2007, 13:02
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 34
Регистрация: 26-07-06
Пользователь №: 19 098



Глюк нашел. Был в обмене спроцессором. У меня SPI программный.
Вот другой вот вопрос. У меня два синтезатора. Слок от одного генератора. Мне нада задавать разную фазу. Когда я пишу в два синтезатора фазу ноль то на осцилографе фаза смещена где то на 10 градусов. И мещение постоянно на всех частотах. Можно ли это как нить побороть.!
Go to the top of the page
 
+Quote Post
jasper
сообщение Sep 18 2007, 14:55
Сообщение #8


Народный чинитель
***

Группа: Участник
Сообщений: 415
Регистрация: 15-07-05
Пользователь №: 6 811



Синхронизация двух синтезаторов осуществляется подачей сигнала RESET сразу на оба синтезатора, который заводится на ножки RESET, т.е. аппаратный сброс.
Ресет сбрасывает внутренний регистр аккумулятора фазы, регистры, задающие частоты и сдвиги фаз, при этом сохраняются.
Go to the top of the page
 
+Quote Post
Balun
сообщение Sep 19 2007, 10:47
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 34
Регистрация: 26-07-06
Пользователь №: 19 098



Спасибо, разобрался. Работает как нада.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01418 секунд с 7
ELECTRONIX ©2004-2016