JL
03.11.2006, 20: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
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