TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: TREMENS en 30 de Noviembre de 2006, 08:44:44
-
estoy probando esta forma de adquisicin en el que uso resolucion de 10 bits y cuando lo muestro por LCD(tomando como entrada una contínua de 5 volt) me muestra 65472 (deberia mostrar 65535)
Probando con 2.5volt de entrada me muestra 32768(65536/2)
Qué pasará ?? probé poniendo inicio: antes y después del adcon1 y es lo mismo.
Donde comienza realmente el programa, digo, para hacer el bucle con el goto
device = 16f877
XTAL= 4
LCD_TYPE = 0 ' Our LCD is the alphanumeric type
LCD_DTPIN = PORTB.4 ' For Proteus Virtual Hardware Board LCD Data is PORTB.4,5,6,7
LCD_RSPIN = PORTB.2 ' LCD RS pin
LCD_ENPIN = PORTB.1 ' LCD EN pin
LCD_INTERFACE = 4 ' We're using a 4-bit LCD interface
LCD_LINES = 2 ' We're using a 2-Line LCD
TRISB = 0 ; PUERTO B SALIDA
DECLARE ADIN_RES 10 ' 10-bit result required
DECLARE ADIN_TAD 32_FOSC ' 32Fosc OSC chosen
DECLARE ADIN_STIME 50 ' Allow 50us sample time
DIM VAR1 as WORD
TRISA = %00001011 ' Configure AN0,AN1 y AN3 (PORTA.0) as an input
ADCON1 = %00000100 ' Set analogue input on PORTA.0,1,3 conversores
inicio:
VAR1 = ADIN 1
DELAYMS 500
CLS 'guarda cov del canal 0 en VAR1
PRINT DEC VAR1 'guarda cov del canal 0 en VAR1
goto inicio
-
hola TREMENS
lo que pasa es muy sencillo al ser una resolución de 10 bits tendriamos que el valor máximo a obtener debería ser 1024 como lo tienes justificado a la derecha indica que los bits menos significativos del valor total quedan en los bits mas significativos del adresl por lo cual se agregarian 6 ceros mas correspondientes a ese registro.
es decir el 1024 con los 6 ceros de mas seria lo mismo que tener el 65472, el valor intermedio de 1024 es 512 con los 6 ceros son los 32768 que ves. para que puedes tener el valor correcto de la conversión puedes hacer un desplazamiento a la derecha del resultado después de la adquisición.
VAR1 = ADIN 1
VADC = VAR1 >> 6
y mostrarias el valor de VADC.
espero que esto te solucione el problema. :)
-
De hecho lo tiene justificado a la izquierda, no a la derecha.
Justifica a la derecha: ADCON1=10000100
-
Que tal Mario,
Mira lo que te comenta Paola es correcto a excepcion de que efectivamante lo tienes justificado a la izquierda es por eso que obtienes esos valores, lo que debes hacer como lo mencionas despues, es jutificarlo a la derecha y no a la izquierda como lo tienes en tu codigo.
Saludos.
Elreypic.