Estoy haciendo una comunicación simple entre un Mcu ARM y un módulo GSM.
El problema al que me estoy enfrentando es cómo lidiar con la escritura y la lectura simultáneas desde y hacia el búfer FIFO.
Debido a la escala del programa, tengo una gran matriz de búfer de 1000 bytes de longitud.
En el momento en que se activa una interrupción cada vez que se recibe un byte en el registro de datos de UART y la rutina de la interrupción está llenando mi FIFO de 1KB.
Mi rutina de lectura calcula los datos disponibles en FIFO y copia algunos de los datos en un segundo búfer para su posterior procesamiento.
La rutina de interrupción se detiene para colocar más datos cuando no queda más espacio en el búfer FIFO, para evitar sobrescribir el puntero de lectura en los casos en que mi programa principal no tuvo tiempo para procesar los datos.
Ahora estoy tratando de encontrar la mejor solución para evitar que se sobrescriba el indicador de lectura mientras que la rutina de interrupción nunca se detiene para poner datos. ¿Hay alguna solución para esto o la sobrescritura es inevitable?