Book description
Zur Durchführung eines gemischten Hard- und Softwareprojektes mit Mikrocontrollern ist fundiertes Wissen über die Hardwareeinheiten des Controllers unabdingbar. Ebenso notwendig ist die Kenntnis von Sprachen auf zwei Ebenen - C für die große Struktur der Firmware und Assembler für zeit- oder resourcenkritische oder hardwarenahe Codeabschnitte. Das Buch stellt die notwendigen Grundlagen für erfahrene Entwickler bereit, um eigene Projekte mit Mikrocontrollern realisieren zu können. Als Grundlage dient der 8 bit-Mikrocontroller ATmega16 als typischer Vertreter der megaAVR® Mikrocontroller der Firma Atmel®.
Das Buch stellt Aufbau und Hardwarebaugruppen des ATmega16 stellvertretend für alle megaAVR®-Mikrocontroller und ihre Ansteuerung über Register detailliert vor und liefert Lösungsansätze für typische Problemstellungen aus dem Umfeld der Embedded-Entwicklung wie Messung von Zeit, Frequenz und Geschwindigkeit, Steuerungen, Ereignisbehandlung und asynchrone Programmierung sowie Kommunikation über SPI, TWI oder serielle Schnittstelle. Beispiele wie mikrosekundengenaue Stoppuhren, Fahrradtachometer oder Frequenzzähler illustrieren die Verfahren. Zu jedem Problem ist neben der Schaltung das vollständige Program in C oder - wenn sinnvoll - Assembler gezeigt. Neben Hard- und Softwareentwicklung wird auch die praktische Arbeit mit Atmel Studio® beleuchtet, wie das On-Chip-Debugging und ein Entwicklungszyklus (Editieren, Compilern und Linken, Flashen). Darüber hinaus werden im Rahmen von Projekten wie DDS-Synthese oder Analog-Datenlogger typische Peripheriebausteine (Echtzeituhren RTC, Digital-Analog-Wandler DAC, serielle EEPROMs) vorgestellt.
Table of contents
- Cover
- Titel
- Impressum
- Dedication
- Table of Contents
- Vorworte
-
1 Einführung, AVR®-Hardware
- 1.1 Auftau der AVR-MCU
- 1.1.1 Prozessorregister
- 1.1.2 Statusregister, Statusbits
- 1.1.3 Befehlssatz und Adressmodi
- 1.2 Fusebits
- 1.3 Reset
- 1.4 MCU-Takt, Taktquellen, interne Takte
- 1.4.1 Taktquellen, Startup-Phase
- 1.4.2 Interne Taktsignale
- 1.4.3 Sleep-Modi
- 1.5 Interrupts
- 1.6 Speicherauftau
- 1.6.1 Zugriffe auf das Registerfile
- 1.6.2 Zugriffe auf das SRAM
- 1.6.3 Zugriffe auf I/O-Register
- 1.6.4 Zugriffe auf das Flash-ROM
- 1.6.5 Zugriffe auf das EEPROM
- 1.7 Default-Einstellungen
- 1.8 Grundschaltung
- 1.8.1 MCU-Haupttaktquelle
- 1.8.2 Resetschaltung
- 1.8.3 ISP- und serielle Schnittstelle
- 1.8.4 Spannungsversorgung
- 1.8.5 Benötigte Hardware
-
2 AVR®-Programmierung unter AVR-GCC
- 2.1 Auftau eines C-Programms
- 2.1.1 Variablentypen und -deklarationen
- 2.1.2 Symbole, Konstanten, Headerfiles
- 2.1.3 16 bit-Werte und-Register
- 2.1.4 Interrupts und -vektoren
- 2.2 Auftau eines reinen Assemblerprogramms -
- 2.3 Auftau gemischter C- und Assemblerprogramme
- 2.3.1 Speicheradressen vs. I/O-Adressen (Registernummern)
- 2.3.2 Übergabe von Argumenten, Registernutzung
- 2.3.3 Deklarationen von Funktionen und Variablen
- 2.3.4 Inline-Assembler
- 2.3.5 Beispiel
- 2.3.6 Interrupthandler in Assembler
-
3 Praktischer Einstieg mit Atmel Studio®
- 3.1 Anlegen einer Lösung und eines Projektes
- 3.1.1 Erzeugen einer Solution
- 3.1.2 Projekte für ausführbare C-Programme
- 3.1.3 Projekte für statische Bibliotheken
- 3.2 Übersetzen und Linken eines Programms
- 3.3 Programmierung (Flashen)
- 3.3.1 DieAtmel Studio-Kommandozeile
- 3.3.2 DieAtmel Studio-GUI
- 3.4 Unterstützung der Quellcodebearbeitung, Code Snippets
- 3.5 Gliederung von Projekten mit Libraries
- 3.5.1 Erstellung einer Bibliothek
- 3.5.2 Nutzung einer Bibliothek
- 3.5.3 Mathematische und andere Standardbibliotheken
- 3.6 Simulation und Debugging
- 3.6.1 Debugging eines C-Programms
- 3.6.2 Debuggen von Assemblerprogrammen
- 3.7 On-chip-Debuggingmit der JTAG-Schnittstelle
- 3.7.1 Programmieren von Flash-ROM und Fusebits über JTAG
- 3.7.2 Debugging
- 3.7.3 Tracing
- 3.8 Weitere Entwicklungsumgebungen
-
4 Digital-I/O
- 4.1 Pin-Zuordnung
- 4.2 Registerbeschreibung
- 4.2.1 Digitale Ein-und Ausgabe
- 4.2.2 Umschaltung auf Ausgänge, definierte Startzustände
- 4.2.3 Externe Interrupts
- 4.3 Compilerunterstützung, symbolische Namen (AVR-GCC)
- 4.4 Ausgabebeschaltungen
- 4.5 Eingabebeschaltungen
- 4.6 Einfache digitale Ein- und Ausgabe, 2:4-Dekoder
- 4.6.1 Einlesen von Tastern und Schaltern
- 4.6.2 Ausgaben über 7-Segment-Anzeigen
- 4.7 Auslesen von Tastern mit Entprellung
- 4.7.1 Bibliothek zur Entprellung langer/kurzer Tastendrücke
- 4.7.2 Codeschloss
- 4.7.3 Einlesen einer Tastaturmatrix
- 4.7.4 Bibliothek zur Entprellung wiederholter Tastendrücke
- 4.8 Emulation eines 8 bit-Bussystems
- 4.8.1 Bibliothek zur Ansteuerung einer LCD-Punktmatrix-Anzeige
- 4.8.2 Digitaluhr mit LCD-Anzeige
- 4.8.3 Metronom mit industriellem Ausgabebaustein für 8 bit-Bus
- 4.8.4 Digitaler Portexpander mit 8 bit-Datenbus
- 4.9 Software-PWM via Digitalport
- 4.10 Stimmgabel/Synthesizer mit NCO
- 4.10.1 Numerisch kontrollierter Oszillator
- 4.10.2 NCO als Grundlage einer Wavetable-Synthese
- 4.11 Analogausgabe über Digitalports und R-2R-Leiter
- 4.12 Externe Interrupts
- 4.12.1 Bibliothek für externe Interrupts
- 4.12.2 Treppenhauslicht
-
5 Timer/Counter
- 5.1 Pin-Zuordnung
- 5.2 Registerbeschreibung
- 5.3 Betriebsmodi -
- 5.3.1 Zählen im normalen Modus
- 5.3.2 Clear Timer on Compare Match/CTC-Modus
- 5.3.3 Pulsweitenmodulation PWM -
- 5.3.4 Input Capture-Funktion
- 5.4 Zählumfang, Frequenzbereiche und Impulsdauer
- 5.5 Bibliothek für Timer/Counter
- 5.6 Anwendung der einfachen Ereigniszählung
- 5.6.1 Mikrosekundengenaue Stopuhr
- 5.6.2 Hochfrequenzmessung, zeitgenaue Pulserzeugung
- 5.7 Anwendung von Input Capture-Ereignissen
- 5.7.1 Zeitmarken und Stopuhr
- 5.7.2 Fahrradtachometer, basierend auf ICP-Frequenzmessung
- 5.7.3 Niederfrequenzmessung
- 5.8 Anwendung des CTC-Modus, Signalerzeugung, Steuerungen
- 5.8.1 Rechteck-Signalgenerator
- 5.8.2 Blinker
- 5.8.3 Einmalige Impulse definierter Dauer, Treppenhauslicht
- 5.8.4 Steuerung mit Zustandsautomat (Waschmaschine)
- 5.8.5 Bibliothek für 7-Segment-Anzeigen im Multiplexbetrieb
- 5.8.6 Einfache Digitaluhr mit 7-Segment-Anzeige
- 5.8.7 Digitaluhr mit Zeiteinstellung über Tastatur
- 5.9 Stufenlose Helligkeitssteuerung mit PWM, elektronische Kerze
- 6 USART, Serielle Schnittstelle
-
7 TWI, TwoWire-Interface
- 7.1 Pin-Zuordnung und Registerbeschreibung
- 7.2 Bibliothek zur Ansteuerung des TWI-Busses (Master)
- 7.2.1 Realisierung des Master Transmit-Modus
- 7.2.2 Realisierung des Master Receive-Modus
- 7.3 TWI-Netzwerk mit Master- und Slave-MCUs
- 7.4 Ansteuerung des TWI-I/O-Expanders PCF8574
- 7.5 Ansteuerung der TWI-RTC (Echtzeituhr) PCF8583P
-
8 SPI, Serial Peripheral Interface
- 8.1 Ablauf einer SPI-Datenübertragung
- 8.2 Pin-Zuordnung, mehrere Geräte am SPI-Bus
- 8.3 Registerbeschreibung
- 8.4 Bibliothek zur SPI-Nutzung
- 8.4.1 Konfiguration des Mastermodus
- 8.4.2 Konfiguration des Slavemodus
- 8.5 Master-Slave-System via SPI-Bus
- 8.6 Datenlogger mit Datenpersistenz in SPI-EEPROM
- 8.7 Output-Portexpander mit 74HCT595
- 8.8 Input-Portexpander mit 74HC165
- 8.9 Ansteuerung MAX7219 Displaycontroller
-
9 Analog-I/O
- 9.1 Pin-Zuordnung und Registerbeschreibung
- 9.1.1 Analog-Digital-WandlerADC
- 9.1.2 Analogkomparator
- 9.2 Elektrische Charakteristik, Beschaltung, Berechnungen
- 9.3 Analoge Eingabegeräte
- 9.4 Bibliothek zum ADC- und Komparatorhandling
- 9.5 Analogkomparator als Dämmerungsschalter
- 9.6 Messung einer Abkühlungskurve
- Literatur
- Stichwortverzeichnis
Product information
- Title: AVR - Mikrocontroller
- Author(s):
- Release date: October 2015
- Publisher(s): De Gruyter Oldenbourg
- ISBN: 9783110409413
You might also like
book
Arduino - Praxiseinstieg
Alle Komponenten der Hardware, Verwendung der digitalen und analogen Ports, Einsatzbeispiele mit Sensoren, Aktoren und Anzeigen …
book
Experimenting with AVR Microcontrollers
AVR is the brain that runs Arduino, but you don't need the whole Arduino board to …
book
Objective-C kompakt
• Sprache und Laufzeitumgebung werden dem Leser näher gebracht, • er lernt die Sprache im Detail …
book
Maike Jarsetz' digitale Dunkelkammer
Maike Jarsetz zeigt Ihnen einen gradlinigen Weg durch den Dschungel der Bildbearbeitung und schärft dabei Ihren …