Hola a todos,
Estoy tratando de controlar el DDS AD9833 con un dspic33f. Según el datasheet ( http://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CCQQFjAB&url=http%3A%2F%2Fwww.analog.c… ) se debe realizar una inicialización para luego poder controlar la frecuencia. El problema es que al realizar el reset en la secuencia de inicialización comienza a generar una frecuencia a la salida (incluso antes de borrar el bit de reset) que luego no puedo cambiar por lo que sospecho que puede ser un problema de inicialización.
El código de la inicialización es el siguiente:
Hi all,
I am trying to control AD9833 with dspic33f. Datasheet ( http://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CCQQFjAB&url=http%3A%2F%2Fwww.analog.c… ) says an inicialization is needed to control the output. my problem is that after reset in the inicializaction process the AD9833 starts to generate an signal (even before erase reset bit) and later i can't change its frequency soy i susspect is an inicialization process
My code for inicializacion is:
unsigned char AD9833_Init(short modulo){
EscribeCMD(0x2100); // D28=1 / RESET=1
EscribeCMD(0x2000);
return (1);
}
donde
where,
void EscribeCMD(unsigned short modulo, int cmd){
unsigned short i=0;
int aux=0;
FSYNC=0;
for(i=0;i<16;i++){
aux=(cmd&(0x8000>>i))>>(15-i);
SDATA=aux;
__delay_us(1);
SCLK=0;
__delay_us(5);
SCLK=1;
}
SDATA=1;
SCLK=1;
FSYNC=1;
return;
}
y el resultado producido en el osciloscopio para el comando de reset (0x2100) parece correcto
this is de output for the reset command, it seems to be OK
¿Alguna idea?
Gracias.
Any idea? Thanks
