Para un microcontrolador pequeño sin sistema operativo, ¿cuál es la forma correcta de compartir datos entre diferentes interrupciones y el bucle principal?
Con un sistema operativo, solo se puede crear un mutex para cada parte crítica y continuar, y el programador cambiará entre tareas, por ejemplo.
Si se usa un mutex en una interrupción, simplemente se bloqueará para siempre, así que obviamente esto no puede funcionar.
Un enfoque simple en el que puedo pensar puede ser tener copias de las variables en una tabla y cuando se modifiquen, establezca una marca para cada variable modificada. Luego, en el bucle principal, las interrupciones de desactivación copian las copias a las variables principales y viceversa (con un sistema de prioridades en caso de que se hayan cambiado dos o más). Esto llevaría bastante tiempo y, pero debería funcionar.