- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 3 von 3

Thema: Schreiben/Lesen EEPROM Daten

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    02.07.2004
    Ort
    42277 Wuppertal
    Beiträge
    5

    Schreiben/Lesen EEPROM Daten

    Anzeige

    LiFePo4 Akku selber bauen - Video
    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:
    Code:
    PulseSet = 0
    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

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    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.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    02.07.2004
    Ort
    42277 Wuppertal
    Beiträge
    5
    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
    Beste Grüße
    Jürgen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress