Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über...

30

Transcript of Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über...

Page 1: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend
Page 2: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern –

können Sie auch das entsprechende E-Book im PDF-Format

herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+:

www.dpunkt.de/plus

Klaus Dembowski hat Nachrichtentechnik studiert und ist an der Technischen Universität Hamburg-Harburg tätig. Seine Schwer-punkte liegen in den Bereichen Mikrocontrollerentwicklung, Hard- und Software für Mikrosysteme sowie Energy Harvesting. Bei der Vermittlung aktueller Inhalte aus den Bereichen der Elektronik sowie der Informations- und Netzwerktechnik kann er auf eine langjährige Erfahrung als Autor und Dozent zurückgreifen. Die mittlerweile über 40 erschienenen Buchtitel zeichnen sich ebenso wie die regelmäßig erscheinenden Zeitschriftveröffentlichungen, Seminare und Vorträge durch eine verständliche und praxisorien-tierte Darstellung auch komplexer Sachverhalte aus.

Page 3: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

Klaus Dembowski

Mikrocontroller – Der Leitfaden für Maker

Schaltungstechnik und Programmierung von Raspberry, Arduino & Co.

Page 4: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

Klaus Dembowski

Lektorat: Dr. Michael BarabasCopy-Editing: Friederike Daenecke, ZülpichHerstellung: Frank HeidtUmschlaggestaltung: Helmut Kraus, www.exclam.de Druck und Bindung: M.P. Media-Print Informationstechnologie GmbH, 33100 Paderborn

Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

ISBN: Buch 978-3-86490-150-8PDF 978-3-86491-511-6ePub 978-3-86491-512-3

1. Auflage 2014Copyright © 2014 dpunkt.verlag GmbHWieblinger Weg 1769123 Heidelberg

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.

5 4 3 2 1 0

Page 5: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

v

Vorwort

Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend programmiert und eingesetzt wird. Lehr-bücher über Mikrocontroller konzentrieren sich fast ausschließlich auf theoreti-sche Gesichtspunkte, gehören nicht selten »zur trockenen Materie« und lassen einen aktuellen Praxisbezug oft vermissen. Mit diesem Buch wird versucht Theo-rie und Praxis anschaulich zu verbinden, wobei verschiedenste aktuelle Mikro-controller und Boards zum Einsatz kommen, die sowohl erläutert als auch einge-setzt werden.

Das erste Buch, das ich geschrieben habe, hat den Titel Intel-8096-Microcon-troller-Familie – Ein Handbuch für Programmierer und Systementwickler aus dem Jahre 1989. Der Intel 8096 war der erste 16-Bit-Microcontroller und wurde insbesondere für Embedded Systems wie beispielsweise bei Motorsteuerungen häufig eingesetzt. Fast 25 Jahre oder auch ca. 50 Bücher später, die sich vorwie-gend mit PC- und Netzwerktechnik beschäftigt haben, also wieder ein Mikrocon-trollerbuch.

Die Grundfunktionalität eines Mikrocontrollers hat sich in der Zwischenzeit zwar kaum verändert, allerdings ist diese Thematik nun nicht mehr allein den Programmierern und Systementwicklern vorbehalten, was insbesondere der Arduino- und der Raspberry-Pi-Plattform zu verdanken ist, die es mit einem fast spielerischen Ansatz erlauben, dass jedermann kostengünstig Projekte verwirkli-chen kann, die einen Mikrocontroller oder auch einen Single-Board-Computer einsetzen. Wer bereits erste Erfahrungen mit diesen oder ähnlichen Systemen gesammelt hat und weiter in die Elektronik und Programmierung einsteigen möchte, der kann mit diesem Buch auf einen verlässlichen Ratgeber und Leitfa-den zurückgreifen.

Die ersten Kapitel sind durchaus für Anfänger geeignet. Der Schwierigkeits-grad wird im Verlauf des Buches zunehmend höher, was der Tatsache geschuldet

Page 6: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

Vorwortvi

ist, dass die Funktionen der Einheiten, wie für das Energy Harvesting oder auch für Funksysteme notwendig sind, eben komplexer sind. Wer sich jedoch von Kapitel zu Kapitel »hocharbeitet«, wird zunehmend auch die komplizierteren Zusammenhänge erschließen können. Der Profi wird hingegen meist selektiv direkt die für ihn interessanten Teile anvisieren, weil sich das Buch vom Aufbau her auch als Nachschlagewerk eignet.

Klaus Dembowski Februar 2014

Page 7: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

vii

Inhaltsverzeichnis

1 Mikrocontrollergrundlagen 1

1.1 Architekturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Complex und Reduced Instruction Set Computer . . . . . . . . . . . . . . 4

1.3 Start mit Mikrocontrollern der Firma Intel . . . . . . . . . . . . . . . . . . . 6

1.3.1 Low Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.4 Spannungsversorgung, Oszillator und Reset . . . . . . . . . . . . . . . . . 10

1.5 Arbeitsspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.6 Interrupt-Logik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.7 Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.8 Brown Out Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.9 JTAG-Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.10 DMA-Logik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.11 Adressierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.12 Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2 Mikrocontrollerfamilien beurteilen und auswählen 27

2.1 8051-Mikrocontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.1.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.2 Microchip-Mikrocontroller – PIC . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.2.1 Architektur und Ausstattungsmerkmale . . . . . . . . . . . . . . 36Oszillatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Reset-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40ICSP-Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Programmspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Page 8: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

Inhaltsverzeichnisviii

2.2.2 Konfigurationsdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Taktgeneratoreinstellung . . . . . . . . . . . . . . . . . . . . . . . . . . 44Power Up Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Brown Out Detect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Watchdog Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45CCP2Mux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Stack Overflow Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Low Voltage Programming . . . . . . . . . . . . . . . . . . . . . . . . 46Code Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Schreiben der Konfigurationsdaten . . . . . . . . . . . . . . . . . . . 46

2.2.3 PIC-Mikrocontrollerfamilien . . . . . . . . . . . . . . . . . . . . . . . 472.2.4 NanoWatt-Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.2.5 Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

2.3 Atmel-Mikrocontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

2.3.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562.3.2 AVR-Controller-Familien im Überblick . . . . . . . . . . . . . . . 582.3.3 Power-Save-Betriebsarten . . . . . . . . . . . . . . . . . . . . . . . . . 602.3.4 Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

2.4 MSP430-Mikrocontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

2.4.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642.4.2 MSP430-Controllerfamilien . . . . . . . . . . . . . . . . . . . . . . . . 672.4.3 Low Power Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712.4.4 Entwicklungsumgebung und Programmierung . . . . . . . . . . 72

2.5 ARM-Prozessoren und -Mikrocontroller . . . . . . . . . . . . . . . . . . . . 77

2.5.1 ARM-Architektur und -Typen . . . . . . . . . . . . . . . . . . . . . . 782.5.2 Cortex-Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812.5.3 EFM32-Gecko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

