I2C Problem beim Lesen vom Slave
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  CCS Compiler  |  Schnittstellen (CCS)  |  I2C Problem beim Lesen vom Slave « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: I2C Problem beim Lesen vom Slave  (Gelesen 843 mal)
 
Holgi
Jr. Member
**
Offline Offline

Beiträge: 53


Profil anzeigen WWW
« am: Juni 10, 2011, 18:45:18 »

Hallo,
ich verzweifle seit mehreren Tagen (Wochen) an einer I2C Verbindung zwischen 2 PICs.

Master 18F4455
20MHz, PLL für USB, 96MHz/2 also 48MHz
I2C Master in C18, mit I2C EEprom lesen und schreiben getestet, ok, alle Geschwindigkeiten


Slave 18F2550
10 MHz, HSPLL auf 40 MHz
ASM Programmierung, Umsetzung der AN734 auf 18F

Terminierung mit 2,2K, Verdrahtungsfehler schließe ich aus, Stützkondensatoren vorhanden, 5V stabil.

Ich kann den PIC beschreiben, kein Problem, auch mehrere Bytes.

Lesen des PIC bekomme ich nicht hin. Scheinbar hängt sich der Bus auf.
Durch Zufall habe ich herausgefunden, wenn ich in der AN734 gleich nach dem Einsprung in die ISR den SSPBUF lese, das Lesen geht, aber Schreiben dann nicht mehr.
Meine Frage ist, hat das jemand schon mal bidirektional hinbekommen und könnte mir ein paar Schnipsel zur Verfügung stellen ?
Ich weiss, ohne meine Source zu sehen kann man nicht sagen, ob Fehler drin sind.
Wenn es notwendig ist würde ich mal die Projekt soweit reduzieren dass nur die I2C Routinen übrig bleiben.

Holger
Gespeichert
AnyKey
Newbie
*
Offline Offline

Beiträge: 35



Profil anzeigen
« Antworten #1 am: Juni 11, 2011, 10:58:13 »

Hallo Holger,
ich arbeite zwar nur mit den PIC32 aber ich versuche es mal.
Hallo,
ich verzweifle seit mehreren Tagen (Wochen) an einer I2C Verbindung zwischen 2 PICs.

Master 18F4455
20MHz, PLL für USB, 96MHz/2 also 48MHz
I2C Master in C18, mit I2C EEprom lesen und schreiben getestet, ok, alle Geschwindigkeiten
Zitat
Der USB Clk hat direkt nichts mit dem I2C Clk zu tun.
I2C geht bis von 100kHz bis max. 400kHz.
Habe aber gelesen das man das bei einigen PIC's in Abhänigkeit vom PBClk einstellen muss.

Slave 18F2550
10 MHz, HSPLL auf 40 MHz
ASM Programmierung, Umsetzung der AN734 auf 18F

Terminierung mit 2,2K, Verdrahtungsfehler schließe ich aus, Stützkondensatoren vorhanden, 5V stabil.

Ich kann den PIC beschreiben, kein Problem, auch mehrere Bytes.

Lesen des PIC bekomme ich nicht hin. Scheinbar hängt sich der Bus auf.
Zitat
Beschreib mal den Zustand von der Daten und der Clk Leitung.
Durch Zufall habe ich herausgefunden, wenn ich in der AN734 gleich nach dem Einsprung in die ISR den SSPBUF lese, das Lesen geht, aber Schreiben dann nicht mehr.
Meine Frage ist, hat das jemand schon mal bidirektional hinbekommen und könnte mir ein paar Schnipsel zur Verfügung stellen ?
Zitat
Ja, aber wie gesagt mit PIC32 und plib, schau dir mal mein Posting an da ist ne Lösung drin.
Ich weiss, ohne meine Source zu sehen kann man nicht sagen, ob Fehler drin sind.
Wenn es notwendig ist würde ich mal die Projekt soweit reduzieren dass nur die I2C Routinen übrig bleiben.
Wenn du weist das Code erforderlich ist um Hilfe zu bekommen solltest du den auch posten.

Gruß Robert
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #2 am: Juni 12, 2011, 05:01:02 »

Hi,

neben der Tatsache, dass der Code fehlt, ist der häufigste Fehler dass man das korrekt ACK-ing vergisst. Die EEPROMs sind da meist nicht so kritisch, aber andere Bausteine nehmen das sehr genau.

Gruß
Stefan
Gespeichert

Holgi
Jr. Member
**
Offline Offline

Beiträge: 53


Profil anzeigen WWW
« Antworten #3 am: Juni 12, 2011, 16:19:46 »

Hallo,
ich hab die relevanten Routinen mal in die angehängten Dateien kopiert, im Anhang auch ein Bild vom Oszi, wie man sieht fängt der Slave nicht an zu senden.
Nur wenn ich im ASM nach dem Einsprung in den I2C_Handler (per ISR) das SSPBUF lese, sendet er den festen Wert 123 zurück.
Wäre toll wenn mal jemand drüber schauen würde, trotz Pfingsten, schönem Wetter und bald Formel 1 (oder Formel Vettel  Lächelnd ??)

Danke
Holger


* oszi.jpg (149.12 KB, 800x328 - angeschaut 72 Mal.)
* master_i2c.c (2.1 KB - runtergeladen 36 Mal.)
* slave_i2c.asm (7.29 KB - runtergeladen 42 Mal.)
« Letzte Änderung: Juni 12, 2011, 17:49:22 von Holgi » Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.115 Sekunden mit 19 Zugriffen.
 
Top! Top!