memória

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

LCD háttérvilágítás a legnagyobb fogyasztó általában... Nálam 50...150 ma!
Avatar
nszenteczki
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. szeptember 17. csütörtök, 6:00

Re: memória

Hozzászólás Szerző: nszenteczki »

Sziasztok!

Van néhány dolog, amit nem értek memória kezelésnél. Az AVR eepromjában szeretnék tárolni adatokat (nem azon a részen ahol a programkód van), és címkékkel elérni.

pl.:

Kód: Egész kijelölése

' Bascomban olvasta szerint próbálkoztam és próbálnám egyszerűsíteni.
'Így működik:
$eeprom
   Label1:
   Data 2 , 0 , 1 , 254 , 255
   Label2:
   Data 4 , 3 , 6 , 251 , 244 , 33 , 21 , 10
$data

   Sor = 0

   Readeeprom B , Label2
   Incr Sor
   Lcdat Sor , 1 , B                                        '4
   Readeeprom B
   Incr sor
   Lcdat Sor , 1 , B                                        '3
   Readeeprom B
   Incr sor
   Lcdat Sor , 1 , B                                        '6
   Readeeprom B
   Incr sor
   Lcdat Sor , 1 , B                                        '251
   Readeeprom B
   Incr sor
   Lcdat Sor , 1 , B                                        '244
   Readeeprom B
   Incr sor
   Lcdat Sor , 1 , B                                        '33
   Readeeprom B
   Incr sor
   Lcdat Sor , 1 , B                                        '21
   Readeeprom B
   Incr sor
   Lcdat Sor , 1 , B                                        '10

   Wait 2
   Cls

'próbálnám egyszerűsíteni, de így nem megy..
'az alábbi esetben az első, és a második érték jó, de a többi sorba
'mindíg a második adatot (3) írja, és nem tudom, h mit kellene másképp..

sor = 0

For For_cik1 = 1 To 8
   If For_cik1 = 0 Then
      Readeeprom B , Label2
   Else
      Readeeprom B
   End If

   Incr Sor
   Lcdat Sor , 1 , B
   Wait 1
Next
Ha jól gondolom az eram változók a "programkód" memóriába tárolódnak ugye? Mert a külső eep. file-t szeretném használni..
Ötlet?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: memória

Hozzászólás Szerző: kapu48 »

A

Kód: Egész kijelölése

For For_cik1 = 1 To 8 ' 1-től indúlsz!
   If For_cik1 = 0 Then '? Sosem lessz 0 ?
      Readeeprom B , Label2 ' Sosem hajtódik végre!
   Else
      Readeeprom B
   End If
Próbáld így:

Kód: Egész kijelölése

 Readeeprom B , Label2
   Incr Sor
   Lcdat Sor , 1 , B
   Wait 1
For For_cik1 = 1 To 7
      Readeeprom B
   Incr Sor
   Lcdat Sor , 1 , B
   Wait 1
Next 
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: memória

Hozzászólás Szerző: Robert »

Goto 60 nap Arduino tanfolyam.
Bascom:
http://avr.tavir.hu/modules.php?name=Co ... age&pid=21


ERAM: EEPROMban a változónak fenntartott hely. Ha aváltozó értéket változtat, az EEPROMba beíródik. Kiolvasásákor az EEPROM tartalom szintén. DE: If feltétel ERAM változóval nem megy! Előbb ki kell olvasni egy temp változóba!

Cimke: readeeprom mit, honnan
A honnan lehet fix cím vagy cimke.
Avatar
nszenteczki
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. szeptember 17. csütörtök, 6:00

Re: memória

Hozzászólás Szerző: nszenteczki »

Köszi a gyors reagálást!
Tök igazad van ezt elírtam, mert a fórumba csak egy egyszerűsített kódot akartam berakni, teheát nem egy copy-paste, de a futó kódnál helyesen írtam. De azért kipróbáltam az általad küldött variációt is és, ugyan az az eredmény. Tehát az első, második érték ok, de a harmadiktól a második érték ismétlődik..
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: memória

Hozzászólás Szerző: Robert »

Readeeprom érték - A sorban következőt olvassa.
Ha utána teszed a readeeprom mit, label - akkor a label cimke első eértékét fogja olvasni!
Avatar
nszenteczki
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. szeptember 17. csütörtök, 6:00

Re: memória

Hozzászólás Szerző: nszenteczki »

Robert írta:Goto 60 nap Arduino tanfolyam.
Bascom:
http://avr.tavir.hu/modules.php?name=Co ... age&pid=21


ERAM: EEPROMban a változónak fenntartott hely. Ha aváltozó értéket változtat, az EEPROMba beíródik. Kiolvasásákor az EEPROM tartalom szintén. DE: If feltétel ERAM változóval nem megy! Előbb ki kell olvasni egy temp változóba!

Cimke: readeeprom mit, honnan
A honnan lehet fix cím vagy cimke.
Köszi Robi, igen ezt olvastam meg azthiszem értem is az ott leírtakat, ami nem volt egyértelmű nekem, hogy mindkét esetben EEPROM-ról beszélünk, és ha jól gondolom az eram változó a programmemória részben, míg a $eeprom-os adat pedik a külső eep. file-ban ugye? Mert vannak konstans adatok, amiket akarok küldözgetni, és nem akartam, hogy a program helyéből vegye el a helyet.
Avatar
nszenteczki
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. szeptember 17. csütörtök, 6:00

Re: memória

Hozzászólás Szerző: nszenteczki »

Robert írta:Readeeprom érték - A sorban következőt olvassa.
Ha utána teszed a readeeprom mit, label - akkor a label cimke első eértékét fogja olvasni!
Akkor ahogy kapu48 küldte, az megfelel ennek ?

Mert először label-ell (első érték), majd for ciklusban lábel nélkül (következő értékek)

De valamiért nem megy..
Avatar
nszenteczki
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. szeptember 17. csütörtök, 6:00

Re: memória

Hozzászólás Szerző: nszenteczki »


"..
Köszi Robi, igen ezt olvastam meg azthiszem értem is az ott leírtakat, ami nem volt egyértelmű nekem, hogy mindkét esetben EEPROM-ról beszélünk, és ha jól gondolom az eram változó a programmemória részben, míg a $eeprom-os adat pedik a külső eep. file-ban ugye? .."
Rájöttem, h ugyan arról az EEPROM részről van szó mindkét esetben (létrehoztam eram változókat is és kiolvastam az EEPROM-ot és az is ott van :-))

Viszont arra még nem jöttem rá, h miért nem működik a kapu48 féle kód..
kukuri
Bitmanipulátor
Hozzászólások: 132
Csatlakozott: 2014. január 20. hétfő, 12:50

Re: memória

Hozzászólás Szerző: kukuri »

Üdvözlet.

Egy Mega eepromjába szeretnék időbéjjeget elmenteni. Ezt hogyan tudom megoldani minél egyszerűbben?
Miként tudok 0-255 hejett más értéket is rögzíteni és visszaolvasni?
Vagy mentsem el karakterenként és alakítsam át számmá az értéket?
• EEPROM.write(hova, mit)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: memória

Hozzászólás Szerző: Robert »

Kód: Egész kijelölése

Dim A As ERAM Word At &H12
"A" nevű word típusú változó definiálva az EEPROM területen a 12. memóriacímtől.
kukuri
Bitmanipulátor
Hozzászólások: 132
Csatlakozott: 2014. január 20. hétfő, 12:50

Re: memória

Hozzászólás Szerző: kukuri »

Köszi.
Nem volt teljesen egyértelmű nekem a kezelése. :( Most meg nincs időm kikísérletezni hogyan is kell használni. Talán később.
Találtam egy másik megoldást is.
EEPROM.put( eeAddress, f );
kiolvasni pedig
EEPROM.get( eeAddress, f );
nyilván ehhez kell a #include <EEPROM.h> rész is.

a 100.000 irási ciklust hogy értelmezzem?
Egy- egy cellát lehet ennyiszer írni?
Tehát ha az 1 címre írok 100.000 szer utána gond nélkül írhatok a 2. címre 100.000 szer és így tovább?
Mert a címen levő fizikai réteg fárad el és nem lesz megbízható. Amennyire én tudom.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: memória

Hozzászólás Szerző: Robert »

Ez a Bascom-AVR fórum.
EEPROM.put utasítás NINCS.

A 100.000 írásról: A bascom könyv v. 60 nap Arduino vonatkozó leckét elolvastad?
Ott is írva vagyon: 100000 írás/cella! Nem az összes, hanem egyetlen cellára igaz a 100.000.
kukuri
Bitmanipulátor
Hozzászólások: 132
Csatlakozott: 2014. január 20. hétfő, 12:50

Re: memória

Hozzászólás Szerző: kukuri »

Bocsi. Azt nem néztem hogy Bascom. Csak hogy memória. Nekem arduinohoz kellett.
Válasz küldése