Hallo,
am Code fällt mir auf, dass du zur Ausgabe auf SDA/SCL immer auf DDRC schreibst, damit schaltest du aber immer nur von Eingang auf Ausgang und umgekehrt. Müsste wohl PORTC heißenUnd wahrscheinlich läuft das auch viel zu schnell ab (1Mhz Takt und beim Setzen hast du keine Pausen o.ä., evtl kommt der Sensor nicht mit).
Ich würde dir empfehlen, unbedingt das integrierte TWI-Modul (I2C) im Atmega zu verwenden, das ist viel einfacher und komfortabler, als immer die Pins selber setzen zu müssen. Das TWI-Interface ist ja genau an den beiden Pins, die du verwendest (PC0,PC1). Außerdem lassen sich bei der Übertragung Fehlercodes auslesen (z.B. ob ACK fehlt) - noch ein Vorteil
Ohne Pullup-Widerstände kann kein High-Pegel erreicht werden, da jeder Teilnehmer nur open-Collector/open-Drain-Ausgänge hat (d.h. jeder Busteilnehmer kann nur auf Low ziehen oder hochohmig sein, im hochohmigen Zustand ziehen die Pullups den Pegel auf High; schützt vor Kurzschlüssen)
Grüße, Bernhard
Lesezeichen