Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| microcontrollertechnik:10_i2c_schnittstelle [2023/11/19 03:05] – mexleadmin | microcontrollertechnik:11_i2c_schnittstelle [2025/06/22 13:06] (aktuell) – mexleadmin | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== | + | ====== |
| <WRAP group> | <WRAP group> | ||
| <WRAP column 30%> | <WRAP column 30%> | ||
| Zeile 8: | Zeile 8: | ||
| - wissen wie die Kommunikation zwischen I2C Master und Slave funktioniert | - wissen wie die Kommunikation zwischen I2C Master und Slave funktioniert | ||
| + | |||
| + | Im Video wird eine Library für die Kommunikation verwendet. Wir werden in untenstehenden Beispiel die Register selbst schreiben. | ||
| </ | </ | ||
| ==== Video ==== | ==== Video ==== | ||
| + | {{youtube> | ||
| + | |||
| + | <WRAP hide> | ||
| {{youtube> | {{youtube> | ||
| + | </ | ||
| </ | </ | ||
| - | |||
| ==== Statemachine für Datenpaket ==== | ==== Statemachine für Datenpaket ==== | ||
| Zeile 37: | Zeile 42: | ||
| </ | </ | ||
| - | **Übertragung**\\ | + | === Übertragung |
| Für die I2C Übertragung " | Für die I2C Übertragung " | ||
| D.h. während der Datenübertragung bleibt die Datenleitung bei SCL=High konstant. \\ | D.h. während der Datenübertragung bleibt die Datenleitung bei SCL=High konstant. \\ | ||
| Zeile 149: | Zeile 154: | ||
| ===== Software ===== | ===== Software ===== | ||
| - | ==== einfache Anwendung ==== | + | ==== wichtiger Hinweis ==== |
| + | |||
| + | Die im Mikrocontroller fest verdrahtete State Machine von Microchip / ATMEL kann sich (selbst in der Simulation) durch ungünstiges Timing bzw. ungünstige Zustände aufhängen. \\ | ||
| + | Diese Zustände lassen sich leicht dadurch beheben, dass eine erneute Initialisierung der I2C Register nach jedem Versenden / Empfangen durchgeführt wird. | ||
| + | |||
| + | ==== einfache Anwendung | ||
| Im ersten Schritt ist im folgenden eine einfache Anwendung dargestellt. \\ | Im ersten Schritt ist im folgenden eine einfache Anwendung dargestellt. \\ | ||
| Zeile 195: | Zeile 205: | ||
| | | ||
| | | ||
| - | | + | |
| C-Compiler: AVR/GNU C Compiler 5.4.0 | C-Compiler: AVR/GNU C Compiler 5.4.0 | ||
| | | ||
| Zeile 353: | Zeile 363: | ||
| | | ||
| | | ||
| - | | + | |
| | | ||
| Zeile 458: | Zeile 468: | ||
| - | ==== komplexere Anwendung ==== | + | ==== komplexere Anwendung |
| - | Als Beispiel wurde die Temperaturmessung gewählt | + | |
| - | | + | Als Beispiel wurde hier die Temperaturmessung |
| + | Das Projekt und die Simulation ist hier zu finden | ||
| + | |||
| + | Bitte nutzen Sie diese als Vorlage, wen Sie eine I2C Schnittstelle implementieren wollen. Da in diesem Programmstand alles über Interrupts läuft, können auch weitere Funktionen abgearbeitet werden. | ||
| + | |||
| + | ===== weiterführende Unterlagen ===== | ||
| + | |||
| + | Die detaillierte Beschreibung zu I2C findet sich in des {{microcontrollertechnik: | ||
| ==== Bibliotheken ==== | ==== Bibliotheken ==== | ||
| Zeile 472: | Zeile 489: | ||
| * alternative und schlanke Implementierung des Slaves von [[https:// | * alternative und schlanke Implementierung des Slaves von [[https:// | ||
| - | ===== Beispiele | + | ==== Beispiele ==== |
| - | * Simulide: '' | + | * In Simulide |
| - | * Software | + | * Eine vollständige Implementierung des Codes für den I2C Master ist in der Library von Peter Fleury |
| - | * Library von Peter Fleury: [[http:// | + | * Eine Implementierung eines [[Software I2C Slave]], also eines I2C an einem beliebigen Pin durch Bitmaipulation, |
| - | * [[Software I2C Slave]] | + | |
| - | ===== weiterführende Unterlagen ===== | + | ==== Beschreibung |
| - | | + | |
| + | Die " | ||