Hola a todos tengo un problema con la recepcion de datos del PIC 18LF4550, pues si envia bien los datos pero cuando envio un caracter de la PC al PIC creo que no se activa la interrpcion RDA, pero no se porque no se activa..... Además el compilador me tira este warning
Interrupts disabled during call to prevent re-entrancy: (@PSTRINGC_159)
Este es mi codigo y lo he cambiado varias veces con el mismo resultado:
#use rs232(baud=9600, parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=BT) //manejo del RS232
void recepcion_serial(void);
static char string [5];
int1 kbhit_rs232=1; // Para saber si llego dato desde la PC
#int_RDA
void RDA_isr(void)
{
disable_interrupts(GLOBAL);
recepcion_serial();
enable_interrupts(GLOBAL);
}
void recepcion_serial(){
string = fgetc(BT);
if (string == 0x61){ //si es una "a"
OUTPUT_HIGH(PIN_D1);
printf("\n\rPassword correcto ");
kbhit_rs232=0;
}
else {
printf("\n\rError intente de nuevo ");
kbhit_rs232=1;
}
}
void main(void){
setup_psp(PSP_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_INTERNAL|T3_DIV_BY_8);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_oscillator(OSC_8MHZ|OSC_TIMER1|OSC_31250|OSC_PLL_OFF);
setup_adc_ports(AN0_TO_AN3|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
set_timer3(2450);
enable_interrupts(GLOBAL);
enable_interrupts(INT_RDA);
while(kbhit_rs232){
delay_ms(5000);
printf("\n\rPassword: ");
}
}