SEMINAR Aktueller Stand in der Mikrocontrollertechnik

Ähnliche Dokumente
8051Speicherorganistaion. SFR u. oberer Datenspeicherbereich teilen sich den SPECIAL FUNCTION REGISTER. gleichen Adreßbereich. indirekt adressierbar

EDT-REFERAT Adressierungsarten

Mikrocomputertechnik

Mikrocomputertechnik

Mikrocomputertechnik

Microcomputertechnik

Mikrocomputertechnik. Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 -

Mikrocomputertechnik

Mikrocomputertechnik mit der 8051-Controller-Familie

Mikrocomputertechnik

Mikrocomputertechnik

Praktikum Mikrorechner 4 (Bitmanipulation und Spezialregister)

Mikroprozessortechnik Grundlagen 1

Mikrocomputertechnik

Prof. Dr. Sven-Hendrik Voß Sommersemester 2018 Technische Informatik (Bachelor), Semester 2 Termin 5, Maschinenorientierte Programmierung

Im Bereich der Entwicklung und Herstellung von Prozessoren spielen

MikroController der 8051-Familie

SPS S90U. 1. Grundlagen SPS Funktion

Praktikum Mikrorechner 3 (Adressierungsarten)

Mini- Mikroprozessor-Experimentier-System. Version 1.0b vom :21. mit einem 8051-Mikrocontroller

E Mikrocontroller-Programmierung

Befehlssatz der Mikrocontroller der 51er -Familie

Mikrocontroller. Vortrag von Louis Liedtke. 8. Dezember Fakultät Elektrotechnik und Informatik. Bild 1: Atmel ATmega8

Befehlssatz der Mikrocontroller der 51er -Familie

Teil 1: Prozessorstrukturen

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Übungsklausur Mikroprozessortechnik und Eingebettete Systeme I

8051-Mikrocontroller-Familie

Speicheraufbau des AT89C5131

Mikroprozessortechnik

Teil 2: Rechnerorganisation

Vorwort. Bernd-Dieter Schaaf. Mikrocomputertechnik. Mit Mikrocontrollern der Familie 8051 ISBN:

4.0 Der Atmel AT89LPx052 Mikrocontroller

Mikrocomputertechnik

Mikroprozessortechnik

FPGA vs. Mikrocontroller. Agenda

Ein- Ausgabeeinheiten

Teil VIII Von Neumann Rechner 1

MOP: Befehlsliste für den Mikrocontroller 8051

Mikroprozessortechnik

Inhaltsverzeichnis 1 Ein-Bit-Rechner Mikrorechentechnik-Grundlagen Das Mikrocontrollersystem ein Überblick am Beispiel MSP430F1232

Mikrocontroller. eine Einführung. Florian Schmitt / 34

Kapitel 18. Externe Komponenten

Mikrocontrollerprogrammierung in Assembler und C

Einführung in die Welt der Microcontroller

9. Assembler: Der Prozessor Motorola 68000

9. Assembler: Der Prozessor Motorola 68000

Prinzipieller Aufbau und Funktionsweise eines Prozessors

Teil 1: Prozessorstrukturen

Hardwareaufbau der Mikrocontroller der 51er -Familie

Versuch D3: Busse, Speicher und Ampelsteuerung mit Speicher

Mikrocomputertechnik. Thema: Einführung in die Mikrocomputertechnik

Fachbereich Medienproduktion

Lösungsvorschläge zur Übungsklausur. zum Kurs 1708 Technische Informatik II. im WS 01/02

Der von Neumann Computer

Mikrorechner-Technik

Einführung in das Mikrocontroller-System 80(C)515/80(C)535

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Name : Klasse : Punkte : Note :

Mikroprozessortechnik Mikrocontroller

Inhaltsverzeichnis VII

8. SPS Komponenten: Beschreibung der Hardware-Komponenten einer SPS samt deren Eigenschaften

5.1 Beschreibung des Prozessors M Programmierung in Maschinensprache. 5.1 Beschreibung des Prozessors M 68000

5. Programmierung in Maschinensprache

10. Die Adressierungsarten des MSP 430

Hardwareaufbau der Mikrocontroller der 51er -Familie

Selbststudium Informationssysteme - H1102 Christian Bontekoe & Felix Rohrer

é Er ist software-transparent, d.h. der Benutzer braucht nichts von seiner Existenz zu wissen. Adreßbus Cache- Control Datenbus

Computer - Aufbau u. Funktionsweise

Helmut Bähring. Mikrorechner Technik. Übungen und Lösungen. Mit 78 Abbildungen und CD-ROM. Springer

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

CPU Speicher I/O. Abbildung 11.1: Kommunikation über Busse

Praktikum Mikrorechner 1 (Einführung)

Klausur Mikroprozessortechnik

Mikrocomputertechnik mit dem Controller C167

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

Prinzipien und Komponenten eingebetteter Systeme

Vorwort 8. Kap. 1: Grundlagen 10

Komponenten eines Mikrocontrollers

ZENTRALEINHEITEN GRUPPE

9. Die Adressierungsarten des MSP 430

13 Mikrocontroller Allgemeines

Mikrocomputertechnik mit Controllern der AtmelAVR-RISC-Familie

3. Hardware CPLD XC9536 von Xilinx. CPLD / FPGA Tutorial

Geräteentwurf mit Mikroprozessoren 1

Architektur der Intel 8051 Familie und Grundlegende Programmierung Reto Gurtner 2005

Von-Neumann-Architektur


1 Aufgaben Wie funktioniert ein Computer. a) Welche Spannungen werden von PC-Netzteilen bereitgestellt? 5W, 12W,

Mikrocontrollertechnik

2.5. Mikrocontroller-Komponenten

Intelligenter Modemadapter für den PC

Der Mikrocontroller beinhaltet auf einem Chip einen kompletten Mikrocomputer, wie in Kapitel

Mikroprozessor als universeller digitaler Baustein

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Mikrocomputertechnik

Teil 1: Prozessorstrukturen

Transkript:

SEMINAR Aktueller Stand in der Mikrocontrollertechnik Alper Ceylan Matrikel Nr.: 108 099 238 741 Seminar am 03.02.2005 Betreuer: Dr.-Ing. Helmut Jacob

Inhaltsverzeichnis Inhalt Seiten 1. Allgemeines 3 2. Aufbau und Arbeitsweise 4 2.1 Aufbau des Mikrocontrollers 4 2.2 Struktur und Komponenten 6 2.2.1 Der Controllerbaustein 80(C)515/-535 6 2.2.2 Interne Funktionseinheiten des Controllers 8 3. Speicherorganisation und Programmierung 11 3.1 Speicherorganisation 11 3.1.1 Programmspeicher 11 3.1.2 Datenspeicher 12 3.1.3 Die Special Function Register SFR 14 3.2 Adressierungsarten 14 3.3 Programmierung 17 4. Auswahl des richtigen Mikrocontrollers 18 5. Einsatzgebiete des Mikrocontrollers 19 6. Quellen 21-2 -

1. Allgemeines Der Mikrocontroller ist ein programmierbarer elektronischer Baustein, der alle notwendigen Komponenten für ein Mikrocomputersystem enthält wie z.b. CPU, Speicher, Peripheriekomponenten und Interruptsystem. Ein Mikrocontroller kann also mit sehr wenigen externen Bausteinen betrieben werden, man nennt sie daher auch Single-Chip-Computer oder Einchip-Computer. Im Gegensatz zum Mikroprozessor steht beim Mikrocontroller nicht die hohe Verarbeitungsleistung im Vordergrund, sondern eine hohe funktionelle Integration: Je mehr Funktionen auf dem Mikrocontroller-Chip sind, umso weniger Zusatzbausteine braucht man. Dies hat Vorteile für die Herstellung vollständiger Systeme: Der Schaltungsentwurf wird einfacher, das vollständige System wird kompakter, die Verlustleistung ist geringer, durch die geringere Anzahl von Leitungen, Sockeln und Steckern verringert sich auch das Risiko von mechanischen Verbindungsstörungen, die Fertigung und das Testen der Schaltungen kostet weniger. Das Haupteinsatzgebiet der Mikrocontroller ist die Steuerung in eingebetteten Systemen (Embedded Systems). Darunter versteht man Systeme, die von einem Controller gesteuert werden, ohne dass dieser nach außen in Erscheinung tritt. Durch die Fortschritte in der Integration und die sinkenden Preise konnten Mikrocontroller in immer mehr Applikationen als Steuerungszentrale eingesetzt werden. In vielen Fällen haben sie Steuerungen aus digitalen Bausteinen oder speicherprogrammierbare Steuerungen abgelöst. Mikrocontroller bieten hier den Vorteil größerer Flexibilität, denn die Funktion kann auf der Softwareebene geändert oder erweitert werden. Besonders deutlich wird dieser Vorteil bei feldprogrammierbaren Mikrocontrollern; das sind Controller die neu programmiert werden können, ohne dass man sie aus ihrer Schaltung entnehmen muss. Standardmikrocontroller sind universell gehalten und kommen in unterschiedlichen Applikationen zum Einsatz, sie werden frei verkauft. Kundenspezifische Mikrocontroller dagegen sind im Kundenauftrag für einen ganz speziellen Einsatz entworfen. Sie werden in hohen Stückzahlen gefertigt und als Teil eines fertigen Produktes an den Endkunden verkauft. - 3 -

Mikrocontroller werden heute in großer Vielfalt und Stückzahl gefertigt, und zwar mit Wortbreiten von 8 und 16 Bit. Für Aufgaben der Steuerung in Geräten und Anlagen ist das oft völlig ausreichend. An der Stückzahl der insgesamt gefertigten Prozessoren haben nicht die Pentiums, sondern Mikrocontroller und Signalprozessoren die Mehrheit von schätzungsweise mehr als 80%. Im Gegensatz zu den wenigen Typen von High-End- Prozessoren werden sie in "Familien" mit kompatiblen Befehlssätzen, aber unterschiedlichem Aufbau gefertigt. Die Mitglieder dieser Familien unterscheiden sich dann in Eigenschaften wie: Speicherart (ROM, RAM, PROM, EPROM) und Speichergröße auf dem Chip zusätzliche digital-analoge Wandlerbausteine (D/A und A/D) zusätzliche analoge Komponenten (z. B. Verstärker) zusätzliche Timerbausteine (also teilweise mehrere voneinander unabhängige Zeitgeber). Eine bekannte Controllerfamilie ist die 8051-Familie von Intel, zu der aber auch viele andere Firmen (z.b. Infineon) Familienmitglieder produzieren. 2. Aufbau und Arbeitsweise 2.1 Aufbau des Mikrocontrollers Der Mikrocontroller besteht hauptsächlich aus der: CPU, den Speichern für Instruktionen (Programmspeicher) und für Daten (Datenspeicher) sowie den Peripheriemodulen. Diese Komponenten tauschen Daten und Kontrollinformationen über Busse aus (Abbildung 1). - 4 -

Abbildung 1 Struktur eines Mikrocontrollers 2.1.1 CPU Die CPU (Central Processing Unit; auch als Core oder Mikrocontrollerkern bezeichnet) ist die programmierbare Einheit zur Adressierung und Manipulation von Daten sowie zur Steuerung des zeitlichen und logischen Ablaufs eines Programms. 2.1.2 Speicher Der Speicher dient zur Ablage von Daten und Programminstruktionen. Der Speicher für variable Daten ist ein Schreib-Lese-Speicher (z.b. RAM). Als Speicher für Programminstruktionen und feste Daten wird ein Festwertspeicher eingesetzt (z.b. ROM, PROM). Zusätzlich besitzen Mikrocontroller einen kleinen, in der CPU integrierten Registerspeicher für einen schnellen Schreib-Lesezugriff (Cache Speicher). 2.1.3 Peripherie Über die Peripherie können von außen stammende Informationen eingelesen und wieder ausgegeben werden. Die Peripherie ist in einem begrenzten Umfang programmierbar, um ihre Funktionalität dem Bedarf der Anwendung anzupassen. Typische Peripheriemodule digitalisieren analoge externe Signale bzw. setzen interne digitale Signale wieder in analoge - 5 -

um (Analog-digital- bzw. Digital-analog-Wandler). Timer ermöglichen das Zählen externer Impulse oder messen Zeiten zwischen Ereignissen. Über Kommunikationsschnittstellen wird der Datenaustausch zu anderen Bausteinen über standardisierte Busse (z.b. CAN) aufrechterhalten. Natürlich lassen sich auch noch viele andere Funktionen je nach Wunsch des jeweiligen Anwenders in den Mikrocontroller integrieren. Die in der Abbildung 1 dargestellten drei Blöcke ermöglichen die vier Hauptoperationen des Mikrocontrollers: Datenmanipulation (Data-Processing), Datenspeicherung (Data-Storage), Datenaustausch zur Umwelt (Data-Movement) und Daten-Ereigniskontrolle (Control-Mechanism). Mit diesen Funktionen kann der Mikrocontroller zum Übertragen von Daten, zu deren Speicherung bzw. Manipulation (sowohl im Speicher als auch extern) eingesetzt werden. In den folgenden Abschnitten werde ich die verschiedenen Bausteine des Mikrocontrollers beschreiben, die diese Operationen ermöglichen. 2.2 Struktur und Komponenten 2.2.1 Der Controllerbaustein 80(C)515/-535 Die Controllerbausteine 80(C)515 und 80(C)535 sind Mitglieder der 8051-Familie der 8-Bit Mikrocontroller. Die 8051-Controller-Familie hat sich weltweit als Marktführer durchgesetzt. Die Aufwärtskompatibilität der später entwickelten Typen zum Grundbaustein 8051 gibt dem Anwender die Möglichkeit, auf vorhandene Entwicklungs-Hilfsmittel zurückgreifen zu können. Die Controller 80515 bzw. 80535 sind in NMOS-Technologie hergestellt. Diese Technologie ist kostengünstig. Von Nachteil ist, dass Stromverbrauch und Verlustleistung wesentlich höher sind als bei der neueren CMOS-Technik, die allerdings etwas mehr kostet. Die CMOS- Technologie wird durch ein eingeschobenes C in der Typenbezeichnung gekennzeichnet (80C515 bzw. 80C535). Der 80C515/80C535 ist aber voll funktionskompatibel mit dem 80515/80535. Der einzige Unterschied zwischen den sonst identischen Controllern 80(C)535 und 80(C)515 ist, dass der 80(C)515 ein 8Kx8-ROM enthält. - 6 -

Leistungsmerkmale: 8-Kbyte ROM eingebaut (nur -515) 256 Byte eingebauter RAM-Speicher sechs 8-Bit Input-/Output Ports Serieller Port, Vollduplex mit vier Betriebsarten, mit festen oder variablen Baudraten drei 16-Bit Zähler/Timer Capture and Compare-Einheit mit 16-Bit Registern A/D-Wandler mit programmierbaren Referenzspannungen acht gemultiplexte Analogeingänge 16-Bit Watchdog-Timer Power-down-Versorgung für 40 Bytes im RAM Bool sches Rechenwerk 256 direkt adressierbare Bits 12 getrennte Interruptquellen (7 externe, 5 interne), 4 Prioritätsebenen 1 µs Befehlszykluszeit bei 12 MHz Taktversorgung Abbildung 2 Blockschaltbild des Controllers 80(C)515/-535-7 -

2.2.2 Interne Funktionseinheiten des Controllers Mikrocontrollerkern (CPU) Die Kerne der Mikrocontroller entsprechen dem Mikroprozessor eines Rechners. Sie bestimmen die Datenverarbeitungsbreite, den Befehlssatz, den Registersatz, die Adressierungsarten, die Größe des adressierbaren Speichers usw.. Da in vielen Anwendungen keine hohe Rechenleistung gebraucht wird, haben die meisten Mikrocontroller noch einen 8-Bit-Kern, sogar 4-Bit-Kerne werden noch häufig eingesetzt. Bei der Arbeitsfrequenz gibt man sich häufig mit bescheidenen Taktfrequenzen zufrieden, z.b. 12 MHz oder weniger. Die Anzahl der rechenintensiven Controlleranwendungen wächst aber ein Beispiel ist die Steuerung von Kfz-Motoren und der Trend geht daher zu schnelleren 16- und 32-Bit-Kernen. Die Kerne der Mikrocontroller werden auf ihre spezielle Aufgabe angepasst. So werden z.b. Befehle oder Register ergänzt, um die spezielle On-Chip-Peripherie anzusprechen. Damit eine gute Speicherausnutzung erreicht wird, haben viele Controller Bitbefehle, mit denen einzelne Bits direkt gespeichert und manipuliert werden können. Oft wurden die Mikrocontrollerkerne aus vorhandenen Mikroprozessoren abgeleitet. Dies hat verschiedene Vorteile: Es spart für den Hersteller Entwicklungs- und Testzeit, vielen Benutzern ist der Befehlssatz schon bekannt und zum Teil können vorhandene Entwicklungswerkzeuge benutzt werden. Parallele oder serielle Schnittstelle Input/Output-Ports, kurz I/O-Ports, sind für Mikrocontroller besonders wichtig, sie erlauben den Austausch digitaler Signale mit dem umgebenden System. Ein Beispiel: Ein Mikrocontroller, der eine Infrarotfernbedienung steuert, kann über einen digitalen Eingang feststellen, ob gerade eine Taste gedrückt wird. Über einen digitalen Ausgang kann er die Sendediode ein- und ausschalten. Über I/O-Ports werden also binäre Signale verarbeitet, die mit TTL-Pegeln dargestellt werden. Alle Mikrocontroller verfügen daher über eigene I/O- Ports, diese sind meistens in Gruppen zu 8 Bit. Typischerweise gehört zu jedem Port ein Datenregister und ein Richtungsregister, das die Richtung des Datenaustausches (Ein- oder Ausgabe) festlegt. Die Portausgänge sind in ihrer Schaltungstechnik einfach gehalten. Die Ports werden auch benutzt, um externe Busbausteine anzusteuern. Mikrocontroller-Ports - 8 -

sind oft rücklesbar, d.h. im Ausgabebetrieb kann der anliegende Wert vom Controllerkern wieder eingelesen werden. Dies erspart die zusätzliche Abspeicherung des Portzustands in RAM-Zellen. Um einen vielseitigen Mikrocontroller zu erhalten, der aber nicht all zu viele Anschlussstifte hat, werden über die Portanschlussstifte oft alternativ andere Funktionen abgewickelt, z.b. Analogeingang, Zählereingang oder serielle Datenübertragung. Über Konfigurationsregister kann dann per Software die Arbeitsweise dieser Anschlussstifte festgelegt werden. A/D-Wandler A/D-Wandler sind Bausteine, die einen analogen Eingang und N digitale Ausgangsleitungen haben. Ein am Eingang anliegendes analoges Signal wird in eine ganze Zahl umgerechnet und in binärer Darstellung an den N digitalen Ausgangsleitungen ausgegeben. Die Analog- Digital-Umsetzung hat dann eine Auflösung von N Bit. Erfolgt die Umwandlung in kurzen Abständen, so kann eine sich ohne Sprünge verändernde Spannung in Form einer Liste von Zahlen protokolliert werden. Je schneller ein A/D-Wandler arbeitet, desto dichter liegen die protokollierten Werte und umso genauer wird die Änderung der analogen Spannung abgebildet. Watchdog-Timer Ein Mikrocontroller könnte durch einen versteckten Programmfehler oder durch umgebungsbedingte Veränderungen von Speicher- oder Registerinhalten, z.b. Störsignale, in eine Endlosschleife geraten. Damit fällt er praktisch aus und die Steuerung wird blockiert. Diese gefährliche Situation soll ein Watchdog-Timer (WDT) vermeiden. Ein Watchdog-Timer ist ein freilaufender Zähler, der bei Überlauf einen ein Reset des Mikrocontrollers auslöst. Im normalen Programmablauf muss daher der WDT regelmäßig durch das Programm zurückgesetzt werden um den WDT-Reset zu vermeiden. Dies kann man z.b. in der Hauptprogrammschleife machen, die ständig durchlaufen wird. Gerät das Programm des Controllers dann durch eine Störung ungewollt in eine Endlosschleife, so findet das Zurücksetzen des Watchdog-Timer nicht mehr statt (es sei denn, der Rücksetzbefehl des WDT liegt innerhalb dieser Endlosschleife) und dieser löst nach einer gewissen Zeit ein Reset aus. Nun wird das System neu hochgefahren und kann wieder korrekt arbeiten. - 9 -

Timer (Zähler) Zähler/Zeitgeber-Bausteine sind typische und sehr wichtige Peripheriegruppen, die fast jeder Mikrocontroller besitzt. Schon bei einer einfachen Impulszählung wird der Nutzen dieser Baugruppe offensichtlich: Ohne den Zähler/Zeitgeberbaustein müsste ein Mikrocontroller den betreffenden Eingang in einer Programmschleife ständig abfragen (pollen) und bei jeder zweiten Flanke den Wert einer Speichervariablen inkrementieren. Der Zählerbaustein befreit die CPU von dieser zeitraubenden Aufgabe. Das Kernstück des Zähler/Zeitgeberbausteins ist ein Zähler, der durch eingehende Impulse inkrementiert oder dekrementiert wird. Im Zählerbetrieb (Counter) kommen diese Impulse über einen Anschlussstift von außen in den Mikrocontroller und werden einfach gezählt. Im Zeitgeberbetrieb (Timer) werden die Impulse durch das Herunterteilen des internen Oszillatortaktes gewonnen. Da der Oszillatortakt bekannt ist, sind damit exakte Zeitmessungen möglich. Die Umschaltung erfolgt durch einen Multiplexer. Speicher Ein Mikrocontroller besitzt meist ein ROM, ein EPROM oder eine Flash-Memory als Programmspeicher und ein RAM als Datenspeicher. Programme können in jeden dieser Speicherbereiche geladen und in jedem Bereich ausgeführt werden. Das ROM kann allerdings nur während des Herstellungsprozesses programmiert werden. Daher ist die Flash-Memory meist der bevorzugte Programmspeicher. Da Programme im RAM nicht dauerhaft gespeichert werden können, ist seine Hauptfunktion die temporäre Speicherung von Rücksprungadressen im Stack-Bereich oder von Zwischenergebnissen des Programmlaufs. Interrupt-System Ein Mikrocontroller verfügt schon auf seinem Chip über verschiedene vielseitige Peripheriekomponenten. Über die I/O-Ports können weitere externe Komponenten angeschlossen werden. Der Mikrocontrollerkern muss also eine Vielzahl von Subsystemen ansteuern und bedienen. Ohne das Interrupt-Konzept müsste die CPU in vielen Abfrageschleifen die Zustandsflags der Peripheriekomponenten abfragen und wertvolle Zeit ginge verloren. Viel effizienter ist es, wenn z.b. der A/D-Wandler durch einen Interrupt signalisiert, dass die Wandlung beendet ist und ein Ergebnis vorliegt. Ebenso kann eine Zähler/Zeitgeber-Einheit mit einem Interrupt ein Compare-Ereignis signalisieren. Durch den - 10 -

Interrupt-Betrieb wird die Effizienz enorm gesteigert und wegen der vielfältigen Peripherie spricht hier noch mehr für das Interrupt-Konzept als bei den Mikroprozessoren. Ein zusätzlicher Aspekt ist die oft geforderte Echtzeitfähigkeit, eine garantierte und sichere Reaktion des Mikrocontrollers auf ein Ereignis innerhalb einer definierten maximalen Reaktionszeit. Wegen der genannten Gründe verfügen fast alle Mikrocontroller über die Möglichkeit der Interrupt-Verarbeitung. Das Interrupt-System erlaubt es, auf das Peripherieereignis sofort zu reagieren, ohne die entsprechende Komponente ständig abzufangen. 3. Speicherorganisation und Programmierung 3.1 Speicherorganisation Die Controller der 8051-Familie sind für die Harvard-Architektur konzipiert. Diese Architektur teilt den Speicher in Programm- und Datenspeicher auf. Beide Speicher liegen im gleichen Adressbereich. Bei gleicher Adresse wählt der Controller über ein Steuersignal einen der beiden Speicher. 3.1.1 Programmspeicher Der 80(C)515 enthält einen eingebauten 8 KByte Programmspeicher als optionalen Teil. Der ROM-lose 80(C)535 arbeitet dagegen nur mit externem Speicher. In allen Fällen kann der externe Speicher bis zu 64 KByte groß sein. Liegt der Eingangspin EA (external access) auf High-Pegel, arbeiten die ROM-Versionen aus dem internen ROM. Dies geschieht solange der Programmzähler Adressen unterhalb 2000h enthält. Speicherplätze mit Adressen darüber bis FFFFh weisen immer auf den externen Programmspeicher. Da der 80(C)535 keinen internen Programmspeicher besitzt, muss der Anschluss EA hier generell auf Low- Pegel gelegt werden. In jedem Fall erfolgt die Adressierung beim Programmzugriff über den sechzehn Bit breiten Programmzähler (PC), unabhängig davon, ob mit internem oder internem Speicher gearbeitet wird. - 11 -

Abbildung 3 3.1.2 Datenspeicher Der Datenspeicher lässt sich in einen internen und einen externen Bereich aufteilen. Der interne Datenspeicher, der sich beschreiben und lesen lässt (RAM), besteht aus drei getrennten Blöcken: dem unteren 128 Byte RAM, dem oberen 128 Byte RAM und dem 128 Byte großen Bereich der Special-Function-Registers (SFR). Weil die beiden letztgenannten Bereiche logisch den gleichen Adressraum belegen, erfolgt die Auswahl des jeweiligen Blocks durch die Adressierungsart. Die unteren 128 Byte können sowohl mit direkter als auch indirekter Adressierung angesprochen werden, die oberen 128 Byte des internen RAM jedoch nur durch Befehle, die indirekte Adressierung verwenden. Die SFR müssen daher ausschließlich direkt angesprochen werden. - 12 -

Abbildung 4 Die unteren 128 Byte des internen RAM lassen sich weiter in drei Gruppen aufteilen: Auf den Adressen 00h bis 1Fh sind allgemein verwendbare vier Registerbänke untergebracht. Der Controller arbeitet immer nur mit einer der Registerbänke. Jede Registerbank besteht aus 8 Bytes (R0 bis R7). Die anschließenden 16 Byte (Adresse 20h bis 2Fh) enthalten 128 direkt adressierbare Bits. Diese Bits lassen sich auf zwei verschiedene Weise ansprechen. Die erste Möglichkeit ist, ihre Bitadressen zu verwenden, d.h. Bit 00h bis 07h. Die andere ist, sich auf die Bitstelle im jeweiligen Byte 20h bis 2Fh zu beziehen. Die Adressen 30h bis 7Fh stehen allgemein als Datenbytes zur Verfügung. Die obere Hälfte des Datenspeichers umfasst 128 Bytes und geht von Adresse 80h bis FFh. Die Bytes sind mit Hilfe der Register R0 oder R1 indirekt adressierbar. Der Controller kann einen externen Datenspeicher von 64KByte ansprechen, der an ein externes Bussystem angeschlossen wird. Der externe Datenspeicher wird durch den DPTR (Datapointer) indirekt adressiert. - 13 -

3.1.3 Die Special Function Register SFR Die Special Function Register befinden sich überlappend mit der oberen Hälfte des internen RAM im Adressbereich 80h bis FFh. Sie sind über direkte Adressierung anzusprechen. Sie lassen sich mit ihrer absoluten Hexadresse benennen oder, bei einem geeigneten Übersetzerprogramm, auch mit ihrer symbolischen Adresse. Einige SFR sind nur als komplettes Byte anzusprechen, andere sind bitadressierbar. Bei geeignetem Übersetzerprogramm sind auch diese einzelnen Bits mit ihrem symbolischen Namen zu benennen. Der Bereich der SFR hat zwei wesentliche Aufgaben. Zum einen liegen in diesem Bereich alle CPU-Register, außer dem Programmzähler PC und den vier Registerbänken. SFR sind in erster Linie die Arithmetikregister A, B und PSW sowie die Zeiger SP, DPH und DPL (DPTR higher Byte und lower Byte). Zum anderen stellen eine Anzahl von SFR die Schnittstelle zwischen CPU und den integrierten Peripherieeinheiten dar. Letzteres heißt, dass alle Kontrollfunktionen und Datentransfers zu oder von Peripherieeinheiten ausschließlich über SFR abgewickelt werden. 3.2 Adressierungsarten Je nachdem, wie bei einer Assembler-Instruktion auf die benötigten Daten zugegriffen wird, unterscheidet der 8051 fünf Adressierungsarten. Im Folgenden werde ich jede Adressierungsart anhand eines Beispiels kurz beschreiben und außerdem eine in Datenbüchern übliche, sehr kurze Form der Befehlsbeschreibung darstellen. Dort bedeutet ein nicht in Klammern eingeschlossener Registername oder eine Adresse Inhalt des Registers bzw. Inhalt der durch die Adresse bezeichneten Speicherstelle. Ein geklammertes Register R0, R1 oder DPTR kommt bei indirekter Adressierung vor und bedeutet Inhalt der durch den Inhalt von R0, R1 bzw. DPTR adressierten Speicherstelle. A Rr DPTR dadr @Ri @DPTR #konst Akkumulator Register R0 bis R7 Datapointer 8-Bit Adresse für die direkte Adressierung des internen RAM indirekte Adressierung des internen RAM durch R0 oder R1 indirekte Adressierung des externen RAM durch Datapointer Konstante bei unmittelbarer Adressierung Tabelle 1 Bezeichnungen bei Befehlsbeschreibungen - 14 -

3.2.1 Direkte Adressierung Die Speicherzellen des internen Datenspeichers können direkt adressiert werden. Direkt adressieren heißt, die Adresse, deren Inhalt bearbeitet werden soll, wird im Befehl angegeben. Direkte Adressierung ist die einzige Möglichkeit auf die SFRs zuzugreifen. Beispiel: MOV 20, 100 20 100 überträgt eine Kopie des Inhaltes der Speicherstelle 100 Dezimal in die Speicherzelle 20 Dezimal. 3.2.2 Indirekte Adressierung Bei der indirekten Adressierung des internen RAM enthält das in der Anweisung mit @ gekennzeichnete Register R0 oder R1 der aktuellen Registerbank die Adresse der Daten, auf die der Befehl angewendet werden soll. Durch indirekte Adressierung mit R0 oder R1 kann aber nur auf den internen Datenspeicher zugegriffen werden. Für die indirekte Adressierung des externen Datenspeichers wird der Befehl MOVX verwendet. Als Register für die indirekte Adressierung des externen Datenspeichers wird DPTR verwendet. Beispiel: MOV A, @R1 A (R1) überträgt eine Kopie des Inhalts der Speicherzelle, deren Adresse im Zeigerregister R1 steht, in den Akkumulator. 3.2.3 Unmittelbare Adressierung (Wertzuweisung) Dabei steht der Wert, der übertragen oder mit dem eine Berechnung durchgeführt werden soll, nicht in einer Datenzelle, sondern unmittelbar als Operand im Befehlscode. Da der Befehlscode in einem dynamisch nicht veränderbaren Speicher (ROM) steht, handelt es sich bei diesem Wert um eine Konstante. Beispiel: MOV R5, #18 R7 #18 lädt die Konstante 18 Dezimal in das Register R5. - 15 -

