Autor Tema: duda adc 16f877a  (Leído 2841 veces)

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

Desconectado Jorge555

  • PIC18
  • ****
  • Mensajes: 496
    • JMN
duda adc 16f877a
« en: 17 de Octubre de 2007, 00:59:52 »
 Hola, estoy aprendiendo con un 16f877a, y tengo una duda sobre a la hora de seleccionar los pines que van a funcionar como adc, con los bits pcfg3:pcfg0 de adcon1.

Observo lo siguiente, a ver si alguien puede confirmarme que esto funciona así, si selecciono 0000, es decir configuro todo los pines como analógicos, observo que los pines del puerto E dejan de funcionarme como salidas digitales, mientras que con los del puerto A, los puedo seguir usando como salidas para apagar y encender leds, y los que estén como entradas funcionan como adc. Es decir el puerto A aunque este como analógico puede seguir siendo usado como salida digital, como entrada digital no ya que leería cero?. El puerto E si en el ADCON1 está seleccionado como analógico no puede ser usado como salida digital, esto es correcto?

El problema es que solo tienes 16 posibles opciones de puertos con esos 4 bits, y por ejemplo sería imposible utilizar el an7 (re2) como digital mientras que an6 y an5 (re1 y re0) como analógicos, ya que la opción DAAXXXXX no se encuentra disposible en la configuración de pcfg3:pcfg0. Mientras con el puerto A esto no ocurre porque pueden ser usados como salida aunque en el adcon1 estén como analógicos. Creo que me he explicado.

He mirado el esquema en el datasheet y en el puerto A entiendo que funcione así ya que mete el trt a tierra e igual le da la entrada del adc, pero en el puerto E en su esquema no veo el camino del adc, no se si va a la entrada tb, y al ser todo lógica  da lugar a que ocurra esto, y viendo el esquema del adc me da la impresión de que tb podría funcionar cuando no está seleccionado su canal de conversión,  por lo que no sé como funciona. Quizás haya sido un error de código y si pueda usarse como salida aunque el adcon1 diga que es analógico. No sé, no veo como entra el adc en el esquema del puerto.

Luego otra opción es seleccionar un pin como Vref, si ese pin lo quieres usar como salida digital, al meter ese trt a tierra supongo que te cargas la referencia del adc, por lo que no sería posible la conversión.


Bueno a ver si alguien puede aclararme un poquito esto, que acabo de empezar con el pic y en algunas cosas aun voy un poco perdido. Gracias.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: duda adc 16f877a
« Respuesta #1 en: 17 de Octubre de 2007, 03:17:13 »
Hola JCC40, perdona desde ya la corrección:

Ningún pin ya sea del PORTA y/o del PORTE lo puedes usar como digital (sea entrada o salida) si lo estás configurando como analógico (ya sea como un pin ANX o como una referencia).

El PORTA si lo configuras como entrada analoga, pero a cualquiera de los pines análogos los seleccionas como salidas digitales, estos pasarán a ser salidas y dejarán de ser entradas análogas, eso sí cuando los configuras como entradas solo funcionan de manera análoga, si los lees como digitales indicarán siempre ceros.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado Jorge555

  • PIC18
  • ****
  • Mensajes: 496
    • JMN
Re: duda adc 16f877a
« Respuesta #2 en: 17 de Octubre de 2007, 03:47:48 »
Gracias a los dos por responder, ya me iba a poner a comprobarlo otra vez, esto que dice Chaly29 es lo que he observado, los pines de A los puedes seguir usando como salida si su tris está a 0, pero con el puerto E no ocurre esto, no te deja usarlos como salida aunque el tris este a 0, o almenos han dejado de funcionarme, ya haré más pruebas. Saludos

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: duda adc 16f877a
« Respuesta #3 en: 17 de Octubre de 2007, 11:18:07 »
eso te sucede en el TRISE porque ese puerto tiene un modo distinto de comportarse pues sirve tambien como bits de configuracion de una recepcion paralela, observar:


en esta imagen estan los registros que interactuan con el PORTE, fijaos en el TRISE, observa que este registro no solo posee lso bits de configuracion I/O del PORTE sino tambien otros bits de configuracion para el modo de recepcion paralela.


mirad esos bits IBF OBF IBOV PSPMODE es obvio que si los modificas sin conocerlos estaras cambiando la forma de trabajo del PORTE.


aca puedes encontrar en detalle lo que hacen esos bits y veras que todo depende del bit PSPMODE si esta en 1 lo habras configurado al PORTE como receptor paralelo esclavo (no implica que sean entradas de proposito general, sino una caracteristica más del harxware del pic) y si lo pones en 0 tendras el modo normal de entrada o salida.

saludos  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: duda adc 16f877a
« Respuesta #4 en: 24 de Octubre de 2007, 13:10:52 »
Es correcto lo que menciona Chaly29. Mi comentario (y costumbre) se basa más bien en una comunicación via email directamente a Microchip hace ya varios años inquiriendo lo mismo y las diferencias con los primeros PICs con A/D (PIC16C71). Recomendaban utilizar las entradas configuradas como analógicas únicamente para ello. Incluso si se ocupaban solo dos entradas analógicas sin referencias, recomendaban elegir la opción de tres entradas y colocar una siempre a tierra. En fin, te comento tal y como lo recomendaban y hasta la fecha lo sigo aplicando. Esto debido a la responsabilidad que conllevaría en un diseño aplicar nuestra teoría y no la del fabricante.

Creo que una cosa es lo que se puede hacer y otra es lo que es 'recomendable'. :)

En el caso de los pics en que puedes configurar 0 canales analógicos, 1, 3, 4, 5 y solo necesitas 2, puede que sea la mejor opción poner a masa el pin analógico que queda como entrada.  Tal vez eso reduzca el ruido al funcionamiento del A/D y permita que funcione mejor (más preciso) y eso es , a mi parecer, lo que te deben haber sugerido los de microchip.

Todo eso no evita que puedas hacer lo que dice Carlos de usar los pines como salida o entrada y leer algún dato o no.  Muchas cosas son ingenio del desarrollador pero también hay que evaluar las contras ya que no se puede aplicar un mismo criterio siempre para todo tipo de aplicaciones.

Saludos

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything