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
Sollte eigentlich problemlos funktionieren! Wie groß sind deine Pullup-Widerstände an Daten- und Taktleitung?
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.
Die physikalische Adressen des 24LC1025 beträgt A4 und es funktioniert ja auch. Die Memory adresse hat ja nichts mit der physikalischen zu tun!!
Miene Pullup-Widerstände betragen 10k, habe es aber auch schon mit 7k5 auch schon probiert
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...
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.
Adressiert ist es richtig, denn wenn ich den PCF bzw. den EEPROM ausbaue, funktioniert der jeweils andere Baustein.
Laut Figure 5-1 ergibt die Adresse 10100100 -> 0xA4 Der EEPROM funktioniert nur alleine ohne PCF die leitungen sind sehr kurz und ich habe bis jetzt immer 10k Widerstände verwendet, jedoch werde ich 4k7 auch versuchen
Georg I. schrieb: > Adressiert ist es richtig, denn wenn ich den PCF bzw. den EEPROM > ausbaue, funktioniert der jeweils andere Baustein. > dann zeige doch endlich mal dein Programm!
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);
Wie werden hier I2C-Fehler bearbeitet, z.B. NACKs?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.