El DAC tiene 4 lineas que le llegan del micro:
Reloj
Dato: 12 bit de los cuales 4 son de control para escoger el convertidor y la escala y los otros 8 son el valor de voltaje
LOAD: Control de carga de la interfase serial. Cuando LDAC es bajo y LOAD es bajo el dato es llevado a un latch e inmediatamente se ejecuta la conversion.
LDAC: Carga al DAC. Cuando esta en alto no hay salida en el DAC aunque ya este el dato en la interfase serie del DAC. La salida solo se habilita cuando LDAC va de alto a bajo.
Los datos se envian de MSB a LSB.
Tambien corregi una instruccion y realice este codigo:
void envia_dato_SPI(int comando, int dato)
{
int i=0, j=0;
output_high(LOAD);
output_high(LDAC);
while ( i < 4 )
{
output_low (CLK);
output_bit (DIN, shift_left(&comando,1,0));
output_high (CLK);
//comando <<= 1;
i++;
}
while ( j < 8 )
{
output_low (CLK);
output_bit (DIN, shift_left(&dato,1,0));
output_high (CLK);
//dato <<= 1;
j++;
}
output_low(LOAD);
output_high(LOAD);
output_low(LDAC);
output_high(LDAC);
}
Ya me da salida pero no es la que yo deseo si no otro valor, por ejemplo cargo 255 como dato para obtener la referencia que son 5 Volts y lo que me da son 3.3 Volts, me imagino que ha de ser un problema de sincronizacion y/o envio de datos pero no encontrado la falla.
Ojala y alguien pueda hecharme la mano.
De antemano gracias
FJPPittta