Newsgroup: it.hobby.elettronica.digitale
Titolo: come posso ottenere questa cosa dal pic16f84?

in pratica vorrei che il programma memorizzasse l'ultima istruzione
eseguita e poi alla riaccensione partisse dall'istruzione
seguente(quindi non dall'inizio)se questo non è possibile come posso
ottenerlo?Con l'istruzione sleep?Con un interrupt?E in questo caso il
pic rimarrebbe sempre acceso e con le porte attive o disattive?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
<Subject: come posso ottenere questa cosa dal pic16f84? 
<Date: Wed, 14 Aug 2002 17:50:00 +0000 (UTC) 
<Organization: Mailgate.ORG Server - 
http://www.Mailgate.ORG
 
<
<--------------------------------------------------------------------------------<
<
<in pratica vorrei che il programma memorizzasse l'ultima istruzione
<eseguita e poi alla riaccensione partisse dall'istruzione
<seguente(quindi non dall'inizio)se questo non č possibile come posso


 <Newsgroups: it.hobby.elettronica,it.hobby.elettronica.digitale
-- 
Perche' chiedere? Tutte le risposte ed i post precedenti sono su:
http://groups.google.com/advanced_group_search
http://securfaq.usenet.eu.org
                              Firmato:  Ketty Possun a Mazzara

<Newsgroups: it.hobby.elettronica.digitale 
<From: "\"BIG\" (Umberto)" <B...@Flowers.it> 
<Subject: Re: come posso ottenere questa cosa dal pic16f84? 
<Date: Sat, 17 Aug 2002 23:22:36 +0200 
<Reply-To:
OEMCO...@warez.linux.it.{FBF23B40-E3F0-101B-8488-00AA003E56F8}
<
<--------------------------------------------------------------------------------
<
<In data Thu, 15 Aug 2002 10:36:37 +0000 (UTC), Roberto Software scrive:
<>  Spiegati meglio... tu vuoi spegnere il micro e vuoi che alla
<>  riaccensione
<>  riparta da dove era stato spento?
<>  Potresti memorizzarti il PCL nella EEPROM ma come fai a sapere in
che
<>  punto
<
<Trascuri un fatto: Come riesci a capire che stai spegnendo il pic?
<   Se esistesse un interrupt  che  dice  "spegnimento",  come  fai  ad
<eseguire un programma che legge il PC, e lo salva  in  eeprom  a  pic 
<spento?
Leggi bene il mio post! IO ho scritto questo:
<Potresti memorizzarti il PCL nella EEPROM ma come fai a sapere in che
<punto
<sei quando spegni? se sei in un Loop chiuso potresti memorizzarti
<l'indirizzo
<di ingresso del loop... 
<all'accensione comunque dovrai riinizializzare gli ingressi e le
<uscite..
é una cosa possibile solo in un loop chiuso e comunque contenuto...
all'ingresso del loop si potrebbe memorizzare l'indirizzo di ingresso 
del loop leggendolo dal PCL e poi memorizzarlo nella EEPROM.
questa cosa è fatta prima dello spegnimento... non allo spegnimento 
stesso....(sarebbe impossibile...)
<<   Eppoi, come fai a leggere lo  stack,  ove  sarebbe  memorizzato  il
<valore del PC visto che questo non e' accessibile?
Nel registro PCL mi sembra che sia contenuto il valore dell'indirizzo
puntato....
movf PCL,W
e poi te lo salvi dove vuoi.....
<   Non puoi usare neppure usare l'istruzione  sleep,  visto  che  devi
<posizionarla il memoria programma, e non sai a  quale  punto  avverra'
<lo spegnimento del pic.
Infatti non ho detto che quella fosse la soluzione...
Spiegavo a Luther Blisset cosa succedeva con l'istruzione sleep...
Roberto.


  Spiegavo a Luther Blisset cosa succedeva con l'istruzione sleep...
E qui', non ci piove.
Pero', ci penso ora, si potrebbe fare una cosetta del genere:
Tenere sempre il PIC sempre alimentato, ad esempio con delle batterie.
   Usare RB0/INT con un comparatore esterno, in modo  da  generare  un 
interrupt quando la tensione (di rete) scende, per esempio a 4,4  volt 
(alimentando il PIC a 5 volt), e un altro interrupt  quando  torna  al 
valore nominale.
   La routine  di  interrupt,  valuta  il  fronte  con  cui  e'  stata 
attivata,   fronte   basso=spegnimento,    fronte    alto=riaccensione 
(semplifico).
Se fronte basso, attiva sleep.
   Se fronte alto, esce dall'interrupt, e di conseguenza  riprende  il 
programma da dove era stato interrotto.
   Fregandosene del consumo, e lasciando le  uscite  allo  loro  stato 
attuale, e se la  durata  delle  batterie  lo  consente,  sarebbe  una 
soluzione del problema.


 soluzione del problema.
Butto lě un'idea, anche se non conosco bene i PIC, ma che
ho usato con un micro Motorola.
Non si potrebbe semplicemente spegnere l'oscillatore,
mantenendo l'alimentazione al micro che in questo modo
dovrebbe consumare quasi niente e conservare perfettamente
il suo stato interno?

 soluzione del problema.
si è una buona soluzione...!
P.s. Rispondo anche a Valeria...
<Butto lì un'idea, anche se non conosco bene i PIC, ma che
<ho usato con un micro Motorola.
<Non si potrebbe semplicemente spegnere l'oscillatore,
<mantenendo l'alimentazione al micro che in questo modo
<dovrebbe consumare quasi niente e conservare perfettamente
<il suo stato interno?
L'oscillatore si spegne con l'istruzione SLEEP, nel frattempo un
contatore
interno al PIC non leggibile e solo cancellabile (incrementato da una
rete RC)
si autoincrementa... e dopo circa 18 millisecondi trabocca...
al trabocco di tale contatore (Watch Dog Timer), se il pic era stato
messo in
modalità basso consumo, esso si risveglia e prosegue le sua attività. è
possibile
portare a qualche secondo il tempo di trabocco del timer utilizzando il
prescaler interno.
Ciao a tutti Roberto.
