Die Mikrocontrollertechnik ist fast unbemerkt ein wesentlicher Begleiter unseres Alltags. Ob Handy, Haushaltsgerät oder Auto ? Mikrocontroller sind ein wichtiger Bestandteil. Dieses Lehrbuch führt in die Grundlagen der Mikrorechentechnik ein und beschreibt Aufbau, Funktion und Handhabung von Mikrocontrollern fundiert und detailliert. Der didaktische Aufbau des Buches ermöglicht dabei ein schrittweises Herantasten an die Thematik. In kleinen Schritten lernen Leser die Komponenten von Mikrocontrollern sowie deren Zusammenspiel kennen. Praxisnahe Beispiele und Anwendungen dienen der Vertiefung des Gelernten und helfen, eigene Mikrocontrollerapplikationen zu entwickeln und umzusetzen. Als Beispiel für den gesamten Prozess dient dabei der MSP430F2274, ein sehr moderner und leistungsfähiger Mikrocontroller.
Dieses Lehrbuch richtet sich an Studierende von Bachelorstudiengängen an Hochschulen und Universitäten, Schüler an Techniker- und Fachoberschulen sowie technisch Interessierte.
Für die 2. Auflage wurde das Buch komplett aktualisiert und an die erweiterten Peripheriebaugruppen des MSP430F2274 angepasst.
Aus dem Inhalt: Ein-Bit-Rechner; Mikrorechentechnik-Grundlagen; Das Mikrocontrollersystem; Programmierung und Implementierung; Hardwaremodule des Mikrocontrollers MSP430F2274;
Programmierung des Mikrocontrollers in C
Auf der Website www. msp430-buch. de finden Sie u. a. Software für das Praktikum Mikrocontrollertechnik: einen Link zur kostenfreien IAR-Entwicklungsumgebung für den MSP430 sowie alle im Buch vorgestellten Softwareprojekte in C und Assembler
Inhaltsverzeichnis
1;Vorwort;6 2;Inhalt;10 3;1 Ein-Bit-Rechner ;16 3.1;1.1 Rechenwerk ;16 3.1.1;1.1.1 Register und Takt ;17 3.1.2;1.1.2 Zwischenspeicher ;18 3.1.3;1.1.3 Native und emulierte Datenmanipulationsbefehle ;19 3.2;1.2 Steuerwerk ;21 3.2.1;1.2.1 Programmsteuerbefehle ;21 3.2.2;1.2.2 Befehlsliste ;23 3.3;1.3 Programmspeicher ;25 3.4;1.4 Befehlszähler ;27 3.5;1.5 Zusammenfassung;28 4;2 Mikrorechentechnik-Grundlagen;30 4.1;2.1 Codes;30 4.1.1;2.1.1 ASCII-Code ;30 4.1.2;2.1.2 BCD-Code ;30 4.2;2.2 Darstellung von Zahlen in Mikrorechnern;31 4.2.1;2.2.1 Binäres Zahlensystem ;31 4.2.1.1;2.2.1.1 Vorzeichenlose ganze Zahlen ;31 4.2.1.2;2.2.1.2 Vorzeichenlose gebrochene Zahlen, Festkommazahlen ;32 4.2.1.3;2.2.1.3 Vorzeichenbehaftete ganze Zahlen ;32 4.2.2;2.2.2 Informationsgehalt eines Bytes ;33 4.2.3;2.2.3 Hexadezimales Zahlensystem ;34 4.2.4;2.2.4 Zahlendarstellung in 16-Bit-Systemen ;34 4.3;2.3 Statusbits;36 4.3.1;2.3.1 Z-Flag ;36 4.3.2;2.3.2 N-Flag ;36 4.3.3;2.3.3 C-Flag ;37 4.3.4;2.3.4 V-Flag ;37 4.4;2.4 Rechnerarchitekturen;38 5;3 Das Mikrocontrollersystem ein Überblick am Beispiel MSP430F2274;41 5.1;3.1 Die Mikrocontrollereinheit (MCU) ein Überblick;41 5.1.1;3.1.1 Zentrale Verarbeitungseinheit (CPU) ;42 5.1.2;3.1.2 Speicherarchitektur ;42 5.1.3;3.1.3 Adressbereichsaufteilung (Memory Map) ;42 5.1.4;3.1.4 Peripherie ;43 5.1.5;3.1.5 Oszillator und Systemsicherheit ;44 5.1.6;3.1.6 Adressbereich, Speicher und Inhalte ;44 5.2;3.2 Die CPU der MSP430-Mikrocontroller-Familie;48 5.2.1;3.2.1 Register ;48 5.2.2;3.2.2 Adressierungsarten ;52 5.2.3;3.2.3 Befehle ;62 6;4 Programmierung und Implementierung;68 6.1;4.1 Vorbereitungen zur Softwareentwicklung;68 6.2;4.2 Programmentwicklung;68 6.3;4.3 Preprozessor-Anweisungen;71 6.4;4.4 Das erste eigene Programm ;73 6.5;4.5 Programmiertechniken;81 6.5.1;4.5.1 Unterprogrammtechnik ;81 6.5.2;4.5.2 Interrupttechnik ;85 6.5.2.1;4.5.2.1 Polling oder Interrupt ;86 6.5.2.2;4.5.2.2 Funktionsgruppen im Interruptprozess ;86 6.5.2.3;4.5.2.3 Interruptvektortabelle
;87 6.5.2.4;4.5.2.4 Interruptquellen und Interruptlogik ;88 6.5.2.5;4.5.2.5 Interruptpriorität ;88 6.5.2.6;4.5.2.6 Interruptmaskierung ;88 6.5.2.7;4.5.2.7 Interruptprozess ;88 6.5.2.8;4.5.2.8 Verschachtelung und Reaktionszeit ;90 6.5.2.9;4.5.2.9 Interruptprogrammstruktur ;90 7;5 Hardwaremodule des Mikrocontrollers MSP430F2274;92 7.1;5.1 System Reset und Initialisierung;92 7.1.1;5.1.1 Die Signale POR und PUC;92 7.1.2;5.1.2 Der Initialisierungsstatus;92 7.2;5.2 Basic-Clock-Modul;93 7.2.1;5.2.1 DCO;94 7.2.2;5.2.2 Quarzoszillator;97 7.2.3;5.2.3 Taktsignale des Basic-Clock-Moduls;97 7.2.4;5.2.4 Low-Power Modi;98 7.2.5;5.2.5 Taktfehlererkennung;99 7.2.6;5.2.6 Register des Basic-Clock-Moduls;99 7.3;5.3 Watchdog-Timer;100 7.4;5.4 Die parallelen Schnittstellen;103 7.4.1;5.4.1 Überblick zu den parallelen Ports;103 7.4.1.1;5.4.1.1 Datenrichtung;103 7.4.1.2;5.4.1.2 Daten ausgeben;105 7.4.1.3;5.4.1.3 Signalzustände einlesen;105 7.4.1.4;5.4.1.4 Arbeiten mit gemischten Eingabe-Ausgabe-Ports;105 7.4.1.5;5.4.1.5 Pull-up und pull-down Widerstände;106 7.4.2;5.4.2 Die Interruptmöglichkeiten der parallelen Ports 1 und 2;106 7.4.3;5.4.3 Alternative Verwendung der Portpins;108 7.4.4;5.4.4 Einschaltzustand;108 7.4.5;5.4.5 Die Register der parallelen Ports;109 7.4.6;5.4.6 Ströme und Spannungen an den Portpins;109 7.4.7;5.4.7 Programmbeispiele;110 7.4.7.1;5.4.7.1 Parallelport ausgeben;110 7.4.7.2;5.4.7.2 Parallelport einlesen;113 7.4.7.3;5.4.7.3 LC-Display-Ansteuerung;115 7.5;5.5 Timer_A und Timer_B;125 7.5.1;5.5.1 Einführung am Beispiel Timer_A;125 7.5.2;5.5.2 16-Bit-Timer;126 7.5.2.1;5.5.2.1 Taktquellenauswahl und Vorteiler;127 7.5.2.2;5.5.2.2 Das CLR-Bit im TACTL-Register;127 7.5.2.3;5.5.2.3 Mode-Auswahl;127 7.5.2.4;5.5.2.4 Timer starten;130 7.5.3;5.5.3 Die Capture/Compare-Einheit;130 7.5.3.1;5.5.3.1 Capture-Funktion;131 7.5.3.2;5.5.3.2 Compare-Funktion;133 7.5.4;5.5.4 Signalerzeugung;133 7.5.4.1;5.5.4.1 Konstante Zeitintervalle im Continuous Mode;133 7.5.4.2;5.5.4.2 Zeitintervalle im Up
Mode;133 7.5.4.3;5.5.4.3 Zeitintervalle im Up/Down Mode;134 7.5.5;5.5.5 Output Unit;135 7.5.6;5.5.6 Anschlüsse der Timer_A-Peripheriebaugruppe;135 7.5.7;5.5.7 Verhältnis zwischen Zeitintervall und Zählerstand;139 7.5.8;5.5.8 Die Register der Timer_A-Baugruppe;140 7.5.9;5.5.9 Interrupt Handling Timer_A;140 7.5.10;5.5.10 Programmbeispiele;141 7.5.10.1;5.5.10.1 Signalerzeugung im Continuous Mode;141 7.5.10.2;5.5.10.2 PWM-Signalerzeugung im Up Mode;143 7.5.11;5.5.11 Timer_B ;144 7.5.12;5.5.12 Interrupt Handling Timer_B;146 7.6;5.6 USCI;148 7.6.1;5.6.1 Das asynchrone Übertragungsverfahren;148 7.6.1.1;5.6.1.1 USART asynchrone Betriebsart;150 7.6.1.1.1;5.6.1.1.1 Baud-Rate-Generator;154 7.6.1.1.2;5.6.1.1.2 Weitere Features im asynchronen Mode des USART;157 7.6.1.2;5.6.1.2 Die Register der USCI-Baugruppe;158 7.6.1.3;5.6.1.3 Programmbeispiel;158 7.6.2;5.6.2 Synchrone Übertragung;160 7.6.2.1;5.6.2.1 USCI synchrone Betriebsart;160 7.6.2.2;5.6.2.2 Programmbeispiel;164 7.6.3;5.6.3 USCI_B-Modul;164 7.6.3.1;5.6.3.1 I2C-Bus;165 7.6.3.2;5.6.3.2 Aufbau der USCI_B-Einheit in I2C-Betriebsart;168 7.7;5.7 ADC10;172 7.7.1;5.7.1 Hardware und Funktion der ADC-Peripherieeinheit;172 7.7.2;5.7.2 ADC-Betriebsarten;177 7.7.3;5.7.3 Hinweise zum PCB-Design;178 7.7.4;5.7.4 ADC10-Register;178 7.7.5;5.7.5 Anschlusspin der ADC-Peripheriebaugruppe;179 7.7.6;5.7.6 ADC-Beispielprogramm;180 7.7.7;5.7.7 Der versteckte DMA-Controller ;182 7.7.7.1;5.7.7.1 Die Register der DTC-Einheit;184 7.7.7.2;5.7.7.2 Programmbeispiel zur DTC-Einheit;184 7.8;5.8 Flash Memory;185 7.8.1;5.8.1 Lesen vom Flash Memory;187 7.8.2;5.8.2 Löschen des Flashspeichers;187 7.8.3;5.8.3 Beschreiben/Programmieren des Flashspeichers;187 7.8.4;5.8.4 Flash-Memory-Register;189 7.8.5;5.8.5 Programmbeispiele zum Flash Memory;189 7.8.5.1;5.8.5.1 Löschen eines Flashsegmentes mit Software außerhalb des Flashmoduls;190 7.8.5.2;5.8.5.2 Löschen eines Flashsegmentes mit Software innerhalb des Flashmoduls;190 7.8.5.3;5.8.5.3 Schreiben eines 16-Bit-Werte
s in ein Flashsegment mit Software außerhalb des Flashmoduls;191 7.8.5.4;5.8.5.4 Schreiben eines 16-Bit-Wertes in ein Flashsegment mit Software innerhalb des Flashmoduls;191 8;6 Mikrocontroller-Programmieren in C;193 8.1;6.1 Hochsprache C ;193 8.2;6.2 C-Programmbeispiele ;195 8.2.1;6.2.1 Parallele Ports ;195 8.2.1.1;6.2.1.1 Verwenden zweier Leuchtdioden am Port 1 ;195 8.2.1.2;6.2.1.2 Taster am Port 2 ;196 8.2.2;6.2.2 Timer_A ;197 8.2.2.1;6.2.2.1 Timer_AErzeugen von Impulsfolgen ;197 8.2.2.2;6.2.2.2 Timer_AErzeugen von PWM-Signalen ;198 8.2.3;6.2.3 ADC10;199 8.2.4;6.2.4 USCI ;201 8.2.4.1;6.2.4.1 USCI im Asynchron Mode ;201 8.2.4.2;6.2.4.2 USCI im I2C-Mode;202 8.2.5;6.2.5 LCD ;202 9;Anhang;208 10;Anhang A ;210 10.1;A1 Übersicht des Entwicklungstools;210 10.1.1;A1.1 Hauptbestandteile der IAR-Embedded-Workbench ;210 11;Anhang B ;215 11.1;B1 Das Education System zum Buch ;215 11.1.1;B1.1 Hardware ;215 11.1.1.1;B1.1.1 Leuchtdioden ;216 11.1.1.2;B1.1.2 Taster ;216 11.1.1.3;B1.1.3 LC-Display ;219 11.1.1.4;B1.1.4 Drehencoder 24/360;221 11.1.1.5;B1.1.5 Lautsprecher ;223 11.1.1.6;B1.1.6 Serielle Schnittstelle RS-232;223 11.1.1.7;B1.1.7 Potentiometer;224 11.1.1.8;B1.1.8 Servomotoransteuerung;225 11.1.1.9;B1.1.9 I2C Schnittstelle/Diodenmatrix;225 12;Anhang C ;228 12.1;C1 MSP430-Befehlsliste ;228 12.2;C2 Befehle des MSP430 ;230 13;Anhang D ;252 13.1;D1 Peripheral File Map ;252 13.2;D2 Special Function-Register SFR (.byte access);255 13.3;D3 Port-Register (.byte access) ;257 13.4;D4 Basic Clock Modul+Register (.byte access);263 13.5;D5 USCI_A0-Register (.byte access);266 13.6;D6 USCI_B0-Register (.byte access) ;274 13.7;D7 Operational amplifiers-Register;281 13.8;D8 Watchdog Timer+Register (.word access);284 13.9;D9 Flash Memory-Register (.word access) ;285 13.10;D10 Timer_B-Register (.word access);288 13.11;D11 Timer_A-Register (.word access) ;293 13.12;D12 ADC10-Register (.word and .byte access);297 14;Anhang E ;303 14.1;E1 Die Interruptvektortabelle ;303 15;Anhang F ;304 15.1;F
1 ASCII-Code Tabelle eines LC-Displays;304 16;Abkürzungen;307 17;Literatur;309 18;Index;310