Autor Tema: Problema con ADC de PIC 1F877A  (Leído 1717 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Mauro_A7X

  • PIC10
  • *
  • Mensajes: 1
Problema con ADC de PIC 1F877A
« en: 30 de Octubre de 2013, 15:57:27 »
Hola. Estoy teniendo un problema con el convertidor AD y es que luego de la primera muestra que toma, me empieza a mandar 0 de resultado. La primera muestra la toma bien, pero luego muestra 0 de resultado y por mas que reviso el ciclo no veo el porque :S. El circuito mide la temperatura con un LM35 y amplifica el voltaje resultante con un OPAMP. El muestreo se hace cada 2 segundos. Aqui les dejo el codigo del ciclo a ver si alguien sabe que esta mal. Agradeceria mucho su ayuda; llevo dias y no encuentro el problema.
Previamente estan ajustados el ADCON1 y ADCON0 con el cambio de banco respectivo. Lo coloco asi para acortar:

      movlw   0x8E; AN0 unica entrada analógica, ajustado a la derecha
      movwf   ADCON1
      movlw   0x81
      movwf   ADCON0

Temp   bcf      AUX_T,2
      movlw   .30       ; Para el muestreo cada 2 seg
      movwf   AUX_1
      bsf      ADCON0,2
      btfss   PIR1,ADIF
      goto   $-1
      bcf      PIR1,ADIF
      bsf      STATUS,RP0
      movf   ADRESL,0
      bcf      STATUS,RP0
      movwf   DatoA_L
      movf   ADRESH,0
      movwf   DatoA_H
      call   Multi
      call   Bin_BCD
      return

Multi   movlw   .16
         movwf   Contad
         clrf   DatoD_H
         clrf   DatoD_L
      Mul_Loop   rrf      DatoB_H,F
               rrf      DatoB_L,F
               btfss   STATUS,C
               goto   No_suma
               movf   DatoA_L,W
               addwf   DatoD_L,F
               btfsc   STATUS,C
               incf   DatoD_H,F
               movf   DatoA_H,W
               addwf   DatoD_H,F
      No_suma      rrf      DatoD_H,F
               rrf      DatoD_L,F
               rrf      DatoC_H,F
               rrf      DatoC_L,F
               decfsz   Contad,F
               goto   Mul_Loop
               return

   Bin_BCD   call   ClrDig
         movlw   .24
         movwf   BitCnt
            
         Ciclo1   rlf      DatoC_L
               rlf      DatoC_H
               rlf      DatoD_L
               movlw   BCD1
               movwf   FSR
               movlw   .6
               movwf   DigCnt
         Ciclo2   rlf      INDF
               movlw   0xF6
               addwf   INDF,0
               skpnc
               movwf   INDF
               incf   FSR
               decfsz   DigCnt
               goto   Ciclo2
               decfsz   BitCnt
               goto   Ciclo1
               return

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Problema con ADC de PIC 1F877A
« Respuesta #1 en: 02 de Noviembre de 2013, 00:39:40 »
Hola,

tendrías que publicar más código, al menos las definiciones de las variables y constantes en uso. Por otro lado, decís que realizás el cambio de banco correspondiente para ADCON1 y ADCON0, pero en el código que pusiste, no realizás los cambios de banco correspondientes.

Saludos
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


 

anything