- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 6 von 6

Thema: eeprom 24lc64 als speicher für temperaturen von ds1621

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    06.01.2007
    Beiträge
    52

    eeprom 24lc64 als speicher für temperaturen von ds1621

    Guten morgen.
    Bin gerade dabei einen Temperaturlogger zu bauen mit oben gennanten bausteinen (plus atmega8 und max232). Das ding soll temperaturen speichern und dann vom computer aus mittels einem Programm in VBA direkt in Excel eingetragen werden.
    Mein Problem ist nur, so leid es mir tut, die addressierung des eeproms. Schreiben und lesen ist alles kein problem nur wenn ich mit dem unten gennanten Code arbeite, sollten ja alle werte von 1 bis 300 ins eeprom geschrieben werden und danach wieder die gleichen werte ausgelesen werden.
    Nur krieg ich werte bis 255 also wenn ein byte zuende ist und dann wieder von null angefangend(siehe 24CL64.LOG)
    Muss man das mit diesem overlay machen, weil ich da noch nciht so recht durchsteige oder geht das auch einfacher. Hab nämlich im Forum viele Beiträge gesehen wo es ähnlich gemacht wurde wie bei mir.
    Vielleicht kann mir jemand helfen.
    Dank im Vorraus und nen guten Rutsch
    Bastian 07

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    $baud = 9600
    
    
    Config Sda = Portc.4
    Config Scl = Portc.5
    
    I2cinit
    
    Dim Lesen As Byte
    Dim Wert As Integer
    Dim Address As Word
    Dim Speicher_addresse_high As Byte
    Dim Speicher_addresse_low As Byte
    
    Declare Sub Eeprom_write(address As Word , Wert As Integer)
    Declare Sub Eeprom_read(address As Word)
    
    
    
    For Address = 1 To 300
       Incr Wert
          Call Eeprom_write(address , Wert)
       Waitms 10
    Next Address
    
    
    
    For Address = 1 To 300
       Call Eeprom_read(address)
          Print "Lese  EEprom= " ; Lesen ; " Bei Adresse: " ; Address
             Waitms 10
    Next Address
    
    
    End
    
    Sub Eeprom_write(byval Address As Word , Wert As Integer)
    
       Speicher_addresse_high = High(address)
       Speicher_addresse_low = Low(address)
    
          I2cstart                                              'Start I2C
          I2cwbyte &HA0                                         'Sende Slave Adresse
          I2cwbyte Speicher_addresse_high                       'Sende Speicheradresse High
          I2cwbyte Speicher_addresse_low                        'Sende Speicheradresse LOw
          I2cwbyte Wert                                         'Sende Wert
             If Err = 0 Then
                Print "ins EEprom = " ; Wert ; " Bei Adresse: " ; Address
             Else
                 Print "Fehler beim schreiben"
              End If
          I2cstop
    End Sub
    
    Sub Eeprom_read(byval Address As Word)
       Speicher_addresse_high = High(address)
       Speicher_addresse_low = Low(address)
          I2cstart                                              'Start I2C
          I2cwbyte &B10100000                                   'sende Slave Adresse
          I2cwbyte Speicher_addresse_high                       'Sende Speicheradresse High
          I2cwbyte Speicher_addresse_low                        'sende Speicheradresse
    
          I2cstart                                              'Start I2C
          I2cwbyte &B10100001                                   'sende Slave Adresse +1 für Lesen
          I2crbyte Lesen , Nack                                 'lese Adresse vom EEprom
          I2cstop                                               'Stop I2C
    End Sub
    Angehängte Dateien Angehängte Dateien

Berechtigungen

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

Labornetzteil AliExpress