Autor Tema: problema con el conversor A/D  (Leído 1508 veces)

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

Desconectado cfg1970

  • PIC10
  • *
  • Mensajes: 3
problema con el conversor A/D
« en: 17 de Septiembre de 2011, 18:53:08 »
En proteus funciona bien la conversion no asi en el protoboard escribo el bloque de codigo afectado en la conversion

           org      0x00;
           goto           inicio;
   
;-----------------------------------------------------------------------------------------------------
;interrupcion puede ser probocada por el TMR0 o fin de la conversion ----------------------
;-----------------------------------------------------------------------------------------------------
      org      0x05;
      nop
         MOVWF     WAUX                ;SALVO EL REGISTRO W
        SWAPF      STATUS,W
         MOVWF     STATUSAUX        ;SALVO EL REGISTRO STATUS
         CLRF      STATUS              ;TRABAJO EN BANK 0
         MOVFW     PCLATH              ;SALVO EL REGISTRO PCLATH
         MOVWF     PCLATHAUX
         CLRF      PCLATH
   
      
         
      bcf      INTCON,GIE;            deshabilito interrupciones
                              ;haberiguar la INT a que fuente de origen  corresponde
      btfsc           INTCON,T0IF;         int corresponde a desborde del TMR0 ?
      goto           desbordeTMR0;
      btfsc           PIR1,ADIF
      goto           convfin            ;conversion finalizada   
      
      ;....
      ;....
      ;....
      goto    finINT                          ;     



;**************************************************************************************************************************
;**************************************************************************************************************************
;                                         interrupcion probocada por el conversor
;**************************************************************************************************************************
;**************************************************************************************************************************

convfin      
      
      movf                    ADRESH,w
      movwf            anHI
      bsf               STATUS,RP0
      movf                    ADRESL,w
      bcf               STATUS,RP0
      movwf            anLO                       ;en anLO y anHI guardo el resultado de la conversion que luego lo muestro en 4 display


      bcf                PIR1,ADIF            ;limpio bandera fin conversion
      bsf                STATUS,RP0
      bsf                ADCON1,ADFM;         ;formato del resultado justificado derecha
      bcf                ADCON1,PCFG0;         ;RA0 unico canal analogico      
      bsf                ADCON1,PCFG1;
      bsf                ADCON1,PCFG2;
      bsf                ADCON1,PCFG3;
      bcf                STATUS,RP0
      
      
      goto   finINT

;**************************************************************************************************************************
;                                                           fin coversion ADC
;**************************************************************************************************************************


desbordeTMR0

                                                                         ;este bloque de codigo esta dentro del desborde del TMR0 que es cada 5ms
      decf            con50ms      
      btfss            STATUS,Z
      goto            noson500ms
      movlw    d'100'                               ;d100 x 5ms=1/2segundo
      movwf    con50ms
      bsf      ADCON0,GO         ;arranco conversion
      bcf      PIR1,ADIF   
noson500ms

                ........................
                 .......................
                  .....................

finINT

inicio
                bsf      STATUS,RP0;   
                bsf      ADCON1,ADFM;                 ;formato del resultado justificado derecha
      bcf      ADCON1,PCFG0;         ;RA0 unico canal analogico   vref interna   
      bsf      ADCON1,PCFG1;
      bsf      ADCON1,PCFG2;
      bsf      ADCON1,PCFG3;
      bsf      INTCON,GIE;            habilita interrupcion global   bsf      INTCON,GIE;   
      bsf      INTCON,T0IE;         habilita interrupcion del TMR0
      bsf      INTCON,PEIE;         habilita interrupcion de perifericos
      bsf      PIE1,ADIE;            ;HABILITO INTERRUPCION DELconversor A/D
             bcf      STATUS,RP0;         




                movlw   b'10000001';         ;se activa el conversor Fosc/32 canal RA0(analogico)
      movwf   ADCON0;   
      bcf      PIR1,ADIF            ;limpio bandera interrupcion conversor
      bsf      ADCON0,GO;            ;ARRANCO EL CONVERSOR y espero la interrupcion






adjunto imagen del conversor funcionando




Desconectado cfg1970

  • PIC10
  • *
  • Mensajes: 3
Re: problema resuelto con el conversor A/D
« Respuesta #1 en: 22 de Septiembre de 2011, 17:24:19 »
MOdificando el ADCON0 los bits ADCS1:ADCS0=Fosc/8 solucione el inconveniente