Superloop
La più semplice architettura firmware: un ciclo while(1) infinito che richiama ogni task a turno, con gli interrupt come unica eccezione alla coda.
Una volta configurati clock e periferiche, main() entra in un ciclo da cui non esce mai. A ogni giro legge i pulsanti, controlla i flag lasciati dai gestori di interrupt, aggiorna il display e ricomincia. Si parla anche di foreground/background: gli interrupt sono il foreground, che reagisce subito, il ciclo è il background, che si occupa di tutto il resto quando gli capita.
Il fascino sta nel fatto che l'intero programma sta in una funzione e non c'è alcuno scheduler a riservare sorprese. Il rovescio è che il tempo di risposta equivale al giro più lento del ciclo: un solo ritardo bloccante e tutto si ferma. Chi comincia ad aggiungere macchine a stati e timestamp per aggirare il problema sta, di fatto, scrivendo il proprio RTOS, solo peggiore.