TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Cronos en 02 de Septiembre de 2006, 14:57:43
-
Hola,
Llevo buscando información de interrupciones ni se sabe el tiempo!! :(
El caso es que estoy realizando una comunicación serie entre un PIC y un terminal que responde de forma autonoma a mis ordenes a traves del RS232.
La comunicación serie me funciona, el problema lo tengo cuando me responde el terminal. No se como de grande es la información que me devuelve. Puede enviar desde 2 Bytes hasta 16bytes.
La unica forma de controlarlo que he visto en PIC con USART es a traves de la "interrupción timer" y la "interrupción puerto serie". Cuando ha recibido un caracter por el puerto espera otro, y si pasa un tiempo (timer) deja de esperar .
1.- :(¿Puedo hacerlo esto con el 16f84 que no tiene USART?
2.- :( Actualmente estoy utilizando "#use rs232(baud=9600, xmit=PIN_A3, rcv=PIN_A4, PARITY=N, BITS=8) "
Puedo hacer una interrupción con el PIN_A4 a traves de la interrupcion externa?
3.- :( Necesito cambiar el PIN_A4 a uno del puerto B para poder utilizar la interrupción del puerto B?
Como podeís ver mi gran problema es que no entiendo cuando se puede utilizar la interrupción externa.
Alguien puede lanzarme un salvavidas, me estoy hundiendo, Glu, Gluuu, Glu... :8}
-
Raulgl:
Como comentaste se hace por medio de #int_TIMER0, donde se da un tiempo máximo de espera. Si la trama de datos siguiente demora más de este tiempo, habrá interrupción. Para obtener interrupción cada vez que tengas un caracter, deberás usar #int_ext.
#use rs232(baud=9600, xmit=PIN_B1, rcv=PIN_B0, PARITY=N, BITS=8)
Saludos.
-
Hola c3poa,
gracias por responder :-), hay algo que no acabo de entender, según creo hay diferentes tipos de interupciones alguna de ellas son la TIMER0 y otra la INT_EXT. Tengo claro que la TIMER0 se activara una vez supere el tiempo que se programe. ¿Pero la INT_EXT en mi caso cuando puedo aplicarla?, cuando reciba un dato por la RA4?
Creo entender que se activa cuando se produce un evente externo, ¿Cualquier entrada?
Por favor alguien me puede explicar cuando se activa la interrupción INT_EXT :shock:
-
Raulgl:
La interrupción #INT_EXT se activará cuando tengas un evento en RB0 (El 16F84 tiene una sola interrupción externa), por eso tenés que configurar a este pin como receiver, no por RA4, osea:
#use rs232(baud=9600, xmit=PIN_B1, rcv=PIN_B0, PARITY=N, BITS=8)
Saludos.
-
Muchas gracias C3poa!! :o
Manos a la obra :-/