Forum: Mikrocontroller und Digitale Elektronik EEPROM + BASCOM +


von Tobi (Gast)


Lesenswert?

HAllo Leute,

wer kann mir weiterhelfen mit BAscom und ATMEGA 8 !?

Ich möchte im EEPROM Wertee hineinschreiben mit denen der
Microcontroller beim erstmaligen Start initialisiert wird.
Wenn ich nun während dem Betrieb diese Werte ändere ( hier
bei mir geschieht dies dadurch das wenn ich eine Taste drücke
der betreffende Wert um 1 erhöht wird) soll dies im EEPROM gespeichert
werden. Wenn ich nun den Controller ausschalte und wieder einschalte
sollen aber nicht die Initialisierungswerte sondern die geänderten
Werte gelesen werden

z.B. erstmaliger Start : A = 10

dann erhöhe ich Wert auf A = 12

nun schalte ich Controller aus und ein

jetzt soll A = 12 sein


Würde mich freuen wenn mir jemand weiterhelfe könnte

Ich habe es mit Dim A As eram byte probiert aber das bring nichts
weilich ja immer den allerersten Wert beim Neustart erhalte

Vielen Dank

Tobi

von anfänger (Gast)


Lesenswert?

einfach die zu speichernden variablen als

Dim test As Eram Byte

deklarieren. dann bleibt der variablen-wert auch beim ausschalten
erhalten, da er ja im eeprom gespeichert ist. habs zwar noch nicht
asuprobiert, müsste aber funktionieren.

von anfänger (Gast)


Lesenswert?

oh, hab nicht weit genug gelesen. sorry

von Dieter (Gast)


Lesenswert?

Hallo Tobi

Zeig doch mal deinen Code. Ist vielleicht nur ein Denkfehler.

MFG

Dieter

von Bernd Schmidt (Gast)


Lesenswert?

Wenn "A" als Eram deklariert wird wird immer auf dem EEprom Inhalt
zugegriffen. Wird "A" verändert ist dieser Wert auch nach dem
einschalten vorhanden.

Tücke bei Bascom: Nicht alle Funktionen laufen auch mit EEprom
Variablen. Mal Funktionierts, mal nicht, manchmal auch ohne
Fehlermeldung. Steht aber auch in der Hilfedatei.

Lösung:
EEprom Variablen beim Start in normale Variablen kopieren und damit
arbeiten. Werden die Werte der normalen Variablen geändert, so muss
auch die EEprom Variable geändert werden.

Dim EETestVar as Eram Byte  ' EEprom Variable
Dim  TestVar as byte        ' normale Var

TestVar = EETestVar   ' gespeicherten Wert kopieren

do  ' irgend was sinnvolles
  if pind.0 = 0 then  ' jetzt Wert verändern und speichern
     Incr TestVar
     EETestVar = TestVar
  Endif

loop

Bernd (gehört nicht mehr zum Programm :-)

von Mike (Gast)


Lesenswert?

wie ist es denn mit dem überschreiben von werten durch neustart?
die ersten speicherstellen des eeprom sollen beim neustart teilweise
überschrieben werden (quelle: bascombücher von C.Kühnel)- wer kennt
sich da aus?

von Bernd Schmidt (Gast)


Lesenswert?

Das erste Byte war wohl bei älteren AVR davon betroffen. Wie es mit den
MEGA aussieht weis ich nicht.

Ich benutze das erste Byte nicht.
Dim EEdummy as eram byte ' und das Problem is weg

Bernd

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.