Autor Tema: Un pin de entrada (16f877) que se queda fijo en un estado  (Leído 1966 veces)

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

Desconectado Jorge_Loa

  • PIC10
  • *
  • Mensajes: 24
Un pin de entrada (16f877) que se queda fijo en un estado
« en: 25 de Julio de 2007, 18:49:07 »
Hola a todos, les cuento que tengo el siguiente problemita: Necesito comunicar un PIC16f877 con un PC (en LabView) para pasar unos datos que he guardado previamente en la memoria Flash del Pic, lo estoy haciendo mediante el puerto paralelo del PC, y para ello implemente una pequeña secuencia de inicio (como un protocolo I2C mas o menos) donde el pc envía un 1 logico al PIC pór el pin RC5, el Pic le responde con un 0 logico por RC6 y luego el pc da un 0 lógico otra vez por RC7, el problema resulta que cuando conecto el pc al pic  y se realiza el cambio de estado (cuando el pc se pone en 0) mido e pin RC7 y ohhhhhhhhhh!!!!!!!!!!!!!  :shock: :shock: tiene un 1 logico, :shock: deconecto el cable del pic, verifico y ohhhhhh!!!!!!!! en verdad el PC me esta enviando un 0, pero al conectarlos se convierte en uno  :x.
Que puede ser......................el pic tiene los pines correctamente configurados, y si además en vez del dato del PC le pongo un 1 o 0 directamente de una fuente no hay problema. Ayuda amigos, a ver si puede con este problemita
Un solo privilegio: La inteligencia
Una sola aristocracia: La del Espíritu

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Un pin de entrada (16f877) que se queda fijo en un estado
« Respuesta #1 en: 26 de Julio de 2007, 08:11:20 »
Hola a todos, les cuento que tengo el siguiente problemita: Necesito comunicar un PIC16f877 con un PC (en LabView) para pasar unos datos que he guardado previamente en la memoria Flash del Pic, lo estoy haciendo mediante el puerto paralelo del PC, y para ello implemente una pequeña secuencia de inicio (como un protocolo I2C mas o menos) donde el pc envía un 1 logico al PIC pór el pin RC5, el Pic le responde con un 0 logico por RC6 y luego el pc da un 0 lógico otra vez por RC7, el problema resulta que cuando conecto el pc al pic  y se realiza el cambio de estado (cuando el pc se pone en 0) mido e pin RC7 y ohhhhhhhhhh!!!!!!!!!!!!!  :shock: :shock: tiene un 1 logico, :shock: deconecto el cable del pic, verifico y ohhhhhh!!!!!!!! en verdad el PC me esta enviando un 0, pero al conectarlos se convierte en uno  :x.
Que puede ser......................el pic tiene los pines correctamente configurados, y si además en vez del dato del PC le pongo un 1 o 0 directamente de una fuente no hay problema. Ayuda amigos, a ver si puede con este problemita

Falta información para averiguar el misterio... ¿a cual pin del puerto paralelo lo unes? en qué modo está el puerto paralelo? estas seguro no estás uniendo a masa mediante alguna conexión?  ¿estas tan seguro de que el pic está 100% bien configurado? está la usart apagada?

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

  • PIC10
  • *
  • Mensajes: 24
Re: Un pin de entrada (16f877) que se queda fijo en un estado
« Respuesta #2 en: 26 de Julio de 2007, 13:38:36 »
Hola Maunix y gracias por tu respuesta, respondo lo que me preguntas:

- Si la USART esta deshabilitada no lo se, nunca he usado el modulo y lo unico que hice fue configurar el puerto RC7 como entrada y RC6 como salida.

- Mi PC esta configurado en el modo EPP para el puerto paralelo (los modos disponibles en mi board son: Normal, ECP, EPP, ECP & EPP), puse el modo EPP, busque en Labview el ejemplo de puerto paralelo, lo ejecute entrando y sacando datos y comprobe que esta en el modo correcto.

- El bit que estoy usando es el numero 1 del registro de control (direccion 37A) que esta bien configuarada porque ademas he hecho la prueba sin conectarle el Pic y no hay problema.

como se ve en el diagrama he conectado el pic al PC, al momento de iniciarse el programa en labview el puerto esta en un estado indeterminado y este estado pasa correctamente al Pic, luego de ejecutar el programa el pin se pone a 1, el pic pone a 1 el bit RC6 y el PC responde poniendo a 0 el bit en cuestion,el problema radica en que si desconecto el pic y mido cuanto hay a la salida del transistor corroboro que hay un 0 logico, pero cuando está conectado al PIC lo mido y hay un 1, inclusive sobre el catodo del diodo hay un 1 aunque sobre el ánodo haya un 0

El siguiente es la porcion de codigo:

DESCARGAR_DATOS      btfss   PORTC,7
         goto   DESCARGAR_DATOS
         bsf   PORTC,6
         btfss   PORTC,7
         goto   DESCARGA               
         goto   DESCARGAR_DATOS


DESCARGA         
         movlw   0x01
         call   LCD_REG
         movlw   0x0C
         call   LCD_REG
         movlw   'A'
         call   LCD_DATOS
         goto   DESCARGA

Tengo conectado un cable directamente del pin RC6 al PC y sucede tambien que jamás se pone a 1, desconecto el PC ejecuto el programa en el pic y entonces si se pone 1. :shock: :shock:

Que puede ser ah?
Un solo privilegio: La inteligencia
Una sola aristocracia: La del Espíritu

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Un pin de entrada (16f877) que se queda fijo en un estado
« Respuesta #3 en: 26 de Julio de 2007, 19:22:59 »
Sin ser un experto creo que debieras ver como es la electrónica del puerto de tu pc antes... si es colector abierto o alguna otra característica.

De todas formas, yo que tu no uso la configuración seguidor de emisor, sino que o uso un transistor PNP o bien cuelgo el pin del pic del colector del transistor, previo uso de una resistencia de pullup a vcc y eliminando la resistencia en el emisor.  La lógica funcionará inversamente pero te evitas algunos líos.

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)