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 | ||
| ||
> 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: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum