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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.