TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: SimonMG en 02 de Agosto de 2006, 22:19:40
-
la verdad q estoy confundido con sto :?, agradeceria q me ayudaran con este tema tanto como calculos como el cuerpo del programa, muchas gracias y saludos
-
HOLA!!
Primero deberias de decirnos que pic vas a utilizar, cual es tu duda especifica y el lenguaje de programacion que manejas.
De antemano te digo que es sensilla la configuración.
Hasta luego. :-)
-
Para que podamos ayudarte deberías concretar más tu problema.
No obstante, si lo que quieres es información genérica sobre el ADC, te recomiendo que veas la Wiki-PIC (http://wiki-pic.elrebujito.es) de El Rebujito (http://www.elrebujito.es).
-
utilizo el PIC 16F84A queria información de como funciona y claro un ejemplo de como tomar el valor de una entrada y como utilizarla como por emj control de temp, servomotores etc... gracias y saludos :D
-
Por deducción creo q la información recibida del ADC c guarda en W y despues paso la información de w a PORTB :?
-
Salu2!
el pic 16f84a no tiene entradas ADC, para utilizar este micro debes utilizar un convertidor ADC externo, para que tengas una idea adui te dejo un link.
http://www.pic16f84a.com/Proteus.htm
espero sea de tu ayuda!
-
sino es con el 16F84a Como es entonces con el 16F876a (ese si tiene adc)
-
convertidor analogo digital
las senales analogas que tienen como entrada a los pines del puertA en el pic 16f876. para poder visualizar o controlar variables> temperatura, presion, iluminacion, etc.
los registros mas usuales
adcon1
adcon0
option
las señales son acondicionadas por software o hardware para que te resulte lo que deseas en realidad.
si lees donde te dicen los compañeros iras despejando dudas Wiki-PIC . ........
para ver.........................
yo he hecho tan solo unas aplicaciones con estas caracteristicas
-
sino es con el 16F84a Como es entonces con el 16F876a (ese si tiene adc)
En assembler o en C? En assembler está explicado paso a paso en el datasheet aunque no recuerdo si está el código.
En C, puedes darte una vuelta por los ejemplos para el 16F876A en el subforo de Lenguaje C.
-
es en assembler ademas fijence tengo 17 años en 2 semanas aprendi a manejar las salidas y entradas de los PIC, revisaré el data del PI16f876a para ver si allo como utilizar el ADC lo q en verdad quiero es q me muestren un programa sencillo de como manejar el ADC con dicho pic y e como manejar los valores :D
-
ok!
recien hice un sensor de temperatura con un 870 pero son compatibles solo debes cambiar el include de los registros ahora lo subo para que lo revises.
-
para experimentar quiero usar un potenciometro con el cual pueda variar el volaje solo para experimentar, y como arrojar los valores por el Portb :D un millon e gracias por su ayuda :-/ :mrgreen:
-
mira esto para un potenciometro en rao.
disculpas por las mayusculas
LIST P=16F873
#INCLUDE<P16F873.INC>
;DECLARACION DE VARIABLES
PCL EQU 02
STATUS EQU 03
PORTA EQU 05
PORTB EQU 06
ADCON0 EQU 1F
ADRESL EQU 9E
ADRESH EQU 1E
INTCON EQU 0B
JAI_LOW EQU 22
JAI_HIG EQU 23
REG1 EQU 28
REG2 EQU 29
REG3 EQU 2A
;BITS DE CONVERSION ANALO DIGITAL
ADIF EQU 6
GODONE EQU 2
ADON EQU 0
ADFM EQU 7
ORG 00
GOTO INICIO
RETAR MOVLW .180
MOVWF REG2
DEC5 MOVLW .160
MOVWF REG3
DEC6 DECFSZ REG3,1
GOTO DEC6
DECFSZ REG2,1
GOTO DEC5
RETURN
RETARD MOVLW .100
MOVWF REG1
nop
nop
nop
nop
DEC9 DECFSZ REG1,1
GOTO DEC9
RETURN
INICIO
BSF STATUS,5
BCF STATUS,6
CLRF PORTB ;SALIDA A LOS LEDS
MOVLW B'00000001' ;RA1 RA2 SALIDAS A LOS LEDS ADRESH
MOVWF PORTA
CONVERSIONANALOGODIGITAL
MOVLW B'10001110' ;RA0 ANALOGO JUSTIFICACION LOS OCHO ;PRIMEROS
MOVWF ADCON1 ;BITS DE ADRESL Y DOS BITS DE ADRESH. ;RA0 ANALOGO
BCF STATUS,5 ;RA1 RA2 DIGITAL.
EEE MOVLW B'10000001' ;FOSC/32 CANALRA0
MOVWF ADCON0
CALL RETARD ;RETARDO DE PROGRAMACION
BCF PIR1,ADIF ;BORRAR INDICADOR DE FIN DE CONVERSION
BSF ADCON0,GODONE ;COMIENZA CONVERSION.
CALL RETARD
E BTFSS PIR1,ADIF ;¿TERMINÒ CONVERSION? (SI ADIF=1) (NO ;ADIF=0)
GOTO E ;SI LA CONVERSION NO HA TERMINADO ADIF ;=0
BSF STATUS,5 ;CAMBIO A BANCO1 PARA ACCEDER A ADRESL
MOVF ADRESL,0 ;LOW PARTE
BCF STATUS,5 ;ACCEDO A BANCO0 PARA MOVER RESULTADO A ;JAI_LOW
MOVWF JAI_LOW
MOVWF PORTB ;MUESTRO CONVERSION EN LEDS,CADA ;CONVERSION EQUIVALE
CALL RETAR ;AL VALOR (BINARIO_DECIMAL x ;4.88mv/bits) O SEA
MOVF ADRESH,0 ;SALIDA DIGITAL B'0011100101' ENTRADA
;ANALOGA=......
MOVWF JAI_HIG ;(229X4.88=1.117VOLTIOS APROX).
BCF STATUS,0 ;RAO ES ENTRADA ANALOGA, RA1 Y RA2 ;VISUALIZAN
RLF JAI_HIG,0 ;LA PARTE ALTA DE LA CONVERSION POR ESO ;ROTO
MOVWF PORTA ;A LA IZQUIEDA EL RESULTADO "ADRESH"
CALL RETAR
GOTO CONVERSIONANALOGODIGITAL
END
-
muchas gracias por su ayuda, bueno ¡A ESTUDIAR! :mrgreen:
-
c ve sencillo :shock: veo luz! :D
-
Aqui tienes un ejemplo de como utilizar varios canales ADC al mismo tiempo, espero t sirva.
para una mejor simulación te aconsejo utilices una fuente en DC para cada entrada, por que te facilita un rango más amplio que el de un potenciometro, pero si lo implementas te vbien los potenciometros.
-
Muchas gracias me sirve para proyectos futuros, pero todavia no porq no c casi nada de eso aun estoi estudiando y desifrando el anterior :-/
-
saludos amigo microcom
gracias por ese ejemplito bien explicado
tengo una pequeña duda .. si solo quisiera una conversion Analógico-Digital de ese pin con una precisión de 8 bits y no 10, me bastaria con solo leer el ADRESL y olvidarme del ADRESH (por no decir que no lo tomariamos en cuenta)....
perdon si la pregunta es ovia.. pero quisiera saber si estoy en lo correcto.
gracias por todo
-
Los bits que tienes que descartar son los menos significativos, y con lo que propones descartarías los más significativos.
-
johnny ADRESL se refiere a la parte baja y ADREH a la parte alta.
-
tengo una pequeña duda .. si solo quisiera una conversion Analógico-Digital de ese pin con una precisión de 8 bits y no 10, me bastaria con solo leer el ADRESL y olvidarme del ADRESH (por no decir que no lo tomariamos en cuenta)....
perdon si la pregunta es ovia.. pero quisiera saber si estoy en lo correcto.
Debes usar
. Justificación Izquierda
. Leer el ADRESH
El resto de la configuración del módulo es igual.
Saludos
-
Oh gracias por la respuesta... lo estaba probando y me equivoque.. tu estas en lo cierto... gracias por todo
-
como configuro el ADC del PIC 18f4580 para hacer una conversion de analogica a digital
-
como configuro el ADC del PIC 18f4580 para hacer una conversion de analogica a digital
En el datasheet de tu PIC
http://ww1.microchip.com/downloads/en/devicedoc/39637c.pdf
Bajo el titulo de:
10-BIT ANALOG-TO-DIGITAL CONVERTER (A/D) MODULE
dice que cuenta con 5 registros:
• A/D Result High Register (ADRESH)
• A/D Result Low Register (ADRESL)
• A/D Control Register 0 (ADCON0)
• A/D Control Register 1 (ADCON1)
• A/D Control Register 2 (ADCON2)
y luego aparecen los registros uno por uno, con las funciones de cada bit.
ADCON1 te permite seleccionar cuales de las entradas va a ser analogicas y cuales digitales, tambien cual es la referencia de tension que usas del ADC VCC/GND o Vref+/Vref- si es que le pones una referencia externa.
ADCON2 te permite modificar los tiempos del ADC, para comnzar lo podrias alimentar desde el mismo RC que tiene el ADC, asi no te complicas con las frecuencias, tambien esta la opcion de justificado izquierdo o derecho.
ADCON0 finalmente seleccionas el canal ( dentro de los que estan habilitados como analogicos por ADCON1 ) y activas el modulo. Cuando queres iniciar una conversion pones a 1 el bit GO/DONE y esperas que este se ponga en 0, cuando se puso en 0 quiere decir que termino y podes leer lo de ADRESH:ADRESL
De todas formas al final de la seccion de cada modulo en el datasheet, aparecen TODOS los registros y bits que afectan a cada modulo.
-
gracias