PIC 18f2550 und I2C EEPROM

Gast #2401591
Lesenswert?
• ▲
▼
Hallo Gemeinde,

wie schon im Titel ersichtlich möchte ich gern mit einem PIC 18f2550 in 
einen EEPROM schreiben und auch wieder aus ihm lesen und das über den 
I2C Bus

Zu den Daten:

µC PIC: 18f2550
EEPROM: 24AA 1025 I/P
Compiler: C18


Verwendeter Code:

Schreiben:
1
   
2
OpenI2C(MASTER, SLEW_ON);
3
SSPADD = 9;
4
IdleI2C();              
5
StartI2C();             //I2C starten
6
WriteI2C(0xA6);         //Controllbyte
7
EEAckPolling(0xA6);
8
WriteI2C(0x00)          //Highteil der Speicher-Addresse
9
EEAckPolling(0xA6);
10
WriteI2C(0x00)          //Lowteil der Speicher-Addresse
11
EEAckPolling(0xA6);
12
WriteI2C(0x05))         //Daten
13
EEAckPolling(0xA6);
14
StopI2C();              //I2C Stop

Lesen:
1
OpenI2C(MASTER, SLEW_ON);    // Initialize I2C module
2
SSPADD = 9; 
3
IdleI2C();
4
StartI2C();                 //I2C starten
5
WriteI2C(0xA6);      //Controllbyte
6
EEAckPolling(0xA6);
7
WriteI2C(0x00;      //Highteil der Speicher-Addresse
8
EEAckPolling(0xA6);
9
WriteI2C(0x00);      //Lowteil der Speicher-Addresse
10
EEAckPolling(0xA6);
11
IdleI2C();
12
StartI2C();                        //I2C starten
13
ToSendDataBuffer[1] = ReadI2C();   //Daten auslesen
14
EEAckPolling(0xA6);
15
StopI2C();                       //I2C Stop

Das Problem ist, dass ich immer 0xff im ToSendDataBuffer[1] stehen habe.
Ich verstehe auch das diagramm für das lesen nicht ganz da nach dem 
zweiten StartI2C noch ein Controllbyte eingezeichnet ist dass ich aber 
werder senden noch empfangen kann ohne dass sich der µc aufhängt.

Ich kenne auch die I2C EEPROM Funktionen aus der C18 lib nur sind die 
nicht für EEPROMs mit mehr als einem Adressbyte.

Das WriteProtectionPin ist richtig angeschlossen und die beiden 
Adresspins sind auf + angeschlossen.

Ich bin um jede Hilfe dankbar.
Angehängte Dateien:
Gast #2402119
Lesenswert?
• ▲
▼
>ich kenne die Seite von Sprut aber ich kann dort keine Antwort auf mein
>Problem finden

EEAckPolling(0xA6); macht nicht das was du denkst.
Das hat in deinem Program so wie von dir verwendet
nichts zu suchen.

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.