Autor Tema: PIC 16F88  (Leído 4153 veces)

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

Desconectado Geminis_007

  • PIC10
  • *
  • Mensajes: 5
PIC 16F88
« en: 29 de Noviembre de 2016, 23:10:17 »
Hola a todos! Estoy trabajando con el pic 16f88 en el MPLAB y quisiera saber si alguien me puede ayudar a hacer la configuración ADC de dicho pic o me puede mostrar algún ejemplo.
 Desde ya muchas gracias!  :-/

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re:PIC 16F88
« Respuesta #1 en: 29 de Noviembre de 2016, 23:33:13 »
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:PIC 16F88
« Respuesta #2 en: 29 de Noviembre de 2016, 23:41:07 »
Si estas programando en ASM, es bastante simple como configurar un ADC.

Lo primero que haces es ir al datasheet del micro en cuestión.
Te vas al final de la seccion del ADC Y ahi te muestra todos los registros y bits involucrados:

INTCON
PIR1
PIE1
ADRESH
ADRESL
ADCON0
ADCON1
ANSEL
PORTA
PORTB
TRISA
TRISB

INTCON, PIE1 y PIR1 son para las interrupciones, cosa que no vamos a tocar por ahora.

ADRESH y ADRESL vas a tener el resultado ( lo leido ) por el ADC, una ves completa la lectura.

ADCON0 y ADCON1 son los registros que controlan el ADC, que vas a tener que configurar.

ANSEL, Este registro indica si una entrada usa funciones Analogicas o Digitales. Al momento del reset todos estan en 1, por lo cual todos son Analogicos.

PORTA y PORTB no te interesan

TRISA y TRISB, aca tenes que poner como entrada el pin que vayas a usar como analogico, en el reset todos comienzan como entradas.

Entonces... Conociendo los registros, Veo que al comienzo, tengo que dejar un 1 el bit del registro ANSEL donde quiero tomar el valor con el ADC. Si supongo que quiero tomar desde AN0 entonces cargare el valor 0x01 a ese registro. Seguido de esto sabiendo que AN0 es RA0, me aseguro que el TRISA tenga un 1 en el bit 0 (Para que quede como entrada).

Ya tengo mis puertos configurados y ya pasa la tension al modulo. Ahora solo debo configurar el modulo, esto lo hago con ADCON0 y ADCON1.
Veamos... ADCON0

- Tenemos para elegir el reloj del ADC  lo mas simple es siempre elegir el reloj interno que posee, es decir FRC.
- Tenemos para elegir que pin tomamos la medida, dijimos que era AN0
- Tenemos para iniciar la conversion (lectura ) este todavia no lo vamos a usar
- Y finalmente un bit para activar el ADC ( ADON ) este si lo vamos a activar

Seguimos por el otro registro. ADCON1

- Justificacion del resultado. Esto quiere decir como va a ubicar el resultado. Ejemplo, si luego de leer obtengo el binario 01 1100 0101 segun el justificado los valores quedarian asi:

Izquierda ( Left ), muy util cuando solo queremos los 8 bits mas significativos asi tomamos ADRESH solo:

ADRESH = 0111 0001
ADRESL = 0100 0000

Derecha (Right), Util para los calculos :P.

ADRESH = 0000 0001
ADRESL = 1100 0101

- Luego tenemos donde toma el maximo positivo ( cuando el ADC da 11 1111 1111 ) y cuando da (00 0000 0000) Lo mas comun y para que empeces es mejor seleccionar AVdd y AVss ( lso cuales vas a conectar a Vdd y Vss respectivamente en los pines )

- Una opcion para dividir el clock en 2, no hace falta ya que usamos el FRC.

----------------------------------

Listo ya tenes configurado tu ADC.. ahora solo resta activar la conversion, esperar y leerlo. Como lo haces ? Simple

Pones un 1 en ADCON0, GO
Lees el valor de ese bit, cuando se ponga en 0 significa que termino. Y luego procedes a tomar los datos, esto en codigo es algo asi:

Código: ASM
  1. BSF ADCON0, GO
  2. BTFSC ADCON0, GO
  3. GOTO $-1
  4. ;Aca leo los datos

Y fin :P
ESTE PROCEDIMIENTO SE APLICA A CUALQUIER MODULO DEL PIC, por si no queres buscar algo ya realizado.

A ver si te sirve:

http://www.puntoflotante.net/CONVERTIDORAD.htm

San Google :)

El codigo esta en C y busca ASM , aunque le explica algo del modulo tambien..
« Última modificación: 29 de Noviembre de 2016, 23:44:32 por KILLERJC »

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re:PIC 16F88
« Respuesta #3 en: 30 de Noviembre de 2016, 00:24:13 »
Tambien está en C. Pero el primer link apunta a http://www.puntoflotante.net/ADCF8810BITSTINY.ASM

Le estaba dando el link de la pagina entera para que lo leyese.
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"