1 Zahlendarstellung ....................................................................................... 11
1.1 Zehner- oder Dezimalsystem .......................................................... 11
1.2 Binärsystem ................................................................................... 11
1.2.1 Positive Binärzahlen ........................................................................ 11
1.2.2 Positive und negative Zahlen im Binärsystem .................................. 12
1.2.3 Rechnen im Binärsystem.................................................................. 13
1.3 Oktalsystem................................................................................... 14
1.4 Hexadezimalsystem ....................................................................... 15
2 Hardware..................................................................................................... 17
2.1 Richtlinien zur Auswahl der Hardware ............................................ 17
2.2 Hardware-Auswahl bei einer Investition von 100 Euro .................... 17
2.2.1 STK500 ............................................................................................ 17
2.2.2 Dragon mit Arduino.......................................................................... 19
2.3 Hardware-Auswahl bei einer Investition von 50 Euro ...................... 20
2.3.1 STK500-kompatibler Programmieradapter mit Arduino .................... 20
2.4 Hardware-Auswahl bei einer Investition von deutlich
unter 50 Euro.................................................................................. 21
2.4.1 Arduino mit Bootloader.................................................................... 21
2.5 Alternative Entwicklungs-Boards .................................................... 26
2.6 Alternative Programmiergeräte....................................................... 26
2.7 Empfehlung.................................................................................... 26
3 Softwaretools zur Programmierung.............................................................. 27
3.1 Entwicklungsumgebung ................................................................. 27
3.2 Blinklicht mit dem Atmel Studio 6 .................................................. 27
3.3 Blinklicht mit CodeVisionAVR ......................................................... 33
4 Perfektionskurs in C..................................................................................... 37
4.1 Variable und Konstanten ................................................................ 37
4.1.1 Character ......................................................................................... 37
4.1.2 Integer ............................................................................................. 38
4.1.3 Long................................................................................................ 39
4.1.4 Float und Double ............................................................................. 39
4.2 Entscheidungsstrukturen ............................................................... 39
4.2.1 If ...................................................................................................... 39
4.2.2 If-else .............................................................................................. 41
4.2.3 If-else-Kette ..................................................................................... 41
8 Inhaltsverzeichnis
4.2.4 Kurzform für die Kontrollstruktur mit ternärem Operator................... 42
4.2.5 Switch ............................................................................................. 42
4.3 Modulooperator ............................................................................. 44
4.3.1 Zerlegen einer Zahl in Einer- und Zehnerstelle.................................. 44
4.3.2 Umwandlung einer dreistellige Zahl in einen String.......................... 44
4.3.3 Modulo in einer Schleife mit dem Schleifenindex............................. 45
4.4 Bitweiser Zugriff auf ein Byte.......................................................... 45
4.4.1 Setzen von Bits mit dem Oder-Operator ........................................... 46
4.4.2 Löschen von Bits mit dem Und-Operator .......................................... 47
4.4.3 Toggeln von Bits mit dem Exklusiv-Oder-Operator............................ 47
4.5 Unterprogramme............................................................................ 47
4.5.1 Definition, Deklaration und externe Vereinbarung............................ 48
4.6 Zeiger............................................................................................. 50
4.6.1 Zeiger auf Integer............................................................................. 50
4.7 Schleifen........................................................................................ 52
4.7.1 For-Schleife...................................................................................... 53
4.7.2 While-Schleife ................................................................................. 54
4.7.3 Do-while-Schleife............................................................................. 55
4.7.4 Schleifen aussetzen......................................................................... 56
4.8 String............................................................................................. 56
4.8.1 Aufbau von Strings .......................................................................... 56
4.8.2 String-Funktionen mit Format-String................................................. 60
4.9 Ausgabe mit Formatangabe ............................................................ 60
4.10 Eingabe mit Formatangabe ............................................................. 63
4.11 Arrays und Zeiger ........................................................................... 64
4.11.1 Zeiger und Adressen ........................................................................ 64
4.11.2 Funktion String-Länge mit Zeiger...................................................... 65
4.11.3 Funktion strlen() mit Zeigerarithmetik .............................................. 66
4.11.4 Zeichenketten und Character-Zeiger ................................................ 66
4.11.5 Array von Zeigern ............................................................................. 67
5 Die serielle Schnittstelle.............................................................................. 69
5.1 Die serielle Schnittstelle am PC ...................................................... 69
5.2 Elektrisches Signal der seriellen Schnittstelle ................................ 69
5.3 Verdrahtung der RS-232-Schnittstelle............................................ 71
5.4 Verfügbares Terminal-Programm .................................................... 73
5.4.1 Hyperterminal .................................................................................. 73
5.4.2 HTerm.............................................................................................. 78
5.4.3 Terminal der Entwicklungsumgebung CodeVisionAVR...................... 78
5.5 Terminal-Programme im Sourcecode .............................................. 80
5.5.1 Terminal-Programm mit LabVIEW ..................................................... 80
5.5.2 Terminal-Programm mit C#............................................................... 81
5.6 Terminal-Programm testen ............................................................. 91
Inhaltsverzeichnis 9
6 Programmierung der seriellen Schnittstelle des AVR.................................... 93
6.1 Programmierung mit CodeVisionAVR .............................................. 93
6.2 Programmierung im Atmel Studio................................................... 99
6.3 Programmierung der seriellen Schnittstelle mit
formatierter Ein- und Ausgabe ...................................................... 105
6.4 Interruptgesteuerte Programmierung mit verfügbarer
Bibliothek .................................................................................... 108
7 Grundfunktionen der Timer ........................................................................ 109
7.1 Timerinterrupt mit CodeVisionAVR................................................ 110
7.2 Timerinterrupt mit Atmel Studio ................................................... 114
7.3 CTC-Modus des Timers ohne Interrupt .......................................... 118
7.4 CTC-Modus des Timers mit Interrupt............................................. 119
7.5 Pulsweitenmodulation (PWM) mit Timer 1 .................................... 121
7.5.1 Ein PWM-Signal mit Timer 1 erzeugen ............................................121
7.5.2 PWM-Signal erzeugen und Interrupt auflösen.................................122
7.5.3 Gleichzeitig zwei PWM-Signale mit dem Timer 1 erzeugen..............123
8 Digitale Ein- und Ausgabe ohne externe integrierte Schaltkreise (ICs)........ 125
8.1 Einlesen von digitalen Signalen.................................................... 125
8.1.1 Direktes Einlesen eines einzelnen digitalen Signals .......................125
8.1.2 Einlesen eines Tasters ...................................................................126
8.1.3 Taster einlesen und entprellen mit nachfolgender Auswertung
einer Flanke ...................................................................................128
8.1.4 Einlesen einer 4x4-Tastatur............................................................130
8.1.5 Einlesen einer 3x4-Tastatur mit Diodenlogik ..................................132
8.2 Ausgabe digitaler Signale ............................................................ 135
8.2.1 Ansteuerung einer einzelnen Siebensegmentanzeige ....................135
8.2.2 Ansteuerung von 2 Siebensegmentanzeigen nach dem
Multiplexprinzip.............................................................................137
8.2.3 Ansteuerung eines Siebensegmentdisplays mit 2½ Stellen
nach dem Multiplexprinzip ............................................................140
8.2.4 Ansteuerung von Leuchtdiode mit möglichst wenigen Leitungen ...143
9 Ein- und Ausgabe mit ICs zur Verminderung der Port-Leitungen ................. 147
9.1 Tastatur mit Demultiplexer und Prioritätsencoder......................... 147
9.2 Siebensegmentanzeige mit Schieberegister................................. 150
10 Endlicher Automat ..................................................................................... 155
10.1 Allgemeine Einführung ................................................................. 155
10.2 Vor-Rück-Zähler mit endlichen Automaten und
Zustandsdiagramm ...................................................................... 155
10.3 Codeschloss................................................................................. 158
10.4 Entprellen von Kontakten ............................................................. 160
10 Inhaltsverzeichnis
10.5 Auswertung von Schaltflanken ..................................................... 163
10.6 Auswertung eines Inkrementalgebers (Drehgeber) ....................... 165
11 Schrittmotor .............................................................................................. 169
11.1 Allgemeine Informationen ............................................................ 169
11.2 Prinzipielle Arbeitsweise .............................................................. 170
11.3 Aufbau der Elektromagneten und ihre Ansteuerung...................... 171
11.4 Endstufe für bipolare und unipolare Schrittmotoren ..................... 172
11.5 Wicklungsarten ............................................................................ 176
11.6 Programme zur Ansteuerung ........................................................ 176
11.6.1 Einfaches Programm...................................................................... 177
11.6.2 Schrittmotoransteuerung im Interrupt ............................................ 178
11.6.3 Schrittmotoransteuerung über die RS-232-Schnittstelle................. 179
11.7 Mikroschrittansteuerung.............................................................. 182
12 Distanzmessungen mit Ultraschallsensoren .............................................. 187
12.1 Funktionsweise ............................................................................ 187
12.2 Ultraschallsensor SRF02 .............................................................. 187
12.3 Ultraschall-Eigenbausensor.......................................................... 191
13 Transistorkennlinie aufnehmen und grafisch darstellen............................. 199
13.1 Arbeitsweise des Kennlinienschreibers ........................................ 199
13.2 Darstellung der Daten in Excel...................................................... 199
13.3 Darstellung der Daten mit einem grafischen LCD .......................... 205
14 Schwebende Kugel .................................................................................... 211
14.1 Prinzip und Versuchsaufbau......................................................... 211
14.2 Regelungstechnisches Modell...................................................... 212
14.3 Schaltplan.................................................................................... 215
14.4 Programm für die schwebende Kugel............................................ 216
14.5 Aufbau und Inbetriebnahme ......................................................... 218
15 EKG .............................................................................................. 223
15.1 Grundlegendes zum Elektrokardiogramm..................................... 223
15.2 Sicherheitshinweis....................................................................... 224
15.3 Einfache EKG-Schaltung ............................................................... 224
15.4 EKG-Shield von Olimex................................................................. 226
15.5 Darstellung der Daten in Excel...................................................... 228
15.6 Darstellung der Daten in einem grafischen LC-Display.................. 231
Anhang...................................................................................................... 235
Stichwortverzeichnis ................................................................................. 239