Pagina 1 di 3

PIC18 Ripresa esecuzione programma dopo blackout

Inviato: 10 giu 2016, 12:52
da Dryden
Salve a tutti.

Anche se è un po' che non bazzico da queste parti causa mancanza di tempo, continuo il mio hobby di fare piccoli progetti con PIC18.

Finora non ho mai avuto necessità particolari, ma ora mi trovo difronte ad un problema.

In pratica mi trovo ad riprogettare la scheda di controllo della lettiera automatica del mio gatto e ho la seguente necessità:

Se il programma è in esecuzione e va via la corrente, come faccio a riprendere dal punto in cui si trovava prima del blackout?
All'interno del Fw, sfrutto l'interrupt come base tempi per i vari cicli di pulizia e dovrei continuare, appunto, da dove era stato interrotto il ciclo.
Chiaramente ho necessità di salvare, oltre allo stato del timer, anche tutte le variabili e i registri più sensibili.
Leggendo il DS ho visto che in modalità sleep, il PIC automaticamente salva alcuni registri per poi ripristinarli al wake-up. Ma la modalità sleep devo invocarla da codice e non ha nulla a che fare con un blackout.

Pensavo di sfruttare un pin del pic18 (INT0) come "voltage detector" e quando l'alimentazione va giu,salvo il tutto in EEPROM. Ma non mi sembra un'idea praticabile per i seguenti motivi:
1) non ho un pin a disposizione da usare in questo modo #-o
2) Considerata la mole di dati da infilare nella EEPROM credo che non ho tempo a sufficienza per scrivere la EEPROM prima che la tensione sul PIC diventi troppo bassa, ho anche paura che con un sistema del genere potrei corrompere le EEPROM.

Se qualcuno ha idea della procedura da eseguire gliene sarei grato, oppure un pezzo di codice da cui prendere spunto o un link da consultare(IT,EN o DE)

Grazie a tutti per l'attenzione :D

Re: PIC18 Ripresa esecuzione programma dopo blackout

Inviato: 10 giu 2016, 12:58
da speedyant
Ma un "piccolo" UPS? Un sistema a batteria tampone?

Re: PIC18 Ripresa esecuzione programma dopo blackout

Inviato: 11 giu 2016, 2:14
da WALTERmwp
Ciao Foto UtenteDryden, per quanto riguarda la registrazione dei dati su eeprom(interna) potresti consultare questo articolo di Foto UtentePaolino (tratta anche del PIC18) e quest'altro di Foto UtenteIlGuru.

Come è stato scritto, una batteria tampone non sarebbe un provvedimento da scartare: ti consetirebbe di gestire il salvataggio dei dati con tutta tranquillità.
Per stabilire quando provvedere a ciò, in difetto di un pin disponibile, si potrebbe valutare la possibilità di ricorrere alla gestione del brown out (credo esegua il monitoraggio anche tramite il pin stesso di alimentazione) per intercettare il calo della vdd (compatibilmente all'impiego della batteria).

Saluti

p.s.
specifica la sigla del microcontrollore.

Re: PIC18 Ripresa esecuzione programma dopo blackout

Inviato: 11 giu 2016, 8:52
da Candy
In passato si usavano le batterie tampone per questi problemi, ora, la tendenza e` un supercondensatore, od al limite un condensatore di UPS di breve tempo per salvare su flash od EEprom.
Trasferire su eeprom o flash una struttura di 1k non e` una difficolta' grande, ed e` anche veloce.

Re: PIC18 Ripresa esecuzione programma dopo blackout

Inviato: 11 giu 2016, 9:10
da SerTom
In genere "salvare tutto all'ultimo istante" ... non è una strategia vincente.

Due sono le possibilità.

Decidi quali sono le variabili essenziali per il recupero della situazione precedente al blackout (ma solo quelle veramente essenziali, ad esempio in un timer potrebbe bastare la risoluzione di 1 minuto, non quella del secondo) e man mano che cambiano le aggiorni, immediatamente, anche in Eeprom.
Quando manca corrente non fai assolutamente nulla. Al ritorno recuperi le variabili e ricostruisci la situazione. E' più semplice di quello che pensi, basta ragionare all'essenziale.

Usi uno dei tanti modi di basso consumo di cui il PIC dispone per "congelare" lo stato del PIC e con esso tutte le variabili in RAM. Ci sono degli stati dove il consumo è così basso che l'energia accumulata in un semplice condensatore permette di mantenere il PIC alimentato per decine di ore. Occhio che anche l'hardware di contorno va progettato per il basso consumo. Qui, se non hai esperienza ... lascia perdere ! Ad esempio non sognarti di usare normali condensatori elettrolitici in alluminio sull'alimentazione perché "perderebbero" più di un secchio bucato .... :mrgreen:

Bye O_/ Ser.Tom

Re: PIC18 Ripresa esecuzione programma dopo blackout

Inviato: 11 giu 2016, 11:44
da Candy
e man mano che cambiano le aggiorni, immediatamente, anche in Eeprom.

Bruciandola in "breve" tempo.

Re: PIC18 Ripresa esecuzione programma dopo blackout

Inviato: 11 giu 2016, 12:06
da WALTERmwp
SerTom ha scritto:(...) e man mano che cambiano le aggiorni, immediatamente, anche in Eeprom. (...)
a prescindere dal numero di cicli di scrittura che può garantire, anche a mio parere non è il criterio ortodosso per sfruttare le proprietà della eeprom.
Se vi si vuole accedere per eventi ben definiti e non riconducibili al fault dell'alimentazione è un discorso, ma se lo si fa per prevenire una perdita quale conseguenza del fault stesso non mi pare il meglio.
Rimango dell'idea di salvare tutto quel che occorre ma solo quando si rileva il calo della vdd, il brown-out interno c'è anche per quello.

Saluti

Re: PIC18 Ripresa esecuzione programma dopo blackout

Inviato: 12 giu 2016, 14:38
da SerTom
Sono metodologie differenti.
Il salvare tutto alla mancanza di rete era stato dichiarato non possibile già in [1]
Quello che proponevo era una alternativa.
Certo, con si può salvare ad ogni ciclo, ma con un po' di accortezza (non per niente parlavo di "veramente essenziali") è facile restare lontani da "Endurance: 1 Million Write Cycles"-

Bye O_/ Ser.Tom

Re: PIC18 Ripresa esecuzione programma dopo blackout

Inviato: 12 giu 2016, 14:56
da WALTERmwp
SerTom ha scritto:(...) Quello che (...)
il proposito mi era chiaro ma il criterio, in generale, rimane condizionato dall'applicazione.

L'OP ha la necessità di "riprogettare la scheda di controllo" e se questo non dovesse implicare la revisione dell'hardware sicuramente prevede il "revamping" del firmware.

Certo, finché non scrive quale chip utilizza, com'è alimentato e qualche altro dettaglio come ad esempio l'attuale impiego degli I/O diventa difficile proporre soluzioni alternative.

Saluti

Re: PIC18 Ripresa esecuzione programma dopo blackout

Inviato: 12 giu 2016, 16:29
da alev
Candy ha scritto:la tendenza e` un supercondensatore

Giusto come suggerimento per l'OP: i supercondensatori vengono a volte chiamati "Supercap", con questo termine potrebbe essere più facile rimediarli