-
UT0UM
-
( Посетитель )
-
|
alexis пишет:
...
Немного странным мне показалось, что он не использовал возможность аппаратного переключения регистров частоты в ДДС-ке, ну да я это поправил.
Уважаемый alexis
пожалуйста, осветите этот момент поподробнее
а то я что-то плохо понимаю что мне надо заслать в DDS чтобы на SIGNB сигнал был
щас шлется вот такое
tfr_word(0x2100);
tfr_word(regLo);
tfr_word(regHi);
tfr_word(0xC000);
tfr_word(0x2000);
нашел вот такую штутку на сайте AD
можно на ней показать как SIGNB задать?
Картинка синтезатора
|
Последнее редактирование: 06 Дек 2015 05:54 от UT0UM.
|
-
UA1ARN
-
( Пользователь )
-
-
Вне сайта
- Сообщений: 23
-
Репутация: 1
-
|
Аппаратное переключение требует лишнего вывода с процессора... Вот и вся причина. Скоростного переключения (модуляции) в данном проекте не требуется - а для исключния щелчков при перестройке достаточно и программного переключения между заполняемым/работающим профилями.
Возможно, поможет код из моего проекта:
#if FTW_RESOLUTION < 28
#error FTW_RESOLUTION should be >= 28
#endif
#define AD9834_SPIMODE SPIC_MODE2 // MODE2 - work. Do not use MODE3 with this chip
/* internal function */
/* this function is'not control chip select/fsync line */
static void
//NOINLINEAT
prog_ad9834_control(
spitarget_t target, /* addressing to chip */
uint_fast8_t reset, /* 0/1 */
uint_fast8_t comparator,
uint_fast8_t fsel /* freq profile for output 0/1 */
)
{
// Set control word
enum { hlb = 0 };
const uint_fast8_t fselmask = fsel ? 0x08 : 0x00;
// биты 15..8
if (reset)
spi_progval8_p1(target, 0x01); // RESET = 1
else
spi_progval8_p1(target, 0x20 | fselmask); // B28=1, FSEL=0 or FSEL=1, PSEL=0
// Биты 7..0
#if 0
// Выход наружу старшего бита SIN DAC
// 0x40 - SLEEP12 = 1 powers down the on-chip DAC
spi_progval8_p2(target, 0x68); /* 0x68 - частота, на которую запрограммирован DDS, 0x60 - делённая пополам */
#else
// нормальная работа, синусоидальный
spi_progval8_p2(target, comparator ? 0x38 : 0x00);
#endif
spi_complete(target);
}
/* set frequency tuning word1 to DDS */
static void
//NOINLINEAT
prog_ad9834_freq(
spitarget_t target, /* addressing to chip */
const phase_t * val,
uint_fast8_t * profile, /* место для хранения информации о последнем использованном профиле */
uint_fast8_t comparator
)
{
const uint_fast8_t fselnext = (* profile) == 0;
/* 0x01: freq0, 0x02: freq1 */
const uint_fast8_t freqx8 = fselnext ? 0x80 : 0x40;
spi_select(target, AD9834_SPIMODE); /* start sending data to target chip */
// assume - last initialization match to active_profile data.
const uint_fast32_t v32 = * val;
// LSBs (13..0 bits of FTW)
spi_progval8_p1(target, freqx8 | ((v32 >> (8 + (FTW_RESOLUTION - 28))) & 0x3f));
spi_progval8_p2(target, (v32 >> (0 + (FTW_RESOLUTION - 28))) & 0xff );
// MSBs (27..24 bits of FTW)
spi_progval8_p2(target, freqx8 | ((v32 >> (22 + (FTW_RESOLUTION - 28))) & 0x3f));
spi_progval8_p2(target, (v32 >> (14 + (FTW_RESOLUTION - 28))) & 0xff);
spi_complete(target);
/* switch output for next profile */
prog_ad9834_control(target, 0, comparator, fselnext);
spi_unselect(target); /* done sending data to target chip */
* profile = fselnext;
}
static void
//NOINLINEAT
prog_ad9834_init(
spitarget_t target, /* addressing to chip */
uint_fast8_t * profile, /* место для хранения информации о последнем использованном профиле */
uint_fast8_t comparator /* разрешение работы компаратора */
)
{
enum { fsel = 0 };
spi_select(target, AD9834_SPIMODE); /* start sending data to target chip */
prog_ad9834_control(target, 1, comparator, fsel); // reset pulse
prog_ad9834_control(target, 0, comparator, fsel);
spi_unselect(target); /* done sending data to target chip */
* profile = fsel;
}
|
Последнее редактирование: 06 Дек 2015 14:55 от UA1ARN.
|
-
UA3DLD
-
( Пользователь )
-
-
Вне сайта
- Сообщений: 215
-
Репутация: 27
-
|
Энди на пиши где ты видел PFR за десять тысяч?
Не найду ни как.
Купил сегодня микросхему SA602AN в место SA612A.
Все равно не работает генератор.
Кварцы уже пробовал на разные частоты.
Как заколдованная какая то схема!
|
|
-
rk3fw
-
( Пользователь )
-
-
Вне сайта
- Сообщений: 902
-
Репутация: 58
-
|
Сань, на нашей доске объявлений сегодня появилось.
|
|
-
UT0UM
-
( Посетитель )
-
|
UA3DLD пишет:
Энди на пиши где ты видел PFR за десять тысяч?
Не найду ни как.
Купил сегодня микросхему SA602AN в место SA612A.
Все равно не работает генератор.
Кварцы уже пробовал на разные частоты.
Как заколдованная какая то схема!
так вот жеж, на этом же форуме
|
|
-
UA3DLD
-
( Пользователь )
-
-
Вне сайта
- Сообщений: 215
-
Репутация: 27
-
|
Нашел PFR-3A за десять тысяч !!!
Но Украина же.
Опасно, у них 20 декабря дефолт будет.
Как раз можно попасть.
Мне в таких вопросах всегда не везет.
|
|
-
UR0ET
-
( Пользователь )
-
-
Вне сайта
- Сообщений: 976
-
Репутация: 60
-
|
Улыбнуло
Объявление давал QRP men, судя по профилю Зверев Александр Владимирович, RZ3AIX, Рязань. Теперь вот гадаю: то ли Рязань уже в Украине, то ли дефолт в Рязани будет?
|
|
-
UT5NM
-
( Пользователь )
-
-
Вне сайта
- Сообщений: 1136
-
Репутация: 91
-
|
Ну, в Рязани еще с 1980(раньше меня там не было, не знаю) "дефолт" дело привычное. Как вспомню "длинное, зеленое и колбасой пахнет"(электричка Рязань-Москва ), такая ностальгия пробивает .
Но вопрос в другом. Регистрация в момент подачи объявления, RZ3AIX из Москвы и единственная его активность это "двухэлементная балконная антенна" на фоне московских же пейзажей. Электронный адрес в публикации тоже другой. Реальный Зверев объяву давал или "рязанский" незнамо кто, это вопрос.
В любом случае списываться, потом обязательно созваниваться и однозначно ехать лично. Если откажется от встречи и будет убедительно просить на всякие яндекс-деньги, то послать лесом и обязательно отписать прямо здесь и Админу, чтоб немедленно аннулировать регистрацию и снять объяву! Не хватало еще, чтоб мошенники и наш сайт в свои "схемы" втянули и кто-то из наших "купился"...
|
|
-
rk3fw
-
( Пользователь )
-
-
Вне сайта
- Сообщений: 902
-
Репутация: 58
-
|
Были случаи с обманом и с указанием телефона...
|
|
|