Autor Tema: Problema con A/D del Pic 16F877A  (Leído 9763 veces)

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

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Problema con A/D del Pic 16F877A
« Respuesta #15 en: 21 de Diciembre de 2006, 23:36:29 »
Hola peter2006, te recomendaría que bajases este .pdf en el que encontrarás gran cantidad de circuitos y entre ellos uno que grafica la conexión de un LM35

http://www.todopic.com.ar/foros/index.php?topic=13389.msg77677#msg77677

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é.

Deimos

  • Visitante
Re: Problema con A/D del Pic 16F877A
« Respuesta #16 en: 22 de Diciembre de 2006, 06:48:33 »
Chaly lo que me cuentas ya lo conozco pero gracias igualmente. Intenté cambiar el bit para hacer un par de pruebas, pero vaya, que no es algo me urge ahora mismo.

peter2006 mi consejo. Bájate el datasheet del LM35 directamente de la web de www.national.com y verás al final del datasheets ejemplos para suprimir el ruido, que es lo que te hace variar la señal. Coincido con chaly en que tienes un conflicto entre el clock del sistema y el div32. Pienso que no es aconsejable leer muy rápido una temperatura, que suele tener una curva bastante lenta. Si lees muy rápido puede fluctuarte más.

Por cierto a que tensión tienes Vref en el PIC????

Salu2

Desconectado dhmejia

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 260
Re: Problema con A/D del Pic 16F877A
« Respuesta #17 en: 22 de Diciembre de 2006, 09:52:54 »
No se si se han fijado o si no tenga problema, pero en el código veo que se selecciona como entrada análoga AN0 y en el tris este pin se pone como salida:

   porta= 0b00000000; set_tris_a (0b10000000);  //Aca se esta configurando como salida el PIN A0
   portb= 0b00000000; set_tris_b (0b11111001);
   portc= 0b00000000; set_tris_c (0b00000000);
   portd= 0b00000000; set_tris_d (0b00000000);
   porte= 0b00000000; set_tris_e (0b11101111);


  setup_adc_ports(AN0); //Aca se selecciona A0 como entrada análoga, pero arriba este pin estaba como salida.


No se si el compilador al configurar el conversor a/d configure tambien los puertos, pero creo que para el tris a deberia ser:

set_tris_a (0b00000001);

saludos.
Pereira - Colombia

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Problema con A/D del Pic 16F877A
« Respuesta #18 en: 22 de Diciembre de 2006, 10:28:50 »
Hola dhmejia, no se como será el CCS, pero por ejemplo en asembler por más que configures el puerto como salida, si lo tienes comfigurado como AN0 este pasará indefectiblemente a ser entrada.

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 maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problema con A/D del Pic 16F877A
« Respuesta #19 en: 22 de Diciembre de 2006, 11:01:19 »
Hola dhmejia, no se como será el CCS, pero por ejemplo en asembler por más que configures el puerto como salida, si lo tienes comfigurado como AN0 este pasará indefectiblemente a ser entrada.

Un saludo.

Atte. CARLOS.

Yo creo que es algo que hay que probar, me refiero a ver qué hace realmente esa función.

Si la función en cuestión simplemente selecciona el canal AN0 del A/D eso no lo hará entrada.

No importa si seleccionamos el canal AN0 , si el pin está como salida, será salida.

Ahora bien, si la función en cuestión, también setea el correspondiente bit del registro TRISA, entonces si, quedará como entrada.

Yo que tu dhmejia haría 2 cosas.

1) Simularía paso a paso y vería que hace bien la función
2) Si no estas seguro, puedes postear el código ASM generado por ese trozo de código y te echamos una mano así aclaramos el asunto.

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)

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Problema con A/D del Pic 16F877A
« Respuesta #20 en: 22 de Diciembre de 2006, 12:12:22 »
Hola maunix, creo que no me as entendido, si se setea el ADCON0 de manera tal que el pin 0 del puerto A sea análogo, por más que selecciones el A0 como entrada o salida digital este seguirá siendo entrada análoga, por lo tanto no influye el estado del TRISA

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 ESTECA55

  • PIC24H
  • ******
  • Mensajes: 1404
Re: Problema con A/D del Pic 16F877A
« Respuesta #21 en: 22 de Diciembre de 2006, 12:35:15 »
Coincido con Charly, ya que lo e experimentado, por defecto en el 877 el puerto A esta como entradas analogicas, y por mas que cambien la conf del TRISA, ese sigue configurado como entrada analogica hasta que configure en el ADCON0 el puerto a como salidas digitales, despues de eso si responde a la conf del TRISA.