Peripheral Reflex System . . . . . . . . . . . . . . . . . . . . . . . . . . 87Advanced Energy Monitoring . . . . . . . . . . . . . . . . . . . . . . 88Energy Aware Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92Betriebsarten – Energy Modes . . . . . . . . . . . . . . . . . . . . . . 93Entwicklungsplattform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

3 Single-Board-Systeme einsetzen 101

3.1 Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

3.1.1 Inbetriebnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1043.1.2 Netzwerkverbindung herstellen . . . . . . . . . . . . . . . . . . . . 109

Manuelle Konfigurierung . . . . . . . . . . . . . . . . . . . . . . . . 110SSH- und FTP-Verbindungen . . . . . . . . . . . . . . . . . . . . . . 112

Page 9: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

ixInhaltsverzeichnis

3.1.3 Software und Programmierung . . . . . . . . . . . . . . . . . . . . 114

3.2 Beaglebone Black . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

3.3 mbed-Plattform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

3.4 Gadgeteer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

3.5 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

3.5.1 Boards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1263.5.2 Shields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1303.5.3 Start und Entwicklungsumgebung . . . . . . . . . . . . . . . . . . 131

4 Anwenderprogrammierbare Ein- und Ausgabeeinheiten 135

4.1 GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

4.2 UART, USART und serielle Schnittstelle . . . . . . . . . . . . . . . . . . . 137

4.3 I2C-Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

4.4 Serial Peripheral Interface – SPI . . . . . . . . . . . . . . . . . . . . . . . . . . 143

4.5 A/D-Wandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

4.6 D/A-Wandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

4.7 PWM-Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

5 Spannungsversorgungen planen und aufbauen 153

5.1 Netzteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

5.2 Batterien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

5.3 Akkumulatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

5.3.1 Bleiakkumulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1595.3.2 Nickel-Cadmium-Akkumulator . . . . . . . . . . . . . . . . . . . . 1605.3.3 Nickel-Metall-Hydrid-Akkumulator . . . . . . . . . . . . . . . . 161

Ladeschaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1625.3.4 Lithium-Ionen-Akkumulator . . . . . . . . . . . . . . . . . . . . . . 1625.3.5 Lithium-Polymer-Akkumulator . . . . . . . . . . . . . . . . . . . . 164

Ladeschaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

5.4 Energy Harvesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

5.4.1 Solarzellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Funktionsprinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Elektrisches Verhalten . . . . . . . . . . . . . . . . . . . . . . . . . . . 170Standard Test Conditions . . . . . . . . . . . . . . . . . . . . . . . . 172Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

Page 10: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

Inhaltsverzeichnisx

5.4.2 Piezoelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Aufbau und Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178Wandlerschaltung mit selbst gebautem Balkenschwinger . 179

5.4.3 Elektrodynamische Wandler . . . . . . . . . . . . . . . . . . . . . . . 1845.4.4 Thermogeneratoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

5.5 Energiespeicher und Energiemanagement . . . . . . . . . . . . . . . . . . . 190

5.5.1 Kondensatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1905.5.2 Solid State Batteries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

Thin-Film Batteries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Ladeschaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195EnerChips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197EnerChips mit Power-Management-Logik . . . . . . . . . . . . 198Energy-Harvesting-Module und Energy Processor . . . . . . 200

6 Die Funkpraxis 207

6.1 ISM-Bänder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

6.2 Nahfunksysteme in der Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . 210

6.3 Modulationsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

6.4 WLAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

6.5 Sensorknoten im WLAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

6.5.1 Inbetriebnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2196.5.2 Systemaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2206.5.3 Konfigurierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2216.5.4 Erweiterungsschaltungen . . . . . . . . . . . . . . . . . . . . . . . . . 2236.5.5 Sensoren am SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2266.5.6 Steuerung mit Mikrocontroller . . . . . . . . . . . . . . . . . . . . . 227

6.6 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

6.6.1 Topologien und Implementierungen . . . . . . . . . . . . . . . . . 2306.6.2 Entwicklungssystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

6.7 Bluetooth Low Energy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

6.7.1 Chips und Schaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376.7.2 Software und Programmierung . . . . . . . . . . . . . . . . . . . . . 243

6.8 ZigBee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

6.8.1 Topologien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476.8.2 ZigBee Green Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

6.9 ANT/ANT+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

6.10 Low-Power-Funklösungen – Low Power RF . . . . . . . . . . . . . . . . . 251

Page 11: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

xiInhaltsverzeichnis

6.10.1 Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2526.10.2 Transceiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2546.10.3 Datenrate und Reichweite . . . . . . . . . . . . . . . . . . . . . . . . 2576.10.4 Einfache Kommunikation aufbauen . . . . . . . . . . . . . . . . 2586.10.5 SimplicTI-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2606.10.6 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

6.11 EnOcean-Funktechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

6.11.1 Dolphin System Architecture . . . . . . . . . . . . . . . . . . . . . . 2666.11.2 Starter und Programmer Kit . . . . . . . . . . . . . . . . . . . . . . 2726.11.3 Entwicklung und Programmierung . . . . . . . . . . . . . . . . . 277

7 Mess- und Steuerschaltungen für den Raspberry Pi 291

7.1 GPIO-Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

7.2 A/D- und D/A-Wandlerplatine für SPI . . . . . . . . . . . . . . . . . . . . 293

7.2.1 Python und grafische Oberfläche . . . . . . . . . . . . . . . . . . . 303

7.3 Erweiterungen mit I2C-Bus-Schaltungen . . . . . . . . . . . . . . . . . . . 315

7.3.1 Temperaturmessung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3227.3.2 LCD-Ansteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3257.3.3 A/D- und D/A-Messung . . . . . . . . . . . . . . . . . . . . . . . . . . 3267.3.4 Echtzeituhr stellen und lesen . . . . . . . . . . . . . . . . . . . . . . 331

8 Solarzellentester selbst gebaut 339

8.1 Verfahren für die Charakterisierung von Solarzellen . . . . . . . . . . 339

8.2 Schaltungsaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

8.2.1 Spannungsversorgung . . . . . . . . . . . . . . . . . . . . . . . . . . . 3428.2.2 Widerstandsmatrix und Peripherie . . . . . . . . . . . . . . . . . 3448.2.3 Relais und Treiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3478.2.4 Lichtsensor zur Messung der Beleuchtungsstärke . . . . . . 348

8.3 Programmablauf und Bedienung . . . . . . . . . . . . . . . . . . . . . . . . . 350

8.4 Implementierung der Software . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

8.4.1 LCD- und Menüsteuerung . . . . . . . . . . . . . . . . . . . . . . . . 3538.4.2 Messen der Beleuchtungsstärke . . . . . . . . . . . . . . . . . . . 3558.4.3 Maximum-Power-Point-Messung . . . . . . . . . . . . . . . . . . 3608.4.4 Leerlaufspannung und Kurzschlussstrom messen . . . . . . 3628.4.5 Ausgabe der Messergebnisse . . . . . . . . . . . . . . . . . . . . . . 364

Index 377

Page 12: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend
Page 13: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

1

1 Mikrocontrollergrundlagen

Das erste Kapitel hat üblicherweise einen in das Thema einführenden Charakter, sodass hier eine Einführung in die Mikrocontrollertechnik gegeben ist, die sich insbe-sondere an den Einsteiger richtet. Nach einer kurzen Erläuterung der grundlegenden Architekturen von Prozessoren und zur Entstehungsgeschichte der Mikrocontroller werden die wichtigen Schaltungseinheiten von Mikrocontrollern behandelt, und gezeigt, wie sie adressiert und wie sie grundsätzlich programmiert werden. Dieses Basiswissen bildet das notwendige Rüstzeug für die folgenden Kapitel.

Mikrocontroller kommen für kompakte Lösungen, beispielsweise in Haushalts-geräten, in Kraftfahrzeugen und in industriellen Steuerungen in vielfältiger Art und Weise zum Einsatz. Im Prinzip stellt ein Mikrocontroller einen Mikroprozes-sor dar, der um bestimmte Einheiten – wie einen Interrupt-Controller, um I/O-Ports oder auch um Analog/Digital-Wandler – erweitert wurde. Diese speziellenEinheiten sind für die jeweilige Geräteaufgabe, die typischerweise sowohl digitale als auch analoge Funktionsblöcke umfasst, als systemimmanent zu betrachten, wie es allgemein bei den sogenannten Embedded Systems der Fall ist. Ein Embed-ded System wird für eine ganz bestimmte Aufgabe entwickelt, wobei der Mikro-controller die zentrale Rolle spielt, für die er entsprechend ausgelegt ist und pro-grammiert wurde.

1.1 Architekturen

Bei der Charakterisierung von Mikroprozessoreigenschaften wird oftmals zwi-schen der Von-Neumann- und der Harvard-Architektur unterschieden. Da ein Mikrocontroller als ein um bestimmte Funktionen erweiterter Mikroprozessor betrachtet werden kann, gilt diese grundlegende Einteilung ebenfalls für dieMikrocontroller.

Page 14: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

1 Mikrocontrollergrundlagen2

Johann von Neumann, geboren 1903 in Budapest, gestorben 1957 in Washington, definierte grundlegende Bestandteile eines Rechners, wie sie mitein-ander verbunden sind und wie sie miteinander kommunizieren. Zur damaligen Zeit nannte man Computer im deutschsprachigen Raum meist Rechner, weil die einzige Aufgabe, die sie (scheinbar) hatten, das Rechnen war.

Der erste Rechner, der nach dem Von-Neumann-Prinzip funktionierte, wurde 1952 nach dreijähriger Bauzeit in den USA fertiggestellt. Andere bekannte Funk-tionsprinzipien von Computern sind neben der Von-Neumann-Architektur, die sich durch eine sequenzielle Abarbeitung der Befehle auszeichnet, parallel arbei-tende Architekturen, die oftmals als Superskalar, RISC oder CCM (Customized Computing Machines) bezeichnet werden.

Wie noch erläutert wird, erfolgt häufig eine Aufteilung von Computersyste-men in RISC-Architekturen einerseits und CISC-Architekturen andererseits, die dann oftmals dem Von-Neumann-Modell entsprechen. Eine bekannte Ausnahme bilden die ARM7-Prozessoren (Abschnitt 2.5), die als RISC in einer Von-Neu-mann-Architektur aufgebaut sind.

Abb. 1–1 Die Architektur nach von Neumann

Folgende Eigenschaften zeichnen ein System nach der Von-Neumann-Architektur aus:

■ Der Computer ist zentral gesteuert und verfügt deshalb über eine Central Pro-cessing Unit (CPU). Die CPU ist dabei in eine Steuereinheit (CU = Control Unit) und in eine Recheneinheit (ALU = Arithmetical Logical Unit) aufgeteilt.

■ Neben einer CPU gibt es einen Speicher und eine separate Ein-/Ausgabeein-heit, wobei diese Einheiten über Bussysteme elektrisch miteinander verbun-den sind.

■ Die Programme und Daten stehen im gleichen Speicher.

■ Die Abarbeitung der Befehle erfolgt sequenziell.

Page 15: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

31.1 Architekturen

Das grundsätzliche Funktionsprinzip ist, dass zunächst ein Befehl anhand einer Adresse aus dem Speicher geladen wird. Für die Abarbeitung des Befehls werden daraufhin die jeweiligen Daten in das Rechenwerk geladen. Dem Befehlscode ent-sprechend werden die Daten daraufhin verarbeitet und gespeichert. Demnach handelt es sich bei dieser Arbeitsweise um ein (streng) sequenzielles Verfahren. Mitunter wird das Prinzip der Von-Neumann-Architektur als Stored Program Concept bezeichnet, was als wesentliches Merkmal herausgehoben werden kann.

Insbesondere im Zusammenhang mit Mikrocontrollern und mit Digitalen Signal Prozessoren (DSP) wird oftmals angegeben, dass sie nach der Harvard-Architektur arbeiten. Diese Architektur ist jedoch keineswegs als Alternative zur Von-Neumann-Architektur oder zu irgendeiner anderen zu betrachten. Es han-delt sich im Grunde genommen lediglich um eine Variante des Von-Neumann-Modells, die den Speicher aufteilt, und zwar in einen Programm- und in einen Datenspeicher. Alle anderen wesentlichen Merkmale der Von-Neumann-Archi-tektur gelten auch für die Harvard-Architektur, sodass diese Unterscheidung mit-unter zu missverständlichen Interpretationen führt.

Abb. 1–2 Speicherarchitektur nach Harvard und nach von Neumann

Durch die physikalische Trennung von Daten- und Programmspeicher sind bei der Harvard-Architektur für beide Speicherbereiche jeweils ein eigener Datenbus (Programme sind auch Daten) sowie ein eigener Adressbus bzw. Adressgenerator notwendig, was einen entsprechend ausgelegten Prozessor oder auch eine spezi-elle Zusatzlogik erfordert.

Bei den ersten PIC-Mikrocontrollern wird der Programmspeicher (Flash) bei-spielsweise in einer Breite von 12 Bit und der Datenspeicher mit 8 Bit (SRAM) betrieben. Bei Controllern nach von Neumann wie dem ARM7 sind hingegen beide Speicherpfade gleich breit.

Ein offensichtlicher Vorteil der Harvard-Architektur ist, dass ein gleichzeiti-ger Zugriff auf Programmcode und Daten möglich ist. Die CPU kann bereits den folgenden Befehl lesen, während die aktuellen Daten geladen oder gespeichert werden.

Page 16: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

1 Mikrocontrollergrundlagen4

Weil die typischen Mikrocontroller den Daten- und den Programmspeicher lediglich intern realisieren und mit einem festen Programm (Firmware) arbeiten, bietet die Harvard-Architektur hierfür eine ideale Plattform, obwohl ihre Reali-sierung (siehe Abbildung 1–2) aufwendiger erscheint.

Für Mikrocontroller wird mitunter auch angegeben, dass sie mit einer Modi-fied Harvard Architecture arbeiten, was bedeutet, dass es keine strikte Trennung zwischen Programm- und Datenspeicher gibt, sondern dass – je nach Typ – unter-schiedliche Methoden existieren, um diese Prinzipientrennung aufzubrechen, etwa wenn beide Speichersysteme in der gleichen Busbreite arbeiten oder die separaten Adressbereiche »durchlässig« gestaltet werden. Ein wichtiger Grund für diese Modifizierung besteht darin, dass andernfalls Hochsprachen-Compiler (C, BASIC) nicht ohne Weiteres einsetzbar wären.

1.2 Complex und Reduced Instruction Set Computer

Ende der Siebzigerjahre gab es bereits einige Mikroprozessoren, und es entstand eine Spezialisierung einerseits in Standardprozessoren, wie etwa in die 8086-Familie für Personal Computer, andererseits in Mikrocontroller und digitale Sig-nalprozessoren.

Mikrocontroller, wie der damals eingeführte Typ 6805 von Motorola oder der 8051 von Intel, verfügen generell über verschiedene Peripherie-Einheiten On Chip, wie den Speicher, verschiedene Ports und möglicherweise auch Umsetzer (z. B. A/D-Wandler), die bei Standardprozessoren noch als separate Einheiten hinzugefügt werden müssten.

Mikrocontroller kommen als kompakte Lösungen, beispielsweise in Haus-haltsgeräten, in Kraftfahrzeugen und in industriellen Steuerungen zum Einsatz und werden auch als Embedded Systems (eingebettete Systeme) bezeichnet. Digi-tale Signalprozessoren (DSP) sind demgegenüber insbesondere für die digitale Verarbeitung analoger Signale konzipiert. Eine klassische Anwendung liegt in der Realisierung digitaler Filter, wie sie beispielsweise mit dem ersten DSP – dem 2920 – im Jahre 1979 von Intel programmiert worden sind. Allgemein werden DSPs für die Signalsynthese, etwa für die Audio- und Videoverarbeitung sowie für Übertragungsfunktionen in der Nachrichtentechnik eingesetzt.

Bei den Standardprozessoren für den universellen Einsatz wurden zwei unter-schiedliche Architekturen diskutiert und realisiert: Dabei handelt es sich um die Reduced Instruction Set Computer (RISC) und die Complex Instruction Set Computer (CISC), wobei die verbreiteten Prozessoren der Firma Intel (80x86-Generation), die den PC-Standard manifestiert haben, zu den CISC-Systemen gehören.

Page 17: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

51.2 Complex und Reduced Instruction Set Computer

Wie es die Bezeichnung complex ausweist, verfügen CIS-Computer über einen (relativ) komplexen und umfangreichen Befehlssatz. Der 80386-Prozessor, der die 32 Bit Intel Architecture (IA-32) begründet, kennt bereits ca. 300 Befehle, und mit jeder neuen Prozessorgeneration sowie mit den Befehlssatzerweiterungen (MMX, SSE) sind zahlreiche weitere hinzugekommen, was aufgrund verschiede-ner Befehlsformate und Befehlslängen (1 Byte bis zu 17 Byte) tatsächlich zu kom-plexen Codierungen führt. Demgegenüber besitzen die CISC-Typen nur (relativ) wenige Register, die recht universell einsetzbar sind. Die IA-32 kennt lediglich acht Allzweckregister.

Es zeigte sich, dass viele der komplexen Befehle eher selten eingesetzt wurden (und werden). Dies liegt zum einen daran, dass komplexe Rechenvorgänge in der Praxis längst nicht so häufig auftreten wie einfache, für die zahlreiche Einzel-schritte und Einzelentscheidungen notwendig sind. Zum anderen setzen Programmierer oftmals vertraute Befehle ein, und dies sind vielfach nicht die komplexen, sondern die einfachen. So bewiesen auch Untersuchungen – bei-spielsweise von IBM –, dass in typischen Programmen nur etwa 20 % der zur Verfügung stehenden Befehle eingesetzt werden, die aber 80 % der Programmver-arbeitungszeit in Anspruch nehmen.

Daraus kann man folgern, dass es Sinn macht, nur relativ wenige Befehle zu implementieren, die dafür aber möglichst schnell – möglichst innerhalb eines einzi-gen Taktzyklus – ausgeführt werden können, was somit zu den RISC-Systemen(Intel 860, SPARC, PowerPC, MIPS) führt, die über einen relativ kleinen, reduzier-ten Befehlssatz (Reduced Instruction Set Computer), dafür jedoch über viele Regis-ter verfügen. Das Vorhandensein möglichst vieler interner Register bedeutet, dass hier auch eine Vielzahl von Operanden vorgehalten werden können, die andernfalls mit dem relativ langsamen (externen) Hauptspeicher verarbeitet werden müssten.

Diese Unterteilung in RISC und CISC erscheint bereits seit einiger Zeit über-holt, denn es gibt kaum mehr Mikroprozessoren und damit auch Mikrocontrol-ler, die sich eindeutig der einen oder der anderen Kategorie zuordnen lassen. Der Pentium-kompatible Prozessor K5 der Firma AMD arbeitet als erste CPU für Per-sonal Computer intern nach dem RISC-Prinzip anhand von sogenannten RISC OPerations (ROPs). Dabei werden die komplexeren CISC-Befehle in elementare ROPs umgesetzt. Anschließend werden nur die ROPs ausgeführt, nicht mehr die ursprünglichen x86-Befehle. Bei der Firma Intel wird dieses Verfahren ab dem Pentium Pro eingesetzt, wobei die ROPs hier als μOPs (Micro Operations)bezeichnet werden. Demnach arbeitet auch in einem CISC-Mikroprozessor ein RISC-Mechanismus.

Dass ein RISC-Prozessor über wesentlich mehr Register als ein CISC-Prozes-sor verfügt, stimmt in dieser allgemeinen Formulierung auch schon längst nicht

Page 18: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

1 Mikrocontrollergrundlagen6

mehr, denn die explizit als RISC-Mikrocontroller bezeichneten Typen, wie von Microchip und Atmel, kennen auch nur vier bis acht universell einsetzbare Regis-ter. Vielmehr sollte der nach wie vor häufig benutzte Begriff RISC bei den Mikro-controllern so interpretiert werden, dass hier verschiedene Eigenschaften im Ver-hältnis zur einer typischen RISC-Architektur wie IA-32 reduziert sind: der Befehlssatz, der Programmieraufwand, die Gehäuse und der Preis sowohl für den Chip selbst als auch für die Entwicklungswerkzeuge.

1.3 Start mit Mikrocontrollern der Firma Intel

Im Jahre 1976 stellte die Firma Intel den ersten Mikrocontroller, den 8048, vor. Er wurde in der Original IBM-PC-Tastatur in einer ROM- (8048, 8049) oder auch in einer EPROM-Version (8748) als Tastaturcontroller eingesetzt. Die Kenndaten sind wie folgt:

■ 8-Bit-CPU, Modified Harvard Architecture

■ 90 Befehle

■ Programmspeicher: 1 k × 8 (1 kByte × 8 Bit)

■ Datenspeicher: 64 Bytes × 8 Byte

■ 27 I/O-Ports

■ 8 Bit Timer/Event Counter

■ Interrupt-Logik

■ Oszillator- und Takt-Generierung (max. 11 MHz)

■ Zykluszeit von minimal 2,5 μs

■ Reset-Schaltung

■ 40-poliges DIP-Gehäuse

■ 5-V-Versorgung (1,5 W, NMOS)

Auf dem Mainboard des IBM-PC-AT wurde ein weiterer Vertreter aus der schnell angewachsenen MCS-48-Mikrocontrollerserie eingebaut, ein 8042 (2 k ROM, 128 Byte RAM) oder auch ein 8041 (1 k ROM, 64 Byte RAM), der gegenüber dem 8048/8049-Controller über ein programmierbares, paralleles Interface verfügt.

Hiermit wurden das Tastatur-Interface sowie die Umschaltung zwischen Real Mode und Protected Mode (Gate A20) und einige Peripheriefunktionen (Laut-sprecher, Keylock, Turbo Switch) realisiert. Aufgrund des Standards, den der IBM-PC begründete, haben diese Mikrocontroller eine große Verbreitung insbe-sondere im PC-Bereich gefunden und wurden auch von anderen Firmen in Lizenz nachgebaut.

Page 19: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

71.3 Start mit Mikrocontrollern der Firma Intel

Abb. 1–3 Der Mikrocontroller 8042, hier von der Firma AMI, für ein PC-Mainboard

Intel stellte knapp drei Jahre später einen neuen Mikrocontroller vor, den 8051. Dieser Typ kann gewissermaßen als Urvater der Mikrocontroller schlechthin betrachtet werden und wird heutzutage von zahlreichen Firmen und in den unter-schiedlichsten Ausführungen angeboten. Ursprünglich verfügt er als Basis der MCS-51-Familie über die folgenden Merkmale:

■ 8-Bit-CPU, Harvard Architecture

■ Separate Adressbereiche (16 Bit): Jeweils 64 kByte für Programm- und für Datenspeicher

■ 111 Befehle, Bit-Operationen

■ Programmspeicher: 4 k × 8 (4 kByte × 8 Bit)

■ Datenspeicher: 128 Bytes × 8 Byte

■ 32 I/O-Ports

■ Zwei 16-Bit-Timer/Event Counter

■ Interrupt-Logik, sechs Quellen, zwei Prioritätsstufen

■ UART Full Duplex (Serial Port)

■ Oszillator- und Takt-Generierung (max. 16 MHz)

■ Zykluszeit von minimal 1 μs

■ Reset-Schaltung

■ 40-poliges DIP-Gehäuse

■ 5-V-Versorgung (1 W, CHMOS)

Die angeführten Eigenschaften des 8051 markieren somit die wesentlichen Ele-mente eines Mikrocontrollers. Er enthält neben der CPU den Speicher, eine Timer- und Interrupt-Logik, eine Oszillator- und eine Reset-Schaltung sowie diverse I/O-Ports und eine serielle Schnittstelle. Der 8051 lässt sich zum CISC-Typ mit Harvard-Architektur rechnen.

Bei aktuellen Mikrocontrollern gibt es noch weitere integrierte Schaltungs-einheiten, die noch in den folgenden Abschnitten erläutert werden. Mehr zu den aktuellen Vertretern der 8051-Mikrocontrollerfamilie ist im Abschnitt 2.1 zu fin-den.

Page 20: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

1 Mikrocontrollergrundlagen8

Abb. 1–4 Das Blockdiagramm des 8051 im Intel-Original aus dem Jahre 1980

1.3.1 Low Power

Der erste Schritt zu einem energiesparenderen Betrieb wurde beim 8051 durch den Wechsel von der NMOS- zur HMOS- und insbesondere zur HCMOS-Tech-nologie erreicht, auch wenn die Betriebsspannung noch bei 5 V lag.

Der 8051 in der CHMOS-Version kannte auch bereits zwei Power Saving Modes: Idle und Power Down. Beide Optionen können in einem speziellen Regis-ter, Power Control (PCON), aktiviert werden, das zu den Special-Function-Registern(SFR) gehört. Im Idle-Modus wird der Takt für die CPU abgeschaltet, für die anderen Einheiten, wie den Interrupt-Controller, den Timer und den UART, bleibt er aktiv. Deshalb können auftretende Interrupts den Idle-Mode auch wieder been-den. Die Stromersparnis gegenüber dem normalen Betrieb beträgt ca. 15 %.

Im Power-Down-Modus wird der Oszillator komplett deaktiviert, wobei der Inhalt des internen RAMs und der Special-Function-Register erhalten bleibt. Der Power-Down-Modus kann nur durch einen Hardware-Reset beendet werden, wobei die SFR-Inhalte dann neu geschrieben werden, der RAM-Inhalt bleibt erhalten.

Im Power-Down-Modus ist es zulässig, die Betriebsspannung auf 2 V zu reduzieren, was dann zu einem minimalen Strom von 10 μA führt und – von heu-tigen Werten aus gesehen – zwar um circa zwei Zehnerpotenzen schlechter ist, gleichwohl das nach wie vor gültige Prinzip der beiden Betriebsarten darstellt. Details zu den aktuellen Stromsparmodi sind bei den einzelnen Mikrocontroller-Familien in den folgenden Kapiteln angegeben.

Page 21: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

XTAL 2 XTAL 1

OSC

PD

IDL

CPU

INTERRUPT, SERIAL PORT, TIMER BLOCKS

CLOCK GEN.

91.3 Start mit Mikrocontrollern der Firma Intel

Abb. 1–5 Die Stromsparmodi Idle (IDL=1) und Power Down (PD=1) in ihrer ursprünglichen Form

In den letzten Jahren sind eine Vielzahl von Mikrocontrollern auf dem Markt gekommen, die mit Begriffen wie stromsparend, energieeffizient oder auch Long Battery Lifetime und Extreme Low Power beworben werden. Einen Standard für die verlässliche Beurteilung des Stromverbrauches gibt es jedoch nicht, sodass die Hersteller jeweils ganz eigene Testkriterien zugrunde legen, die mitunter in der Praxis gar nicht umzusetzen sind, dafür nicht selten mit vermeintlich ausdrucks-starken Attributen versehen werden und schon gar nicht für einen Vergleich geeignet sind. Für den Entwickler ist es deshalb nicht einfach, hier den richtigen Überblick zu gewinnen und nicht die Orientierung in diesem sich rasant entwi-ckelnden Markt zu verlieren. In den folgenden Kapiteln werden die wichtigsten Mikrocontroller(-familien) deshalb näher vorgestellt.

So schnell, wie einige Mikrocontroller auf dem Markt gekommen sind, sind sie auch wieder vom Markt verschwunden, ohne dass für sie ein funktions- und/oder anschlusskompatibler Nachfolger zur Verfügung steht. Deshalb sind aufgrund ihrer hohen »Chipfluktuation« Firmen wie Microchip und auch Atmel mit ihren Mikrocontrollern selten in Produkten zu finden, die mehrere Jahre oder sogar Jahrzehnte lang funktionieren und deshalb über diese Zeiträume unverän-dert mit den ursprünglichen Spezifikationen hergestellt und unterstützt werden müssen.

Das in der Industrie oftmals geforderte Kriterium, dass in den Schaltungen Bauelemente verwendet werden sollen, die von unterschiedlichen Firmen (Second Source) hergestellt werden, ist mit den meisten aktuellen Mikrocontrollern eben-falls kaum zu erfüllen.

Eine herstellerübergreifende Kompatibilität ist – wenn überhaupt – bei Mi-krocontrollern gegeben, die auf einer traditionellen Architektur wie der 8051-Architektur von Intel oder der ARM-Architektur basieren, auf beide wird in den

Page 22: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

1 Mikrocontrollergrundlagen10

folgenden Kapiteln noch näher eingegangen. Der Entwickler ist dennoch gezwun-gen, eine sehr genaue Verifizierung durchzuführen, denn bereits ein einziger, anders genutzter Anschluss kann den Einsatz eines (vermeintlich) kompatiblen Mikrocontrollers unmöglich machen.

1.4 Spannungsversorgung, Oszillator und Reset

Jeder Mikrocontroller benötigt eine Versorgungsspannung, wofür mehr oder weniger viele Anschlüsse am Gehäuse vorhanden sind. In früheren Zeiten und auch bei den traditionellen Typen wird eine Versorgungsspannung von 5 V benö-tigt. Bei neueren – stromsparenden Mikrocontrollern – sind typischerweise 3,3 V oder auch 1,8 V notwendig. Je nach Typ sind auch Zwischenwerte möglich, wobei stets das jeweilige Datenblatt zum Controller zu beachten ist. Grundsätz-lich muss es sich um eine stabilisierte Spannungsversorgung handeln, die mög-lichst »sauber« sein sollte, also keine Störimpulse enthalten darf, die etwa von einem Motor stammen, der mit der gleichen Quelle betrieben wird.

Abb. 1–6 Links zwei einzelne Quarze unterschiedlicher Bauform, die zum Schwingen eine zusätzliche

Beschaltung benötigen, und rechts ein Quarzoszillator, der die aufgedruckte Frequenz nach

dem Anschluss einer Versorgungsspannung selbsttätig ausgibt.

Die zweite Voraussetzung für den Betrieb eines Mikrocontrollers ist ein Takt, der von einem Oszillator (Schwingkreis) erzeugt wird. Dieser kann bereits komplett Controller-intern vorhanden sein, sodass dann keine separate Beschaltung erfor-derlich ist. Fast jeder Mikrocontroller erlaubt jedoch auch einen externen Takt, der von einem Quarzoszillator oder einem Quarz plus zwei Kondensatoren auf-gebaut wird. Meist ist diese Variante präziser als ein Chip-interner Takt, was bei Anwendungen erforderlich wird, die ein sehr exaktes Timing erfordern.

Ein Mikrocontroller benötigt für den Start einen Reset-Impuls, der bei man-chen Typen automatisch beim Anlegen der Spannung (Power-On-Reset) ausge-löst wird (genauer: wenn die Spannung einen bestimmten Pegel erreicht hat). Bei anderen Typen ist hierfür eine externe Beschaltung notwendig, die sich im ein-

Page 23: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

111.5 Arbeitsspeicher

fachsten Fall aus einem Widerstand und einem Kondensator zusammensetzt. Um einen manuellen Reset auslösen zu können, wird zusätzlich ein Taster in der Reset-Schaltung eingesetzt.

Abb. 1–7 Typische einfache Reset-Schaltungen

Korrekte Versorgungsspannung, Takt und Reset sind ganz generell die Mindest-voraussetzungen für den Betrieb eines Mikrocontrollers, sodass im Fehlerfall, wenn der Controller überhaupt nicht zu funktionieren scheint, diese drei Punkte mit einem Oszilloskop und die Spannung mit einem Multimeter zu kontrollieren sind. Dabei sind die Messungen (möglichst) direkt an den Kontakten des Mikro-controllers vorzunehmen.

Weil sich diese drei Betriebsparameter bei den verschiedenen Mikrocontrol-lern prinzipiell sehr stark voneinander unterscheiden können, wird hierauf bei den einzelnen Mikrocontroller-Familien noch näher eingegangen.

1.5 Arbeitsspeicher

Jeder Mikrocontroller verfügt über einen sogenannten Arbeitsspeicher, der für die Ablage von Daten und Programmen zuständig ist. Grundsätzlich unterschei-det man dabei zwischen einem Festwertspeicher (ROM) und einem Schreib-/Lese-speicher (RAM). Der Festwertspeicher kann vom Mikrocontroller während des üblichen Betriebes nur gelesen werden, was für die Abarbeitung des im ROM (Read Only Memory) fest gespeicherten Programms notwendig ist, während es sich beim Schreib-/Lesespeicher um einen flüchtigen Speicher (volatile) handelt, dessen Inhalt beim Abschalten der Versorgungsspannung verloren geht. Der RAM-Speicher (Random Access Memory) ist demnach nur für die kurzzeitige Speicherung von Daten und Programmen einsetzbar.

Page 24: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

1 Mikrocontrollergrundlagen12

Bei Mikrocontrollern wird der RAM-Speicher üblicherweise als SRAM (Static RAM) realisiert, was bedeutet, dass die Information hier in Zellen abge-legt wird, die aus Flip-Flops aufgebaut sind. Bei Anwendungen, bei denen große Arbeitsspeicherkapazitäten notwendig sind, werden hingegen DRAMs (Dynamic RAM) eingesetzt, wie es etwa bei Personal Computern der Fall ist, wo die DRAMs – je nach PC-Baujahr – auf verschiedenen Modulen (SIM, DIMM, DDR) untergebracht sind. Im Vergleich zu SRAM ist DRAM wesentlich kosten-günstiger, weil hier die Speicherung als Ladung in einem Kondensator stattfindet und keine Halbleiterschaltungen wie Flip-Flops notwendig sind. Allerdings benö-tigt DRAM einen separaten Memory-Controller für die relativ komplizierte Adressierung der Speicherzeilen und -spalten sowie für die regelmäßige Ausfüh-rung eines Refresh-Zyklus, damit die Ladung der Kondensatorzellen nicht unzu-lässigerweise absinkt. DRAM-Speicher wird bei Mikrocontrolleranwendungen nicht eingesetzt, was zudem separate Chips erfordern würde, denn in den Mikro-controllern selbst ist kein integriertes DRAM zu finden.

Sowohl für den Langzeitspeicher (ROM) als auch für den Kurzzeitspeicher (SRAM) existieren verschiedene Technologien und Varianten, wobei die Fest-wertspeicher von besonderem Interesse sind, weil hier das Programm für den Mikrocontroller abzuspeichern ist, was mit unterschiedlichen Methoden erfolgt. Ausgehend vom ursprünglichen ROM gibt es zahlreiche Ausführungen von Nur-Lese-Speichern, die nach verschiedenen Funktionsprinzipien arbeiten. Die fol-gende Aufzählung nennt hierzu in Kurzform die wichtigsten Details.

