Autor Tema: Problema interrupción RX USART en C18  (Leído 2228 veces)

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

Desconectado Solink

  • PIC10
  • *
  • Mensajes: 7
Problema interrupción RX USART en C18
« en: 28 de Agosto de 2008, 18:57:47 »
Hola,
Tengo un problema con las interrupciones con la USART usando el compilador de microchip C18.
Tengo un programa que me envía datos al pc y los leo perfectamente desde el hiperterminal pero que no me recibe correctamente o la interrupción en la recepción no me funciona: Tras estar 20 o 30 sgundos enviando un 5 un montón de veces desde el hiperterminal entonces me salta a la interrupción y además el valor que hay almacenado en el RCREG no se corresponde al enviado. No sé que estoy haciendo mal. La parte del código es esta:
//El código de la interrupción
#pragma code high_vector=0x08
   void interrupt_at_high_vector(void)
   {
      _asm GOTO high_isr _endasm
   }
   #pragma code

   #pragma interrupt high_isr
   void high_isr(void){
      unsigned char data;
      /*Obtener el caracter recibido de la USART*/
   if (DataRdyUSART())
   {
      data = ReadUSART();
   }      
      /*Clear the interrupt flag*/
      PIR1bits.RCIF = 0;
   }
        //---------------------------------------------------------------------
   //Y la Configuración de la USART dentro del main
   //---------------------------------------------------------------------
   OpenUSART( USART_TX_INT_OFF &
                 USART_RX_INT_ON &
                 USART_ASYNCH_MODE &
                 USART_EIGHT_BIT &
                 USART_CONT_RX &
                 USART_BRGH_HIGH,
                 25 ); //12 19200 y 25 para 9600
   /*Enable interrupt priority*/
   RCONbits.IPEN = 1;

   /*Make receive interrupt high priority*/
   IPR1bits.RCIP = 1;

   /*Enable all high priority interrupts*/
   INTCONbits.GIEH = 1;

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problema interrupción RX USART en C18
« Respuesta #1 en: 29 de Agosto de 2008, 01:42:11 »
Hace dos días me ha pasado a mí exactamente lo mismo y resultó ser que no había configurado el TRIS de los pines TX y RX. No parece lógico que si se está usando el periférico sea necesario configurar su TRIS pero así fue como se resolvió.

Desconectado Solink

  • PIC10
  • *
  • Mensajes: 7
Re: Problema interrupción RX USART en C18
« Respuesta #2 en: 29 de Agosto de 2008, 13:46:20 »
Hace dos días me ha pasado a mí exactamente lo mismo y resultó ser que no había configurado el TRIS de los pines TX y RX. No parece lógico que si se está usando el periférico sea necesario configurar su TRIS pero así fue como se resolvió.

A ver yo en el main, después de declararar mis variables configuro el TRIS de todos los puertos, incluidos los pines TX y RX. ¿Debo configurarlos en otra parte o así se te solución a tí?

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problema interrupción RX USART en C18
« Respuesta #3 en: 29 de Agosto de 2008, 17:25:43 »
Justamente eso hice y se arregló. Si no te funciona será otra cosa entonces.