I2C Clock-Stretching
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  PIC Mikrocontroller Allgemein  |  Schnittstellen (Allgemein)  |  I2C Clock-Stretching « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: I2C Clock-Stretching  (Gelesen 566 mal)
 
BL1
Jr. Member
**
Offline Offline

Beiträge: 82


Profil anzeigen
« am: September 17, 2011, 08:41:32 »

Hallo,


ich habe einen 18F26K20 im Slave und frage den im Polling nach dem SSPIF ab. Ist das High, geht er in die entsprechende Routine. Dort setzt er als erstes das CKP auf Null, dass die SCL-Leitung runtergezogen wird und der Master solange mit der nächsten Bus-Aktivität wartet.

Die gleiche Routine funktioniert im 16F1827 ganz hervorragend.

Das Problem ist nun, dass das CKP-Bit im SSPCON1-Register zwar wunderschön Null ist, es die SCL-Leitung aber gar nicht interessiert. Die ist High. Im SSPCON2-Register gibt es das Bit SEN(StretchEnable-Bit). Das ist gesetzt.

Ist da noch irgendwo was zu setzen/zu löschen?



BL
Gespeichert
BL1
Jr. Member
**
Offline Offline

Beiträge: 82


Profil anzeigen
« Antworten #1 am: September 17, 2011, 09:57:22 »

Kommando zurück, war'n Denkfehler.

Ich habe in der I2C-Service-Routine die Schnittstelle ausgeschaltet, wenn das Stop-Zeichen kam. Damt sollte dem Slave Zeit gegeben werden, die I2C-Kommunikation auszuwerten, ohne dass der den ganzen Bus blockiert. Wollen ja auch noch andere senden. Wenn aber nun das SSPEN einmal aus war, reagiert das CKP nicht mehr.
Bleibt es aber an, wird der SCL unten festgehalten, sowie der Master SCL das nächste Mal auf Null zieht, z.B. bei einer erneuten Startkondition. Der Bus ist dann gestoppt, bis der Slave den SCL wieder freigibt, wenn CKP auf 1 gesetzt wird.


Also, kann der Admin als erledigt stempeln.



BL
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.04 Sekunden mit 19 Zugriffen.
 
Top! Top!