Program írás help
Sziasztok!
Régebben kérdezgettem bár dolgot relék, portok be-ki kapcsolgatásáról. Ez már majdnem kész is van.
Íme a következő probléma:
Van 2-3 db byte-os változóm, melyet használok a programban. Ezeket szeretném a kikapcsoláskor is elmenteni, hogy a következő bekapcsoláskor ismét onnan folytassam, ahol abbahagytam.
Gondoltam letárolom az EEPROM-ba, az könnyűnek tűnik, de sokszor változik a program futása közben, ezért túl sokszor kellene beírnom, ami meg nem javalott.
Ötletek, hogy tisztán szofveresen hogyan oldható meg??
Üdv
Rag
Régebben kérdezgettem bár dolgot relék, portok be-ki kapcsolgatásáról. Ez már majdnem kész is van.
Íme a következő probléma:
Van 2-3 db byte-os változóm, melyet használok a programban. Ezeket szeretném a kikapcsoláskor is elmenteni, hogy a következő bekapcsoláskor ismét onnan folytassam, ahol abbahagytam.
Gondoltam letárolom az EEPROM-ba, az könnyűnek tűnik, de sokszor változik a program futása közben, ezért túl sokszor kellene beírnom, ami meg nem javalott.
Ötletek, hogy tisztán szofveresen hogyan oldható meg??
Üdv
Rag
Kiirod LCDre, es a felhasznalo utana kapcsolja ki, amikor a felirta kis papirra. Bekapcsoláskor meg beírja:).
Itt van a SW a procban, meg a HW, mint a papír-ceruza-felhasználó.
Gondolom nem erre gondoltál.
Nézed, hogy fesz leesik-e.
Ha 4.5V alatt van az 5V-os akkor a leválasztott backup tápra kapcsolod a procit, és a többi fogyasztót kilövöd. (Down, tápmegszűntetés stb). Ekkor a proc még a maradék szuflával kiküldi a saját EEPROMjába.
DE: belső prom 100.000 x írható!. Ha ennél többször kell, akkor vagy elcsúsztatod feljebbi címre, vagy külső FRAMot használsz (drága), de nincs írás-olvasási limitje.
Itt van a SW a procban, meg a HW, mint a papír-ceruza-felhasználó.
Gondolom nem erre gondoltál.
Nézed, hogy fesz leesik-e.
Ha 4.5V alatt van az 5V-os akkor a leválasztott backup tápra kapcsolod a procit, és a többi fogyasztót kilövöd. (Down, tápmegszűntetés stb). Ekkor a proc még a maradék szuflával kiküldi a saját EEPROMjába.
DE: belső prom 100.000 x írható!. Ha ennél többször kell, akkor vagy elcsúsztatod feljebbi címre, vagy külső FRAMot használsz (drága), de nincs írás-olvasási limitje.
Pedig már csak ez az egy funkció hiányzik a programból, a többi kész van..
Nézegettem ezt a AD-átalalkítást.
Start, ConfigADC és GetADC parancs van. De mit is hova kötök?
AVCC lábat teszem rá a proc tápjára referencia fesznek és valamelyik lábat az A portról a mérendőre?
Config ADC = Single
Dim Ertek as Word
Start ADC
Ertek = GetADC(7)
Ertek visszadja az A port 7-es lábon lévő fesz értéket
Ertek(0-65535)/ref. fesz viszonyban?
Ennyi?
Üdv
Rag
A single nem jó. Az csak 1 mérést csinál. szabadonfutóra kell rakni.
A GETADC(7) a 7-es AD csatornát adja vissza, ez chipfüggő melyik lábon van. Lsd adatlap.
0-1023 a mért érték.
A referenciafesz internal esetben 2.56V
Így a valós érték a lábon 0-2,56V közt lehet.
Fesz=X/1024*2,56
X a mért érték. A bascom súgóban jól benne van a mintaprogik közt. Az AD 8 v. 9 v. 10 bites lehet!
A configgal állítod be.
Ha a tápfesz a referencia, akkor megszívod, mert a tápfeszt nem mérheted korrekten. Ingadozást, mindent belemérsz.
A GETADC(7) a 7-es AD csatornát adja vissza, ez chipfüggő melyik lábon van. Lsd adatlap.
0-1023 a mért érték.
A referenciafesz internal esetben 2.56V
Így a valós érték a lábon 0-2,56V közt lehet.
Fesz=X/1024*2,56
X a mért érték. A bascom súgóban jól benne van a mintaprogik közt. Az AD 8 v. 9 v. 10 bites lehet!
A configgal állítod be.
Ha a tápfesz a referencia, akkor megszívod, mert a tápfeszt nem mérheted korrekten. Ingadozást, mindent belemérsz.
Mega16-mál A porton van ADC.
Ha két ellenállással (2x10K) a tápfeszről csinálok osztót és kötöm a porta(7)-re és belső ref. fesz használok, eeprom területre letárolva, ha leesett a fesz:
Config Adc = Free , Prescaler = Auto , Reference = Internal
Dim Fesz As Byte , Tarolando As Byte
$eeprom
Epromadat:
Data 12%
$data
Start Adc
Tarolando = 62
do
Fesz = Getadc(7)
If Fesz < 800 Than
Writeeeprom Tarolando , Epromadat
End If
Waitms 100
Loop
Egy dolog (legalább) hiányzik szerintem, mert ha esett a fesz, akkor míg megy a proci, akkor folyamatosan letárolja, ezért kellene valami Powerdown parancs.
Illetve a referencia megadása nem jó, de megnézem a Mega16 adatlapját
Rag
Ha két ellenállással (2x10K) a tápfeszről csinálok osztót és kötöm a porta(7)-re és belső ref. fesz használok, eeprom területre letárolva, ha leesett a fesz:
Config Adc = Free , Prescaler = Auto , Reference = Internal
Dim Fesz As Byte , Tarolando As Byte
$eeprom
Epromadat:
Data 12%
$data
Start Adc
Tarolando = 62
do
Fesz = Getadc(7)
If Fesz < 800 Than
Writeeeprom Tarolando , Epromadat
End If
Waitms 100
Loop
Egy dolog (legalább) hiányzik szerintem, mert ha esett a fesz, akkor míg megy a proci, akkor folyamatosan letárolja, ezért kellene valami Powerdown parancs.
Illetve a referencia megadása nem jó, de megnézem a Mega16 adatlapját
Rag