Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Clockstretching Kategorie: I²C-Bus (von André H. - 27.11.2005 17:07)
Als Antwort auf Clockstretching von KönigDichBauch - 21.10.2005 11:43
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0
Hallo Thomas,
 
> An verschiedenen Stellen schreibst du was über das Clockstretching.
>
> Hier hab ich einen Phillips-bautein den P87LPC764
>

Bitte unterscheide zwischen I²C-Bus-Bausteinen und µController, die als Slave betrieben werden,
da i.d.R. nur diese Clockstreching benötigen.

> Wäre super schön wenn du die Zeit finden würdest, das ins OS einzubinden.

Ich bin am �berlegen, die I²C-Routinen komplett zu überarbeiten.
Jedoch werde ich dann nur Clockstreching nur eingeschränkt implementieren.
D.h., es wird ein Timeout geben und nicht beliebig lange auf die "Freigabe" von SCL gewartet.
Das ist notwendig, da die I²C-Bus-Routinen nicht im Hintergrund ausgeführt werden
und somit das Programm verzögern würden, wenn z.B. SCL aus irgendeinem Grund auf low gezogen würde.
Evtl. werde ich auch sehen, da� ich eine Art Hintergrundausgabe beim I²C-Bus mache,
wie es beispielsweise bei den COM-Send-Routinen der Fall ist.
Aber dafür brauche ich etwas mehr Zeit am Stück.

Ich habe testweise die original I²C-Read-Routine modifiziert, die ein Timeout
von 1024 Schleifendurchläufen bei jedem Clock-Zyklus hat.
Eine Timeout-Schleife sieht hier so aus:

        MOV     R10, #0400h
_i2cR2:
        CMPD1   R10, #0h
        JMPR    cc_EQ, _i2cR2a
        JNB     MRST,_i2cR2
_i2cR2a:

Zusätzlich ist habe ich die Clockleitung von Push-Pull in OD geändert wie es
beim I²C-Bus natürlich sein soll.
Ich verwende derzeit dieses einfache Clockstreching für experimentelle
ASM-Routinen zum eDIP240, da die CC2 in ASM einfach viel zu schnell ist,
damit der Controller des Displays bei der Datenübertragung hinterherkommt.
Die komplette Routine kann ich aber derzeit nicht veröffentlichen, da ich hier
etwas zu viel probiert habe und der Code entsprechend aussieht. ;-)

Vielleicht werde ich übergangsweise auch ein ASM-Modul schreiben, welches
statt den OS die I²C-Bus-Routinen verwendet werden kann.
Das wäre auf jeden Fall kurzfristiger realisierbar und OS-unabhängig.

MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: Clockstretching (von KönigDichBauch - 28.11.2005 9:02)