Saludos
Hay que esforzarse por ser el mejor, no creerse el mejor

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problema con A/D del Pic 16F877A
« Respuesta #22 en: 22 de Diciembre de 2006, 12:39:26 »
Hola maunix, creo que no me as entendido, si se setea el ADCON0 de manera tal que el pin 0 del puerto A sea análogo, por más que selecciones el A0 como entrada o salida digital este seguirá siendo entrada análoga, por lo tanto no influye el estado del TRISA

Un saludo.

Atte. CARLOS.

Si Carlos, creo que entendí tu punto, pero también creo que estas equivocado. 

Hay ocasiones en que uno por ejemplo necesita solo 2 canales A/D y por ahí el salto en la configuración es 0, 1 o 3 canales.  Entonces ese 3er canal uno si quiere lo puede usar como salida.  Al usarlo como salida, no funciona como un pin analógico sino como digital.

También lo he comprobado personalmente con más de un pic y funciona de maravillas.

El conversor analógico funciona por separado del registro tris.  Por ejemplo, si el pin está como digital y se lo manda a convertir, el resultado será la conversión de la tensión del mismo. 

Si el pin está como salida y tiramos una conversión analógica, el conversor convertirá el valor de salida del pin.


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)

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problema con A/D del Pic 16F877A
« Respuesta #23 en: 22 de Diciembre de 2006, 12:40:29 »
Coincido con Charly, ya que lo e experimentado, por defecto en el 877 el puerto A esta como entradas analogicas, y por mas que cambien la conf del TRISA, ese sigue configurado como entrada analogica hasta que configure en el ADCON0 el puerto a como salidas digitales, despues de eso si responde a la conf del TRISA.

Saludos

Al ponerlo como salida, ya no hace efecto lo que hayas seteado en el ADCON.



- 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)

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Problema con A/D del Pic 16F877A
« Respuesta #24 en: 22 de Diciembre de 2006, 23:56:08 »
Hola maunix,

Si Carlos, creo que entendí tu punto, pero también creo que estas equivocado. 

Hay ocasiones en que uno por ejemplo necesita solo 2 canales A/D y por ahí el salto en la configuración es 0, 1 o 3 canales.  Entonces ese 3er canal uno si quiere lo puede usar como salida.  Al usarlo como salida, no funciona como un pin analógico sino como digital.

También lo he comprobado personalmente con más de un pic y funciona de maravillas.

El conversor analógico funciona por separado del registro tris.  Por ejemplo, si el pin está como digital y se lo manda a convertir, el resultado será la conversión de la tensión del mismo. 

Si el pin está como salida y tiramos una conversión analógica, el conversor convertirá el valor de salida del pin.

Creo que estas confundido, si el pin está configurado como analogo, nunca funcionará como digital, no importando la cantidad de pines que esten en analogos.

Y si un pin esta como salida digital y lo configuras como entrada analoga no te podría medir la tensión que tenía como salida, ya que esta a dejado de existir como tal.

Verifica lo que comento y verás la verdad.

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 ESTECA55

  • PIC24H
  • ******
  • Mensajes: 1404
Re: Problema con A/D del Pic 16F877A
« Respuesta #25 en: 23 de Diciembre de 2006, 04:42:11 »
Bueno, pera resolver esto nada mejor que ir a la hoja de datos de un pic, en este caso tome la del 16f877a



Según lo que entiendo con mi pobre ingles donde esat resaltado con el cuadro rojo, es que el registro TRISA controla la dirección del puerto aun cuando se estan usando como entradas analogicas, y que el usuario vede asegurar los bit del registro TRISA como tales para las entradas analogicas.

Así que me rectifico, y ahora haciendo memoria, recuedo que no era que estando configuradas como entradas no me daba bola el TRISA, sino que al intentar escribir no pasa nada, es como cuando esta conf como entrada y escribimos en ese pin, no pasa nada. Por ende como dice maunix se podría llegar a medir el valor de la entrada digital, pero config como salida y tratar de escribir en el pueto configurado como analogico no se que pasaría, y creo que la mejor forma de probarlo es en un pic de verdad, porque puede que en los simuladores no hallan tenido en cuenta eso, es algo raro que esta muy al limite del hadware del pic.

Por dar un ejemplo, si en asembler pnes dos instrucciones eguidas de BCF o BSF, en el simulador no pasa nada, lo hace perfecto, pero en el pic, toma solo la segunda

Saludos
Hay que esforzarse por ser el mejor, no creerse el mejor

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problema con A/D del Pic 16F877A
« Respuesta #26 en: 23 de Diciembre de 2006, 05:51:47 »
Carlos, yo hablaba de algo que comprobé por mi mismo y lo he usado en más de una ocasión.  De hecho tengo una aplicación que usé un pin como salida porque me quedaba muy cómodo  para el pcb y está funcionando de esa forma hasta hoy en día. 

De todas formas, me interesa lo que expones y si tienes algún ejemplo práctico en que haya sucedido lo que dices lo podríamos ensayar.   :)

Gracias carcass (sergio) por tu confianza  :-) , en cuanto a mi forma de ser no me jacto de tener la razón, simplemente trato de remitirme a lo estrictamente técnico buscando ser lo más objetivo posible y buscando de no ofender a nadie con mi redacción. 

En tu caso, tal vez no te anduvo el PORTE no porque estuviera como analógico y lo uses como salida sino porque lo más probable es que hayas tenido habilitado el PSP (también se configura con el TRISE) , pero más allá de eso, lo que les he comentado es porque lo he probado por mí mismo, y lo tengo usando!!  :)

Esteca55, exactamente... no he inventado la pólvora, simplemente leo el datasheet y lo interpreto como a mí me parece.  Más allá del recuadro en rojo, si te fijas en el esquemático de conexionado del puerto, verás que la entrada analógica funciona en analógica solamente al ser entrada ya que la compuerta AND unida al TRIS, se encarga de esto.

Carlos, por último hablando del uso del conversor en general, te extraigo una parte del datasheet del 16F87xA a ver si lo interpretas como yo, tal vez sea yo el equivocado.


11.3 Configuring Analog Port Pins
The ADCON1 and TRIS registers control the operation of the A/D port pins. The port pins that are desired as analog inputs must have their corresponding TRIS bits set (input).
If the TRIS bit is cleared (output), the digital output level (VOH or VOL) will be converted.
The A/D operation is independent of the state of the CHS2:CHS0 bits and the TRIS bits.

Note 1: When reading the port register, any pin configured as an analog input channel will read as cleared (a low level). Pins configured as digital inputs will convert an analog input. Analog levels on a digitally configured input will not affect the conversion accuracy.
2: Analog levels on any pin that is defined as a digital input (including the AN7:AN0 pins) may cause the input buffer to consume current that is out of the device specifications.



Esto en rojo es una aclaración ya que si usamos el pin como entrada digital y le inyectamos un voltage analógico como decir 2.5V el consumo de corriente puede dañar al pic. 
- 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)

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Problema con A/D del Pic 16F877A
« Respuesta #27 en: 23 de Diciembre de 2006, 10:19:53 »
Hola maunix, como todo buen porfiado, acabo de probar lo que comentas en la vida real, e incluso en el proteus y es tal cual tú lo dices (aunque en el proteus los resultados tienen un pequeño de error), toda entrada analoga puede ser usada como salida digital.

Publicamente pido disculpas por el mal entendido.

Y lamentablemente tanto para carcass como para mí, hemos dejado pines sin usar por no leer adecuadamente los datasheet o realizar las pruebas adecuadamente :?

Mil disculpas a todos y a maunix gracias por la nueva enseñanza.

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 maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problema con A/D del Pic 16F877A
« Respuesta #28 en: 23 de Diciembre de 2006, 13:03:15 »
Mil disculpas a todos y a maunix gracias por la nueva enseñanza.

Carlos, no hace falta tus disculpas. 

Yo entiendo que estabas convencido de lo que opinabas, no lo decías solo por el fin de discutir  :) y te considero una persona de bien  8)

A veces estos mal entendidos de uno y otro hacen que algún tercero pueda aclarar su punto de vista, así que bienvenido sean!!

Y creo que la mentalidad forera es el hoy por tí y mañana por mi, y eso es lo bueno de los foros que tienen la onda genial que tiene éste. 

Un abrazo desde córdoba.



- 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)

Desconectado peter2006

  • PIC10
  • *
  • Mensajes: 41
Re: Problema con A/D del Pic 16F877A
« Respuesta #29 en: 26 de Diciembre de 2006, 00:25:17 »
No se si se han fijado o si no tenga problema, pero en el código veo que se selecciona como entrada análoga AN0 y en el tris este pin se pone como salida:

   porta= 0b00000000; set_tris_a (0b10000000);  //Aca se esta configurando como salida el PIN A0
   portb= 0b00000000; set_tris_b (0b11111001);
   portc= 0b00000000; set_tris_c (0b00000000);
   portd= 0b00000000; set_tris_d (0b00000000);
   porte= 0b00000000; set_tris_e (0b11101111);


  setup_adc_ports(AN0); //Aca se selecciona A0 como entrada análoga, pero arriba este pin estaba como salida.


No se si el compilador al configurar el conversor a/d configure tambien los puertos, pero creo que para el tris a deberia ser:

set_tris_a (0b00000001);

saludos.

Finalmente se hizo la luz en este tema, luego de configurar el tris como indico dhmejia comenzo a funcionar perfecto con el LM35 el potenciometro y cualqier otra cosa que varie la tension en el AN0.

MUCHAS GRACIAS...................
Ideas pocas pero confusas


 

anything