PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schreiben/Lesen EEPROM Daten



JL
03.11.2006, 19:46
Hallo,

ich möchte nach dem erfolgreichen Setup eines Drehzahlstellers diese Tatsache im EEPROM speichern, so dass nach dem nächsten Einschalten die Setup-Routine nicht noch einmal durchlaufen wird.
Dazu habe ich folgendes difiniert:

dim PulseSet as eram byte 'used to store different states in EEPROM
' bit0 - 0 = no values in EEPROM
' 1 = found values in EEPROM
' bit1 - 0 = max. speed forward
' 1 = max. speed backward (inverted)
Später im Programm gibt es dann die entsprechende Initialisierung:
PulseSet = 0
Wenn die Setup-Rotuine erfolgreich durchlaufen wurde, kommt folgendes:

PulseSet.0 = 1 'correct values stored in EEPROM

Soweit ist die Welt in Ordnung. Zu Beginn des Hauptprogrammes kommt dann die entscheidende Frage:
if PulseMiddle < PulseMin or PulseMiddle > PulseMax or PulseMax < PulseMin or PulseSet.0 = 0 then
call Warning
goto Setup
endif
Falls hier die Impulslängen unsinnig sind oder eben keine Werte im EEPROM gefunden werden, soll die Setup-Routine erneut durchlaufen werden.

Und hier liegt mein Problem: Bei der angegebenen Definition startet das Programm immer mit der Setup-Routine. Der Knackpunkt liegt beim letzten Teil der if-Frage (or PulseSet.0=0); wenn ich diesen Teil lösche, klappt es. Definiere ich aber die Variable PulseSet wie gehabt und weise nur andere Werte im Verlauf des Programms zu, z.B.:
dim PulseSet as eram byte 'used to store different states in EEPROM
' 0 = no data available
' 1 = setup succesfully done
' 2 = max. speed forward
' 3 = max. speed backward (inverted)funktioniert es auch. Alternativ habe ich andere Variablennamen versucht - ohne Erfolg. Wenn ich nicht nach den Bits 0 und 1 von PulseSet frage, sondern nach den Bits 1 und 2 geht es auch.

An dieser Stelle hoffe ich, jemand kann weiterhelfen:
1. Kann ich auf die Bits einer EEPROM-Variablen zugreifen?
2. Gibt es das Bit 0 bei EEPROM-Variablen?
3. Oder was sonst könnte die Ursache sein?

Beste Grüße
Jürgen

linux_80
03.11.2006, 20:02
Hallo,
bei ERam Variablen ist es normalerweise so, das man damit nicht direkt Berechnungen durchführen kann, man muss den Wert erst einer "normalen" Variablen zuweisen, kann dann damit anstellen was man will.

Evtl. fragst du mal nicht nur das Bit0 ab, sondern das ganze Byte auf einmal ?! Weiss aber nicht ob das schon geht mit einer Eram-variablen, ansonsten eben eine normale Variable verwenden.

JL
05.11.2006, 20:31
Hallo,

nach Umstellung auf eine "normale" Variable klappt es jetzt mit der Abfrage der Bits. Ich lese dann zu Beginn den Wert aus dem EEPROM bzw. schreibe am Ende die korrekten Werte dorthin.
Besten Dank für den Tipp