Autor Tema: interrupcion EUSART  (Leído 1293 veces)

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

Desconectado elpintas

  • PIC10
  • *
  • Mensajes: 32
interrupcion EUSART
« en: 27 de Mayo de 2009, 05:33:52 »
Os comento, resulta que quiero recibir datos, a traves de la eusart, estoy usando el pic18f97j60 para implementar un servidor web, este pic tiene dos puertos eusart, uno lo estoy usando como viene por defecto en la tpcip stack de microchip para comunicaciones 232 con el pc, el cual funciona perfectamente, porque ya viene implementado por la stack de microchip (estoy usando la 4.55). Y el otro lo quiero comunicar con otro pic para recibir datos, para mostrar datos en mi web y estoy usando comunicacion 485.

asi que tengo una interrupcion, de este estilo, en la que recibo los datos que me llegan y los guardo en unas variables:

volatile int v;
volatile unsigned char *m;


volatile unsigned char flagGuardado;
volatile unsigned char flagEnvio;
unsigned char empieza;
volatile int temInt;
int aneInt;
int preInt;
int radInt;
int humInt;
int velInt;
int pluInt;
unsigned char ano;
unsigned char mes;
unsigned char dia;
unsigned char hora;
unsigned char min;
//unsigned char acaba;
unsigned char flagRecepcion;


void interrupciones_bajas (void);
                  //interrupcion
   #pragma code las_interrupciones_bajas = 0x18
   void interrupciones_bajas_asm (void)
      {
           _asm goto interrupciones_bajas _endasm
         
      }
      #pragma code

      #pragma interruptlow interrupciones_bajas
      void interrupciones_bajas (void){
   
         
      if(PIR1bits.RCIF==1){//confirmo que el buffer esta llenandose
                       
            while(PIR1bits.RCIF==0); //wait until you receive a character
            flagRecepcion=RCREG;
            if(flagRecepcion==0x69){   
         
     
               m = (unsigned char *)&empieza;//coloco los datos a partir de este puntero
               for (v = 0; v< 20; v++)//el for hace que se repita 21 veces y cada una de ellas incrementa el puntero
                  {
                  while(PIR1bits.RCIF==0); //wait until you receive a character
                  *m=RCREG;
                  ++m;
                 
                  }
               flagGuardado=1;
               LATCbits.LATC1=1;
               flagRecepcion=0x00;
            }
      }
   
   }

esta interrupcion funciona correctamente en un pic cualquiera, pero al intentar integrarla en la tpcip stack, me da un error de este estilo:

Error - section 'lowVector' can not fit the absolute section. Section 'lowVector' start=0x00000018, length=0x00000006

todavia no he configurado la eusart , pero no creo que tenga nada  que ver con esto.