Hallo, ich hoffe einer kann mir helfen. Ich habe folgendes Problem: Ich will ein EEprom auslesen. Hierzu benutze ich einen 80C51 mit Ausgangsleitungen. P1.1 für SCL P1.2 für SDA. Protokoll sind folgend aus. Start Bedingung Senden con DEVICE ADRESSE 10100000B - Schreiben ACK kommt dann Word Adresse Start Bedingung DEVICE ADRESSE 10100001B - lesen ACK kommt. Jetzt setze ich die Leitung DATEN auf High, damit eine 0 den SDA Bus runter ziehen kann. Nach 8 x TAKTEN kommt ein NO ACK vom MAster. Stop Bedingung Eigentlich sollte ich die erste Adresse Inhalt Daten gelesen haben. leider tut sich nichts. Ich habe festgestellt das nach ca. 8-10 Durchgängen manchmal ein Ergebnis da ist. Ich beobachte das auf dem Oszi, als ich die SDA Leitung angeschaut habe. Getriggert habe ich auf die Startbedingung Devive Adress lesen. Das Protokoll scheint i.o. zu sein. Bei Low Takt der SDA wechsel, bei High Daten sind stabil. Meine Taktfrequenz liegt bei 50us. Soll später schneller werden. Kann mir bitte jemand sagen was ich falsch mache. Gruss Jürgen PS: Es ist ein EEprom 24LC16BT
Hallo jürgen! Ich hab mal unten kommentiert. Hatte auch lang Probleme mit manchen Bedingungen im I2C-Bus (PCF 8574 und m242456-32KByte EERPOM benötigen unterschiedliches Master-ACK). Wenns nicht weiter hilft, dann schau mal nochmal ins Datenblatt und in die I2C-Bus-Spezifikation von Philips. #Start Bedingung >OK #Senden con DEVICE ADRESSE 10100000B - Schreiben >OK #ACK kommt >OK #dann Word Adresse >OK #Start Bedingung > Achte darauf, dass du den I2C-Bus vorher wieder frei gibst, damit erneute Start-Bedingung erfolgen kann. #DEVICE ADRESSE 10100001B - lesen >OK #ACK kommt. > OK #Jetzt setze ich die Leitung DATEN auf High, damit eine 0 den SDA Bus runter ziehen kann. > falsch: SCL auf High, Bit von SDA einlesen (mov c,SDA), SCL wieder LOW. C (carry) sichern (rlc a). Das ganze acht mal. #Nach 8 x TAKTEN kommt ein NO ACK vom MAster. > OK #Stop Bedingung > OK Oder mail mich mal an, habe fertige I2c-Routinen abgestimmt auf 100 KHz Busfrequenz mit 8051. Gruß, hoschi
Hier findest Du meinen funktionierenden Code: http://www.specs.de/users/danni/appl/hard/i2c/index.htm Peter
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.