Inhaltsverzeichnis

Transcription

Inhaltsverzeichnis
5.6
PWM (Pulse Width Modulation)
23
5
Inhaltsverzeichnis
1 Die CD-ROM zum Buch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1
1.2
1.3
1.4
Inhalt der CD-ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
GPL (General Public License) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Systemvoraussetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Updates und Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
11
11
11
2 Mikrocontroller Grundlagen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
Aufbau und Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeits- und Programmspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Peripherie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Technologievergleich: RISC und CISC . . . . . . . . . . . . . . . . . . . . . . . . . .
CISC-Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
RISC-Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vergleich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
13
13
15
15
15
15
16
3 Mikrocontroller-Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1
3.2
3.3
3.4
3.5
Was ist ein Programm? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Programmierung in Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konzept von Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vorteile von Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Programmierung in Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
17
18
18
18
4 Übersicht über die ATMEL AVR-Controller . . . . . . . . . . . . . . . . . . . . . . 19
4.1
4.2
4.3
4.4
AT90Sxxx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ATmega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ATTiny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ATxmega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
19
20
20
5 Der ATmega88 des Lernpakets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.1
5.2
5.3
5.4
5.5
5.6
Die interessantesten Pins des ATmega88 auf einen Blick . . . . . . . . .
Taktfrequenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
I/O-Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADC (Analog Digital Converter) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PWM (Pulse Width Modulation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
22
22
23
23
23
6
Inhaltsverzeichnis
5.7
5.8
5.9
5.10
UART (Universal Asynchronous Receiver Transmitter) . . . . . . . . . . . .
IRQ (Interrupt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Stromversorgung des ATmega88 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
23
24
24
6 ISP-Grundbeschaltung des ATmega88 . . . . . . . . . . . . . . . . . . . . . . . . 25
6.1
Programmiergeräte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7 Unser Bascom-Lernsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.1
7.2
7.3
Bauteileliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Das Experimentier-Board ATmega88 . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Sicherheitshinweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
8 Die Bauteile des Lernpakets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
8.1
8.2
8.3
8.4
8.5
8.6
8.7
Leuchtdioden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Widerstände . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kondensatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transistoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Piezo-Schallwandler (Buzzer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schaltdraht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
33
34
35
36
36
37
9 Die ersten Vorbereitungen (Inbetriebnahme) . . . . . . . . . . . . . . . . . . . 38
9.1
9.2
9.3
Treiberinstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Das Tool MProg für den FT232RL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
FT232R mit MProg programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
10 Bascom installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
11 Der Basic-Compiler – Bascom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
11.1
11.2
11.3
11.4
Landessprache auswählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Bascom IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bascom-Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bascom-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
51
52
53
12 Der erste Test: „Es Blinkt“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
12.1 Was haben wir getan? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
13 Grundlagen des Programmierens . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
13.1 Bits und Bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
13.2 Grundsätzlicher Aufbau eines Programms . . . . . . . . . . . . . . . . . . . . . 60
13.3 Sequenzieller Programmablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
14.10
13.4
13.5
String und String-Bearbeitung
79
7
Interruptgesteuerter Programmablauf . . . . . . . . . . . . . . . . . . . . . . . 61
Der Aufbau eines Bascom-Programms . . . . . . . . . . . . . . . . . . . . . . . 61
14 Bascom AVR Basic – Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
14.1
14.2
14.3
14.4
14.5
14.5.1
14.6
14.7
14.7.1
14.7.2
14.7.3
14.7.4
14.8
14.8.1
14.8.2
14.8.3
14.9
14.9.1
14.9.2
14.9.3
14.9.4
14.9.5
14.10
14.10.1
14.10.2
14.10.3
14.10.4
14.10.5
14.10.6
14.10.7
14.10.8
14.10.9
14.10.10
14.10.11
14.10.12
14.10.13
14.10.14
14.10.15
Kommentare im Quelltext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datentypen und Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variablen-Namen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lokale und globale Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variablen-Zuweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kontrollstrukturen (If Then Else, Select Case und Goto) . . . . . . .
If Then –End if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
If Then – Else –End if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
If und ElseIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Select Case. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schleifen (For Next, Do Loop, Do Until, While Wend) . . . . . . . . .
For Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Do Loop und Do Loop Until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
While Wend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funktionen, Prozeduren und Labels . . . . . . . . . . . . . . . . . . . . . . .
Subroutinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gosub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
String und String-Bearbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . .
Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ucase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lcase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hexval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Val . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Str . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fusing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Len . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
65
66
66
66
67
67
68
68
69
69
70
71
72
73
74
75
75
76
76
77
78
79
79
79
80
80
81
81
81
82
82
82
83
83
84
84
85
8
Inhaltsverzeichnis
14.10.16
14.10.17
14.10.18
14.10.19
14.10.20
14.10.21
14.11
14.12
14.13
14.14
14.15
14.16
14.17
14.18
14.19
14.20
14.21
Split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Left . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Right . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Ltrim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Rtrim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Trim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Input-/Output-Konfiguration und Portsetzen . . . . . . . . . . . . . . . . 88
Interne Pull-up-Widerstände benutzen . . . . . . . . . . . . . . . . . . . . 91
Der Bascom-Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Timer als Timer verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Timer als Counter verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Der Analog-Digital-Wandler (ADC) . . . . . . . . . . . . . . . . . . . . . . . 100
Externe Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Die UART-Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Software-UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Sleep-Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
15 Weitere Experimente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
15.1
15.2
15.3
15.4
15.5
15.6
15.7
15.8
15.9
15.10
15.11
15.11.1
15.12
15.13
15.14
15.15
15.16
15.17
15.18
15.19
15.20
15.21
15.22
Tasten entprellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einschaltverzögerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ausschaltverzögerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LEDs am ATmega88. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Größere Verbraucher schalten . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tonerzeugung mit dem Befehl Sound . . . . . . . . . . . . . . . . . . . . . .
Töne über Timer0 erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Morsecode-Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Impulszähler mit Timer0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Impulslängenmessung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PWM (Pulse Width Modulation) . . . . . . . . . . . . . . . . . . . . . . . . . .
Die PWM-Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DAC mit PWM-Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transistor-LED-Dimmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LED-Dimmer mit Timer0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Softer Blinker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zufallszahlen mit Bascom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zahlenraten mit Bascom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Romantisches Mikrocontroller-Kerzenlicht . . . . . . . . . . . . . . . . . .
Überwachung des Personalausgangs . . . . . . . . . . . . . . . . . . . . . .
RTC (Real Time Clock) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schuluhrprogramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lüftersteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
113
116
117
118
120
122
124
125
129
131
132
135
136
139
141
142
144
146
147
148
149
151
154
21
Literaturverweis
15.23
15.24
15.25
15.26
15.27
15.28
15.29
15.30
15.31
15.32
15.33
15.34
15.35
15.36
15.37
15.38
15.39
15.40
15.41
15.42
222
Dämmerungsschalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alarmanlage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Komfort-Treppenlichtautomat . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Codeschloss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kapazitätsmesser mit Autorange . . . . . . . . . . . . . . . . . . . . . . . . . .
Potenziometer professionell auslesen . . . . . . . . . . . . . . . . . . . . .
Sensortaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
State-Maschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8-Kanal-Voltmeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Spannungs-Plotter selbst programmiert . . . . . . . . . . . . . . . . . . . .
Das ATmega88-Speicheroszilloskop . . . . . . . . . . . . . . . . . . . . . . .
StampPlot der Profi-Datenlogger zum Nulltarif . . . . . . . . . . . . . . .
Steuern über VB.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Leuchtdiodentester . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
GPS-Mouse auslesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Temperaturschalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Temperaturmessung mit dem LM335 . . . . . . . . . . . . . . . . . . . . . .
MIN/MAX-Thermometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Temperatur-Logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aquariumsteuerung mit Überwachung . . . . . . . . . . . . . . . . . . . . .
9
158
160
162
164
167
169
170
172
174
176
178
180
185
186
188
194
196
198
200
205
16 Programm über ISP-Programmer auf den AVR übertragen . . . . . . 210
17 Escape-Sequenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
18 ASCII-Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
19 Reservierte Worte in Bascom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
20 Bezugsquellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
21 Literaturverweis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222