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

I2C-Reset Kategorie: I²C-Bus (von Thomas S. - 31.08.2011 8:54)
Ich nutze:
C-Control Pro Mega32
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.


    Antwort schreiben


Antworten:

Re: I2C-Reset (von Joerg - 31.08.2011 9:44)