Опорник от Владимир_К
415285 просмотров, 466 ответов — стр. 17 из 32
15 мая 2021 г. в 07:41#241
Ок. Я пока ее впаяю. Вы только скажите какие порты задействуем под ее управление.
16 мая 2021 г. в 10:50#242
Вы только скажите какие порты задействуемНаписал тестовый код управления AD9850.
Подключение:
PC1 - подключаем к 25 выводу микросхемы (Data);
PC2 - подключаем к 7 ноге микросхемы (WCLK);
PB4 - подключаем к 8 выводу микросхемы (FQ_UD;
С опорником 125 мгц, микросхема должна выдать сигнал частотой 10 мгц.
Это тестовая прошивка, никакие функции синтезатора работать не будут, только ДДС и должен моргать светодиод, подключенный на вывод PD4 (Lock).
Файл назван AD9832, не обращайте внимание, он для AD9850.
Если будет работать, прицеплю ее к синтезатору.
16 мая 2021 г. в 11:01#243
Паяю ддс.
16 мая 2021 г. в 11:18#244
1. Ничего сложного, 40 бит (с 8 "нулями" в конце) из одного расчета и все.Добрый день!
У меня к Вам пара вопросов. В Вашей прошивке, последнее слово, которое Вы загружаете в AD9850 "0b00000000".
shiftOut(DATA, W_CLK, LSBFIRST, 0b00000000);
В даташите "0b001xxxxx" где d6 это Power-Down. Уточните пож. что туда ставить?
И еще, например частота 500 гц, в двоичном коде это 111110100. Как надо загружать в микросхему, в каком порядке?
Я понял что - сначала младший бит, т.е. 0, потом 0, 1,0 и так далее, или наоборот? LSBFIRST- это значит с младшего бита?
16 мая 2021 г. в 11:58#245
Все из pdf-а (9850.jpg). LSB first = "младший значащий бит первым". LSBFIRST, MSBFIRST находятся во встроенной функции shiftOut(dataPin, clockPin, bitOrder, value) в Arduino IDE.
Просто нужно вызвать функцию, она готова.
shiftOut():
https://www.arduino.cc/reference/en/language/functions/advanced-io/shiftout\
и
http://arduino.ru/Reference/ShiftOut
a если нужно ее сам сделать:
(C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_shift.c)
Код: [Выделить]void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) {
uint8_t i;
for (i = 0; i < 8; i++) {
if (bitOrder == LSBFIRST) {
digitalWrite(dataPin, val & 1);
val >>= 1;
}
else {
digitalWrite(dataPin, (val & 128) != 0);
val <<= 1;
}
digitalWrite(clockPin, HIGH);
digitalWrite(clockPin, LOW);
}---
A ето "младший бит"
.
(lsb.jpg)
Просто нужно вызвать функцию, она готова.
shiftOut():
https://www.arduino.cc/reference/en/language/functions/advanced-io/shiftout\
и
http://arduino.ru/Reference/ShiftOut
a если нужно ее сам сделать:
(C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_shift.c)
Код: [Выделить]void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) {
uint8_t i;
for (i = 0; i < 8; i++) {
if (bitOrder == LSBFIRST) {
digitalWrite(dataPin, val & 1);
val >>= 1;
}
else {
digitalWrite(dataPin, (val & 128) != 0);
val <<= 1;
}
digitalWrite(clockPin, HIGH);
digitalWrite(clockPin, LOW);
}---
A ето "младший бит"
.(lsb.jpg)
16 мая 2021 г. в 12:05#246
val >>= 1;Спасибо. Вот это мне и нужно было, куда двигать?
Так val >>= 1, или наоборот val <<= 1.
если нужно ее сам сделать:Да я так обычно и делаю, только было сомнение, куда двигать.
16 мая 2021 г. в 12:26#247
Если используемом IDE или у Вас нет своего, я бы экспортировал множество макросов/функции, уже встроенных в Arduino IDE, в вн. файл, библиотека. Они экономят время для писания кода и строки давно проверены (bitRead, bitSet, lowByte(w) ... max(a, b) ... abs(x), map(...), constrain(amt, low, high)). Часто обращаюсь к Arduino сроки, которые даже за CCS для PIC я недавно переписал, уже строко на полстраницы
. Кто как привык.
. Кто как привык. 16 мая 2021 г. в 01:33#248
я бы экспортировал множество макросов/функции, уже встроенных в Arduino IDE,Я иногда это делаю, но, потом забываю, что у меня есть, а чего нет. Программированием я не часто занимаюсь, больше времени уделяю слесарным работам, да паяю..
16 мая 2021 г. в 01:54#249
У меня к Вам пара вопросов. В Вашей прошивке, последнее слово, которое Вы загружаете в AD9850 "0b00000000".Это регистр фазы который по сути не используем и там же младший бит включение внутреннего умножителя такта. Если ноль то не умножать, если единица включено умножение на шесть для 9851. Зависит какой опорник на плате ддс 30 или 180МГц. Кстати АД9850 с алиэкспресса все работают с умножением на четыре если этот бит установить. А так же без проблем с внешним тактом до 200МГц. Естественно при питании 5 вольт. На 40МГц тактовый генератор умножается на четыре. Расчёт такта ведётся всегда с учётом множителя если он включен. Если генератор 30 то такт 180 и т.д. 9851 и 9850 самые простые в управлении ддс.
16 мая 2021 г. в 02:06#250
Это регистр фазы который по сути не используем и там же младший бит включение внутреннего умножителя такта.Не, меня немного смутил 5 бит последнего байта. Пример на Ардуино, там ноли, а в даташите - 1. Обозначен этот бит как Power Down. И как это понимать, выключение это когда, если 1 или наоборот?. И вообще, что это за отключение. Спящий режим?
16 мая 2021 г. в 02:09#251
Цитироватьа в даташите - 1.Дайте точного цитата из pdf (скрийн екрана), пожалуйста.
---
нашел Figure 13:
W32 = 0, W33 = 0, W34 = 1, W35..39 = x ето режим Serial Load Power-Down Sequence / Последовательность отключения. Точно, "спящий режим".
Нам нужна непрерывная работа AD (без программно выключения), фаза 0, без уножитель, поэтому все биты равны нулю.
Даже пробовал там телеграфная манипуляция (директно на основняя частота), рядом в приемника звучит неплохо.
---
нашел Figure 13:
W32 = 0, W33 = 0, W34 = 1, W35..39 = x ето режим Serial Load Power-Down Sequence / Последовательность отключения. Точно, "спящий режим".
Нам нужна непрерывная работа AD (без программно выключения), фаза 0, без уножитель, поэтому все биты равны нулю.
Даже пробовал там телеграфная манипуляция (директно на основняя частота), рядом в приемника звучит неплохо.
16 мая 2021 г. в 02:45#252
Припаял DDS, залил программный код. Мигает светодио, на выходе DDS ничего нет. 

16 мая 2021 г. в 02:49#253
на выходе DDS ничего нет.Ну вот, чего я и боялся. Если бы у меня была микросхема, мог бы попытать у себя. Если бы у меня не работала, тогда 100% надо ковыряться в программе. А что сейчас думать, не знаю. Хотя, остается небольшая надежда, прогоню в пошаговом режиме, может где "косяк" допустил..
Покажите схему подключения. Обратите внимание, для переключения в последовательный режим записи, надо ногу 2 на землю, ноги 3 и 4 на + питания. Проверьте генерацию опорника.
16 мая 2021 г. в 02:57#254

16 мая 2021 г. в 02:59#255
Опорник генерит 125мгц. 
