Such' Dir gescheiten Code, denn der ist Müll. Ein Auszug
Hier wird der Pin zu SCL aktiv getrieben, also auf Ausgang & High gesetzt. Bei I2C wird per Standard dagegen nur auf Low gezogen, das High wird durch Pullups erzeugt, das erlaubt dann den Bausteinen Clock-Stretching, bei dem der Slave den Clock verlängert. Kannst Dir dann vorstellen, was passiert, wenn der Slave auf Low zieht und der Master aktiv High treibt.Code:void i2c_start() ... ddr_scl_hi; ... scl_hi;
Warum nimmst Du nicht die Hardware I2C Unit, die der ATM168 ja hat und baust mit 'ner Software I2C rum?
Hat das Beispiel bei Dir funktioniert, oder wird dem Beispiel nur nachgesagt, dass es funktioniert?aus einem funktionierenden Beispiel
Ist die Hardware in Ordnung?
Lesezeichen