I2C - EEPROM 24C128 - SSPBUF immer WRITE-Addresse

OP Persönliche Seite #1011411
Lesenswert?

Hallo zusammen,

ich habe ein Problem mit dem Beschreiben und Lesen eines I2C-EEPROMs.
Im Anhang habe ich mal den Test-Code eingefügt.

Ich schreibe zuerst die ersten 10 Speicher-Adressen des EEPROMs voll und 
möchte sie dann wieder auslesen und auf einem LCD-Display ausgeben.
Das Ausgeben auf dem Display ist ja kein Problem. Leider wird dort immer 
die "Schreib-Adresse" (0xA1 bzw. 161d) ausgegeben wird.

Kann mir jemand einen Tipp geben wo das Problem liegt?

Danke schonmal,
 Gruß
 Tobias
Angehängte Dateien:
OP Persönliche Seite #1018713
Lesenswert?

Hallo,
ich habe es gerade noch einmal getestet.
1
TRISC3=1;           // set SCL and SDA pins as inputs
2
TRISC4=1;
3
SSPADD = 9;            // 400k at 16Mhz clock
4
SSPCON = 0b00001000;      // set I2C master mode
5
SSPEN = 1; //MSSP-Modul enable
6

7
SSPIF = 0; // Interrupt-Flag löschen
8
SEN=1; // Bus-Übernahme anweisen
9
while(!SSPIF); // Solange warten bis SSPIF gesetzt wurde
10
SSPIF = 0; // manuelles rücksetzen

im oberen Teil richte ich den PIC als Master ein.
Im Unteren Teil warte ich nur darauf, dass der PIC den Bus übernimmt.
Er bleibt aber immer in der while-schleife (while(!SSPIF)) hängen.
Warum?
Wenn ich anweise den Bus zu übernehmen (mit SEN=1) müsste dann nach der 
Übernahme das Flag SSPIF gesetzt werden. (GIE ist 1)

Kann mir da jemand helfen?
Hat jemand vielleicht ein Beispiel-Programm für Hardware-i2c mit Pic in 
C ?

Ich versuche das nun seit 2 Wochen! Das ist echt deprimierend.

Danke & Gruß,
 Tobias
(Firma: Promaxx.net) #1247186
Lesenswert?

Ich habe den ganzen Quatsch schon länger in PicBasic laufen...

Du erwähnst extra, daß GIE=1 ist. Hast Du den SSPIE auch enabled ? Hast 
Du noch eine Interrupt-Service-Routine, die den SSPIF löscht (bevor die 
While-Schleife es merkt) ?

Hast Du die SDA- und SCK-Leitung mit einem Pull-Up-Widerstand versehen ?

Sieh Dir mal das Status-Bit BCLIF an. Viel mehr kann bei einer 
Start-Condition nicht schief gehen.

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