Autor Tema: Como configuro el conversor A/D del pic 16f819  (Leído 4898 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Nick

  • PIC10
  • *
  • Mensajes: 7
Como configuro el conversor A/D del pic 16f819
« en: 19 de Diciembre de 2007, 17:22:32 »
Hola

Gracias por la ayuda prestada en mi anterior duda, ahora tengo problemas con el convertidor A/D del pic16f819.
Estoy trabajando en la creación de un programa cargador de baterias NiMH, el cual necesita testear voltaje y corriente de carga, para esto utilizo el A/D.
Tengo escrito el programa en código fuente pero al probarlo en mplabsim se queda pegado en el bucle convlista que aun no entiendo por que.
Al cargar el código al pic, no hace lo esperado, que seria encender un led verde si la tensión de entada es mayor a 0,1 volt y un led rojo sino.
Cualquier ayuda me seria de gran utilidad, acontinuación el programa para que lo vean... la conversion se realiza en la subrutina coci convlista.
Gracias   :)   :-)


; ***********************************************   Definición de Variables   ***********************************************


status         equ           03h                    ;registro de estados
porta          equ           05h                    ;puerto A en la dirección 5h de la RAM
portb          equ           06h                    ;puerto B en la dirección 6h de la RAM
trisa          equ           85h                    ;dirección de configuración puerto A
trisb          equ           86h                    ;dirección de configuración puerto B
osccon         equ           8fh                    ;dirección de registro del reloj
adcon1         equ           9fh                    ;registros de configuración para
adcon0         equ           1fh                    ;conversor análogo a digital
adresh         equ           1eh                    ;
adresl         equ           9eh                    ;
pir1           equ           0ch                    ;dirección de registro conversor AD
lazo1          equ           20h                    ;dirección de configuración registro conta
lazo2          equ           21h                    ;dirección de configuración registro lazo1
sumah          equ           22h                    ;dirección de configuración registro lazo2
sumal          equ           23h                    ;
z              equ           02h                    ;bandera de 0 del registro de estados
go             equ           02h                    ;bandera de 0 del registro de estados
adif           equ           06h                    ;bandera de 0 del registro de estados
dc             equ           01h                    ;bandera de 0 del registro de estados



; ***********************************************   Inicio de Programa   ***************************************************


reset          org           00h                    ;el vector reset esta en la posicion 00
               goto          inicio                 ;se salta al programa principal
                                                    ;
               org           05h                    ;el programa empieza en la posicion de memoria 0
                                                    ;
inicio         bsf           status,5               ;se ubica en banco 1 de memoria RAM
               movlw         b'1100000'             ;se guarda en W el valor a usar del reloj en binario 110
               movwf         osccon                 ;se configura el reloj interno a 4Mhz
               bcf           status,5               ;regresa al primer banco de memoria RAM limpiando
               goto          principal              ;




; ***********************************************   Subrutinas de Programa   ***********************************************


coci           bsf           status,5               ;
               movlw         b'10000000'            ;
               movwf         adcon1                 ;
               movlw         b'11111110'            ;
               movwf         trisa                  ;
               bcf           status,5               ;
               movlw         b'10000001'            ;
               movwf         adcon0                 ;
               clrf          sumah                  ;
               clrf          sumal                  ;
               call          retardo                ;
               bcf           pir1,adif              ;
               bsf           adcon0,go              ;
convlista      btfss         pir1,adif              ;
               goto          convlista              ;regresa si adif distinto de 1
               bsf           status,5               ;
               movf          adresl,w               ;
               bcf           status,5               ;
               addwf         sumal,1                ;
               movf          adresh,w               ;
               addwf         sumal,1                ;
               retlw         00h                    ;
                 
             
retardo        movlw         d'5'                   ;registro W contiene 5 decimal
               movwf         lazo1                  ;registro lazo1 contiene cantidad de milisegundos
ciclo1         movlw         d'110'                 ;registro W contiene 110 decimal
               movwf         lazo2                  ;carga numero de milisegundos en lazo2
ciclo2         nop
               nop
               nop
               nop
               nop
               nop
               decfsz        lazo2,1                ;pregunta si termino 50 ms
               goto          ciclo2
               decfsz        lazo1,1                ;pregunta si termino el retardo
               goto          ciclo1
               retlw         00h                    ;salta instruccion despues de call
               
