[an error occurred while processing this directive]
|
Программируемая герерилка частоты 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: info@telesys.ru