[an error occurred while processing this directive]
AD9834. Почему-то генерирует не ту частоту.
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено homekvn 07 марта 2005 г. 19:53

Программируемая герерилка частоты AD9834 у меня странно глючит. Глюк заключается в том, что почему-то все время генерится одна и та же частота, какие бы значения регистра FREQ0 я ни устанавливал. AD9834 подключена через SPIb интерфейс к DSP AD21364. Я делал все, как пишут в мануале, и на осциллографе проверял, что я туда посылаю. - Все верно. И код правильный посылаю (смотрел в специальной проге, которая с EVAL-AD9834EB поставляется). А частота какая-то левая генерится. Более того, смотрел на другой "борде" там этот глюк тоже присутствует, но генерируемая частота совсем другая, "левая".

Привожу ниже фрагмент кода. Может, кто-нибудь поймет в чем дело.

#define wait_SPI_ready nop; nop; nop; ustat1=dm(SPISTATB); bit tst ustat1 TXS; if tf jump (pc,-2)
...

SRU (HIGH, PBEN03_I); // DAI_PB3_I is ouput so set its enable to high

SRU (HIGH, PBEN01_I); // DAI_PB1_I is ouput so set its enable to high

SRU (LOW, DAI_PB03_I); // To enable data transmission

// Set SPI Baud Rate to 100 kHz
r1=500;
dm(SPIBAUDB) = r1;

r1 = (SPIEN | SPIMS | SENDZ | CPHASE | CLKPL | TIMOD1 | WL16 | MSBF);

dm(SPICTLB) = r1;

//Pause before continuing
lcntr=1000, do (pc,_loop_end0) until lce;
_loop_end0:
nop;

r0 = 0x2000;
dm(TXSPIB)=r0;

wait_SPI_ready;

SRU (HIGH, PBEN01_I); // DAI_PB1_I is ouput so set its ensable

r0 = 0x4937;
dm(TXSPIB)=r0;
wait_SPI_ready;

SRU (HIGH, PBEN01_I); // DAI_PB1_I is ouput so set its ensable
r0 = 0x4106;

dm(TXSPIB)=r0;
wait_SPI_ready;

SRU (HIGH, PBEN01_I); // DAI_PB1_I is ouput so set its ensable
r0 = 0x0100; // Set reset bit active
dm(TXSPIB)=r0;
wait_SPI_ready;

SRU (HIGH, PBEN01_I); // DAI_PB1_I is ouput so set its ensable
r0 = 0x0000;
dm(TXSPIB)=r0;
wait_SPI_ready;

lcntr=60000, do (pc,_loop_end88) until lce;
_loop_end88:
nop;

lcntr=20000, do (pc,_loop_end888) until lce;
_loop_end888:
nop;

SRU (HIGH, PBEN01_I); // DAI_PB1_I is ouput so set its ensable
SRU (HIGH, DAI_PB03_I); // To disable data transmission
...


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru