leOS - un semplice OS per schedulare piccoli task

lesto:
sì, ma permetti che un codice atomico che dura 16ms è errato di partenza

Su questo siamo d'accordo.
Ma il problema non siamo tanto né io né te, ma gli utenti che usano questa cosa.
Se leggi nelle varie pagine, vedrai come di errori derivanti dal fatto di non sapere come funziona il core di Arduino e le sue funzioni, quindi il rischio di ritrovarsi un task freezato c'è.

e infatti col mio sistema rendi il codice dalla ISR del watchdog NON atomica.

Lo vedo ora, non avevo notato la modifica.

Se invece sei in un altro interrput (vedi timer, pwm, etc) allora DOVREBBE essere settato un flag che indica che è stat richiesto l'interrupt WDT che sarà eseguito appena possibile.

quindi, salvo che l'user non crei un suo interrupt bloccante che dura più di 16ms, non avrai problemi con la tua libreria.

se poi di default metti il reset a 0 (no reset), allora l'user deve fare un interrupt pessimo E tirarsi la zappa sul piede

Vedo di rileggermi con calma tutto.