I2C bleibt hängen
Montag, 21. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  PIC Mikrocontroller Allgemein  |  Schnittstellen (Allgemein)  |  I2C bleibt hängen « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: I2C bleibt hängen  (Gelesen 2160 mal)
 
CM_HT
Full Member
***
Offline Offline

Beiträge: 163


Profil anzeigen
« am: Juli 09, 2008, 13:40:27 »

hallo,

mein i2C bleibt hängen in der schleife
while(!SSPSTATbits.BF);

Ich benutze die lib vom C18. eigentlich hatte ich bis dato keine
Probleme. Nun habe ich 2 Devices an einem i2C und plötzlich bleibt er ab und an beim lesen hängen.

Sinnvoll wäre hier ein Interrupt laufen zu lassen, der Ihn einfach wieder rausholt, falls er hängen bleibt. Nur.. wie macht man denn das?

Oder gibt es beim I2C eine art Mechanismus, das dies schon kann ?

Gruß

Claus
Gespeichert
Potter68
Newbie
*
Offline Offline

Beiträge: 3


Profil anzeigen
« Antworten #1 am: September 24, 2009, 15:28:23 »

Hast Du eine Lösung gefunden? Ich habe nämlich genau das gleiche Problem.

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

Beiträge: 969



Profil anzeigen WWW
« Antworten #2 am: September 24, 2009, 22:05:07 »

Hi,

Timeout mit einem der internen Zähler generieren wäre eine Möglichkeit.
Ausserdem ist die Frage: Warum bleibt er hängen? Zu schnell? Kein ACK vom Slave? Protokoll richtig umgesetzt?

Wenn die Kommunikation sonst aber funktioniert sollte der I2C eigentlich nicht "abstürzen".

Gruß
Stefan
Gespeichert

Mischke
Gast
« Antworten #3 am: September 30, 2009, 12:40:04 »

Hallo,

Test auf BF und oder SSPIF schlägt dann fehl wenn ein Device blockiert. Es sieht so aus als schiebt der PIC HW-Seitig Daten und clock raus, um BF oder SSPIF zu setzen schaut die PIC-HW aber die tatsächlichen Pin's an. Wenn da was auf Low hängenbleibt werden die Status bits nicht gesetzt.
Hilft nur ein Time_Out. Um blockierende Devices zu reseten SSP-Modul ausschalten (reset), 8 Clocks von Hand auf den Port, Start,Start,Stop.
Dann läufts wieder
Gruss
Michael
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.065 Sekunden mit 19 Zugriffen.
 
Top! Top!