Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: I2C-Reset Kategorie: I²C-Bus (von Joerg - 31.08.2011 9:44)
Als Antwort auf I2C-Reset von Thomas S. - 31.08.2011 8:54
Ich nutze:
C-Control Pro Mega128
> Nachdem mir dieses Forum schon bei vielen Fragen weitergeholfen hat, möchte ich
> keine Frage stellen sondern einen Programmschnipsel beitragen den mit und
> vielleicht auch anderen bei Problemen mit der I2C-Schnittstelle weiterhilft.
>
> Die I2C-Schnittstelle der ProMega bleibt bei Störungen auf dem Bus oder falschen
> Pullup-Wiederständen gelegentlich "hängen" wobei anschlie�end keine vernünftige
> Kommunikation mehr über die Schnittstelle möglich ist. Bisher konnte ich das
> Problem nur durch einen Reset des Moduls lösen. Nun schafft bei mir folgende
> kleine Basic Funktion Abhilfe:
>
> Sub I2C_Reset()
>     If DirAcc_Read(0x56)<>4 Then
>        DirAcc_Write(0x56,0)
>        n++
>     End If
> End Sub
>

> Dabei wird das TWCR-Register des Mega32 Moduls abgefragt und bei einer Störung
> zurĂĽckgesetzt. Bei der Mega128 ist dieses Register bestimmt auf einer anderen
> Adresse als 0x56 aber das kann man in der Dokumentation des jeweiligen Moduls
> nachlesen. n++ ist eine Zähler mit dem man die Häufigkeit der Störung untersuchen
> kann und so Aukunft über die "Qualität" seines I2C-Buses erhält.


Hallo,

ich frage mich gerade, warum es bei die hängenbleibt? Haben andere auch das Problem?

Ich habe einen MEGA128 auf einem Projektboard und benutze die eingebauten Pullups.
Daran angeschlossen sind mit ca.30cm Leitungen 6 I2C Devices.
Das ganze befindet sich dann auch noch in einem Schaltschrank.
Nach mehr als einem Jahr Betrieb hatte ich noch keine Aufhänger.

GrĂĽĂ?e Joerg



    Antwort schreiben


Antworten: