I²C-Routinen (für PIC-Mikrocontroller, Elektronik)


zurück zu Elektronik, Homepage


5. Demonstrationsbeispiel:

Das folgende Beispiel dient nur zur Demonstration. Es zeigt eine mögliche Einbindung der oben beschriebenen Unterprogramme.

nach oben

5.1. Hardware

Schaltung zur Demonstration der I²C-Routinen (Ansteuerung des Temperatursensors LM75)

Bei diesem Demonstrationsbeispiel soll ein Mikrocontroller (PIC16F628) zyklisch (ca. alle 65ms) die Temperatur von einem Temperatursensor (IC2; mit I²C-Schnittstelle) auslesen und in BCD kodierter Form am Port B ausgeben. Wie schon im Abschnitt 3 (Hardware) beschrieben sind sowohl bei der Datenleitung (SDA), als auch bei der Taktleitung (SCL) Pull-Up-Widerstände notwendig. (Hier R1 bzw. R2). Die Temperaturanzeige erfolgt der Einfachheit halber nur mit Leuchtdioden (D1 bis D8). Eine zusätzliche Leuchtdiode (D9) am Portpin RA0 soll das Vorzeichen anzeigen, wobei eine leuchtende LED eine negative Temperatur kennzeichnet.

Für die Takterzeugung dient eine Standardbeschaltung bestehend aus einem 4-MHz-Quarz (X1), zwei Kondensatoren (C4, C5) und einem Widerstand (R4).
Das RC-Glied (R3, C3) erzeugt einen definierten Reset beim Anlegen der Betriebsspannung.

Die Diode D10 verhindert eine Zerstörung des Mikrocontrollers bei einer Falschpolung der Betriebsspannung. Als Betriebsspannung muss eine stabile 5-V-Spannungsquelle verwendet werden.

nach oben

5.2. Anmerkungen zur Software

Die Software zum Demonstrationsbeispiel befindet sich im Download- Bereich auf dieser Seite

Die Software besteht im Wesentlichen aus einem kurzen Hauptprogramm, einer Interrupt-Service-Routine (kurz ISR), die die im Abschnitt 4.3 besprochenen Unterprogramme, zur Erzeugung des I²C-Protokolls, und einem Unterprogramm, welches ein Byte von binär nach BCD umwandelt, aufruft.

Die ISR wird ca. alle 65ms aufgerufen und besitzt folgende Aufgaben:

Das Hauptprogramm besteht nach der Initialisierung (Unterprogramm INIT) und der Interruptfreigabe nur mehr aus einer Endlosschleife.

Das Unterprogramm INIT dient zur Initialisierung des Controller. Hier werden u.a. die Ports konfiguriert (Port dient als Eingang oder als Ausgang), der oder die Timer eingestellt usw. Dieses Unterprogramm ist vom Controllertyp abhängig und je nach Anwendung mehr oder weniger umfangreich.

nach oben


zurück zu Elektronik, Homepage

Autor: Buchgeher Stefan
Erstellt: 17. Oktober 2003
Letzte Änderung: 10. Oktober 2004