 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
malci Član


Pridružen-a: Sob 15 Sep 2007 21:05 Prispevkov: 871 Aktiv.: 4.03 Kraj: Polhov Gradec
|
Objavljeno: Pon Okt 06, 2008 9:35 am Naslov sporočila: Shranjevanje podatkov v interni eeprom |
|
|
Pozdravljeni!
Nimam nobene ideje, kako bi z bascomAVR napisal program za atmega8 , ki bi med delovanjem beležil izmerjene temperature v svoj Flash, ki bi jih potem občasno ( 1x dnevno) prek komunikacije rs232 prenesel v računalnik in stem sprostil prostor v mikrokontrolerju?
Ima kdo že narejen kak primer?
konkretno, krmiljenje centralne peči mi sedaj bere zunanjo temperaturo na vakih 5 min, in mi jo pošlje preko rs232 na računalnik. Problem je, ker računalnik ni vedno vklopljen.
Predvidevam da bi se to dalo narediti z eeprom, samo, nisem prav domač v komunikaciji I2C in tudi vezja ne bi rad popravljal, pa tudi,če se ne motim, eeprom-mi nimajo prav dolgo življensko dobo pisanja in prepisovanje _________________ Elektronika za hobi
Nazadnje urejal/a malci Čet Okt 09, 2008 10:24 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
trot Član


Pridružen-a: Čet 18 Jan 2007 20:25 Prispevkov: 1282 Aktiv.: 5.72 Kraj: glej fogl
|
Objavljeno: Pon Okt 06, 2008 9:41 am Naslov sporočila: |
|
|
Saj ima atmega8 svoj notranji eeprom in ram. A ni dovolj velik? Tudi flash ima podobno dolgo življenjsko dobo kot eeprom. _________________ lp, Klemen
Nazadnje urejal/a trot Pon Okt 06, 2008 9:44 am; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
surla Član

Pridružen-a: Ned 14 Dec 2003 15:22 Prispevkov: 722 Aktiv.: 3.05 Kraj: Ljubljana
|
Objavljeno: Pon Okt 06, 2008 9:43 am Naslov sporočila: |
|
|
EEprom ima tudi do milijon vpisov na isto lokacijo (pod določenimi pogoji) .
Flash v mikrokrmilnikih pa se lahko po podatkih proizvajalcev prepisuje do 10.000 krat (tam nekje). Tako , da EEprom je "boljši".
Koliko pa imaš prostega rama v mikrokontrolerju?
Sigurno ima tvoj mikro kakih 200 naslovov rama.verjetno jih imaš kakih 100 prostih. To uporabi. |
|
Nazaj na vrh |
|
 |
malci Član


Pridružen-a: Sob 15 Sep 2007 21:05 Prispevkov: 871 Aktiv.: 4.03 Kraj: Polhov Gradec
|
Objavljeno: Pon Okt 06, 2008 1:20 pm Naslov sporočila: |
|
|
Vredu, potem imem v spominu napačen podatek o življenski dobi eeproma.
Ja, atmega8 ima 512 Bytom notranjega eeproma.
Problem nastane, ker tega eeproma sploh ne znam uporabljati, prav tako ne poznam ukazov za delo s tem delom spomina. Kako so označeni določeni naslovi?, in, kako se do njih dostopa (bere, piše, briše).
Še najbolj vesel pa bi bil, če ima kdo napisna kak primer za delo z notranjim EEprom v bascomAVR z komentarji
lp
uroš _________________ Elektronika za hobi |
|
Nazaj na vrh |
|
 |
Vlado Član

Pridružen-a: Sre 03 Mar 2004 21:35 Prispevkov: 563 Aktiv.: 2.38 Kraj: Ljubljana
|
Objavljeno: Pon Okt 06, 2008 4:23 pm Naslov sporočila: shranjevanje podatkov med delovanjem v flash mik |
|
|
Uroš,
kaj če bi pogledal v Help? Tam boš našel oba nečina kako pisati in brati notranji eeprom. V primeru da ti notranji eeprom ne zadostuje, uporabi I2C zunanji eeprom, tudi za njega boš našel primere v Helpu.
Vlado |
|
Nazaj na vrh |
|
 |
Balanca Neznanec

Pridružen-a: Tor 27 Maj 2008 9:32 Prispevkov: 4 Aktiv.: 0.02 Kraj: Ljubljana
|
Objavljeno: Tor Okt 07, 2008 7:46 am Naslov sporočila: |
|
|
Malo sem že iz vaje. Včasih sem programiral Atmele (v asemblerju seveda ). Obstaja zelo kratek ukaz, da zapišeš podatke v EEPROM. Ukazi in primeri so bili na ATMELOVI strani (v asemblerju). Sam sem uporabljal zadevo, da sem shranil podatke, predno je zmajkalo napajanja. Elegantna zadeva. Če kdo rabi shemo, ukaz za to naj mi pošlje mail franc.ravnikar@gmail.com _________________ Franci R |
|
Nazaj na vrh |
|
 |
MarkoM Član

Pridružen-a: Tor 12 Sep 2006 15:29 Prispevkov: 2825 Aktiv.: 12.36 Kraj: Lovrenc na P.
|
Objavljeno: Tor Okt 07, 2008 8:18 am Naslov sporočila: |
|
|
Verjetno v 3,4 vrsticah asm kode lahko pišeš in bereš iz eeproma. Vsaj tako je pri PIC-ih. Tukaj verjetno ni drugače. Pa verjamem, da piše celo v datasheetu.
Edit: zaradi firbca me je zanimalo in sem šel pogledati. V datashetu piše vse, imaš celo primer v asm-ju in c-ju. Tako, da datasheet v roke (str. 22) |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.91 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Tor Okt 07, 2008 10:46 am Naslov sporočila: |
|
|
Izgleda nekako takole.
(moj primer za Tiny2313)
Koda: |
;--------------------------------------------
;procedura na predhodno nastavljeno lokacijo
;vpiše vrednost dobljeno v registru EEPodatek
;--------------------------------------------
EEVpis:
sbic EECR,EEPE
rjmp PC-1 ;čakam na konec vpisa
cbi EECR,EEPM0
cbi EECR,EEPM1 ;omogočeno brisanje ter vpis
out EEAR,EENaslov ;nastavim naslov
out EEDR,EEPodatek ;vpišem podatek
sbi EECR,EEMPE ;master program enable
sbi EECR,EEPE ;vpis
ret
|
branje
Koda: |
;--------------------------------------------
;procedura iz predhodno nastavljene
;lokacije prebere vrednost ter jo shrane v EEPodatek
;--------------------------------------------
EEBranje:
sbic EECR,EEPE
rjmp PC-1
sbi EECR,EERE ;izvedem branje
in EEpodatek,EEDR
ret
|
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
malci Član


Pridružen-a: Sob 15 Sep 2007 21:05 Prispevkov: 871 Aktiv.: 4.03 Kraj: Polhov Gradec
|
Objavljeno: Tor Okt 07, 2008 10:50 am Naslov sporočila: |
|
|
Ja res je v datasheet primer , sam kaj, ko mi je ASM in C popolnoma neznan.
V helpu je nekaj uporabnih primerov in
spodnji program mi je razumljiv, edino ne vem, kako bi (če se to s bascomAVR da) podatek zapisal v točno določeno pozicijo. Verjetno bi branje določene pozicije določil s pomočjo FOR- NEXT zanke
Ne zastopim pa, kako se naslavlja določene pozicije v eeprom-u še posebej pri I2C komunikaciji in zunanjem EEprom-u
Sicer pa bom poskušal s pomočjo spodnje kode sestaviti primer za moje potrebe, pa vas potem še kaj povprašam, če ne bom vedel.
Koda: |
Dim B As Byte
$eeprom
Label1:
Data 1 , 2 , 3 , 4 , 5 , 7 , 8 , 9
Label2:
Data 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90 , 100
$data
Readeeprom B , Label1
Print B 'prints 1
Readeeprom B
Print B 'prints 2
Readeeprom B , Label2
Print B 'prints 10
Readeeprom B
Print B 'prints 20
'write eeprom
B = 100
Writeeeprom B , Label1
B = 101
Writeeeprom B
Readeeprom B , Label1
Print B 'prints 1
Readeeprom B
Print B 'prints 2
End |
p.s.: Saj EEprom-u se življenska doba ne krajša če podatke samo bereš. Se motim? |
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 60.03 Kraj: Divača (Kačiče)
|
Objavljeno: Tor Okt 07, 2008 10:58 am Naslov sporočila: |
|
|
malci je napisal/a: |
Saj EEprom-u se življenska doba ne krajša če podatke samo bereš. Se motim? |
Ne motiš se.
Drugače pa bi bilo le prav, da začneš ovohavati vsaj C če že ne asm. _________________ Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo. |
|
Nazaj na vrh |
|
 |
joze Član


Pridružen-a: Pet 26 Jan 2007 10:27 Prispevkov: 204 Aktiv.: 0.91
|
Objavljeno: Tor Okt 07, 2008 11:35 am Naslov sporočila: |
|
|
LP!
"Balanca" lahko objaviš tukaj na forumu, mislim da bi to znalo zanimati veliko ljudi.
 |
