Per la memorizzazione dello stato di ingressi ed uscite al momento della mancanza di alimentazione, si procede come segue :
1) metti in serie alla linea di alimentazione del PIC un diodo con katodo verso il PIC
2) sull'alimentazioe del PIC metti un elettrolitico, 100, 220uF dovrebbero bastare
3) puoi usare un transistor PNP con l'emettitore sull'alimentazione, il collettore collegato ad un ingresso del PIC con resistenza da 10k a massa. La base va collegata sull'anodo del diodo, anche questa con una 10k a massa.
4) devi usare l'interrupt generato sul pin dove è collegato il collettore del transistor per procedere con il salvataggio in Eprom dello stato delle uscite e/o ingressi da monitorare
5) al ripristino dell'alimentazione, leggi i valori delle uscite in Eprom e ripristinale
Il sistema funziona in questo modo :
Normalmente il pin che genera l'interrupt al mancare della tensione è a livello basso.
Quando manca la tensione di alimentazione, la tensione presente sulla base del transistor scende più rapidamente di quella dopo il diodo (grazie all'elettrolitico).
Quando la tensione sulla base è inferiore a quella sull'emettitore di 0.6V, il transitor conduce e la tensione sul pin del PIC va a livello alto e genera l'interrupt.
A questo punto hai il tempo di salvare quello che ti serve in Eprom.