Visualisierung des I2C-Protokolls

Hier können Sie ihre eigenen Projekte vorstellen
Antworten
Heinrichs
Beiträge: 101
Registriert: Do 21. Okt 2010, 16:31

Visualisierung des I2C-Protokolls

Beitrag von Heinrichs » So 31. Okt 2010, 11:24

Die Übertragung von Adress- und Wertbyte beim I2C-Protokoll lässt sich für didaktische Zwecke sehr schön mithilfe eines Mikrocontrollers sichtbar zu machen. Hier setzen wir ein:
  • als Master das simula1.vbp-Programm von Eberhard Eube oder das Testprogramm I2CTest2.exe von Georg Heinrichs (s. Anhänge). Mit diesen Programmen können alle I2C-Steuersignale per Handsteuerung an den Slave übertragen werden; sie steuern die I2C-Interface-Platine (s. u.) an, über die der PC mit der Mikrocontroller-Platine verbunden wird
  • als Slave einen Attiny-Mikrocontroller mit LC-Display. Der Attiny besitzt keine fest verdrahtete Funktionen für den Umgang mit dem I2C-Protokoll. BASCOM stellt derartige Funktionen zur Verfügung, allerdings nur für den Fall, dass der Mikrocontroller als Master eingesetzt wird. Slave-Funktionen sind nicht in BASCOM implementiert. Deswegen müssen diese erst programmiert werden; das zugehörige BASCOM-Programm ist i2cslave2.bas. Der Attiny-Slave ist standardmäßig auf die Adresse 4 eingestellt; dies kann aber leicht im Quelltext abgeändert werden.
i2c_interface.jpg
i2c_interface.jpg (34.74 KiB) 4815 mal betrachtet
Vorbereitung:

1. Kabel von PortB.5 nach PortD.3 (Int1); Kontroll-LED bei PortD.6
2. Keine I2C-Jumper setzen; diese befinden sich bereits auf der I2C_Interface-Platine.
3. LCD anschließen
4. Programm i2cslave2 auf den Mikrocontroller laden
5. Mikrocontroller wieder ausschalten
6. Interface-Platine an PC anschließen und el. Quelle anschließen.
7. Master-Programm (simula1.vpb bzw. I2ctest2.exe starten)
8. Erst jetzt i2c-Interface-Platine über i2c-Kabel mit Attiny-Platine verbinden; dadurch wird die Attiny-Platine mit el. Strom versorgt und das Slave-Programm auf dem Attiny gestartet. Es meldet sich dann und zeigt anschließend seinen Zustand an: “Schlafe...”

Nun können Sie I2C-Signale vom Master an den Slave schicken. Bei i2ctest2.exe geschieht dies durch i2c-Befehle mit geeigneten Signalfolgen; bei simula1.vpb können die Signalleitungen sogar individuell von High auf Low und umgekehrt gelegt werden.

Wir beschreiben hier ein Experiment mit i2ctest2.exe:
slave_lcd_103.jpg
slave_lcd_103.jpg (10.64 KiB) 4815 mal betrachtet
Aktion -> Reaktion des Slave
--------------------------------------------------------------------------------------------------------------------------------------------
Clock-Zeit auf 100 ms stellen
Start-Schaltfläche betätigen -> Startsignal ->
4 in Datenfeld als Adresse eintragen und Schaltfläche “Schreiben” betätigen -> in Zeile 2 Bitfolge 00000100 der Adresse und ACK (Acknowledge) anzeigen; nach 2 Sekunden: bits:
103 in Datenfeld eintragen und Schaltfläche “Schreiben” betätigen -> bits: 01100111 Wert: 103 nach 2 Sekunden: bits:
weitere Werte übertragen...
Stopp-Schaltfläche betätigen -> Schlafe wieder...
103 in Datenfeld eintragen und Schaltfläche “Schreiben” betätigen -> keine Reaktion
Start-Schaltfläche betätigen -> Startsignal ->
5 in Datenfeld als Adresse eintragen und Schaltfläche “Schreiben” betätigen -> in Zeile 2 Bitfolge 00000101 der Adresse und NACK (Not Acknowledge) anzeigen; nach 2 Sekunden: “Schlafe wieder”
103 in Datenfeld eintragen und Schaltfläche “Schreiben” betätigen -> keine Reaktion
.
Dateianhänge
i2c_Texte.zip
(1.14 MiB) 635-mal heruntergeladen
i2c_software.zip
(214.63 KiB) 668-mal heruntergeladen

Antworten