Autor Tema: Interrupcion UART  (Leído 1689 veces)

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

Desconectado javirnof

  • PIC10
  • *
  • Mensajes: 1
Interrupcion UART
« en: 18 de Marzo de 2014, 19:59:55 »
Hola. Estoy intentando hacer un ejemplo basico con el 18F452 pero cuando activo interrupciones de la UART parece que el PIC se bloquea o algo asi.. Las simulaciones con proteus OK. Si comento la linea de enable_interrupts(INT_RDA) todo funciona Ok y la interrupcion externa funciona bien

Código: [Seleccionar]

#include <18f452.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay (clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8, ERRORS)
#use standard_io(A)
#use standard_io(C)


char dato[25];

#int_EXT1
void EXT1_isr(void){
   output_high(PIN_A0);       // enciende el LED en el PIN A0
   delay_ms( 200 );            // demora de 1 segundo
   output_low(PIN_A0);        // apaga el LED
}

#int_RDA
void RDA_isr(void){

   disable_interrupts(INT_RDA);
   output_high(PIN_A0);       // enciende el LED en el PIN A0
   delay_ms( 200 );            // demora de 1 segundo
   output_low(PIN_A0);        // apaga el LED
   
   gets(dato);
   
 
   
   enable_interrupts(INT_RDA);

}

void main()
{


   enable_interrupts(GLOBAL);
   enable_interrupts(INT_EXT1);
   enable_interrupts(INT_RDA);
   
   
   printf("HOLA");
   
   output_low(PIN_A0);
   
   while(TRUE)
   {
     
     
   }

}

Si alguien me puede orientar se lo agradeceria....

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Interrupcion UART
« Respuesta #1 en: 18 de Marzo de 2014, 22:19:21 »
no necesitas desactivar la interrupcion de RDA dentro de la interrupción.

otra cosa es que estas usando gets para leer los datos esta función se queda esperando hasta recibir un salto de linea, si no estas enviando esto tu micro se quedará esperando
"Nada es imposible, no si puedes imaginarlo"

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Interrupcion UART
« Respuesta #2 en: 18 de Marzo de 2014, 23:11:17 »
  Además de lo comentado por rivale, agregar que no es recomendable utilizar delays dentro de las rutinas de interrupción.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas


 

anything