TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Nanuk en 25 de Julio de 2012, 07:11:50

Título: Problemas con USART al migrar de PIC16 a PIC18
Publicado por: Nanuk en 25 de Julio de 2012, 07:11:50
Hola! Estoy realizando un proyecto que lee una cadena de bytes. En principio empecé con la PIC16F628A pero por necesidad de más memoria y de un segundo puerto USART, cambié a la PIC18F26K22. En la PIC16F628A todo funciona bien, recibe y transmite lo esperado. Pero al migrar a la PIC18F26K22, transmite bien, pero no recibe bien. A continuación adjunto la configuración de la PIC y la rutina de tratamiento de interrupción por rx (INT_RDA):

Código: [Seleccionar]
#include <18F26K22.h>
#include <crc.c>

#fuses NOWDT,INTRC_IO, NOPUT, NOPROTECT, NOBROWNOUT, NOMCLR, NOLVP, NOCPD//INTRC_IO
#use delay(clock=4000000, RESTART_WDT)
#use RS232(BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_C6,RCV=PIN_C7)   


//---Rutinas de tratamiento de interrupción
#int_RDA
void RDA_isr(void)

   disable_interrupts(global);
   if(kbhit()){
     buffer_rx[indice]=getc();
     output_toggle(LED_TEST);
     if (buffer_rx[0]==1){
        indice++;
        if ((indice==2)||(bueno)){
           if(buffer_rx[1]<=11){
              bueno=true;
              if (indice==(buffer_rx[1]+5)){
                 indice=0;
                 bueno=false;
                 buffer_listo=true;
                 output_toggle(LED);                 
              } 
           }
           else{
              buffer_rx[0]=buffer_rx[1];
              indice=1;
           }
        }
     }
     else{
        buffer_rx[0]=buffer_rx[1];
        indice=1;
     }
   enable_interrupts(global);
   clear_interrupt(INT_RDA);
}

No entiendo porque en una PIC me funciona de lujo y en otra no. Que estoy haciendo mal? Alguien me puede ayudar? Gracias de antemano!
Título: Re: Problemas con USART al migrar de PIC16 a PIC18
Publicado por: MGLSOFT en 25 de Julio de 2012, 08:37:40
Prueba comentar los output_toggle() que tienes dentro de la interrupcion, creo que eso te trae problemas al momento de la recepcion.