Titelbild Mikrocontroller

15.3. Bus Status Logik

Die Status Logik überwacht permanent die Aktivitäten auf den beiden Busleitungen, wenn der Master freigegeben ist. Die Logik arbeitet auch in allen sleep Modi.

Die Bus Status Logik beinhaltet START und STOP Erkennung, Kollisionserkennung, inaktiven Bus und timeout Erkennung sowie einen Bitzähler. Dies alles wird verwendet, um den Status des Busses zu bestimmen. Die Software kann den aktuellen Status durch Auslesen der Status Bit im Master Status Register ermitteln. Der Status kann unbekannt (unknown), besetzt (busy), frei (idle) oder Eigentümer (owner) sein.

TWI Bus Status Logik

TWI Bus Status Logik


Nach einem Reset bzw. nachdem der Master freigeschaltet wurde, ist der Status unbekannt. Der Busstatus kann dann auf idle gesetzt werden indem die entsprechenden Bits in das Status Register geschrieben werden. Wenn der Status nicht durch die Software gesetzt wird, geht der Status auf idle nachdem die erste Stop Bedingung erkannt wurde. Wenn für den Master die inactiv bus timeout freigeben ist, wird der Status beim Auftreten des Timeout auf idle wechseln. Nachdem der Staus erst einmal bekannt ist kann er nur durch einen Reset oder durch Sperren des Masters wieder unbekannt werden.

Wenn der Bus idle ist, kann eine neue Übertragung gestartet werden. Wenn eine extern erzeugte Start Bedingung erkannt wird, geht der Status auf busy bis eine Stop Bedingung erkannt wird. Die stop Bedingung ändert den Status dann wieder in idle. Wenn für den Master die inactiv bus timeout freigeben ist, wird der Status beim Auftreten des Timeout automatisch von busy auf idle wechseln.

Wenn der Baustein selber eine Start Bedingung erzeugt wechselt der Staus von idle auf owner. Wenn die Übertragung ohne Kollisionen beendet wird, wechselt er Status nach dem Ausgeben der Stop Bedingung wieder in den idle Status.

Wenn eine Kollision auftritt und der Master die Herrschaft über den Bus verliert, wechsel der Status auf busy (wenn der Master den Bus behält, bleibt der Status auf owner).
Impressum