-
        

Ergebnis 1 bis 8 von 8

Thema: 24C02 EEPROM - tatschlich Speichergre?

  1. #1
    Neuer Benutzer fters hier
    Registriert seit
    28.04.2005
    Ort
    Sddeutschland
    Alter
    29
    Beitrge
    13

    24C02 EEPROM - tatschlich Speichergre?

    Anzeige

    Guten Tag,

    Ich benutze einen 24L02 EEPROM um die Daten von einem LM75 zu speichern. Das funktioniert auch wunderbar, nur irgendwie erschliet sich mir die speicherbare Datenmenge nicht so wirklich. Der IC ist mit 2 Kbit Speicher ausgestattet, was ja 256 Byte entsprechen sollten, richtig? Vom LM75 erhalte ich fr Temperatur und Nachkommastelle zusammen 2 Byte, d.h. ich drfte auf dem EEPROM maximal 128 Datenstze speichern knnen. Tatschlich kann ich aber exakt 250 Datenstze speichern. Warum ist das so?

    Gre

    Marc

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    53
    Beitrge
    1.080
    Tja, was soll man sagen? Irgendwo muss der Fehler stecken, und das dein 24L02 doppel soviel Kapazitt hat wie angegeben, ist unwahrscheinlich

    Ich vermute daher, das du zwar fleissig speichern kannst, davon aber nur jeweile 1 Byte gesichert wird und das zweite Byte vom nachfolgenden Satz wieder berschrieben wird. ... oder sowas in der Art.

    Das LM75 gibt die Temperatur als 9 Bit aus, also eigentlich viel genauer, als es diese berhaupt messen kann. (+-2-3 Grad lt. Datenblatt). Eigentlich mte es doch sowieso gengen, die oberen 8 Bit als ein Byte zu sichern. (hab das Datenblatt des LM75 nur mal kurz berflogen, also nicht hauen, wenn ich Schnulli geschrieben hab^^)

    Gru MeckPommER
    Mein Hexapod im Detail auf www.vreal.de

  3. #3
    Neuer Benutzer fters hier
    Registriert seit
    28.04.2005
    Ort
    Sddeutschland
    Alter
    29
    Beitrge
    13
    Hallo MeckPommER,

    "leider" fehlen beim Abfragen der Daten keine Informationen, d.h. ein berschreiben ist ausgeschlossen. Das Highbyte des LM75 gibt die Temperatur in ganzen Grad an, das 7. Bit des Lowbyte ist fr die Nachkommastelle zustndig. Ist es 1, gibt's ne ",5", ansonsten nicht. Da ich die Bytes dann per IC weiterschicke, sollte doch jeweils ein Byte "verschwendet" werden, auch wenn eigentlich kein ganzes Byte ntig wre (Bsp: Temperatur ist 25, was 11001 enstpricht, und somit 3 Bits brig wren). Oder wird da aufgefllt? Dann knnte ich es mir das durchaus vorstellen. Dagegen spricht aber, dass beim wiederauslesen per IC keine Daten durcheinandergeworfen sind, d.h. die Daten mssen wohl Byteweise ankommen, wrden die Bytes beim schreiben aufgefllt msste doch nichts gescheites dabei rauskommen, oder? Schon seltsam die ganze Sache, irgendwo ist da ein Denkfehler begraben....

    Gru

    Marc

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    30
    Beitrge
    1.221
    Hi Marc,

    Du knntest ja einmal versuchen, ein bestimmtes Muster auf den EEPROM zu "brennen", z. Bsp ein uint8_t hochzhlen und draufschreiben.
    Wenn du dann die komplette Folge wieder auslesen kannst, hast du einen Zauber-EEPROM, ansonsten ein Problem.

    mfG
    Markus

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    1229 O, 4838 N
    Alter
    48
    Beitrge
    2.731
    Hallo,

    Du knntest uns ja mal zeigen wie Du die Adresse im EEprom berechnest, dann sehen wir gleich wo der Zusatzspeicher herkommt.

  6. #6
    Neuer Benutzer fters hier
    Registriert seit
    28.04.2005
    Ort
    Sddeutschland
    Alter
    29
    Beitrge
    13
    Guten Abend,

    Code:
      
    (...)
     I2cstart
       I2cwbyte Lm75slaveread
       I2crbyte Lm75high , Ack
       I2crbyte Lm75low , Nack
       I2cstop
    
       If Lm75high > 127 Then
          Temperatur = Lm75high And 127
          Temperatur = Not Temperatur
          Incr Temperatur
       Else
          Temperatur = Lm75high
       End If
    
    
    If A <= 250 Then
       I2cstart
       I2cwbyte Eepromw
       I2cwbyte A
       I2cwbyte Temperatur
       I2cwbyte Lm75low
       I2cstop
    End If
    A = A + 2
    (...)
    Dass A <= 250 sein muss habe ich durch einfaches trial and error rausgefunden, wenn A 251 wird kommt es zum berlauf. Spter im Programm geb ich das Ergebnis noch per UART aus, deshalb kann ich das sagen und nachvollziehen. Mit Lm75low lese ich die Nachkommastelle aus und speichere sie direkt ins EEPROM, die Umwandlung in den ",5" String erfolgt erst anschlieend, nachdem ich die Daten wiederausgelesen hab, tut also nichts zur Sache. Die Anweisung A = A + 2 selbstverstndlich deshalb, weil ich zwei Bytes schreibe.

    Wie gesagt, das ganze funktioniert einwandfrei, nur steig ich nicht hinter die Datenmenge. Eigentlich knnte mir das solange es funktioniert ja egal sein, nur macht es die ganze Sache nicht mehr berechenbar. Und bei einem spteren 256 Kbit Speicher ist ausprobieren langwierig und nicht gerade der Lebensdauer frderlich....

    Gre

    Marc

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    1229 O, 4838 N
    Alter
    48
    Beitrge
    2.731
    Das mit dem 250 weiss ich jetzt auch ned,
    in den 02 passen normal 256 Bytes,
    Du zhlst bei der Adresse immer +2,
    also sinds bei Dir 250/2, kommt auf so ca. 125 !

  8. #8
    Neuer Benutzer fters hier
    Registriert seit
    28.04.2005
    Ort
    Sddeutschland
    Alter
    29
    Beitrge
    13
    klingt in der Tat logisch, damit wr wohl der grte Teil des Denkfehlers ausgebuddelt Jetzt wre nur noch interessant zu wissen warum ich nur bis 250 und nicht bis 256 (bzw. 255 wenn ich bei 0 Anfange) komme.

    Dennoch Danke schonmal!

    Marc

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhnge hochladen: Nein
  • Beitrge bearbeiten: Nein
  •