3.2.4 Register Adressierung Bei der Register Adressierung sind die Operanden in den Registern A, B, R0-R7 oder DPTR enthalten. Die Information, auf welches Register zugegriffen werden soll, ist im Opcode enthalten. Beispiel: INC R0 inkrementiert den Inhalt von R0. R0 R0-1 3.2.5 Indirekte, indizierte Adressierung Die indirekte, indizierte Adressierung wird verwendet, um den Programmspeicher auszulesen. Hierbei enthält das Register PC oder DPTR eine Basisadresse. Die endgültige Adresse ergibt sich aus der Addition der Inhalte des Basisregisters und des Akkumulators. Beispiel: MOVC A, @A+DPTR A (DPTR+A) schreibt ein Byte aus dem Programmspeicher nach A. Die Adresse des Bytes berechnet sich als Summe des Inhalts von A und des DPTR. von in A Rr DPTR dadr @Ri @DPTR konst A * * * * Rr * * DPTR dadr * * * * @Ri * * @DPTR * konst * * * * * Tabelle 2 Übersicht der Transfermöglichkeiten - 16 -

3.3 Programmierung Wenn ein Programm für einen PC entwickelt wird, ist es selbstverständlich, dass auch die Programmentwicklung auf einem PC stattfindet. Der PC hat Bildschirm, Tastatur, Maus, Laufwerke usw. und wird zum Editieren, Testen, Debuggen und Speichern des Programms benutzt. Entwicklungssystem und Zielsystem sind also identisch, der erzeugte Maschinencode kann direkt auf dem Entwicklungsrechner ausgeführt werden. Bei einer Mikrocontroller-Entwicklung ist die Situation ganz anders: Der Mikrocontroller kann nicht als Entwicklungssystem benutzt werden, weil er in der Regel weder Bildschirm noch Tastatur hat. Außerdem wird ein Mikrocontroller nicht größer als nötig ausgewählt, auf dem fertigen System ist also kein Platz für platzraubende Entwicklungswerkzeuge. Man braucht also einen separaten Entwicklungsrechner, z.b. einen PC. Nun ist das Entwicklungssystem nicht mehr mit dem Zielsystem identisch, der Befehlssatz des Mikrocontrollers unterscheidet sich von dem des Entwicklungsrechners, und der Prozessor verfügt auch nicht über die spezielle Peripherie des Mikrocontrollers. Der Maschinencode wird durch einen Übersetzer auf dem Entwicklungssystem erzeugt, kann aber nicht mehr auf dem Entwicklungssystem ausgeführt werden, man betreibt also cross-platform-entwicklung. Aus diesem Grund werden spezielle Werkzeuge für die Mikorcontroller-Entwicklungen gebraucht. Besonders wichtig sind dabei die Möglichkeiten zur Fehlersuche. Kaum ein Programm läuft gleich fehlerfrei, meistens ist eine längere Phase des Testens und Fehlersuchens nötig. 3.3.1 Programmiersprachen Den direktesten Zugriff auf den Prozessor hat man mit Assembler. Dies ist jedoch gleichzeitig - zumindest auf den ersten Blick - die komplexeste Sprache, denn sie erfordert einen hohen Lernaufwand. Aufgrund stark unterschiedlicher Befehlssätze verschiedener Controllerfamilien ist das Gelernte nie 1-zu-1 übertragbar und meist nur direkt auf einen einzigen Prozessor oder allenfalls auf eine Familie "verwandter" Produkte anwendbar. Dennoch kann man sich mit einiger Erfahrung recht schnell in einen anderen Befehlssatz einarbeiten. In bestimmten Bereichen oder Teilen eines Projekts ist die Verwendung von Assembler dennoch unabdingbar. Für größere Entwicklungen werden mittlerweile auch höhere Programmiersprachen eingesetzt. Hier ist C klar dominierend, bei umfangreichen Projekten ist ein deutlicher Trend zu C++ erkennbar. Andere Sprachen (z.b. Basic, Pascal) kommen demgegenüber nur in verschwindend geringem Umfang zum Einsatz. - 17 -

4. Auswahl des richtigen Mikrocontrollers Die Auswahl des richtigen Controllers für Applikationen im Embedded Bereich stellt eine komplexe und nicht zu unterschätzende Aufgabe dar, bei der eine Vielzahl von Faktoren zu berücksichtigen sind. Es gibt dutzende Hersteller, und jeder davon hat unzählige Varianten im Angebot. Die Entscheidung wird oftmals nicht nur durch die Hardware- und Softwareanforderungen, sondern auch durch die Kostenrechnung beeinflusst. Insbesondere bei High-End Anwendungen ist die Wahl einer Controllerarchitektur eine strategische Entscheidung. Kriterien bei der Entscheidung Verfügbarkeit: Der benutzte Mikrocontroller sollte noch so lange wie möglich auf dem Markt zu erwerben sein. Das ist wichtig für langfristige Investitionen. Preis: Kostenfaktoren müssen bei der Wahl berücksichtigt werden. Mechanische Anforderungen: stabiler Aufbau, robust gegen mechanische Belastung, begrenzter Raum, vorgegebene Bauform Elektrische Anforderungen: vorgegebene Versorgungsspannung, limitierter Energieverbrauch, geringe Abwärme Zuverlässigkeit: Ausfallsicherheit, Notbetrieb z.b. bei Bremsen eines Autos (Diagramm 1) Takt/Geschwindigkeit: Ausführung von Tätigkeiten innerhalb einer vorgegebenen Zeit Echtzeitsysteme Schnittstellen: Mehr und flexiblere Schnittstellen als bei reinen Rechensystemen sind erwünscht Andere Kriterien: Speicher, Onboard-Peripherie, unterstützte Programmiersprachen usw. Diagramm 1-18 -

