Hace un tiempo tuve un proyecto que involucraba a Analog Devices Microconvertidor ADuC812 .
Entre el variado hardware de a bordo, el dispositivo contaba con dos convertidores DAC muy útiles, que podían suministrar 0-5V en sus respectivos pines e incluso mantener un amperaje respetable.
Sin embargo, había un problema. Aunque el manual decía que todo lo que había que hacer era escribir un valor específico en un registro concreto, y el voltaje correspondiente a ese valor aparecería en la salida, la realidad no era exactamente así de sencilla.
Una escritura podía mover el valor de la tensión en unos 3,5V. Si querías pasar de 0 a 5V tenías que realizar
MOV DAC0H,#00fh
MOV DAC0L,#0ffh
dos veces. (Invertir el orden no ayudaría.)
La primera escritura aumentaría el voltaje a unos 3 y pico voltios, y sólo la segunda lo llevaría al valor correcto. Si partía de 2V, alcanzaría el objetivo de 5V en una sola escritura. No es un gran problema, 4 ciclos en lugar de 2 para los saltos rápidos, ningún impacto para los "deslizamientos" suaves en absoluto, pero es una rareza.
Me gustaría preguntar a cualquiera que haya trabajado con ese chip: ¿es sólo un problema de mi chip o es común a todos los ADuC812? ¿Aparece en otros chips de la familia ADuC? ¿el 814, etc.?
Como extra, ¿podría alguien con conocimientos de electrónica explicar cómo ocurre eso? ¿Qué mecanismos internos pueden llevar a ese comportamiento?
0 votos
¿Estás seguro de que estás escribiendo los dos bytes a la vez? ¿Puedes mostrar la pieza de montaje?
0 votos
@Dzarda: Ahora bien, según recuerdo, había dos mitades del registro escritas por separado, pero aun así al mover DAC0H de 0 a f debería llevar el voltaje a unos 4,68V, y el voltaje no se acercó a 4.
0 votos
¿Cómo tiene configurado el DACCON?
0 votos
@Zack: PD0=1 PD1=1 SYNC=0 CLR0=1 CLR1=1 RNG0=0 RNG1=0 (y 5V conectados a VRef) MODE=0. Otros cambiaron a lo largo de las pruebas, pero nunca me molesté con SYNC=1
0 votos
VREF es 5V, ¿correcto? ¿Qué es AVDD?
0 votos
VRef, AVdd y DVdd eran todos de 5V desde la misma unidad de alimentación; la placa era su placa de evaluación estándar, no modificada de ninguna manera (excepto para conectar un montón de circuitos personalizados a sus cabeceras IO; incluía la conexión de AVdd a VRef).
0 votos
@SF: mirando la hoja de datos, VRef tiene que ser igual o menor que AVdd o pueden pasar cosas raras, pero ese no es el caso aquí así que tacha esa idea. Yo intentaría poner SYNC=1 como sugiere Scott