Sida 1 av 4
PIC16 minne som överlever strömavbrott.
Postat: 28 maj 2009, 19:21:01
av choppertony
Jag är helt grön på pic-arna, och ganska kass på engelska så det där med att förstå allt man läser i ett datablad är inte alltid så lätt. Inte nog med att man skall försöka lära sig grunderna för elektronik och ASM. Det skall vara på Engelska oxå *S*.
Detta gäller nu just 16f690 .
Sitter och tänker på om jag gör en del variabler som jag sparar en del olika värden i. och jag får ett strömavbrott
så blir det problem när strömen kommer tillbaka.
Alla värden är väl försvunnena. Eller finns det något minne i 16f690 eller ngn annan pic som ligger kvar efter ett strömavbrott?
Jag vet ju att programmet ligger kvar där det ligger. Men bränner pic'en in sina variabler i något minne?
Man kan ju lösa det med ngn slags batteribackup. Där har jag en ide med att mata pic'en med ström på ett sätt
som jag absolut inte vet om det funkar. För jag vet inte vad som händer. Jag skall försöka att förklara med siffror här
nedan.
1: VDD Här kommer normal strömförsörjning...
2: input till ngn pinne för att tala om ifall det är strömavbrott eller inte.
3: Diod för att inte få strömen att gå baklenges .. T,ex till kringutrustning som suger ut batteriet.
eller att den går till ovanstående ingång.
4: PLUS Batteribackup
5: Pic VDD in
---------------------------
PIC 16f690
---------------------------
6: VSS In
7: MINUS Batteribackup
8: Kan man sätta en Diod här för att inte ge kringutrustningen ngn Gnd . VID strömavbrått. Denna punkt behövs kanske inte alls????
9: Gnd normal Gnd om inte strömavbrott
Här är många frågetecken för mig. Och jag förstår om ni inte förstår hur jag tänker det hela.
Om ingången som känner av att det är strömavbrått blir noll så lopar programmet i en rutin som väntar på att att strömmen kommer igen.
Då strömen kommer talar den om för t,ex displayer vad som skall skrivas o visas. Fast först får den kanske läsa av ingångarna för att se om de är lika med , så som de var innan strömavbrottet....... Detta låter krångligt...
Skit i felhanteringen så länge. Just nu är jag intresserad av bateribackupen eller finns det ett bättre alternativ. Har jag tänkt helt fel eller är jag på rätt spår! mvh / Tony
Edit: Rubrik / blueint
Re: Minnen , kom i håg vid strömavbrått.
Postat: 28 maj 2009, 19:40:40
av sodjan
Det enda minne i en vanlig PIC som klarar ett strömavbrott är Flash (där
själva programmet ligger) samt EEPROM. RAM minnet där dina variabler
ligger är "undefined" när strömmen kommer tillbaka.
Batteribackup kan fixas på lite olika sätt. Bäst är kanske med någon
av de "processor supervisor" kretsar som finns. De sköter övervakningen
av den ordinarie matningen, switchar till batteri när det behövs, laddar
batterierna när det går, ger en signal ("interrupt") till processorn när
den går över till batterimatning o.s.v.
Som sagt EEPROM och Flash minnet är det enda som klarar strömavbrott.
Sedan kan man komplettera med externa minnen. Och då är FRAM från
Ramtron riktigt trevliga. Till skillnad från EEPROM så har de ingen
"skriv-tid" och de kan skrivas om i princip hur många gånger som helst
(till skillnad från EEPROM). De har även ett par "Processor Companion"
kretsar som kombinerar processorövervakning med FRAM minne, t.ex
http://www.ramtron.com/products/integra ... anion.aspx
Sök på "Ramtron" på ELFA, de har ett sortiment av deras kretsar.
Re: Minnen , kom i håg vid strömavbrått.
Postat: 28 maj 2009, 20:03:54
av choppertony
nu blir man ju konfunderad igen. 16F690 heter ju F för att den är flash . Men det betyder bara då att programmet ligger i ett flash-minne? inte att t-ex variablerna hamnar där ... Är det samma då med eeprom krets. Det är bara programmet som hamnar där. Inte några värden som skapas i programmet?
Sen är fortfarande frågan. Ser min idé på lösning på batteribackupen helt galen ut? eller är jag på rätt spår?
Tackar!
Re: Minnen , kom i håg vid strömavbrått.
Postat: 28 maj 2009, 20:26:58
av Icecap
Variabler sparas inte vid strömavbrott om de ligger i RAM.
Vill du spara inställningar osv. måste du lägga in dom i EEPROM och hämta fram dom vid uppstart.
Batteri backup används i mina ögon bara där systemet måste kunde samla in data under batteridrifttiden.
Själv använder jag en FRAM krets på 2kB till en massa projekt, det fungerar kanonbra. Jag har även projekt där den interna EEPROM-funktion används och ett par projekt där "egen-programmering" av flash-minne (en överbliven bank) fungerar som statistikinsamlingsminne.
Det verkar komma som en överraskning för dig att "allting" försvinner när man slår av PIC'en, det enda som klarar sig är just flash & EEPROM delarna.
Re: Minnen , kom i håg vid strömavbrott.
Postat: 28 maj 2009, 20:44:57
av choppertony
Nej! inte som en överraskning. Det funkar väl ungufär som en pc. När strömmen går så försvinner programmen från minnet som är igång och man får börja om från början. Men har man sparat det man gör så kan man plocka fram det igen. Och då låter det som om FRAM skall vara den lösningen.
Då är det bara att sätta igång o läsa om FRAM och se om man fattar ngt av det.
Med eran hjälp så fick jag ju text på min 2*16 led display, så då löser sig nog FRAM problematiken oxå.
Tackar på förhand!
Re: Minnen , kom i håg vid strömavbrott.
Postat: 28 maj 2009, 20:50:37
av Icecap
FRAM är bara en teknologi, det du ska kolla på är EEPROM, dessa kan vara tillverkat i CMOS, FRAM och andra tekniker men som programmör är det samma sak man "ser".
Re: Minnen , kom i håg vid strömavbrott.
Postat: 28 maj 2009, 21:00:10
av choppertony
Okey! Tackar!
Snart är det SEMESTER ! då får man se till och ha en Öl-Backup. Det får liksom inte sina *s*. Sen får man försöka läsa in minnet igen Vecka 32 *S*
Re: Minnen , kom i håg vid strömavbrott.
Postat: 28 maj 2009, 21:45:29
av limpan4all
FRAM is the shit, aldrig mera att jag kommer att strula runt med E2PROM sämre på alla vis utom prismässigt.
Re: Minnen , kom i håg vid strömavbrott.
Postat: 28 maj 2009, 21:54:53
av sodjan
> 16F690 heter ju F för att den är flash.
Korrekt. Programminnet är byggt i flash-teknik.
> Men det betyder bara då att programmet ligger i ett flash-minne?
Japp. Det som i databladet kallas "Program memory".
> inte att t-ex variablerna hamnar där ...
Nej, det är vanligt "Static Random Access Memory" Eller "RAM" i dagligt tal.
D.v.s det som i databladet kallas "GPR".
Kom ihåg att det tar ca 5 ms att skriva till flash (eller EEPROM), det är
en *väldigt* lång tid om alla dina variabler skulle sparas i flash. Här
har FRAM en fördel eftersom man kan skriva så snabbt man hinner
till minnet, det "sparar" lika snabbt som interfacet till minnet hinner med.
Flash och EEPROM har även ett max antal skrivningar innan det "slits ut".
RAM minnet har ingen sådan begränsning.
Om man ska använda FRAM eller "vanligt" EEPROM för lagring beror lite på.
Skillnaden är att FRAM är väldigt snabba och de har ett väldigt högt antal
skrivningar innan det är "slut" (jämfört med EEPROM). EEPROM passar bra för
saker som bara skrivs då och då, konfigurationsparameterar till programmet
och liknande. FRAM passar då man t.ex loggar mätvärden rellativt snabbt
och vill att de ska finnas kvar efter ett strömavbrott.
Re: PIC16 minne som överlever strömavbrott.
Postat: 28 maj 2009, 22:21:52
av choppertony
tanken är att skriva värde, ofta o snabbt. och då låter FRAM som ngt man skulle prova. någon som kan rek någon krets som man enkelt hittar säljare och datablad till. det finns väl en uppsjö av olika varianter..... Är det ngt som jag kan skriva till med en 16f690 eller behövs det ngn annan pic oxå? tackar för utförliga svar
Re: PIC16 minne som överlever strömavbrott.
Postat: 28 maj 2009, 22:33:43
av sodjan
> tanken är att skriva värde, ofta o snabbt.
Det utesluter i princip vanligt EEPROM.
Lite beroende på vad "ofta" och "snabbt" betyder, så klart...
> någon som kan rek någon krets som man enkelt hittar säljare och datablad till.
http://www.elfa.se, ange "Ramtron" (tillverkaren av FRAM minnen) i sökrutan.
> Är det ngt som jag kan skriva till med en 16f690 eller behövs det ngn annan pic oxå?
Alla PIC's kan skriva till dessa minnen. De finns med både I2C och SPI interface.
En PIC med I2C/SPI hårdvara (d.v.s en "Synchronous Serial Port (SSP) module",
som t.ex 16F690 har) kan använda den direkt, för andra PICs kan man rellativt
enkelt skriva SPI-kod i programvaran som gör samma sak. Men SSP modulen
är antagligen snabbast (d.v.s högst hastighet mot minnet) och det blir mindre
kod att skriva. Notera dock att SSP modulen (och I2C och SPI interfacen) hör
till det som kan vara lite "trickigt" att få igång första gången....
Re: PIC16 minne som överlever strömavbrott.
Postat: 29 maj 2009, 07:53:25
av Nerre
Det första man ska fundera över är ju om man verkligen behöver spara.
Efter ett strömavbrott så kommer ju programmet att starta om. Och programmet vet ingenting om vad som har hänt under strömavbrottet. Så frågan är, hur mycket av det som hände före strömavbrottet behöver programmet komma ihåg?
Det går ju också att göra så att konstruktionen känner av strömavbrott och sparar till EEPROM bara då. AVR har i alla fall en brownout interrupt (tror jag den heter) som kan användas för det.
Re: PIC16 minne som överlever strömavbrott.
Postat: 29 maj 2009, 08:35:39
av TomasL
Nja, du kan väl inte använda BOR (BOR = BrownOutReset) , då har ju spänningen redan försvunnit, eller sjunkit så låg att data och exekvering blir opålitligt.
Brown-out är väl mer för att kunna stoppa/återstarta mm när spänningen sjunkit för lågt och sedan återkommer.
Om man vill ha möjlighet att göra en backup av data vid spänningsbortfall, måste man använda en "UPS", dvs ett backup-batteri eller konding som håller liv i processor mm tillräckligt lång tid för att hinna skriva allt.
Enligt uCHips data blad, så stoppas exekveringen om matningsspänningen sjunker under "Vbor", kretsen återstartas med en resett när spänningen stiger över Vbor och efter valbara fördröjningar, samtidigt så sätts väl en flagga, för att informera att en BOR har skett.
Försvinner matningsspänningen helt, så blir det en helt normal återstart, och BOR detekteras inte.
Enligt vad jag förstått.
Re: PIC16 minne som överlever strömavbrott.
Postat: 29 maj 2009, 12:23:58
av Nerre
Ah, jag måste blandat ihop den med nåt annat. Jag vet att jag pysslar med nåt som hade en separat interrupt-pinne direkt till matningen och tack vare en simpel ellyt på Vcc så hann den "stänga ner snyggt" vid matningsavbrott. Det går kanske att utnyttja en vanlig interrupt-pinne till det?
Re: PIC16 minne som överlever strömavbrott.
Postat: 29 maj 2009, 13:13:30
av Icecap
Vissa PIC har en "BOR-förvarning" interrupt som man kan använda.