■ ROM: Read Only Memory Dies ist ein festprogrammierter Nur-Lese-Speicher, der nicht gelöscht werden kann. Er wird bei der Herstellung mit einer entsprechenden Maske (Masken-ROM) programmiert.

■ PROM: Programmable Read Only Memory Hierbei handelt es sich um einen mit einem speziellen Programmiergerät zu programmierenden Nur-Lese-Speicher, der nach dem einmaligen Beschreiben nicht wieder gelöscht werden kann.

■ EPROM: Electrically Programmable Read Only Memory Bei diesem programmierbaren Nur-Lese-Speicher kann der Inhalt als Ganzes durch UV-Licht gelöscht werden, wobei dieser Vorgang ca. 20 Minuten dau-ert. Mit einem speziellen Programmiergerät kann man ein EPROM wieder erneut beschreiben. EPROMs sind an ihrem Fenster zu erkennen, durch das man den Chip bei Bedarf mit UV-Licht bestrahlt.

Page 25: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

131.5 Arbeitsspeicher

Abb. 1–8 Verschiedene PIC-Mikrocontroller mit EPROM-Speicher

■ EEPROM: Electrically Eraseable and Programmable Read Only MemoryEin programmierbarer Nur-Lese-Speicher, dessen Inhalt zeilenweise elektrisch zu löschen ist und der mit einem speziellen Programmiergerät wieder beschrie-ben werden kann. Die elektrisch lösch- und wiederbeschreibbaren Speicher sind relativ einfach mit einer kleinen Zusatzschaltung programmierbar.

■ E2PROM: Electrically Eraseable and Programmable Read Only MemoryDies ist zunächst eine nur eine andere Bezeichnung für ein EEPROM. Diesen Chip-Typ gibt es auch in serieller Ausführung (Daten- und Taktsignal). Er besitzt eine relativ geringe Speicherkapazität (100 Byte bis mehrere kByte) und benötigt eine vergleichsweise lange Schreibzeit (typisch 10 ms) pro Wert. Dieser Speicher kann oftmals mit spezieller (Entwickler-)Software in der Schaltung selbst – oder wie die anderen Speicher auch – mit einem Program-miergerät beschrieben werden.

■ EAROM: Electrically Alternate Programmable Read Only MemoryDie Funktion dieses Typs entspricht der Funktion eines EEPROM und hat keine besondere Bedeutung mehr.

■ OTP-ROM: One Time Programmable Read Only MemoryEin OTP-ROM ist von der Funktion her mit einem EPROM identisch, kann jedoch nur einmal beschrieben und nicht wieder gelöscht werden.

■ Flash-MemoryDies ist ein flexibler und verhältnismäßig schneller Speicher, der prinzipiell wie ein RAM gehandhabt werden kann, wobei die Information nach dem Abschal-ten der Spannung jedoch nicht verloren geht. Typischerweise sind mindestens 10.000 Programmier- und Löschvorgänge möglich. Mittlerweile gibt es zahl-reiche unterschiedliche Flash-Varianten. Die älteren Flash-Speicher können nur komplett oder immerhin seitenweise elektrisch gelöscht werden.

Page 26: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

1 Mikrocontrollergrundlagen14

■ FRAM: Ferro Electric Random Access MemoryEin relativ neuer Speichertyp, der prinzipiell wie ein RAM aufgebaut ist, jedoch seinen Speicherinhalt beim Abschalten der Betriebsspannung nicht verliert, was mithilfe eines speziellen Speicherkondensators erreicht wird. Der Speicherkondensator (F-Cap) verwendet ein spezielles dielektrisches Mate-rial, und zwar eine Keramik (PZT), die einen ferroelektrischen Effekt aus-nutzt, was diesem Speichertyp seine Bezeichnung verleiht. Im Gegensatz zu EEPROM- oder Flash-Speicher wird für den Speichervorgang weder eine höhere Spannung noch eine spezielle Datensequenz benötigt. Die erste kom-merzielle Verwendung bei Mikrocontrollern hat Texas Instruments mit der MSP430FR-Serie realisiert, die insbesondere für Ultra- Low-Power-Anwen-dungen gedacht ist.

Die angeführten Speichertypen gibt es als einzelne Bausteine, die mit den entspre-chenden Signalen (Adress-, Daten- und Steuerleitungen) des Mikrocontrollers zu verbinden sind. Bei den meisten aktuellen Mikrocontrollern ist dies aufgrund der nicht mehr nach außen geführten parallelen Signale nicht mehr möglich und auch nicht notwendig, weil der Speicher im Mikrocontroller selbst eingebaut ist und der von der Kapazität her meist ausreichend ist. Bei Speichermangel lässt sich ein Mikrocontroller – je nach Hersteller/Familie – oftmals durch einen baugleichen Typ mit höherer Speicherkapazität austauschen.

Falls dennoch separate Speichererweiterungen notwendig werden sollten, wird dies üblicherweise durch die einfach anschließbaren Serial EEPROMs oder Serial Flash-Bausteine praktiziert, die beispielsweise mit dem I2C-Bus (siehe Abschnitt 4.3) arbeiten. Flexible Speicherlösungen ergeben sich durch austausch-bare Flash-Karten, die über ein SD-Karten-Interface in der Schaltung integriert werden.

1.6 Interrupt-Logik

Die meisten Mikrocontroller – eine Ausnahme sind die »kleinen« Typen wie die 10F2xx-Serie von Microchip – verfügen über ein integriertes Interrupt-System, das bei entsprechender Programmierung ein ganz wesentliches Element für die effektive Nutzung der einzelnen internen Einheiten sowie der Peripherie darstellt.

Beim Auftreten eines Interrupts, der von unterschiedlichen Einheiten ausge-löst werden kann, wird der Mikrocontroller in seiner momentanen Arbeit unter-brochen. Dies könnte gerade beim Senden von Daten über die serielle Schnitt-stelle passieren, wenn ein Interrupt vom A/D-Wandler ausgelöst wird, weil ein aktueller Messwert zur Verfügung steht. Daraufhin wird das Senden der Daten an

Page 27: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

151.6 Interrupt-Logik

den UART eingestellt, der Messwert vom A/D-Wandler eingelesen und das Pro-gramm an derjenigen Stelle weitergeführt, wo es zuvor unterbrochen wurde.

Damit der Mikrocontroller weiß, mit welcher Arbeit er vor dem Auftreten des Interrupts beschäftigt war, werden der logische Zustand des Controllers und die Inhalte der Register zuvor mehr oder weniger automatisch gespeichert. Sie werden auf einen Stapel-Speicher (Stack) gelegt und später nach Beendigung der Interrupt Service Routine wieder eingelesen. Wie dies im Einzelnen zu praktizie-ren ist, hängt von der jeweiligen Controllerfamilie ab. Im Folgenden ist ein Bei-spiel für eine Interrupt Service Routine angegeben, wie sie für Mikrocontroller von Microchip (PIC 16F876A) üblich ist.

