Visualisierung des I2C-Protokolls
Verfasst: So 31. Okt 2010, 12: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:
Vorbereitung:
Wir beschreiben hier ein Experiment mit i2ctest2.exe:
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
.
- 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.
Vorbereitung:
- Kabel von PortB.5 nach PortD.3 (Int1); Kontroll-LED bei PortD.6
- Keine I2C-Jumper setzen; diese befinden sich bereits auf der I2C_Interface-Platine.
- LCD anschließen
- Programm i2cslave2 auf den Mikrocontroller laden
- Mikrocontroller wieder ausschalten
- Interface-Platine an PC anschließen und el. Quelle anschließen.
- Master-Programm (simula1.vpb bzw. I2ctest2.exe starten)
- 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...”
Wir beschreiben hier ein Experiment mit i2ctest2.exe:
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
.