Autor Tema: Interrupciones simultaneas con PIC18F25J10 y modulo ethernet con CCS  (Leído 1699 veces)

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

Desconectado Manel28

  • PIC10
  • *
  • Mensajes: 23
Buenas,
estoy teniendo problemas con el tratamiento de interrupciones simultáneas. Resulta que he desarrollado un conversor ethernet-serie y estoy teniendo problemas con dos interrupciones que se producen simultáneamente o casi. TIMER1 y RDA. El TIMER1 controla el tiempo de salida de paquetes serie(paquetes de 4 bytes de transmissión hacia un equipo) que tiene que cumplirse siempre para mantener el sincronismo del equipo al que se conecta. Por otro lado recibe por serie paquetes de datos de 10 bytes cada cierto tiempo y de esto se ocupa INT_RDA. El problema es que pueden coincidir ambas interrupciones y termino perdiendo paquetes de Rx o perdiendo el sincronismo de la Tx. Las interrupciones serian algo asi:

#int_timer1
void timer1_isr(){
timer++;
if (timer==2){
 temporizador=1;
 timer=0;
 }
set_timer1(0x5D3B);                                 
}

#int_rda
void serial_isr() {                                       
 int t2; 
 rcvchar=0x00;
                                                                                   
   if(kbhit()){                                                       
          rcvchar=fgetc();                                                           
     cbuff2[xbuff]=rcvchar;                                        
      t2=xbuff;
     xbuff=(xbuff+1) %lenbuff2;
    }
   if (t2==(lenbuff2-1))         
         flagACKMesg=1;

}

Como puedo evitar perder datos? He pensado hacer un #device HIGH_INTs=true y dar prioridad pero las 2 son interrupciones importantes. Un saludo


 

anything