I2C_Sniff_003Was tun wenn die I2C oder TWI Übertragung stockt
.

Meist ist ein Logikanalyser mit Protokollanalysefunktion nicht zur Hand wenn man ihn braucht.
Mit diesem kleinen Adapter kann man über die serielle Schnittstelle den Datenverkehr überwachen.

Im folgenden Beispiel wird ein DS1621 Temperaturfühler abgefragt.
Die Ausgabe entspricht folgenden Code:

#define Dev1621_1  0x90                             // device address of DS1621-1

i2c_start(Dev1621_1+I2C_WRITE);               // set device address and write mode
i2c_write(0xee);                                           //initialsiert den DS1621 für Temperaturausgabe
i2c_rep_start(Dev1621_1+I2C_WRITE);
i2c_write(0xaa);                                           // Schreibt "aa" Temperatur lesen
i2c_rep_start(Dev1621_1+I2C_READ);        // Startet den Lesevorgang
Temp_h=i2c_readAck();                               // liest erstes Byte    
Temp_l=i2c_readNak();                                 //liest zweites Byte
i2c_stop();                                                    // set stop conditon = release bus

Die Buchstaben bedeuten:
Start = 's'
Ack =  'a'
Nack = 'n'
Stop = 'p'

Beginn ist in der vierten Zeile. Der Ausgegebene Wert ist mit "s91a16a80np   22,5°
I2C_Sniff_k

Das Kernstück der Schaltung ist ein ATtiny85 mit einem 14,7456MHz Quarz.
I2C_Sniff_sch
Der Rest ist etwas Hühnerfutter.
Das Layout ist dem entsprechend einfach ausgefallen.
Die Oberseite mit Kontroller und Quarz
I2C_Sniff_top

Sieht dann so aus
I2C_Sniff_003

Die Unterseite mit den fünf SMD-Bauteilen
I2C_Sniff_bot

Sieht dann so aus
I2C_Sniff_005

Das vier adrige Kabel wird mit etwas Heißkleber zugentlastet. An den Enden habe ich einzelne Stifte einer IC-Adapterleiste angelötet und mit einem kurzen Stück Schrumpfschlauch isoliert. Die Kabelenden sind zusätzlich auch noch beschriftet.
I2C_Sniff_001

Am Gehäuse ist noch der Verwendungszweck und die Baudrate vermerkt.
I2C_Sniff_006

Nicht jede RS232-Schnittstelle kommt mit den 5V auf der TX-Leitung klar, Notebook funktionieren öfter. Keine Probleme hatte ich mit RS232/USB-Wandler.

Das Programm ist von Peter Dannegger und stammt aus diesem Thread:
http://www.mikrocontroller.net/topic/103600#new
Verwendet habe ich den *.asm Code  vom  05.11.2008

Attachments:
Download this file (I2C_Sniffer.zip)I2C_Sniffer.zip[ ]32 kB
Joomla SEF URLs by Artio