org 4 ; Beginne bei Adresse 04h

; Mit den folgenden Zeilen wird der Programmstatus gerettet

MOVWF wcopy ; Akku-Register w sichernSWAPF STATUS,W ; STATUS-Register sichernCLRF STATUSMOVWF s_copyMOVFP CLATH, W ; PCLath - Register sichern MOVWF pclath_copyCLRFP CLATH

; Ab hier beginnt die ‘eigentliche’ Interrupt-Routine.; Testen, welcher Interrupt ausgelöst wurde.

BTFSCINTCON, T0IF ; Wenn I0IF = 0, überspringe den ; nächsten Befehl

GOTO Timerüberlauf ; sonst Interrupt durch Timerüberlauf ; Interrupt vom PB0?

BTFSCINTCON, INTF ; INTF =0 ? überspringe ; den nächsten Befehl

GOTO INTPB0BTFSC PIR1,TMR1IFGOTO IntTMR1 ; Interrupt durch Timer1

; Wiederherstellen des Programmstatus, der vor der ISR-Ausführung ; herrschte.

sprungmarkeMOVF pclath_copy, WMOVWF PCLATH ; PCLath - Register zurückschreiben SWAPF s_copy,W ; STATUS - Register zurückschreiben MOVWF STATUSSWAPF w_copy,FSWAPF w_copy,W ; Akku - Register zurückschreiben Retfie ; verlasse die ISR und kehre ins Programm zurück

Page 28: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

1 Mikrocontrollergrundlagen16

Ohne Interrupt-Verarbeitung müsste der Mikrocontroller in einer (endlosen) Pro-grammschleife arbeiten und die einzelnen Einheiten der Reihe nach abfragen, was sich als kaum praktikabel erweist, zumal er die meiste Zeit mit Abfragen beschäf-tigt wäre, die zum größten Teil die gleichen Ergebnisse wie zuvor liefern würden oder gerade aufgetretene Ereignisse erst viel zu spät erfasst werden würden.

Ob überhaupt eine Interrupt-Verarbeitung stattfinden soll, kann ganz gene-rell in einem bestimmten Register (z. B. Configuration Word) eingeschaltet – enabled – werden. Diese grundsätzliche Konfigurierung ist wichtig, weil beim nicht expliziten Freigeben oder Sperren der Interrupt-Verarbeitung unerwartete und letztlich undefinierte Situationen auftreten können, die sich nur schwer reproduzieren und damit verstehen lassen, weil die Interrupts asynchron, also prinzipiell jederzeit, auftreten können.

Die Interrupt Service Routine, auch als Interrupt Handler bezeichnet, ist eine kurze Befehlssequenz, die die Reaktion des Controllers auf einen aufgetretenen Interrupt abbildet. In dieser Routine wird üblicherweise zunächst das Statusregis-ter des Interrupt-Controllers (Pending Register) ausgelesen, damit die anfor-dernde Quelle identifiziert ist, woraufhin ein Vergleich mit der Konfiguration des Interrupt-Mask- oder Interrupt-Enable-Registers durchgeführt wird, um festzu-stellen, ob der aktuell aufgetretene Interrupt (für die Weiterverarbeitung) freige-geben wurde. Ist dies der Fall, kann die Interrupt-Service-Routine in den jeweils dazugehörigen Programmteil, etwa den für eine A/D-Umsetzung, springen, die-sen abarbeiten, das Messergebnis speichern und wieder zum Ausgangspunkt (bevor der Interrupt auftrat) zurückkehren.

Dieser einfache Ablauf funktioniert nur dann einwandfrei, wenn nicht gleich-zeitig mehrere Interrupt-Anforderungen ausgelöst werden, sodass dann nach der jeweiligen Dringlichkeit entschieden werden muss, welche Anforderung zuerst bedient wird bzw. welche Reihenfolge bei der Abarbeitung einzuhalten ist. Hier-für verfügt die Interrupt-Logik über eine Prioritätsverwaltung (Priority Encoder), die im Chip festgelegt ist und im Bedarfsfall auch meist individuell programmiert werden kann.

Page 29: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

171.7 Watchdog

Abb. 1–9 Typische Interrupt-Architektur

1.7 Watchdog

Der Watchdog eines Mikrocontrollers besteht aus einem Zähler (Timer), der bei Überlauf automatisch einen Reset des Mikrocontrollers auslöst. Er dient zur Kontrolle, ob das Programm des Mikrocontrollers wie vorgesehen funktioniert und nicht etwa in einer Endlosschleife hängt oder abgestürzt ist, was beispiels-weise durch Störungen verursacht sein kann.

Page 30: Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern · v Vorwort Praktische Bücher über Mikrocontroller behandeln üblicherweise einen ganz bestimmten Typ, der dementsprechend

1 Mikrocontrollergrundlagen18

Vorausetzung für die Watchdog-Funktion ist, dass der Watchdog Timer(WDT) im normalen Programmlauf laufend zurückgesetzt wird, damit kein uner-wünschter Überlauf und damit kein Reset stattfindet. Je nach Mikrocontrollertyp und Programmierung wird ein Timeout nach Millisekunden bis hin zu Sekunden detektiert.

Andere Watchdog-Implementierungen arbeiten mit der Überwachung eines zyklisch erzeugten Signals, und falls dieses ausbleiben sollte, erfolgt ein Reset, der das System daraufhin neu startet. Extern arbeitende Watchdogs funktionieren oftmals auf diese Art und Weise. »Extern« bedeutet, dass der Watchdog als eigen-ständige Einheit ausgeführt ist und nicht interner Bestandteil des Mikrocontrol-lers ist, was eine höhere Sicherheit zur Folge hat, als wenn der Mikrocontroller sich quasi selbst überwachen würde.

Eine Verbesserung eines internen Watchdogs ergibt sich durch die Verwen-dung eines eigenen Oszillators für den Takt des WDT, sodass hiermit eine gewisse Entkopplung von der CPU erreicht wird. Dieses Feature ist bei aktuellen Mikro-controllern mittlerweile als Standard zu betrachten und sollte möglichst wenig Energie verbrauchen.

Abb. 1–10 Watchdog-Schaltung und Programmbeispiel für die Einstellung des Teilers

Die korrekte Programmierung des WDT ist von der jeweiligen Applikation abhängig, und nicht selten arbeitet der Watchdog – insbesondere nach einer Pro-grammänderung – nicht wie gewünscht, sodass das Timing des Programms bzw. das Rücksetzen des WDT entsprechend anzupassen ist. Der Watchdog ist dem-nach keine Einheit, die lediglich eingeschaltet werden muss und automatisch eine Sicherheitsfunktion bildet, sondern sie bedarf einer gewissenhaften Programmie-rung, damit sie nicht fälschlich ausgelöst wird. Unter Umständen ist der Watch-dog in kritischen Anwendungen zwischendurch abzuschalten, weil er in einem Power-Down-Modus üblicherweise nicht arbeitet.