Autor Tema: Problemas para recibir datos por RS-232  (Leído 1300 veces)

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

Desconectado frankcr

  • PIC10
  • *
  • Mensajes: 36
Problemas para recibir datos por RS-232
« en: 09 de Septiembre de 2010, 17:31:58 »
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: ");
      
   }
}
« Última modificación: 10 de Septiembre de 2010, 17:47:59 por frankcr »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problemas para recibir datos por RS-232
« Respuesta #1 en: 10 de Septiembre de 2010, 17:52:54 »
Hola.

La función printf() toma mucho tiempo, así que no es bueno que este dentro de la rutina de interrupción. Prueba usar un flag de aviso y usar la función en el programa principal.

Saludos
El papel lo aguanta todo