Autor Tema: limpiar buffer de datos usart  (Leído 4568 veces)

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

Desconectado hqv

  • PIC12
  • **
  • Mensajes: 70
limpiar buffer de datos usart
« en: 26 de Junio de 2004, 16:56:00 »
hola amigo tengo el siguiente problema:

tengo deshabilitada la intrrupcion RDA, pero me llegan datos que no necesito, cuando activo la interrupcion para obtener los dstos necesario , esta se activa pero con los datos que quedaron en el buffer, los que no necesito.

lo que quiero es saber como limpiar los datos que llegn para que ellos no me hagan saltar la interrupcion
gracias

Desconectado odukec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 174
RE: limpiar buffer de datos usart
« Respuesta #1 en: 26 de Junio de 2004, 17:05:00 »
Hola.. pues no te entiendo muy bien, pero yo hago esto..

BYTE buffer[BUFFER_SIZE];        
BYTE next_in = 0;
BYTE next_out = 0;


#int_RDA
void serial_isr() {
int t;
   buffer[next_in]=getc(); t=next_in;
   next_in=(next_in+1) % BUFFER_SIZE;
   if(next_in==next_out)
   next_in=t;  
}

#define bkbhit (next_in!=next_out)
BYTE bgetc() {
   BYTE c;
 
   while(!bkbhit) ;  
   c=buffer[next_out];
   next_out=(next_out+1) % BUFFER_SIZE;
   return(c);  
}

// esto lo saque de los ejemplos del CCS
// Ahora si necesitas leer los datos pues es muy simple
// llamas la funcion bgetc();
// y por medio de un if comparas los datos y
// discriminas solo los que necesitas

Es solo una opinion..!!