ledcoci        bsf           status,5               ;
               movlw         b'10111111'            ;
               movwf         trisa                  ;
               bcf           status,5               ;
               movlw         b'01000000'            ;
               movwf         porta                  ;
               goto          principal              ;

led            bsf           status,5               ;
               movlw         b'01111111'            ;
               movwf         trisa                  ;
               bcf           status,5               ;
               movlw         b'10000000'            ;
               movwf         porta                  ;
               goto          principal              ; 
 
 
; ***********************************************   Programa Principal   ***************************************************


principal      call         coci                    ;llama subrutina coci
               movlw        b'00010101'             ;
               subwf        sumal,0                 ;
               btfsc        sumal,dc                ;
               goto         ledcoci                 ;
               call         led                     ;
               end

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Como configuro el conversor A/D del pic 16f819
« Respuesta #1 en: 19 de Diciembre de 2007, 17:34:26 »
Nick, tu programa se va a quedar en el bucle de convlista ya que en el mplabsim no puedes simualr valores analogos, tu programa esta esperando a que el bit adif se ponga a 1, y a menos TU manipules ese bit tu programa no va a pasr de ahi. Te recomiendo que utilices el Proteus que es un simulador de CI y para felicidad tuya trae pics para simular, puedes ir a la pagina del fabricante y bajar su version demo, trae toda su suncionalidad, pero el inico inconveniente es que no puedes guardar el proyecto, pero para probar esta bien.

Aqui el link de descarga, llenas los campos que te pide y listo comienza a descargar. Espero que te sea de ayuda  :D

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Como configuro el conversor A/D del pic 16f819
« Respuesta #2 en: 20 de Diciembre de 2007, 00:55:28 »
lo malo es que hasta la version 7.2 SP0 no incluyen el 16f819 ni el 16f818.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Como configuro el conversor A/D del pic 16f819
« Respuesta #3 en: 20 de Diciembre de 2007, 01:54:54 »
ni la 7.2 sp2, peor puede hacer algo, puede pasar su programa al un pic que haya en la librerias del proteus que manejan adc, se me ocurre el 16f877a ya que se parece mucho su confoguracion con este 16f818, solo que no lleva osc interno pero si quiere ver que su programa funcione puede hacer el intento. es una idea   :mrgreen: o cualquier otro que se asemeje

Desconectado Nick

  • PIC10
  • *
  • Mensajes: 7
Re: Como configuro el conversor A/D del pic 16f819
« Respuesta #4 en: 20 de Diciembre de 2007, 09:23:37 »
Gracias micro_cadaver y poseidon20, hare la simulación del programa en el proteus cambiando el pic por el recomendado y les cuento como va...........   :-)   :-)

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Como configuro el conversor A/D del pic 16f819
« Respuesta #5 en: 20 de Diciembre de 2007, 11:35:30 »
inicio         bsf           status,5               ;se ubica en banco 1 de memoria RAM
               movlw         b'1100000'             ;se guarda en W el valor a usar del reloj en binario 110
               movwf         osccon                 ;se configura el reloj interno a 4Mhz

observo que estas configurando el oscilador interno en 1MHz. y esta bien deberia funcionar oscilando a 1MHz.

OSCCON: OSCILLATOR CONTROL REGISTER (ADDRESS 8Fh)       

bit 7 : vacio

IRCF2:IRCF0: Internal Oscillator Frequency Select bits 6--4
111 = 8MHz (8MHz source drives clock directly)
110 = 4MHz
101 = 2MHz
100 = 1MHz
011 = 500kHz
010 = 250kHz
001 = 125kHz
000 = 31.25kHz (INTRC source drives clock directly)


a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado Nick

  • PIC10
  • *
  • Mensajes: 7
Re: Como configuro el conversor A/D del pic 16f819
« Respuesta #6 en: 20 de Diciembre de 2007, 12:04:07 »
Se me había pasado ese detalle gracias.....ya lo corregi......... estoy implementando el circuito en el Proteus con el pic16f877 para simular el A/D, despues les cuento las novedades.....     :-)   :P

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Como configuro el conversor A/D del pic 16f819
« Respuesta #7 en: 21 de Diciembre de 2007, 02:09:53 »
vale compadre!  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com


 

anything