PCF8583 mit 24LC1025 über I²C Kompatibilitätsprobleme

OP #3286059
Lesenswert?

Hallo,

Ich würde gerne einen Datenlogger zusammenbauen, welcher Daten mit einem 
Uhrzeitstempel in ein exteres EEPROM abspeicehrt. Dazu würde ich gerne 
mit Hilfe eines PIC und PCF8583 Daten auf den 24LC1025 speichern 
(kommunikation ist I²C).

Meine ersten Versuche den PCF8583 mit der Adresse 0xA0 und den 24LC1025 
mit der Adrese 0xA4 getrennt anzusprechen (zwei eigene Schaltungen) 
funktionierten einwandfrei.Jedoch wenn ich beide in eine gemeinsame 
Schltung gebe, kann ich den 24LC1025 nicht richtig auslesen. Ich erhalte 
beim Auslesen des EEPROMs immer dern Wert 255.

Kann es sein, dass man diese zwei Bausteine nicht zusammen verwenden 
kann?

vielen Dank für eure Hilfestellung
Gast #3286074
Lesenswert?

Schaltplan? Wie sind die Adresspins des 24LC1025 verschaltet?
24LC1025 auf Adresse A4 heißt oberer Block des Memory-Arrays und 
A0=A1=Low?
Wie willst Du dann den unteren Block des Chips ansprechen, dessen 
Adresse beißt sich dann mit dem PCF.
Gast #3286134
Lesenswert?

Bekommst Du ein ACK vom 24LC1025?
Bist Du sicher, daß Du es auf der richtigen I2C-SlaveAdresse ansprichst?
Funktiert es, wenn der PCF ausgebaut ist?

Du kannst auch mal in einer Schleife nach den vorhandenen I2C-Slaves 
suchen, d.h. einfach alle Slave-Adressen durchtingeln und schauen, wer 
sich mit ACK meldet...
Gast #3286146
Lesenswert?

Georg I. schrieb:
> Die physikalische Adressen des 24LC1025 beträgt A4

Dann hast Du das Datenblatt nicht richtig verstanden.
Bitte Kapitel 5 lesen, speziell Figure 5-1.

> und es funktioniert ja auch.

Warum rufst Du hier dann um Hilfe?

> Die Memory adresse hat ja nichts mit der physikalischen zu tun!!

So ? Das Datenblatt behauptet das Gegenteil. S.O.

Als Pullups sind Werte <= 4.7k zu empfehlen, es seidenn die 
Leitungslängen sind wirklich sehr, sehr kurz.
OP #3286185
Lesenswert?

Adressierung für EEPROM:
schreiben:
  i2c_start();
  i2c_write(0xA4);
  i2c_write(1);
  i2c_write(1);
  i2c_write(50);        //Wert 50 wird abgespeichert
  i2c_stop();
lesen:
    i2c_start();
    i2c_write(0xA4);
    i2c_write(1);
    i2c_write(1);
    i2c_start();
    i2c_write(0xA5);
    x = i2c_read(0);
    i2c_stop();

Adressierung für PCF:
schreiben:
  i2c_start();
  i2c_write(0xA0);
  i2c_write(0x01);
  i2c_write(hs_set);
  i2c_stop();
lesen:
    i2c_start();
    i2c_write(0xA0);
    i2c_write(0x01);
    i2c_start();
    i2c_write(0xA1);
    hs_hex = i2c_read(0);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren