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:
Code:
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:Wenn die Setup-Rotuine erfolgreich durchlaufen wurde, kommt folgendes:
Code:
PulseSet.0 = 1 'correct values stored in EEPROM
Soweit ist die Welt in Ordnung. Zu Beginn des Hauptprogrammes kommt dann die entscheidende Frage:
Code:
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.:
Code:
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
Lesezeichen