TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: championx en 30 de Marzo de 2006, 11:24:00

Título: usar pin como entrada y salida
Publicado por: championx en 30 de Marzo de 2006, 11:24:00
Buenas! como andan? les hago una pregunta, he visto en algunos circuitos en la red que usan algunos pines del pic como entrada y como salida, por ejemplo, como tengo conectado un lcd al puerto B de mi 16f628 tengo ocupado el pin de interrupcion RB0, pero necesitaria usar este pin tambien como entrada para generar algunas interrupciones. Alguien sabria explicarme como?

gracias.
Título: RE: usar pin como entrada y salida
Publicado por: maunix en 30 de Marzo de 2006, 12:48:00
Escrito originalmente por championx
Buenas! como andan? les hago una pregunta, he visto en algunos circuitos en la red que usan algunos pines del pic como entrada y como salida, por ejemplo, como tengo conectado un lcd al puerto B de mi 16f628 tengo ocupado el pin de interrupcion RB0, pero necesitaria usar este pin tambien como entrada para generar algunas interrupciones. Alguien sabria explicarme como?

gracias.


Habría que ver el caso.  Si por ejemplo usas un pin como entrada salida y en el LCD sería la señal de RW, no habría problemas mientras que no estes escribiendo nada en el display.   El tema sería que la señal que inyectas en el PIN no se pase para el display y haga alguna operación no válida.  De todas formas como los datos al display se latchean cuando ocurre el ENABLE no debieras tener mayor inconvenientes siempre y cuando la tensión de operación del display y del PIC sea la misma.


Título: RE: usar pin como entrada y salida
Publicado por: migsantiago en 30 de Marzo de 2006, 13:38:00
Mientras tú tengas la terminal ENABLE de la LCD en estado 0, la LCD ignorará toda instrucción o palabra que se encuentre en sus terminales. Es por eso que se puede usar RB0 en otra conexión.
Título: RE: usar pin como entrada y salida
Publicado por: vszener en 30 de Marzo de 2006, 14:05:00
A eso se llama "programacion dinamica"...


Suerte!!!Giño
Título: RE: usar pin como entrada y salida
Publicado por: championx en 31 de Marzo de 2006, 02:00:00
gracias por las respuetas, lamentablemente esoty usando la libreria de CSS para un lcd de 16x2 y el pin RB0 esta conectado al ENABLE del LCD...

la cuestion es esta... tengo el Lcd conectado mostrando datos, pero debo poder usar una interrupcion externa. Estoy usando el pic 16f628.

Probe la libreria de lcd lcd_flex.c que anda dando vueltas por la red, donde uno puede especificar los pines a usar por el LCD... pero anda cuando quiere, cada tanto se llena de errores la pantalla... no es muy buena (o no la se usar correctamente)

bueno, si alguien tiene una sugerencia se lo agradeceria mucho.
Título: RE: usar pin como entrada y salida
Publicado por: migsantiago en 31 de Marzo de 2006, 10:53:00
Hola de nuevo

Cuando quieres enviar o recibir información de la LCD la terminal RB0 (es decir, Enable) está en modo Salida. Cuando quieres detectar una interrupción externa, RB0 se debe poner en modo Entrada.

Aquí el problema es que tú no sabes cuando va a llegar una interrupción externa. Si supieras más o menos cuando va a llegar, podrías organizar tus tiempos y hacer trabajar la LCD en un momento y luego poner a entrada la terminal RB0. Una vez detectada la int. externa puedes regresar RB0 a salida.

Talvez si alguien del foro te proporcionara una librería LCD que use el puerto A en vez del B (u originalmente el D), o si nos adjuntas el lcd_flex.c para que lo probemos.

No sé si el 628 trae opción para interrupciones por cambio en el puerto B (creo que de B4 a B7), ésta sería otra opción, pero la LCD también usa esos pines. Vacilando

Voy a buscar en el foro a ver si encuentro otra librería.

Edit: aquí está...

http://miarroba.com/foros/ver.php?foroid=46840&temaid=3690404&marcar=libreria

Otra de Pocher

http://miarroba.com/foros/ver.php?temaid=1339854&foroid=85505
Título: RE: usar pin como entrada y salida
Publicado por: javisus en 31 de Marzo de 2006, 16:52:00
Buenas champion ,sólo una observación, sin repetir lo que ya se ha dicho,
Si el LCD lo tienes en el puerto B , supongo que lo habrás conectado al LCD mediante pull-ups como normalmente se hace.
La interrupción vendría a la baja.ok..,
la señal de enable es muy rápida y posiblemente tu interrupción sea mucho más lenta, bien...
, pero ,y al hilo de lo que se ha comentado, el peligro de encontrarte el puerto en alta y la interrupción en un momento dado es posible.
Tendrías un cruze y a la m.. el puerto, siempre hay que pensar en las posiciones
Standby y en las protecciones.
Esta configuración no te degará otra que poner una resistencia en pull-down
para proteger el puerto de este posible transitorio (detrás del contacto),
 
en fin , es sólo una observación