Gast
#6557307
Ich versuche gerade einen SHT30 Temperatur/Luftfeuchtigkeitsfühler zum Laufen zu bringen. Hardware ist ein Atmega8 mit 8 MHz. Die typische Kommunikation läuft folgendermassen ab: i2c_init, dann wird ein zwei byte command gesendet, und dann werden einige bytes und die CRC gelesen. Das funktioniert auch alles prachtvoll mit der TWI engine des Atmega und der Fleury I2C lib (twimaster.c und i2cmaster.h). Nun versuche ich auf derselben Hardware die reine Softwarelösung zum Laufen zu bringen (i2cmaster.h und i2cmaster.S). Aber, da geht nichts mehr: i2c_int funktioniert, das erste command byte geht mit ACK Antwort raus, aber bereits das zweite command byte bekommt ein NAK zurück. Ein i2c_rep_start löst das Problem für das zweite command byte, aber danach hängt der Bus wieder beim Lesen. Die Busfrequenz ist ca 83 KHz (5.5 + 6.5 us), das Oszillogramm sieht gut aus, die Pull-Ups sind 4.7k, die physische Buslänge 15 cm. Hat jemand von euch einen Tip? Gruss Josef