TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Mauro_A7X en 30 de Octubre de 2013, 15:57:27

Título: Problema con ADC de PIC 1F877A
Publicado por: Mauro_A7X 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
Título: Re: Problema con ADC de PIC 1F877A
Publicado por: BrunoF 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