Autor Tema: Uso de ADC y VREF en 18F4550  (Leído 2108 veces)

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

Desconectado kamisama

  • PIC16
  • ***
  • Mensajes: 151
Uso de ADC y VREF en 18F4550
« en: 19 de Octubre de 2014, 19:39:06 »
Hola, estimados, nuevamente me enfrento a un problema al que no le encuentro solucion.
Lo que necesito es conocer la tension de alimentacion del pic (digamos que lo tengo conectado a una bateria).

Lo primero que hice fue poner Vref+ a 3,6v=PORTA.3 y Vref- = VSS
Pense que podia saber si la tension bajaba de ese umbral, pero no funciono, el numero siempre se quedaba fijo en 255.

Luego pense en hacerlo un poco mejor y puse un divisor resistivo de VDD-VSS a pinb.2 ahi parecio funcionar bien, es decir el valor retornado tenia relacion con la tension que tenia, pero cuando bajo la tension de la fuente el nro leido permanece casi invariable y a veces por el contrario sube en lugar de bajar.

Lo hice primero en BASIC y despues lo pase a ASM con mismo resultado.

                            Input PORTB.2 'Pin a leer
                            Input PORTA.3 'Pin de Vref+
                            ADCON0 = %00100001
                            ADCON1 = %00010110

y en BASIC bastaria con valor= ADIN 8

en asm lo tengo asi:
 Asm
        Clrf ADRESH
   Clrf ADRESL
        Bsf  ADCON0,GO_DONE
        Nop
        Nop
        Btfsc ADCON0,GO_DONE ;Loop hasta que se termine la conversion
        GoTo   $-3
        Movff ADRESH, CPU_RefBATT
EndAsm

Ya me quede sin ideas y el PCB ya no quiere mas lola de cortar pistas y unir cosas. En ISIS naturalmente funciono desde la primera vez. Incluso una cosa que me volvio loco fue el fuse PABEN que inutilizaba el uso del los nibbles bajos del portb como Entradas analogicas, solo me funciono con trisb=127

Saludos y gracias.