Absender: Marko Bolowski
Datum: Mi, 18.06.2008 13:20:41
Hallo, in twi.c hat sich ein Fehler in der Funktion 'Send_to_TWI' (I2C-Teil) eingeschlichen. Der schlummert da wohl schon seit längerem. Dort wird das Senden oder Empfangen auf dem I2C-Bus in einer if-Anweisung verarbeitet. Die Auswertung von 'zusenden' und 'zulesen' ist vertauscht. Für I2C gilt Schreiben->0 (R), Lesen ->1 (W) (vgl. twi.h)! Vergleicht man die Funktion in TWI (alt) mit I2C (neu) sieht man: 'if ((ptr->slave_adr & 0x1) == 1)' ist i. Allg. nicht das Gleiche wie 'if(!(data_pack[i].slave_adr & R))'. Also kann anschließend toWrite, pWrite im if-Zweig und toRead, pRead im else-Zweig von I2C nicht sein, sondern muss getauscht werden. Im (alten) TWI-Teil ist es richtig. Das führt u.a. dazu, dass der SRF10 nur mit der alten Methode funktioniert. Nach einem Patch im if-Teil von I2C funktioniert der SRF10 auch damit. Grüße Marko