- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 4 von 4

Thema: I2C und 24CL256 problem mit software

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.12.2003
    Ort
    NRW / Aachen
    Alter
    38
    Beiträge
    100

    I2C und 24CL256 problem mit software

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Guten morgen,

    ich versuche nun schon seit Wochen meine Daten in den speicher zu schreiben, mitlerweile funktioniert das auch so weit. Nur leider habe ich immernoch ein großes problem und ich kann den fehler einfach nciht finden..

    Der verwendete Controller ist ein AT-Mega 32 @ 16MHz

    Ich schreibe in den Speicher pro Minute 18 Byte, aber machmal scheint er etnweder die Werte an die falsche speicherstelle zu schreiben, oder sie falsch aus zu lesen, hier das ergebinss:

    Code:
    20.5 8:33 21,0 21,5 1
    20.5 8:34 21.5 8:38 21,0 22,0 1 21,5 22,0 1
    20.5 8:36 21,0 22,0 1
    20.5 8:37 21,5 22,0 1
    20 22,0 1,0 22,5 1 22
    20.5 8:39 21,5 22,0 1
    20.5 8:40 21,5 22,0 1
    20.5 8:41 21,5 8:45 21,5 22,0 1 21,5 22,0 1
    20.5 8:43 21,5 22,0 1
    20.5 8:44 21,5 22,0 1
    20.5,0 1,0 22,5 1 22
    20.5 8:46 21,5 22,0 1
    20.5 8:47 21,5 22,0 1
    20.5 8:48 21,5 22 10,
    20.5 8:49 21,5 22,0 1
    20.5 8:50 21,5 22,0 1
    20.5 8:51 21,5 22,0 1
    Eigendlich sollten die Daten immer im Format :
    [Darum Zeit Temp1 Temp2 1] geschrieben werden.

    Aber wenn ihr auf die Uhrzeit achtet werdet ihr sehen das die Zeilen durcheinander geraten. Aber ich kann mit ncioht vorstellen das dass beim Auslesen geschiet, da ich da nur 1 mal die Adresse übertrage und dann einen "sequential read" ausführe.

    Hier einaml der code zum lesen und schreiben:

    Code:
    Writelog:
       Dim Ah As Byte
       Dim Al As Byte
       If E_adress < 32000 Then
          Ah = High(e_adress)
          Al = Low(e_adress)
          I2cstart
          I2cwbyte &B1010_1110
          I2cwbyte Ah
          I2cwbyte Al
          I2cwbyte Ff
          I2cwbyte G_dated
          I2cwbyte Pu
          I2cwbyte G_datem
          I2cwbyte Le
          I2cwbyte G_timeh
          I2cwbyte Dp
          I2cwbyte G_timem
          I2cwbyte Le
          I2cwbyte T1_t
          I2cwbyte Ko
          I2cwbyte T1_n
          I2cwbyte Le
          I2cwbyte T2_t
          I2cwbyte Ko
          I2cwbyte T2_n
          I2cwbyte Le
          I2cwbyte 1
          I2cstop
          I2cstop
          Waitms 10
          E_adress = E_adress + 18
          'Print "Daten Geschrieben bis " ; E_adress
       End If
    Return
    
    Readlog:
       Dim Ih As Byte
       Dim Il As Byte
       Dim Logcom As Byte
       Print "Lese Eeprom"
       E_adress = E_adress - 1
    
          G_i2 = 100
          Ih = High(g_i2)
          Il = Low(g_i2)
          I2cstart                                              'generate start
          I2cwbyte &B1010_1110                                  'slave adsress
          I2cwbyte Ih                                           'address of EEPROM
          I2cwbyte Il
          I2cstart                                              'repeated start
          I2cwbyte &B1010_1111
    
       For G_i = 100 To E_adress
          If G_i = E_adress Then
             I2crbyte Logcom , Nack
          Else
             I2crbyte Logcom , Ack
          End If
    
          Select Case Logcom
                Case 112 : Print
                Case 146 : Print ".";
                Case 132 : Print " ";
                Case 144 : Print ",";
                Case 158 : Print ":";
                Case Is < 100 : Print Logcom;
                Case Else : Print Logcom;
          End Select
    
       Next G_i
          I2cstop
    
       E_adress = E_adress + 1
       Print
       Print "Eeprom Gelesen"
    Return
    Ich hoffe sehr das mir einer von euch helfen kann,
    ich selbst hatte schon vermutet das eventuell bei schreiben die adresse nicht fehlerfrei übermitelt wird, aber ich weiß nicht wie ich das beheben könnte, oder überprüfen könnte.

    Danke für eure Hilfe
    Michael
    Hey klasse... du hast nen Rechtschreibfehler gefunden? Weist du was? Ich schenke ihn dir!! :]

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.12.2003
    Ort
    NRW / Aachen
    Alter
    38
    Beiträge
    100
    Hi,

    ich habe jetzt noch einmal eine logfile über einen längeren Zeitraum geschrieben... und mir sind gewisse Regelmäßigkeiten aufgefallen:

    Code:
    20.5 9:22 22,0 22,5 1
    20.5 9:23 22,0 22,5 1
    20.5 9:24 22,0 22,5 1,0 22,5 1 22,0 22,5 1
    20.5 9:26 22,0 22,5 1
    20.5 9:27 22,0 22,5 1
    20.5 9:28 22.5 9:32 22,0 22,5 1 22,0 22,5 1
    20.5 9:30 22,0 22,5 1
    20.5 9:31 22,0 22,5 1
    20 22,5 121,0 21,5 0 
    20.5 9:33 22,0 22,5 1
    20.5 9:34 22,0 22,5 1
    20.5 9:35 22,0 9:39 22,0 22,5 1 22,0 22,5 1
    20.5 9:37 22,0 22,5 1
    20.5 9:38 22,0 22,5 1
    20.5,5 121,0 21,5 0 
    20.5 9:40 22,0 22,5 1
    20.5 9:41 22,0 22,5 1
    20.5 9:42 22,0 22:12 22,0 22,5 1 22,0 22,5 1
    20.5 9:44 22,0 22,5 1
    20.5 10:11 22,0 22,5 1
    20.5 10 10000000000
    20.5 10:13 22,0 22,5 1
    20.5 10:14 22,0 22,5 1
    20.5 10:15 22,0 22,5 22,0 22,5 1 22,0 22,5 1
    20.5 10:17 22,0 22,5 1
    20.5 10:18 22,0 22,5 1
    20.5 10:190000000000
    20.5 10:20 22,0 22,5 1
    20.5 10:21 22,0 22,5 1
    20.5 10:22 22,0 22,5 1,5 17,5 1 22,0 22,5 1
    20.5 10:24 22,0 23,0 1
    20.5 10:25 14,5 12,0 1
    20.5 10:26 18.5 10:30 21,0 21,5 1 19,5 19,5 1
    20.5 10:28 20,5 20,5 1
    20.5 10:29 21,0 21,0 1
    20 22,0 10000000000
    20.5 10:31 21,5 22,0 1
    20.5 10:32 21,5 22,0 1
    20.5 10:33 21,5 10:37 22,0 22,5 1 21,5 22,5 1
    20.5 10:35 21,5 22,5 1
    20.5 10:36 22,0 22,5 1
    20.5,5 10000000000
    20.5 10:38 22,0 22,5 1
    20.5 10:39 22,0 22,5 1
    20.5 10:40 22,0 22:44 22,0 22,5 1 22,0 22,5 1
    20.5 10:42 22,0 22,5 1
    20.5 10:43 22,0 22,5 1
    20.5 10 10000000000
    20.5 10:45 22,0 22,5 1
    20.5 10:46 22,0 23,0 1
    20.5 10:47 22,0 23,0 22,0 23,0 1 22,0 23,0 1
    20.5 10:49 22,0 23,0 1
    20.5 10:50 22,0 23,0 1
    20.5 10:510000000000
    könnte es vieleicht sein das ein berechnungs fehler in high(x) und oder low(x) dafür verantwortlich ist?

    es macht den anschein als würde er beim schreiben speicherzellen überspringen => fehler in der adressierung?!
    was anderes könnte ich mir nicht mehr vorstellen,

    hat einer von euch noch eine andere möglichkeit die low und high bytes zu erzeugen?

    mfg
    michael
    Hey klasse... du hast nen Rechtschreibfehler gefunden? Weist du was? Ich schenke ihn dir!! :]

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Hi, ich hab kein Datenblatt, aber kannst du mal checken, ob die reichenfolge der addresse-> memory stimmt ?
    die schickst erst high und dann low. Is das so richtig ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.12.2003
    Ort
    NRW / Aachen
    Alter
    38
    Beiträge
    100
    Danke...

    habe den fehler schon selber gefunden


    mfg
    michael
    Hey klasse... du hast nen Rechtschreibfehler gefunden? Weist du was? Ich schenke ihn dir!! :]

Berechtigungen

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

Labornetzteil AliExpress