Matthias Sturm
Mikrocontrollertechnik
Am Beispiel der MSP430-Familie
Vorwort
6
Inhalt
10
1 Ein-Bit-Rechner
16
1.1 Rechenwerk
16
1.1.1 Register und Takt
17
1.1.2 Zwischenspeicher
18
1.1.3 Native und emulierte Datenmanipulationsbefehle
19
1.2 Steuerwerk
21
1.2.1 Programmsteuerbefehle
21
1.2.2 Befehlsliste
23
1.3 Programmspeicher
25
1.4 Befehlszähler
27
1.5 Zusammenfassung
28
2 Mikrorechentechnik-Grundlagen
30
2.1 Codes
30
2.1.1 ASCII-Code
30
2.1.2 BCD-Code
30
2.2 Darstellung von Zahlen in Mikrorechnern
31
2.2.1 Binäres Zahlensystem
31
2.2.1.1 Vorzeichenlose ganze Zahlen
31
2.2.1.2 Vorzeichenlose gebrochene Zahlen, Festkommazahlen
32
2.2.1.3 Vorzeichenbehaftete ganze Zahlen
32
2.2.2 Informationsgehalt eines Bytes
33
2.2.3 Hexadezimales Zahlensystem
34
2.2.4 Zahlendarstellung in 16-Bit-Systemen
34
2.3 Statusbits
36
2.3.1 Z-Flag
36
2.3.2 N-Flag
36
2.3.3 C-Flag
37
2.3.4 V-Flag
37
2.4 Rechnerarchitekturen
38
3 Das Mikrocontrollersystem –
3 Das Mikrocontrollersystem –
41
41
3.1 Die Mikrocontrollereinheit (MCU) – ein Überblick
41
3.1.1 Zentrale Verarbeitungseinheit (CPU)
42
3.1.2 Speicherarchitektur
42
3.1.3 Adressbereichsaufteilung (Memory Map)
42
3.1.4 Peripherie
43
3.1.5 Oszillator und Systemsicherheit
44
3.1.6 Adressbereich, Speicher und Inhalte
44
3.2 Die CPU der MSP430-Mikrocontroller-Familie
48
3.2.1 Register
48
3.2.2 Adressierungsarten
52
3.2.3 Befehle
62
4 Programmierung und Implementierung
68
4.1 Vorbereitungen zur Softwareentwicklung
68
4.2 Programmentwicklung
68
4.3 Preprozessor-Anweisungen
71
4.4 Das erste eigene Programm
73
4.5 Programmiertechniken
81
4.5.1 Unterprogrammtechnik
81
4.5.2 Interrupttechnik
85
4.5.2.1 Polling oder Interrupt
86
4.5.2.2 Funktionsgruppen im Interruptprozess
86
4.5.2.3 Interruptvektortabelle
87
4.5.2.4 Interruptquellen und Interruptlogik
88
4.5.2.5 Interruptpriorität
88
4.5.2.6 Interruptmaskierung
88
4.5.2.7 Interruptprozess
88
4.5.2.8 Verschachtelung und Reaktionszeit
90
4.5.2.9 Interruptprogrammstruktur
90
5 Hardwaremodule des Mikrocontrollers MSP430F2274
92
5.1 System Reset und Initialisierung
92
5.1.1 Die Signale POR und PUC
92
5.1.2 Der Initialisierungsstatus
92
5.2 Basic-Clock-Modul
93
5.2.1 DCO
94
5.2.2 Quarzoszillator
97
5.2.3 Taktsignale des Basic-Clock-Moduls
97
5.2.4 Low-Power Modi
98
5.2.5 Taktfehlererkennung
99
5.2.6 Register des Basic-Clock-Moduls
99
5.3 Watchdog-Timer
100
5.4 Die parallelen Schnittstellen
103
5.4.1 Überblick zu den parallelen Ports
103
5.4.1.1 Datenrichtung
103
5.4.1.2 Daten ausgeben
105
5.4.1.3 Signalzustände einlesen
105
5.4.1.4 Arbeiten mit gemischten Eingabe-Ausgabe-Ports
105
5.4.1.5 Pull-up und pull-down Widerstände
106
5.4.2 Die Interruptmöglichkeiten der parallelen Ports 1 und 2
106
5.4.3 Alternative Verwendung der Portpins
108
5.4.4 Einschaltzustand
108
5.4.5 Die Register der parallelen Ports
109
5.4.6 Ströme und Spannungen an den Portpins
109
5.4.7 Programmbeispiele
110
5.4.7.1 Parallelport ausgeben
110
5.4.7.2 Parallelport einlesen
113
5.4.7.3 LC-Display-Ansteuerung
115
5.5 Timer_A und Timer_B
125
5.5.1 Einführung am Beispiel Timer_A
125
5.5.2 16-Bit-Timer
126
5.5.2.1 Taktquellenauswahl und Vorteiler
127
5.5.2.2 Das CLR-Bit im TACTL-Register
127
5.5.2.3 Mode-Auswahl
127
5.5.2.4 Timer starten
130
5.5.3 Die Capture/Compare-Einheit
130
5.5.3.1 Capture-Funktion
131
5.5.3.2 Compare-Funktion
133
5.5.4 Signalerzeugung
133
5.5.4.1 Konstante Zeitintervalle im Continuous Mode
133
5.5.4.2 Zeitintervalle im Up Mode
133
5.5.4.3 Zeitintervalle im Up/Down Mode
134
5.5.5 Output Unit
135
5.5.6 Anschlüsse der Timer_A-Peripheriebaugruppe
135
5.5.7 Verhältnis zwischen Zeitintervall und Zählerstand
139
5.5.8 Die Register der Timer_A-Baugruppe
140
5.5.9 Interrupt Handling Timer_A
140
5.5.10 Programmbeispiele
141
5.5.10.1 Signalerzeugung im Continuous Mode
141
5.5.10.2 PWM-Signalerzeugung im Up Mode
143
5.5.11 Timer_B
144
5.5.12 Interrupt Handling Timer_B
146
5.6 USCI
148
5.6.1 Das asynchrone Übertragungsverfahren
148
5.6.1.1 USART – asynchrone Betriebsart
150
5.6.1.1.1 Baud-Rate-Generator
154
5.6.1.1.2 Weitere Features im asynchronen Mode des USART
157
5.6.1.2 Die Register der USCI-Baugruppe
158
5.6.1.3 Programmbeispiel
158
5.6.2 Synchrone Übertragung
160
5.6.2.1 USCI – synchrone Betriebsart
160
5.6.2.2 Programmbeispiel
164
5.6.3 USCI_B-Modul
164
5.6.3.1 I2C-Bus
165
5.6.3.2 Aufbau der USCI_B-Einheit in I2C-Betriebsart
168
5.7 ADC10
172
5.7.1 Hardware und Funktion der ADC-Peripherieeinheit
172
5.7.2 ADC-Betriebsarten
177
5.7.3 Hinweise zum PCB-Design
178
5.7.4 ADC10-Register
178
5.7.5 Anschlusspin der ADC-Peripheriebaugruppe
179
5.7.6 ADC-Beispielprogramm
180
5.7.7 Der versteckte DMA-Controller
182
5.7.7.1 Die Register der DTC-Einheit
184
5.7.7.2 Programmbeispiel zur DTC-Einheit
184
5.8 Flash Memory
185
5.8.1 Lesen vom Flash Memory
187
5.8.2 Löschen des Flashspeichers
187
5.8.3 Beschreiben/Programmieren des Flashspeichers
187
5.8.4 Flash-Memory-Register
189
5.8.5 Programmbeispiele zum Flash Memory
189
5.8.5.1 Löschen eines Flashsegmentes mit Software außerhalb des Flashmoduls
190
5.8.5.2 Löschen eines Flashsegmentes mit Software innerhalb des Flashmoduls
190
5.8.5.3 Schreiben eines 16-Bit-Wertes in ein Flashsegment mit Software außerhalb des Flashmoduls
191
5.8.5.4 Schreiben eines 16-Bit-Wertes in ein Flashsegment mit Software innerhalb des Flashmoduls
191
6 Mikrocontroller-Programmieren in C
193
6.1 Hochsprache C
193
6.2 C-Programmbeispiele
195
6.2.1 Parallele Ports
195
6.2.1.1 Verwenden zweier Leuchtdioden am Port 1
195
6.2.1.2 Taster am Port 2
196
6.2.2 Timer_A
197
6.2.2.1 Timer_A–Erzeugen von Impulsfolgen
197
6.2.2.2 Timer_A–Erzeugen von PWM-Signalen
198
6.2.3 ADC10
199
6.2.4 USCI
201
6.2.4.1 USCI im Asynchron Mode
201
6.2.4.2 USCI im I2C-Mode
202
6.2.5 LCD
202
Anhang
208
Anhang A
210
A1 Übersicht des Entwicklungstools
210
A1.1 Hauptbestandteile der IAR-Embedded-Workbench
210
Anhang B
215
B1 Das Education System zum Buch
215
B1.1 Hardware
215
B1.1.1 Leuchtdioden
216
B1.1.2 Taster
216
B1.1.3 LC-Display
219
B1.1.4 Drehencoder 24/360
221
B1.1.5 Lautsprecher
223
B1.1.6 Serielle Schnittstelle RS-232
223
B1.1.7 Potentiometer
224
B1.1.8 Servomotoransteuerung
225
B1.1.9 I2C Schnittstelle/Diodenmatrix
225
Anhang C
228
C1 MSP430-Befehlsliste
228
C2 Befehle des MSP430
230
Anhang D
252
D1 Peripheral File Map
252
D2 Special Function-Register SFR (.byte access)
255
D3 Port-Register (.byte access)
257
D4 Basic Clock Modul+Register (.byte access)
263
D5 USCI_A0-Register (.byte access)
266
D6 USCI_B0-Register (.byte access)
274
D7 Operational amplifiers-Register
281
D8 Watchdog Timer+Register (.word access)
284
D9 Flash Memory-Register (.word access)
285
D10 Timer_B-Register (.word access)
288
D11 Timer_A-Register (.word access)
293
D12 ADC10-Register (.word and .byte access)
297
Anhang E
303
E1 Die Interruptvektortabelle
303
Anhang F
304
F1 ASCII-Code Tabelle eines LC-Displays
304
Abkürzungen
307
Literatur
309
Index
310
© 2009-2024 ciando GmbH