- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 7 von 7

Thema: Data und EEprom

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    51
    Beiträge
    128

    Data und EEprom

    Anzeige

    Powerstation Test
    Hallo zusammen,

    ich möchte mich in die Tabellen und das EEProm Speichern einarbeiten und habe das angehängte Programm geschrieben.

    Nun habe ich ein paar Fragen (weils nicht klappt wie ich gedacht habe)

    Das Einlesen der Tabelle klappt soweit.
    Wieso kommt beim EEprom Lesen statt dem Stringwert immer ein "yyyyyyyyyy12:00:00" raus? Das selbe gilt auch für die Beschreibung!
    Wieso werden die beiden Bytewerte immer mit 255 ausgegeben?

    Um den Speicher optimal auszunutzen möchte ich gerne wissen welche Bereiche, also Speicheradressen, ich für meine Strings und Bytes vorsehen muss.

    Danke für eure Unterstützung!

    Code:
    $regfile = "m8def.dat"
    $crystal = 4000000
    $baud = 19200
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    
    
    Dim I As Byte
    
    Dim Zeit(20) As String * 8
    Dim Modul(20) As Byte
    Dim Befehl(20) As Byte
    Dim Beschreibung(20) As String * 20
    
    
    
    'Daten aus Data einlesen
    
    Restore Datax
    For I = 1 To 4
    Read Zeit(i) : Print Zeit(i)
    Read Modul(i) : Print Modul(i)
    Read Befehl(i) : Print Befehl(i)
    Read Beschreibung(i) : Print Beschreibung(i)
    Next
    
    
    
    'Erste Zeile in EEProm speichern
    
    Writeeeprom Zeit(1) ; &H100
    Writeeeprom Modul(1) ; &H110
    Writeeeprom Befehl(1) ; &H120
    Writeeeprom Beschreibung(1) ; &H130
    
    
    ' Aus EEprom auslesen
    
    Readeeprom Zeit(1) ; &H100
    Readeeprom Modul(1) ; &H110
    Readeeprom Befehl(1) ; &H120
    Readeeprom Beschreibung(1) ; &H130
    
    
    ' EEProm Daten ausgeben
    
    Print "EEprom"
    
    Print Zeit(1)
    Print Modul(1)
    Print Befehl(1)
    Print Beschreibung(1)
    
    
    End
    
    
    
    Datax:
    
    Data "12:00:00" , 130 , 201 , "licht Ein"
    Data "12:05:00" , 130 , 202 , "licht Aus"
    Data "13:00:00" , 140 , 201 , "steckdose Ein"
    Data "15:00:00" , 140 , 202 , "steckdose Aus"

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von Duesentrieb Beitrag anzeigen
    Writeeeprom Zeit(1) ; &H100
    Readeeprom Zeit(1) ; &H100
    Ersetze mal die ";" durch "," und schau mal, was dann passiert. Siehe auch in der Hilfe.
    Das was hinter dem Semikolon steht wird ignoriert, sodass alles hintereinander im EEPROM landet. Weil das beim Einlesen auch wieder passiert, schaut es so aus, als wäre es in Ordnung.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    51
    Beiträge
    128
    Super, da habe ich mich wohl verlesen. Die Speichadressierung habe ich jetzt auch verstanden.

    Nun habe ich noch eine Frage!

    Ist es möglich eine Staradresse vor zu geben und dann die Daten hinteieinader weg zu schreiben?
    Beispiel:
    Dim Zeit(20) As String * 8
    Dim Modul(20) As Byte
    Dim Befehl(20) As Byte
    Dim Beschreibung(20) As String * 5

    Die Startadresse ist die &H000 für die ersten Daten: Zeit - Modul - Befehl - Beschreibung
    Der nächste soll jetzt bei Adresse &H100 landen u.s.w.

    Dazu müsste ich die Hex-Adresse aus meinem Beispiel hochzählen

    for i = 1 to 20
    Writeeeprom Zeit(i) , &H000
    Writeeeprom Modul(i) , &H009
    Writeeeprom Befehl(i) , &H00A
    Writeeeprom Beschreibung(i) , &H00B
    next

    Wie geht das?

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von Duesentrieb Beitrag anzeigen
    Wie geht das?
    Z.B. so:
    Code:
    Dim Zeit(20) As String * 8
    Dim Modul(20) As Byte
    Dim Befehl(20) As Byte
    Dim Beschreibung(20) As String * 20
    Dim Adresse As Word
    Adresse = 1                     'Adresse 0 lässt man wegen Überschreibproblemen aus
    for i = 1 to 20
       Writeeeprom Zeit(i) , Adresse : Adresse = Adresse + 9            '8 + 1 Byte
       Writeeeprom Modul(i) , Adresse : Adresse = Adresse + 1           '1 Byte
       Writeeeprom Befehl(i) , Adresse : Adresse = Adresse + 1          '1 Byte
       Writeeeprom Beschreibung(i) , Adresse : Adresse = Adresse + 21   '20 +1 Byte
    Next

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    51
    Beiträge
    128
    Danke! Jetzt kann ich gut weiter experimentieren

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Und denke dran, dass du das EEPROM nur eine begrenzte Anzahl mal beschreiben kannst. In einer falsch programmierten Schleife kann das sehr schnell gehen.
    Im Simulator kannst du die Schreib- und Lesevorgänge im EEPROM übrigens auch sehr gut testen.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    51
    Beiträge
    128
    Ja, danke für den Hinweis.
    Ich hab noch nicht mit der Hardware begonnen.

Ähnliche Themen

  1. Ist DATA echt?
    Von LisasFan im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 5
    Letzter Beitrag: 19.05.2009, 15:54
  2. Modellhelikopter - Data Transceiver und A/V
    Von Händler im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 26.01.2009, 23:53
  3. Data, EEprom und Burn-O-Mat
    Von Lord_Vader im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 05.12.2008, 11:36
  4. Maus data!?
    Von Dr.Gonzo im Forum Sensoren / Sensorik
    Antworten: 11
    Letzter Beitrag: 25.06.2007, 08:12
  5. Problem mit Data-Zeilen
    Von Mr-400-Volt im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 17.12.2006, 18:11

Berechtigungen

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

Solar Speicher und Akkus Tests