Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

PIC18 Ripresa esecuzione programma dopo blackout

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] PIC18 Ripresa esecuzione programma dopo blackout

Messaggioda Foto UtenteDryden » 10 giu 2016, 12:52

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
Avatar utente
Foto UtenteDryden
20 4
New entry
New entry
 
Messaggi: 97
Iscritto il: 1 gen 2011, 14:37
Località: Bolzano

0
voti

[2] Re: PIC18 Ripresa esecuzione programma dopo blackout

Messaggioda Foto Utentespeedyant » 10 giu 2016, 12:58

Ma un "piccolo" UPS? Un sistema a batteria tampone?
Son quello delle domande strane!
Avatar utente
Foto Utentespeedyant
5.093 3 6 8
Master
Master
 
Messaggi: 3877
Iscritto il: 9 lug 2013, 18:29
Località: Torino

0
voti

[3] Re: PIC18 Ripresa esecuzione programma dopo blackout

Messaggioda Foto UtenteWALTERmwp » 11 giu 2016, 2:14

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.
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8986
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[4] Re: PIC18 Ripresa esecuzione programma dopo blackout

Messaggioda Foto UtenteCandy » 11 giu 2016, 8:52

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.
Avatar utente
Foto UtenteCandy
32,5k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10123
Iscritto il: 14 giu 2010, 22:54

1
voti

[5] Re: PIC18 Ripresa esecuzione programma dopo blackout

Messaggioda Foto UtenteSerTom » 11 giu 2016, 9:10

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
Avatar utente
Foto UtenteSerTom
4.222 1 4 9
Expert EY
Expert EY
 
Messaggi: 1950
Iscritto il: 18 mag 2012, 9:57

0
voti

[6] Re: PIC18 Ripresa esecuzione programma dopo blackout

Messaggioda Foto UtenteCandy » 11 giu 2016, 11:44

e man mano che cambiano le aggiorni, immediatamente, anche in Eeprom.

Bruciandola in "breve" tempo.
Avatar utente
Foto UtenteCandy
32,5k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10123
Iscritto il: 14 giu 2010, 22:54

0
voti

[7] Re: PIC18 Ripresa esecuzione programma dopo blackout

Messaggioda Foto UtenteWALTERmwp » 11 giu 2016, 12:06

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
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8986
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[8] Re: PIC18 Ripresa esecuzione programma dopo blackout

Messaggioda Foto UtenteSerTom » 12 giu 2016, 14:38

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
Avatar utente
Foto UtenteSerTom
4.222 1 4 9
Expert EY
Expert EY
 
Messaggi: 1950
Iscritto il: 18 mag 2012, 9:57

0
voti

[9] Re: PIC18 Ripresa esecuzione programma dopo blackout

Messaggioda Foto UtenteWALTERmwp » 12 giu 2016, 14:56

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
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8986
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[10] Re: PIC18 Ripresa esecuzione programma dopo blackout

Messaggioda Foto Utentealev » 12 giu 2016, 16:29

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
Avatar utente
Foto Utentealev
5.993 2 9 12
free expert
 
Messaggi: 6281
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti