Hier steht der Titel der Power Point Präsentation.

Werbung
Fakultät Elektrotechnik und Informationstechnik, Professur für Prozessleittechnik
Prozessinformationsverarbeitung (PIV)
Programmierung von
Mikrocontrollern am Beispiel
des ATMEL ATmega32
Professur für Prozessleittechnik
Wintersemester 2008/2009
1. Architektur
1.1. Überblick
1.2. Allgemeine Merkmale
• 8-Bit-RISC-Prozessor
• Harvard-Architektur
• 32 Universal-Register
• Befehlssatz mit 131 Assembler-Befehlen
• Integrierte Multipliziereinheit
• Ausführungszeit zwischen 1 und 4 Takten
• Taktfrequenz bis 16 Mhz
• Umfangreiche Peripherie
1.3. Kernarchitektur
• 32K Byte Flash-Programmspeicher
• 1K Byte EEPROM Datenspeicher
• 2K Byte SRAM Speicher
• Interner und externer Taktgeber
• 21 Interne und externe Interrupt-Quellen
• 6 verschiedene Energiesparzustände
• JTAG-Schnittstelle mit Online-Debugging
• Bootloader-Unterstützung
1.4. Peripherie
• 32 Tri-Stated GPIO in vier Registern
• 8-Bit und 16-Bit Timer/Counter mit PWM
• 10-Bit ADC (Single-Ended/Differential)
• Analog-Komparator
• Programmierbare USART-Schnittstelle
• TWI-Schnittstelle (I²C-kompatibel)
• SPI-Schnittstelle (Master/Slave)
• Watchdog-Timer und Spannungsausfallerkennung
2. Grundlagen der
Programmierung von AVRMikrocontrollern in C
2.1. Prinzipielle Vorgehensweise
1. Auswahl und Konfiguration von µC und Peripherie
(Datenblatt)
2. Entwurf und Implementierung von Algorithmus und
Kontrollstrukturen (beliebiger ANSI-C Compiler)
3. Portierung des Entwurfs auf den µC (Simulator)
4. Implementierung auf dem Zielsystem (JTAG)
Dabei zunächst Recherche nach vorhandenen Quellen,
danach Entwurf eigener Lösungen!
2.2. Besonderheiten der Konfiguration von µC
• Steuer- und Statusregister
– Konfiguration sämtlicher Laufzeitfunktionen
– Anzeige des aktuellen Systemstatus
• Fuse-Bits
– Konfiguration der Betriebsparameter vor Inbetriebnahme
(abgelegt im EEPROM)
– z.B.: Taktgeber, JTAG-/Bootloader-Aktivierung
• Lock-Bits
– Schreib- und Leserestriktionen auf den Speicher
2.2. Besonderheiten der Konfiguration von µC
2.3. Interrupts
• 21 Interrupts für ATmega32
• Interrupt-Behandlung ist Compiler-abhängig
• Aktivierung über Steuer-Register
• Behandlung durch Service-Routinen
Aktivierte Interrupts müssen behandelt werden!
„Global Interrupt Enable Bit“ muss gesetzt werden!
(Befehl: sei())
2.3. Interrupts
2.4. Zugriffe auf IO-Ports
• GPIO-Pins sind Tri-Stated (High/Low/High-Res) und
besitzen interne Pull-Up-Widerstände
• Steuerregister: DDRx (Data Direction Register)
– DDn = 1 ~ Ausgang, DDn = 0 ~ Eingang
• Steuerregister: PORTx (Data Register)
– DDn = 1: PORTxn = 0 ~ Low, PORTxn = 1 ~ High
– DDn = 0: PORTxn = 1 ~ Pull-Up aktiviert,
PORTxn = 0 ~ Ausgang tri-stated
• Statusregister: PINx (Port Input Register)
– Aktuelle Pinbelegung (Register ist Read-Only)
2.5. Der JTAG-Standard
• „Joint Test Action Group“ → IEEE 1149.1
• Verfahren zum Programmieren und Testen von
Programmen direkt in der Schaltung
– „Boundary Scan Test“
– Debugger hat Zugang zu sämtlichen Speichern, allen Registern,
der Peripherie und dem Programmzähler
– Ermöglicht Einzelschritt-, Brakepoint-, On-Change-Debugging
• Benötigt JTAG-Schnittstelle (Test Access Port TAP)
– 4 Pins zzgl. Spannungsversorgung, aktivierbar via Fuse-Bit
• Benötigt ein separates JTAG-Programmiergerät
2.6. Der AVR-Bootloader
• Fähigkeit des Systems, sich über jede beliebige
Datenschnittstelle selbst zu programmieren
– Spezielles Programm, dass Daten aus einer beliebigen Quelle
lesen und parallel in den Flash-Speicher schreiben kann
– Residiert in einem separaten, konfigurierbaren Bereich des FlashSpeichers (der ebenfalls beschrieben werden kann!)
– Konfigurierbar über Fuse-Bits
– Schutz durch Lock-Bits möglich
• Ermöglicht Updates, Rekonfigurationen und
Versionierung der Systeme
Entwicklungswerkzeuge
3.1. Die avr-gcc Toolchain
• AVR-GCC: Frontend der GCC (GNU-CompilerCollection) für die AVR-Plattform
– Treiber-Programm für andere Teilprogramme
• GNU Binutils: Binary Utilities
– Assembler (as), Linker (ld) und andere Programme
• avr-libc
– Standard-C-Bibliothek für AVR-Prozessoren
– Teile der ANSI-C sowie AVR-spezifische Funktionen
3.1. Die avr-gcc Toolchain
• AVR-DUDE: In-System-Programmer
• AVR-GDB: Kommandozeilen-Debugger
• AVaRICE: Backend-Programm für GDB zur
Verwendung der JTAG-Schnittstelle
• SimulAVR: Backend-Programm für GDB zur
Simulation von AVR-Prozessoren
• Make: Interpreter für Makefile-Skripte
zahlreiche Alternativen verfügbar
3.2. AVR-Studio und WinAVR
• WinAVR:
– Werkzeugsammlung für MS Windows
• AVR-Studio: Graphische IDE von ATMEL
–
–
–
–
Assembler, Programmer, Simulator, Terminal
C-Compiler unter Nutzung von WinAVR
Graphische Projektkonfiguration
Voll kompatibel zu allen ATMEL-Entwicklungswerkzeugen
3.3. Weitere Entwicklungsumgebungen
• Eclipse-AVR-Plugin
– Kostenfrei, plattformunabhängig
– nutzt avr-gcc Toolchain
• CodeVision-AVR
– Kostenpflichtige IDE
– Nutzt eigene C-Bibliothek, aber AVR-Studio-Simulator
• IAR-Workbench
– Professionelle, kostenpflichtige IDE
3.4. Die STK500 Plattform
3.4. Die STK500 Plattform
• Entwicklungsplatform für AVR-Prozessoren
–
–
–
–
–
–
–
–
–
Sockel für DIP8, DIP20, DIP28 und DIP40 Gehäuse
Einstellbare Board- und Referenzspannung von 0-6 Volt
Einstellbarer Boardtakt von 0-3,686 MHz
Parallele und serielle Programmierung
RS232-Schnittstelle zur Konfiguration und Programmierung
RS232-Schnittstelle zur Kommunikation mit dem Prozessor
Je acht Taster und acht LEDs zur Benutzerinteraktion
Verschiedene Takt- und Resetquellen verfügbar
Keine JTAG-Unterstützung
3.5.Hinweise zur Verwendung der STK500Plattform
• 12-15 Volt Betriebsspannung, verpolungstolerant
• Anschluss des Boards an PC mittels RS232
• Auswahl des Zielsockels mittels 6-pol. Flachbandkabel
• Anschluss der Peripherie über Flachbandkabel
• Auswahl der Takt-, Spannungs- und Resetquelle über
Jumper
• Konfiguration von Spannung und Takt über AVR-Studio
Beschriftung auf der Unterseite des Boards beachten
3.5.Hinweise zur Verwendung der STK500Plattform
• Auswahl des Sockels:
– Anschluss über Flachbandkabel
– Bei internem Sockel Farbcodierung beachten
Bei externem Sockel Polung beachten!
3.5.Hinweise zur Verwendung der STK500Plattform
• Auswahl der Spannungsquellen:
– VTARGET verbindet interne
Spannungsversorgung
Niemals interne und externe
Spannung gleichzeitig!
– AREF verbindet interne
Referenzspannungsquelle
Referenzspannung muss
immer kleiner Versorgungsspannung sein!
3.5.Hinweise zur Verwendung der STK500Plattform
• Einstellung der
Taktquelle:
– XTAL1 aktiviert interne
Quelle
– OSCSEL wählt zwischen
einstellbarer Quelle und
Quarzsockel
Konfiguration des
Controllers beachten!
3.6. STK500 und AVR-Studio
• Einlesen der Signatur
– Wichtig zur Überprüfung der
Konnektivität
• Einstellen der Programmiergeschwindigkeit
– Bei Instabilität schrittweise
reduzieren
3.6. STK500 und AVR-Studio
• Einstellen der Spannungen
– ARef ist immer kleiner VTarget
• Einstellen der Taktfrequenz
– Nur bei Auswahl der
einstellbaren Taktquelle von
Belang
3.7. Die STK600 Plattform
3.7. Die STK600 Plattform
• Nachfolger des STK500
– Kompatibel zu allen Controllern der Reihen ATmega, Atmega32
und Xmega
– Anschluss über die USB-Schnittstelle
– ISP- und JTAG-Programmierung interner und externer Ziele
– RS232-, USB-, CAN- und LIN-Schnittstelle
– Je acht Taster und acht LEDs zur Benutzerinteraktion
– Einstellbare Spannung und Taktfrequenz
• Konfiguration des Boards über (separat erhältliche)
Aufsätze
– Separate Sockel- und Routingaufsätze ermöglichen die
Verwendung der Sockel auch für nicht pinkompatible Controller
Herunterladen