TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: dyevenez en 11 de Febrero de 2013, 20:20:52
-
Buenas, muy buen foro
haber si me pueden ayudar con el siguiente problemilla...
Tengo un 16f88 que lee datos serial de un lector RFID y de un XBee... el tema es que no se cuando llegaran esos datos así que quiero tener dos interrupciones, una para el lector RFID y la otra para la trama API que llega del XBee. tengo una que es:
#int_RDA
void RDA_isr(){
byte_1=fgetc();
byte_2=fgetc();
flag=1;
}
Este funciona con el puerto RX que el PIC trae por defecto (puerto RB2/SDO/RX/DT pin 8 )
otra cosa: podré conectar las dos lineas al mismo pin; lector rfid y xbee al RX del PIC ? simule esto en proteus pero no me funciona... funciona solo de a uno, punto a punto
me falta hacer la otra interrupción pero no se como... seria ideal tener otra #int RDA pero a otro pin... D:
alguna solución ?
gracias de antemano !
-
hola dyevenez que yo sepa no hay pics con 2 puertos serial por hardware no se si en el lenguaje que utilizes puedas hacer interrupcion por soft nuna e visto algo asi pero yo no se mucho que digamos lo que si puedes hacer es hacer una comunicacion serial con 1 de los 2 el que tenga menos uso y claro el de mayor uso seria por intereupcion
as de cuenta
etiqueta
sensor que no es tan importante
goto etiqueta
interrupcion
sensor que tiene mas uso y mejor atencion
saluods
-
Gracias por la respuesta...
Bueno ya solucione el problema utilizando #int_RDA para leer el XBee y utilizando #int_ext por el puerto B0 para leer el RFID...
ojo que declare por software que B0 fuera RCV y también declare utilizar la uart que viene por defecto en el pic (que es la que use para int_RDA)
#use RS232 (BAUD =9600, uart1, STREAM = COM_1)
#use RS232 (BAUD =9600, PARITY = N, RCV = PIN_B0, XMIT = PIN_B5, BITS = 8, FORCE_SW, STREAM = COM_2)
y cuando ocurren las interrupciones leo los datos con el fgetc
para la interrupcion por RDA:
byte_1=fgetc();
byte_2=fgetc();
byte_3=fgetc();
y para la interrupcion por el puerto B0
byte_1=fgetc(COM_2);
byte_2=fgetc(COM_2);
byte_3=fgetc(COM_2);
y así me funciona :D
saludos!