5. Einsatzgebiete des Mikrocontrollers Mikrocontroller sind heute als leistungsfähige Kleinrechner mit minimaler Peripherie ab etwa der Größe einer Briefmarke erhältlich und verfügen über ein breites Spektrum an Einsatzgebieten. Ein paar Anwendungsbeispiele sind: Haushalt (Geschirrspüler, Fernseher, Waschmaschine) Kommunikation (Mobiltelefone, Faxgeräte) Industrie (Steuerung und Regelung, Prozessautomatisierung) Autos und Verkehr (Motorsteuerung, Steuerungen und Regelungen im Verkehr) Fallbeispiel: Kfz-Technik Elektronische Steuergeräte mit ihren Sensoren und Aktoren sind aus dem Kraftfahrzeug nicht mehr wegzudenken. Sie haben die Automobilwelt revolutioniert. Alle wesentlichen Fahrzeugfunktionen werden elektronisch auf kleinstem Raum gesteuert und geregelt: die Motor- und Getriebesteuerung, die Sicherheitssysteme aber auch eine Vielzahl von Komfortsystemen und die Intelligenz im Fahrzeug wächst rasant weiter. Die elektronische Steuerung und Regelung eröffnet eine Vielfalt an Möglichkeiten. Sie verbessert die Fahrsicherheit und den Fahrkomfort. Gleichzeitig werden die Fahrzeuge immer sparsamer und umweltschonender. In den letzten Jahren entfiel ein großer Teil der verkauften Mikrocontroller auf den Bereich Kfz-Elektronik: Im Jahr 2002 waren es etwa 34 Prozent des gesamten Marktvolumens. So stecken in einem gut ausgestatteten Fahrzeug der Mittelklasse derzeit rund 40 Mikrocontroller, wobei das Spektrum von einfachen Anwendungen wie Zentralverriegelung oder Fensterheber bis hin zu sehr komplexen Steuergeräten für die Motorsteuerung oder das Antiblockiersystem gespannt ist. Allerdings werden meist noch Achtbitmaschinen eingesetzt. Da indes immer mehr Steuergeräte vernetzt sind und die einzelnen Steuergeräte immer mehr Funktionen übernehmen, steigen die Anforderungen an die Rechenleistung und es kommen immer häufiger 32-Bit Architekturen zum Zuge, wobei formelle Software- Entwicklungsprozesse und Software-Schichtenmodelle die Umstellung weiter beschleunigen. - 19 -

Bei der Steuerung von Fensterheber oder Sitzverstellung im Auto kommt man schon mit den einfachsten Mikrocontrollern aus, wobei die Steuerung intelligenterer Funktionen, also z.b. Kraftstoffeinspritzung und Zündsteuerung dagegen eher schon einen 16-Bit-Mikroprozessor oder Mikrocontroller benötigt. Für spezielle Funktionen wie z.b. Autonavigationssysteme werden sogar High-End-Prozessoren benötigt. Für Anwendungen in Steuerung, Regelung und Signalverarbeitung sind heute ganze Familien von Prozessoren mit spezieller Peripherie verfügbar, die aber alle mit SW-kompatiblen Standard-Prozessor-Kernen arbeiten. Dabei spielen Prozessor Kerne von Intel (8051) und Motorola (HC08, HC 11) eine Rolle. Bislang wurden im Fahrzeug verschiedene Mikrocontroller unterschiedlicher Hersteller eingesetzt, doch wegen der Vielzahl von Anwendungen und der langen Produktlebensdauer in der Automobilindustrie führt dies unweigerlich zu Problemen, da über eine extrem lange Zeit nicht nur alle Bauteile, sondern auch die Fertigungstechniken und Entwicklungstools verfügbar sein müssen. Durch skalierbare und befehlssatzkompatible Mikrocontrollerkerne mit klarer Roadmap für die Zukunft lassen sich solche Probleme nicht nur vermeiden, sondern zudem auch Kosten sparen. Abbildung 5-20 -

6. Quellen Microcomputer Components 8-Bit CMOS Single-Chip Microcontroller SAB 80515 / SAB 80C515 SAB 80C515 / SAB 80C535 Data Sheet 02.96 / User's Manual 08.95 Infineon Technologies AG, München Andreas Roth, Das Mikrocontroller Kochbuch MCS51 mitp Verlag, 2002 Dieter Schossig, Mikrocontroller te-wi Verlag, 1993 Silvia Limbach, Kompaktkurs Mikrocontroller Vieweg Verlag, 2002 Bernd-Dieter Schaaf, Mikrocomputertechnik Hanser Verlag, 1999 J. Schäuffele, Th. Zurawka: Automotive Software Engineering Vieweg, 2003 K.P.Köhn, R.Schultes, 8051 Prozessoren Franzis' Verlag, 1994 Zeitschrift - AUTO & ELEKTRONIK http://www.goblack.de/desy/mc8051chip/ - 21 -