TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: cesarpaez en 31 de Octubre de 2004, 17:06:00
-
Hola necesito una rutina que ya este probada para que poner a funcionar 4 conversores a/d del pic 16f876A, claro no es que los 4 funcionen al mismo tiempo porque creo que no se puede, aunque si es posible me lo dicen, la idea es que un canal mida la señal, despues conmute al siguiente, y asi sucesivamente hasta que se den los cuatro canales y regrese al primero.
Tengo una pero parece que no funciona, aquí la pongo para que la verifiquen.
Configuracion del conversor
;Configuración de los conersores A/D
MOVLW B"00000010"
MOVWF ADCON1
MOVLW B"1111"
MOVWF TRISA
y aquí senso los canales
CALL TEMPERATURA
GOTO $-1
TEMPERATURA
MOVLW .31
MOVWF REFER_1
MOVLW B"01000001"
MOVWF ADCON0
CALL RET_AD
CALL MEDIR
MOVLW B"01001001"
MOVWF ADCON0
CALL RET_AD
CALL MEDIR
MOVLW B"01010001"
MOVWF ADCON0
CALL RET_AD
CALL MEDIR
MOVLW B"01011001"
MOVWF ADCON0
CALL RET_AD
CALL MEDIR
RETURN
MEDIR
BSF ADCON0,GO
BTFSC ADCON0,GO
GOTO $-1
MOVF ADRESL,0
SUBWF REFER_1,0
BTFSC STATUS,C
RETURN
GOTO MAYOR_REF
RETURN
RET_AD ; RETARDO DE 0.255mS
MOVLW 0xFF
MOVWF T1
DECFSZ T1,1
GOTO $-1
RETLW .0
lo probé y no funciona, si tienen algo que modificar me dicen o si tiene otra mejor que esta me la envian a cesarpaez08@yahoo.es
Gracias
-
Efectivamente, es imposible que se activen los 4 A/D al mismo tiempo, eso es porq la entrada de señal (VAIN) es multiplexada en funcion de las 5 entradas analogicas (en el caso de este pic, en el 874/7 son 8), acerca del no funcionamiento, bueno he notado que la frecuencia de conversion es TOSC/8, esto es valido si usas un clock de 4 a 5 MHz. pero se vuelve totalmente incorrecto con 20 MHz. debes mantener un TAD de al menos 1.6 µS (segun lo q se encuentra en la hoja de datos del fabricante), esto es 625 KHz. por cada bit del conversor, es posible q tu proyecto este funcionando por encima de los 5 MHz.? si es asi debes considerar configurar ADCON0 como 11xxxxxx para obtener TOSC/32 no importa que el periodo t kede mas grande que 1.6 µS.
De todas maneras te recomiendo que te revises la hoja de datos del fabricante para ver otras posibilidades: http://ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf
-
La frecuanci a la que estoy trabajando es de 4Mhz.
-
bueno, entonces deberias explicar mas detalladamente de q se trata el "no funciona", es decir, se trata de q no hay salida en los registros? o la rutina no funciona como debe en el sentido de que no se ejecuta linealmente?, asi podremos ayudarte a ver cual es el problema
-
Por qué no pruebas en C?? Ahí sí que es mucho más sencillo.
Un saludo.
-
Bueno como ven lo ue hago es verificar el puerto, medir el voltaje, compararlo con un valor de referencia y si se cumple una condición salta a un punto, si no salta a otro. Cuando en cualquiera de las entradas coloco un nivel que pasa el dato de referencia no pasa nada, o sea, no debe estar haciendo la conversión adecuadamente.
-
Hola a todos
mira el registro adcon1 el bit adfm es el de justificacion de como se van a sacar los datos por adresh y adresl , que tambien no estan en el mismo banco creo que el adresh esta en el banco cero y el adresl en banco uno en el 876 bueno eso creo
,sino ya alguien podra aclarar.
SALU2