-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Speichern und Lesen aus dem EEprom

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2006
    Ort
    Nidda
    Alter
    44
    Beiträge
    180

    Speichern und Lesen aus dem EEprom

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,

    ich habe bisher nie mit den Daten im EEprom gearbeitet.
    Jetzt möchte ich darin div. Daten wie Zeiten und ID speichern und diese auch nach neueinspielen eines Programms beibehalten.

    Zum Testen habe ich folgendes Programm geschrieben:

    Code:
    $regfile = "m8def.dat"
    $crystal = 7372800
    $baud = 9600
    
    
    Dim Id As String * 10
    Dim Idram As Eram String * 10
    Dim Ids As String * 10
    
    
    Print "Schreiben"
    
    Id = "test 10"
    Idram = Id
    
    
    Writeeeprom Id , &H10
    
    
    Print "Lesen"
    
    
    
    
    Readeeprom Ids , &H10
    
    
    Print Ids
    
    End
    Soweit o.k. Nach dem Start wird mir Ids angezeigt.


    Jetzt spiele ich ein neues Programm ein und lese den Speicher aus:

    Code:
    $regfile = "m8def.dat"
    $crystal = 7372800
    $baud = 9600
    
    
    Dim Id As String * 10
    Dim Idram As Eram String * 10
    
    
    
    Print "Lesen"
    
    
    
    Readeeprom Id , &H10
    
    
    Print Id
    
    End
    Als Ergebnis erhalte ich nur yyyyyyyyyy mit je zwei Punkten über den y.

    Was mache ich falsch?

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Das heisst normal, dass das EEprom auch gelöscht wurde als der Flash mit dem neuen Programm beschrieben wurde, bzw. deswegen vorher gelöscht wurde.
    Dieses y ist das Zeichen für FF !
    Evtl. musst Du das Fusebit umstellen, das der EEprom nicht gelöscht wird beim Flash löschen !

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2006
    Ort
    Nidda
    Alter
    44
    Beiträge
    180
    danke für den Tip!

    Leider ist das nicht der Grund. Ich habe das Bit EESAVE gesetzt und nicht gesetzt.
    Es ändert sich nichts!
    Ist es möglich dass noch ein weiteres Bit gesetzt werden muss?

    In PonyProg habe ich den Haken bei
    BOOTSZ1, BOOTSZ0 und SUTO gesetzt.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.02.2005
    Ort
    Hannover
    Beiträge
    174
    Hi,
    kann es vielleicht sein, dass Bascom eine neue Speicherstelle für die Variable generiert und so die alten Werte nicht mehr ausgelesen werden können?

    MfG Jörn

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2006
    Ort
    Nidda
    Alter
    44
    Beiträge
    180
    wie kann ich das ändern?
    Die Speicherstelle ist doch vorgegeben

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Das ändert sich dann, wenn im Programm an der Reihenfolge der Variablendeklaration was geändert wird.
    Fest vorgegeben ist da mit dem normalen DIM nichts; die werden normal in der Reihenfolge abgelegt, wie sie im Programm stehen.

    Mit "DIM Variable AS Typ AT Adresse" kann man mit 'Adresse' ne feste position erzwingen.
    Welche Adresse man da braucht, müsste sich bei der noch "normalen" Deklaration im Programm mit VarPtr() rausfinden lassen.
    #ifndef MfG
    #define MfG

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2006
    Ort
    Nidda
    Alter
    44
    Beiträge
    180
    ich habe zwischenzeitlich ein bisschen im Forum gestöbert.
    Offensichtlich muss mann bei der Wahl der Speicheradresse einen Bereich weiter hinten wählen.
    Die Adresse &H10 ist wohl sehr ungünstig. Weis jemand welcher Bereich "sicher" ist?

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    Du musst ins DB Deines AVR schauen wo das SRAM beginnt, meist &H60, bei grösseren und neueren AVR &H100, das ist dann die kleinste Adresse die man verwenden kann. Das EEprom geht bei 0 an.
    Und nach dem Compilieren in die Reportdatei sehen (Ctrl+W) ob alles mit den Adressen glatt gegangen ist.

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2006
    Ort
    Nidda
    Alter
    44
    Beiträge
    180
    Danke!

    Habs zwichenzeitlich rausbekommen. Ich habe jedesmal in Ponyprog das gesamte Programm inkl. EEProm File am Ende übertragen und damit die Daten im EEPROM überschrieben

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.07.2008
    Ort
    NRW
    Alter
    45
    Beiträge
    169
    Dazu hätt ich mal ne Frage ...

    In Deinem Code oben benutzt Du "Dim Idram As Eram String * 10" und

    Id = "test 10"
    Idram = Id
    Writeeeprom Id , &H10

    So wie ich das verstanden habe, hast Du doch schon mit idram=id den Wert ins eeprom geschrieben, dann braucht man doch den writeeeprom Befehl gar nicht mehr oder ??? Oder aber das ist die Lösung für mein Problem das keine Daten ins EEprom geschrieben werden

    Jens

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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