-         

Ergebnis 1 bis 3 von 3

Thema: I2C Eeprom 24c256 auslesen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    13.03.2006
    Beiträge
    7

    I2C Eeprom 24c256 auslesen

    Anzeige

    Hallo Leute,

    nachdem ich hier so ziemlich alle threats durch habe was das Thema Eeprom an I2C betrifft und keine Lösung dabei war, sei eine Frage gestattet.

    Ich würde gerne in einen M24256 von ST schreiben und wieder lesen.
    Das Programm dazu ist soweit auch OK denk ich. Nachdem aber beim auslesen immer wieder nur 255 als Wert zu lesen war hab ich mal den LogicAnalyser an den Bus geklemmt und folgendes gesehen.
    Das beschreiben scheint richtig ab zu laufen.
    aber das lesen :
    I2C Start ist OK
    I2C Adresse write wird gesendet (1010000) mit ACK bestätigt
    I2C Eepromadresse High wird gesendet mit ACK bestätigt
    I2C Eepromadresse low wird gesendet mit ACK bestätigt
    I2C Start (der zweit) ist OK
    nun das Fragezeichen:
    I2C Adresse read wird um ein Bit verschoben (01010000) gesendet
    der Rest Eeprom High/Low auch somit geht der Speicher wieder in Stand-by.

    Hat jemand so etwas schon mal gehabt ?

    Ich hab schon andere Pins genommen,Speicher getauscht, Pullups überprüft, Bascom Configuration geprüft etc. alle OK.
    Der Speicher hat übrigens die feste Adresse 160.

    Ich wäre für einen kleinen Wink echt dankbar.

    Gruß Verri

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    Das shiften der Adresse ist falsch.
    Also schreiben:

    I2cstart 'start condition
    I2cwbyte Addresswrite 'slave address
    I2cwbyte Adresshbyte 'asdress H of EEPROM
    I2cwbyte Adresslbyte 'asdress L of EEPROM
    I2cwbyte Value 'value to write
    I2cstop 'stop condition
    Waitms 10 'wait for 10 milliseconds

    lesen:
    I2cstart 'generate start
    I2cwbyte Addressw 'slave adsress
    I2cwbyte Adresshbyte 'asdress H of EEPROM
    I2cwbyte Adresslbyte 'asdress L of EEPROM
    I2cstart 'repeated start
    I2cwbyte Addressread 'slave address (read)
    I2crbyte Value , Nack 'read byte
    I2cstop 'generate stop


    Die Adresse für schreiben und lesen unterscheidet sich lediglich im ersten Bit, also Bit 0. Steht aber auch im Datenblatt.
    Der I2cstart kann auch als I2crestart ausgeführt werden, also erst Stop, dann startkondition
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    13.03.2006
    Beiträge
    7
    @Vitis

    Danke für die Hilfe, auch wenn Sie ehr indirekter Art war.
    Dein Tips hatte ich so in der Form schon durch. Aber Das hat mich darauf gebracht noch einmal genauer hin zu schauen und zwei Fehler zu finden.
    Der erste war der stop vor dem repeatet Start. Das mag der Eeprom nicht.
    Der zweite ist viel interessanter. Die I2C Auswerung von meinem LogicAnalyser hat'n klatsch. Denn Der Fehler in der Anwendung ist weg aber der Analyser zeigt immer noch eine Falsche Adresse.

    Vielen Dank !

Berechtigungen

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