|
Nazaj na vrh |
|
 |
zuti Član

Pridružen-a: Tor 01 Feb 2005 23:49 Prispevkov: 65 Aktiv.: 0.27 Kraj: Mb
|
Objavljeno: Čet Okt 09, 2008 6:33 pm Naslov sporočila: |
|
|
"Malci" upam da ti bo pomagalo.
Tako zapisuješ v Bascomu podatke v notranji eeprom. Podatek1,podatek2, podatek3 itd. so spremenljivke tipa byte ki jih želiš shraniti, dočim številke so pa
lokacije v eepromu, kamor boš podatke zapisal (1,2,3.......do 512 byt-ov
v tvojem primeru). Podatek1, 2, 3, 4 je samo primer spremenljivke,
uporabiš lahko katerokoli svojo spremenljivko in jo zapišeš na katerokoli
drugo lokacijo v obsegu eeproma.
Writeeeprom Podatek1 , 1
Waitms 10
Writeeeprom Podatek2 , 2
Waitms 10
Writeeeprom Podatek3 , 3
Waitms 10
Writeeeprom Podatek4 , 4
Waitms 10
Tako prebereš podatke iz eeproma.
Readeeprom Podatek1 , 1
Readeeprom Podatek2 , 2
Readeeprom Podatek3 , 3
Readeeprom Podatek4 , 4 |
|
Nazaj na vrh |
|
 |
malci Član


Pridružen-a: Sob 15 Sep 2007 21:05 Prispevkov: 871 Aktiv.: 4.03 Kraj: Polhov Gradec
|
Objavljeno: Čet Okt 09, 2008 7:20 pm Naslov sporočila: |
|
|
aha, sem misli, da je to naslavlanje kaj bolj komplicirano v smislu šestnajstiškega sistema kot naprimer " I2cwbyte &B1010_0000 'slave address".
Citiram: |
uporabiš lahko katerokoli svojo spremenljivko |
misliš stem tudi Itneger, word.....?
Potemtakem bi spodnji osnutek programa moral delovati.
Naprimer: želel bi zapisovati temperature vsakih 10 min. ob prvem vpisu bi poleg temperature zabeležil tudi čas v urah in minutah meritve, mogoče še datum. (prvi vpis bi bil po tistem, ko bi prek rs232 prenesel podatke v računanik).
Koda: |
Tmp = 10 ' 10,2 stC
tmp1=2
Timeh = 13 '13:25 ura
timemin=25
Lokac = 1 'ali pač zaporedna številka meritve
lokac1 =lokac+1
lokac2=lokac + 300
lokac3 =lokac2+1
writeeeprom tmp2, lokac
waitms 10
writeeeprom tmp1,lokac
waitms 10
writeeeprom timeh,lokac
waitms 10
writeeeprom timemin, lokac
|
itd
branje pa bi izvedel podobno
Je mogoče v tem kaka kritična napaka?
lp
uroš _________________ Elektronika za hobi |
|
Nazaj na vrh |
|
 |
zuti Član

Pridružen-a: Tor 01 Feb 2005 23:49 Prispevkov: 65 Aktiv.: 0.27 Kraj: Mb
|
Objavljeno: Čet Okt 09, 2008 8:10 pm Naslov sporočila: |
|
|
Mislim da bi šlo tudi z integer in word, čeprav sta dolgi 2 (4) byt-a, ampak ko sem to enkrat probal, sem za vsak slučaj puščal za vsako spremenljivko 2 ali 3 lokacije. Če je to pravilno ne vem, ampak meni je takrat delovalo. Pravilno je menda, da se koristi več byt-nih spremenljivk in se jih kasneje z shiftanjem nekako združi, kako pa to gre, pa ne vem, ker tega nisem nikoli koristil. |
|
Nazaj na vrh |
|
 |
lojzek Član



Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3387 Aktiv.: 15.99
|
Objavljeno: Čet Okt 09, 2008 8:35 pm Naslov sporočila: |
|
|
Malce razmišljaj tudi o tem, da boš 512 bytov eeproma z željenimi podatki kar hitro porabil... (datum, ura, temperatura). Če uporabiš podatke dan, mesec, ura, minuta, stopinje- je to 5 podatkov za vsak zapis. Torej maksimalno 100 zapisov. Skupno malce manj kot 17 ur.
Seveda ob predvidevanju, da je vsak podatek dolg en byte. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 496 dni
Powered by phpBB © 2001, 2005 phpBB Group
|