Autor Tema: Dos interrupciones en PIC 16f88  (Leído 2291 veces)

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

Desconectado dyevenez

  • PIC10
  • *
  • Mensajes: 7
Dos interrupciones en PIC 16f88
« 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:

Código: [Seleccionar]
#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 !

Desconectado RockLee_89

  • PIC16
  • ***
  • Mensajes: 140
Re: Dos interrupciones en PIC 16f88
« Respuesta #1 en: 11 de Febrero de 2013, 20:54:28 »
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

Desconectado dyevenez

  • PIC10
  • *
  • Mensajes: 7
Re: Dos interrupciones en PIC 16f88
« Respuesta #2 en: 18 de Febrero de 2013, 02:01:09 »
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)

Código: [Seleccionar]
#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:
Código: [Seleccionar]
byte_1=fgetc();
byte_2=fgetc();
byte_3=fgetc();

y para la interrupcion por el puerto B0
Código: [Seleccionar]
byte_1=fgetc(COM_2);
byte_2=fgetc(COM_2);
byte_3=fgetc(COM_2);

y así me funciona :D

saludos!