AVR - Mikrocontroller

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

  1. Cover
  2. Titel
  3. Impressum
  4. Dedication
  5. Table of Contents
  6. Vorworte
  7. 1 Einführung, AVR®-Hardware
    1. 1.1 Auftau der AVR-MCU
    2. 1.1.1 Prozessorregister
    3. 1.1.2 Statusregister, Statusbits
    4. 1.1.3 Befehlssatz und Adressmodi
    5. 1.2 Fusebits
    6. 1.3 Reset
    7. 1.4 MCU-Takt, Taktquellen, interne Takte
    8. 1.4.1 Taktquellen, Startup-Phase
    9. 1.4.2 Interne Taktsignale
    10. 1.4.3 Sleep-Modi
    11. 1.5 Interrupts
    12. 1.6 Speicherauftau
    13. 1.6.1 Zugriffe auf das Registerfile
    14. 1.6.2 Zugriffe auf das SRAM
    15. 1.6.3 Zugriffe auf I/O-Register
    16. 1.6.4 Zugriffe auf das Flash-ROM
    17. 1.6.5 Zugriffe auf das EEPROM
    18. 1.7 Default-Einstellungen
    19. 1.8 Grundschaltung
    20. 1.8.1 MCU-Haupttaktquelle
    21. 1.8.2 Resetschaltung
    22. 1.8.3 ISP- und serielle Schnittstelle
    23. 1.8.4 Spannungsversorgung
    24. 1.8.5 Benötigte Hardware
  8. 2 AVR®-Programmierung unter AVR-GCC
    1. 2.1 Auftau eines C-Programms
    2. 2.1.1 Variablentypen und -deklarationen
    3. 2.1.2 Symbole, Konstanten, Headerfiles
    4. 2.1.3 16 bit-Werte und-Register
    5. 2.1.4 Interrupts und -vektoren
    6. 2.2 Auftau eines reinen Assemblerprogramms -
    7. 2.3 Auftau gemischter C- und Assemblerprogramme
    8. 2.3.1 Speicheradressen vs. I/O-Adressen (Registernummern)
    9. 2.3.2 Übergabe von Argumenten, Registernutzung
    10. 2.3.3 Deklarationen von Funktionen und Variablen
    11. 2.3.4 Inline-Assembler
    12. 2.3.5 Beispiel
    13. 2.3.6 Interrupthandler in Assembler
  9. 3 Praktischer Einstieg mit Atmel Studio®
    1. 3.1 Anlegen einer Lösung und eines Projektes
    2. 3.1.1 Erzeugen einer Solution
    3. 3.1.2 Projekte für ausführbare C-Programme
    4. 3.1.3 Projekte für statische Bibliotheken
    5. 3.2 Übersetzen und Linken eines Programms
    6. 3.3 Programmierung (Flashen)
    7. 3.3.1 DieAtmel Studio-Kommandozeile
    8. 3.3.2 DieAtmel Studio-GUI
    9. 3.4 Unterstützung der Quellcodebearbeitung, Code Snippets
    10. 3.5 Gliederung von Projekten mit Libraries
    11. 3.5.1 Erstellung einer Bibliothek
    12. 3.5.2 Nutzung einer Bibliothek
    13. 3.5.3 Mathematische und andere Standardbibliotheken
    14. 3.6 Simulation und Debugging
    15. 3.6.1 Debugging eines C-Programms
    16. 3.6.2 Debuggen von Assemblerprogrammen
    17. 3.7 On-chip-Debuggingmit der JTAG-Schnittstelle
    18. 3.7.1 Programmieren von Flash-ROM und Fusebits über JTAG
    19. 3.7.2 Debugging
    20. 3.7.3 Tracing
    21. 3.8 Weitere Entwicklungsumgebungen
  10. 4 Digital-I/O
    1. 4.1 Pin-Zuordnung
    2. 4.2 Registerbeschreibung
    3. 4.2.1 Digitale Ein-und Ausgabe
    4. 4.2.2 Umschaltung auf Ausgänge, definierte Startzustände
    5. 4.2.3 Externe Interrupts
    6. 4.3 Compilerunterstützung, symbolische Namen (AVR-GCC)
    7. 4.4 Ausgabebeschaltungen
    8. 4.5 Eingabebeschaltungen
    9. 4.6 Einfache digitale Ein- und Ausgabe, 2:4-Dekoder
    10. 4.6.1 Einlesen von Tastern und Schaltern
    11. 4.6.2 Ausgaben über 7-Segment-Anzeigen
    12. 4.7 Auslesen von Tastern mit Entprellung
    13. 4.7.1 Bibliothek zur Entprellung langer/kurzer Tastendrücke
    14. 4.7.2 Codeschloss
    15. 4.7.3 Einlesen einer Tastaturmatrix
    16. 4.7.4 Bibliothek zur Entprellung wiederholter Tastendrücke
    17. 4.8 Emulation eines 8 bit-Bussystems
    18. 4.8.1 Bibliothek zur Ansteuerung einer LCD-Punktmatrix-Anzeige
    19. 4.8.2 Digitaluhr mit LCD-Anzeige
    20. 4.8.3 Metronom mit industriellem Ausgabebaustein für 8 bit-Bus
    21. 4.8.4 Digitaler Portexpander mit 8 bit-Datenbus
    22. 4.9 Software-PWM via Digitalport
    23. 4.10 Stimmgabel/Synthesizer mit NCO
    24. 4.10.1 Numerisch kontrollierter Oszillator
    25. 4.10.2 NCO als Grundlage einer Wavetable-Synthese
    26. 4.11 Analogausgabe über Digitalports und R-2R-Leiter
    27. 4.12 Externe Interrupts
    28. 4.12.1 Bibliothek für externe Interrupts
    29. 4.12.2 Treppenhauslicht
  11. 5 Timer/Counter
    1. 5.1 Pin-Zuordnung
    2. 5.2 Registerbeschreibung
    3. 5.3 Betriebsmodi -
    4. 5.3.1 Zählen im normalen Modus
    5. 5.3.2 Clear Timer on Compare Match/CTC-Modus
    6. 5.3.3 Pulsweitenmodulation PWM -
    7. 5.3.4 Input Capture-Funktion
    8. 5.4 Zählumfang, Frequenzbereiche und Impulsdauer
    9. 5.5 Bibliothek für Timer/Counter
    10. 5.6 Anwendung der einfachen Ereigniszählung
    11. 5.6.1 Mikrosekundengenaue Stopuhr
    12. 5.6.2 Hochfrequenzmessung, zeitgenaue Pulserzeugung
    13. 5.7 Anwendung von Input Capture-Ereignissen
    14. 5.7.1 Zeitmarken und Stopuhr
    15. 5.7.2 Fahrradtachometer, basierend auf ICP-Frequenzmessung
    16. 5.7.3 Niederfrequenzmessung
    17. 5.8 Anwendung des CTC-Modus, Signalerzeugung, Steuerungen
    18. 5.8.1 Rechteck-Signalgenerator
    19. 5.8.2 Blinker
    20. 5.8.3 Einmalige Impulse definierter Dauer, Treppenhauslicht
    21. 5.8.4 Steuerung mit Zustandsautomat (Waschmaschine)
    22. 5.8.5 Bibliothek für 7-Segment-Anzeigen im Multiplexbetrieb
    23. 5.8.6 Einfache Digitaluhr mit 7-Segment-Anzeige
    24. 5.8.7 Digitaluhr mit Zeiteinstellung über Tastatur
    25. 5.9 Stufenlose Helligkeitssteuerung mit PWM, elektronische Kerze
  12. 6 USART, Serielle Schnittstelle
    1. 6.1 Pin-Zuordnung und Registerbeschreibung
    2. 6.2 RS232 und USB
    3. 6.3 Bibliothek zur minimalen USART-Nutzung
    4. 6.4 Seriell gesteuerter Port-I/O
  13. 7 TWI, TwoWire-Interface
    1. 7.1 Pin-Zuordnung und Registerbeschreibung
    2. 7.2 Bibliothek zur Ansteuerung des TWI-Busses (Master)
    3. 7.2.1 Realisierung des Master Transmit-Modus
    4. 7.2.2 Realisierung des Master Receive-Modus
    5. 7.3 TWI-Netzwerk mit Master- und Slave-MCUs
    6. 7.4 Ansteuerung des TWI-I/O-Expanders PCF8574
    7. 7.5 Ansteuerung der TWI-RTC (Echtzeituhr) PCF8583P
  14. 8 SPI, Serial Peripheral Interface
    1. 8.1 Ablauf einer SPI-Datenübertragung
    2. 8.2 Pin-Zuordnung, mehrere Geräte am SPI-Bus
    3. 8.3 Registerbeschreibung
    4. 8.4 Bibliothek zur SPI-Nutzung
    5. 8.4.1 Konfiguration des Mastermodus
    6. 8.4.2 Konfiguration des Slavemodus
    7. 8.5 Master-Slave-System via SPI-Bus
    8. 8.6 Datenlogger mit Datenpersistenz in SPI-EEPROM
    9. 8.7 Output-Portexpander mit 74HCT595
    10. 8.8 Input-Portexpander mit 74HC165
    11. 8.9 Ansteuerung MAX7219 Displaycontroller
  15. 9 Analog-I/O
    1. 9.1 Pin-Zuordnung und Registerbeschreibung
    2. 9.1.1 Analog-Digital-WandlerADC
    3. 9.1.2 Analogkomparator
    4. 9.2 Elektrische Charakteristik, Beschaltung, Berechnungen
    5. 9.3 Analoge Eingabegeräte
    6. 9.4 Bibliothek zum ADC- und Komparatorhandling
    7. 9.5 Analogkomparator als Dämmerungsschalter
    8. 9.6 Messung einer Abkühlungskurve
  16. Literatur
  17. Stichwortverzeichnis

Product information

  • Title: AVR - Mikrocontroller
  • Author(s): Ingo Klöckl
  • Release date: October 2015
  • Publisher(s): De Gruyter Oldenbourg
  • ISBN: 9783110409413