buen dia. tengo un ploblema con interrupciones #int_ext y #int_rda que no he podido resolver, espero que me puedan orientar.
les explico un poco de primero de mi proyecto pic-nokia 3220, ya puedo leer los mensajes y desifrarlos para una determinada aplicacion, solo que me aparecio un problema del cual no he podido resolver, bien a hora lo boy expliacar experando que alguien me pueda orientar.
codigo que funciona bien: este parte de codigo funciona perfectamente para recibir un mensaje.
#include <16f877a.h>
#FUSES nowdt,xt,noprotect
#use delay (clock=4000000)
#use rs232(baud=9600,parity=N,xmit=pin_c6,rcv=pin_c7,bits=8,stop=1)
.
.
#int_rda
void serial_isr() // Interrupcion recepcion serie USART
{
rcvchar=0x00; //inicializo el caracter recibido
rcvchar=getchar(); // lo descargo
addcbuff(rcvchar); //lo añado al buffer
}
solo que haora tengo la necesidad de poner una interrupcion extra, externa que es por rb0. con la funcionalidad que a la hora que se active mandar un mensaje, entoces hago lo abitual y tambien lo habilito correctamente. solo que haora, al poner el codigo relacionado con la interrupcion externa rb0, la simulacion deja de funcionar correctamente, es como si de alguna manera el solo poner el codigo relacionado con la interrupcion rb0, la interupcion #int_rda dejara de hacer su tarea correctamente. si canselo la parte correspondiente a la #int_rda poniendolo como texto de ayuda /*todo la funcion #int_rda*/, la interupcion externa por rb0 funciona correctamente, si haora hago lo contrario poniendo como texto de ayuda /*toda la funcion #int_ext */, la interrupcion #int_rda vuenbe a hacer todo su trabajo correctamente.
en conclusion el poner el codigo de #int_ext, afecta el funcionamiento de la #int_rda, e buscado informacion pero no he encontrado nada que me diga que estas interrupciones estan de alguna manera entrelazadas o algo por el estilo, la verdad no entiendo por que una interrupcion #int_ext me afecta el funcionamiento de la otra #int_rda.
#include <16f877a.h>
#FUSES nowdt,xt,noprotect
#use delay (clock=4000000)
#use rs232(baud=9600,parity=N,xmit=pin_c6,rcv=pin_c7,bits=8,stop=1)
.
.
#int_ext
void ext_isr(void)//Interrupcion externa que cuando se activa manda un mensaje al
{ //al usuario con los datos de los sensores del sistema.
delay_ms(50);
enviarMSM();
}
#int_rda
void serial_isr() // Interrupcion recepcion serie USART
{
rcvchar=0x00; //inicializo el caracter recibido
rcvchar=getchar(); // lo descargo
addcbuff(rcvchar); //lo añado al buffer
}
espero ser claro, si necesitan mas datos para entenderme mejor solo diganmelo.
sin mas que decir, me despido, saludos.