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







Zitieren

Lesezeichen