Du hast leider nicht geschrieben, mit welcher Hardware du auf den I²C-Bus zugreifst.
Auf dem Bus existieren nur TriState- und Low-Zustände.
1. Startbedingung zum senden von SCL: SCL muss frei sein.
2. Sollten zwei Master Taktgleich anfangen zu senden, so gibt es eine Abbruchbedingung (Arbitration = Schiedsverfahren).
Abbrechen muss der Master, der zuerst ein Low-Signal auf SDA feststellt, dass nicht von ihm beim Senden kommt.
siehe dazu "www.nxp.com/.../design_con_2003_tecforum_i2c_bus_overview.pdf" Seiten 31/38/39
Solltest du dies mit einem AVR tun, so findest du unter dem Stichwort USI (Universal Serial Interface) im Datenblatt die Data-, Status- und Controlregister.
Statusregister (USISR):
• Bit 7 – USISIF: Start Condition Interrupt Flag
• Bit 6 – USIOIF: Counter Overflow Interrupt Flag
• Bit 5 – USIPF: Stop Condition Flag
• Bit 4 – USIDC: Data Output Collision
• Bits 3..0 – USICNT3..0: Counter Value
Control Register (USICR):
• Bit 7 – USISIE: Start Condition Interrupt Enable
• Bit 6 – USIOIE: Counter Overflow Interrupt Enable
• Bit 5..4 – USIWM1..0: Wire Mode
• Bit 3..2 – USICS1..0: Clock Source Select
• Bit 1 – USICLK: Clock Strobe
• Bit 0 – USITC: Toggle Clock Port Pin
Gruß
SpiekerChris
Lesezeichen