Post on 31-Aug-2019
transcript
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 1
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Eingebettete Systeme –Modellierung und Zielarchitekturen
Vorlesungsbegleitende Unterlagen
WS 2003/2004
Klaus Waldschmidt
Teil 10
Mikrocontroller
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 2
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Mikrocontroller
Mikrocontroller sind integrierte Schaltungen, die einen Mikroprozessor-Kern um verschie-dene periphere Schnittstellen und Speicher-bausteine erweitern. Unterschiedliche Auf-gaben können ohne Veränderung der Hard-ware – nur durch Programmierung des Mikro-prozessors – erledigt werden. Die Entwick-lungs- und Testarbeit verlagert sich somit vom Hardwareentwurf zur Softwareerstellung.
Hauptanwendung von Mikrocontrollern sind kleinere Steuerungs- und/oder Regelungs-aufgaben bei denen der Schwerpunkt auf einer Einzelbitverarbeitung und einer hohen I/O-Kapazität liegt.
Zu den Einsatzgebieten zählenbeispielsweise:
• Industriesteuerung
• Motorsteuerung/Servosysteme
• Kommunikationstechnik
• Unterhaltungselektronik
• Mess-, Regelungs- und Automatisierungstechnik
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 3
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Literatur
� Das Mikrocontroller KochbuchAndreas RothIWT-Verlag 1997ISBN 3-88322-225-9
� PICmicro TM- MID-Range MCU Family –
Referencce Manual- PIC 12C5xx Datasheet
http://www.microchip.com
� Die Mikrocontroller 8051, 8052 und 80C517Rolf Klausvdf Hochschulverlag an der ETH 1999ISBN 3-7281-2478-8
� AVRR Microcontroller- AT90S4414/AT90S8515 Datasheethttp://www.atmel.com
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 4
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Die Mikrocomputer System Familie MCS-51 von Intel
Der 8051 ist der Grundtyp der seit 1981 produzierten 8 Bit Mikrocontroller Familie MCS-51. Der zur Verfügung stehende interne Speicher ist in der für Mikrocontrollertypische Harvard-Architektur – getrennter Adressbereich für Programm- und Daten-speicher – organisiert.
Die Größe des Programm- und des Datenspeichers ist bei den Controllern der MCS-51Familie auf jeweils 64 KByte begrenzt. Bei einem Speicherzugriff liegen die Adressenimmer an beiden Speicherbereichen an. Die Steuerung der Freigabeleitung wird überden Befehlscode gesteuert.
Programmspeicher
ROM
Datenspeicher
RAM
Steuerwerk
(Programmzähler,Instruktionsregister,
Steuerregister)
Datenpfad
(Datenregister,ALU, Shifter,
MUX, DEMUX)
Prozessor (FSMD)
Steuersignale
Mikrobefehle
Bedingungs-codes
Maschinen-befehle
Steuer-signale
Adresse desMaschinen-
befehls
Ergebnisse
Operanden
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 5
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Der Mikrocontroller
Der Mikrocontroller 8051 besitzt eine 8 Bit CPU, die für Kontroll- und Steuerfunktion optimiert wurde. Durch den 8 Bit Befehls-code stehen 256 Operationen zur Verfügung,von denen 255 belegt sind. jeder Befehl be-steht aus einem Mnemonic und bis zu zwei 8 Bit Operanden.
Mnemonic [Ziel [ Quelle] ]
Für die Datenmanipulation steht eine ALU zur Verfügung, die arithmetische Operationen(Addition, Subtraktion, Multiplikation und Divi-sion), logische Operationen (AND, OR,XOR) und Schiebeoperationen durchführen kann. Die Auswertung erfolgt über verschiedene Flag-Register (Carry, Overflow. Parity, …).
Besonderheit des 1980 entwickelten Mikrocontroller war der in die CPUintegrierte Boolesche Prozessor, der
eine direkte Einzelbitmanipulation er-möglicht. Für die Einzelbitverarbeitung steht ein eigener Befehlssatz zur Ver-fügung, mit dem einzelne Bits im bit-adressierbaren Speicherbereich ge-setzt, gelöscht, vertauscht, komple-mentiert und logisch mit dem Einzel-bitakkumulator (Carry-Flag) verknüpftwerden können.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 6
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Interner und externer Speicher des Mikrocontrollers 8051
Der 8051 besitzt einen internen 128 Byte Datenspeicher (RAM) und einen internen 4 KByte Programmspeicher (ROM), wel-cher bei der Chipherstellung maskenpro-grammiert werden muss. Haupteinsatz-gebiet des 8051 sind somit Großserien,bei denen die hohen Fixkosten der Mas-kenherstellung auf große Stückzahlenumgelegt werden können.
Für Kleinserien stehen OTP-Typen (onetype programmable) zur Verfügung, dieeine einmalige Programmierung beimKunden erlauben.
Bei der Entwicklung kommen Typenohne integrierten Programmspeicher(8031) oder mit reprogrammierbaremProgrammspeicher (8751 – 4 KByteEPROM) zum Einsatz.
Für die Adressierung des Speichers stehen direkte-, indirekte-, indizierte-,unmittelbare- und Registeradressie-rung zur Verfügung. Die Adressie-rungsart entscheidet bei parallelenSpeicherbefehlen, welcher bei einigenTypen vorhanden ist, auf welchen Be-reich zugegriffen wird.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 7
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Adressierungsarten
1.) Direkte Adressierung (nur interner Speicher)
Die effektive Adresse des Operanden im Speicher wird durch ein 8-Bit Adressfeld im Befehl angegeben.
effektive Adresse Operand
Beispiel:ADD A, 8A
Der Inhalt des Speichers an der Adresse 8A wird zum Akkumulator addiert.
Befehlsbestandteil Speicher
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 8
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
2.) Register-Adressierung
Der Operand steht im Register, welches durch die niederwertigen 3-Bit Befehlangegeben wird. Die höherwertigen 5-Bit beschreiben die durchzuführendeOperation.
Operand
Befehlsbestandteil Speicher
Beispiel: XCA A, R5
Der Inhalt des Akkumulators wird mit dem Inhalt des Registers R5 getauscht.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 9
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
3.) Indirekte Adressierung
Der Befehl bezieht sich auf ein Register, welches die effektive Adresse desOperanden im Speicher enthält.
Speicheradresse
Befehlsbestandteil Register
Operand
Speicher
Beispiel:MOV A @R0
Der Inhalt des Speichers an der im Register R0 stehenden Adresse istwird im Akkumulator geladen
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 10
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
4.) Unmittelbare Adressierung
Der konstante Operand folgt unmittelbar dem Operationscode im Programmspeicher.
Beispiel:
MOV R2, #0ADas Register wird mit der Dezimalzahl 10 geladen.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 11
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
5.) Indizierte Adressierung
Die effektive Adresse ergibt sich aus einer Basisadresse (Datenpointer oderProgrammzähler) und einer variablen Abstandsgröße (Index).
Basisadresse
Befehlsbestandteil Basisregister
Operand
Speicher
Index
Akkumulator
+
Beispiel:MOVC A, @A + DPTR
Die effektive Adresse des Operanden ergibt sich aus dem Inhalt des DatenpointersDPTR und dem Inhalt des Akkumulators
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 12
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
internerSpeicher
4 KByte(8051/8052)
internerSpeicher
4 KByte(nur 8052)
externerSpeicher
maximal64 KByte
Der Programmspeicher
externerSpeicher
maximal64 KByte
0000h
FFFFhFFFFh
0000h
0FFFh 1000h
1FFFh
EA# = 1 EA# = 0
Der Zugriff auf den internen oder externen Programmspeicher wird durch das Eingangssignal EA#geregelt. Nur wenn an EA# einHigh-Pegel anliegt, wird bis zu derAdresse 0FFFh (1FFFh beim 8052)auf den internen Speicher zugegriffen.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 13
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Der Datenspeicher
SpecialFunctionRegister(SFR)
untererRAM
Bereich
obererRAM
Bereich
(nur 8052)
80h
FFh
00h
7Fh80H
FFh
RegisterBank0
RegisterBank1
RegisterBank 2
RegisterBank 3
BitadressierbarerBereich
zur allgemeinenVerwendung
00h
007h08h
0Fh10h
17h18h
1Fh20h
2Fh30h
7Fh
Der untere RAM Bereich be-steht aus 4 softwaremäßig zuschaltbaren Registerbän-ken – mit jeweils acht 8 BitRegistern -, einem bitadress-ierbaren Bereich für denBooleschen Prozessor und80 Byte RAM zur allgemeinenVerwendung.
Nach einem Reset sind dieRegisterbänke 1, 2 und 3 abgeschaltet und der Stack-pointer zeigt auf Adresse 08h.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 14
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Die Special Function Register des Mikrocontrollers 8051
Parallel zum oberen RAM Bereich, der nurbeim 8052 und den entsprechenden Nach-folgetypen vorhanden ist, befinden sich dieSpecial Function Register. Bei diesen pa-rallelen Speicherbereichen entscheidet dieAdressierungsart, auf welchen Speicherbe-reich zugegriffen wird. Bei direkter Adress-ierung wird auf die Special Function Regis-ter zugegriffen. Eine indirekte Adressierung- über die Register R0 und R1 – führt zueinem Zugriff auf den optionalen RAMBereich.
Die Special Funktion Register ermöglichenu.a. die individuelle Interruptfreigabe, dasStarten des Timers und den Zugriff auf dieI/O-Ports. Spezielle Befehle werden nichtbenötigt, weil alle Register durch direkteAdressierung manipuliert werden können.
Um beispielsweise den Timer zu starten,muss nur das entsprechende Bit imSpecial Function Register gesetzt werden.Einzelbitadressierung ist hierbei möglich.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 15
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Ports
Der Mikrocontroller 8051 besitzt 4 bitdirektiona-le 8 Bit Ports. Die Ports befinden sich an den Adressen 80h, 90h, A0h und B0h im Special Function Register und sind somit bitadressier-bar. Einige dieser Speicherstellen besitzen Zweitfunktionen, die den Ein-/Ausgang für dieserielle Datenübertragung, Leitungen für einenexternen Interrupt und ein Schreib-/Lesesignalfür externes RAM zur Verfügung stellen.Beispielsweise bei der Verwendung eines maxi-malen 64 KByte großen externen Datenspeicherswerden die Ports P0 und P2 (bei mehr als 256 Byte) für die Adressierung des Speichers ver-wendet und stehen nicht für die Ansteuerung derPeripheriebausteinen zur Verfügung. Für den Zu-griff auf den externen Speicher steht eine eigeneKlasse an Befehlen zur Verfügung.
Jeder Port besteht pro Speicherstelleaus einem Latch (D-Flipflop), das alsBitwert im zugehörigen Special Func-tion Register realisiert ist. Bei einerVerwendung als Ausgang wird einSchreibbefehl im Special FunctionRegister direkt an den Ausgang wie-tergeleitet. Für die Verwendung alsEingang muss das entsprechende Special Function Register auf denWert 1 gesetzt werden. Anschließendkann der Registerinhalt abgefragt werden.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 16
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Der Oszillator und der Maschinenzyklus
Der integrierte Taktgenerator – realisiertdurch einen einstufigen linearen Inverter –ist für die Verwendung eines Quarz-Kris-talls oder eines keramischen Resonatorsals frequenzbestimmender Teil vorgesehen.Die Beschaltung erfolgt über die Ein- undAusgänge XT AL1 und XT AL2 bzw. bei der Verwendung eines externen Taktesüber XT AL2 (XT AL1 an GND).
Die Standardoszillatorfrequenz der Con-troller beträgt 12 MHz. Da die Taktfrequenzeinen großen Einfluss auf den Leistungs-verbrauch hat, sollte diese insbesonderebei einem mobilen Einsatz sehr genau denLeistungsanforderungen angepasst werden.
Ein Maschinenzyklus besteht aus 6 Einzel-zyklen (S1 bis S6) mit jeweils 2 Oszillator-perioden. Jeweils 12 Oszillatorperioden bil-den somit einen Maschinenzyklus (1µs bei12 MHz).
Der Befehlssatz stellt 1 bis 3 Byte Befehle zur Verfügung, für deren Ausführung einoder zwei Maschinenzyklen (Multiplikationund Division: 4 Maschinenzyklen) benötigtwerden.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 17
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Der Maschinenzyklus
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 18
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Timer
Im 8051 stehen zwei 16 Bit Timer zurVerfügung die auch, durch setzen desentsprechenden Bits im Timer ControlRegister, als Zähler verwendet werdenkönnen.
Der Timer zählt die Anzahl der Maschi-nenzyklen (12 Oszillatorperioden) undwird bei einem Takt von 12 Mhz im Ab-stand von 1 µs inkrementiert.
Bei der Verwendung als Zähler werden dieAnzahl der High-Low Übergänge (Pegel-wechsel) in aufeinander folgenden Maschinen-zyklen (Test erfolgt jeweils in S5) am korres-pondierenden Pin (Pin T0 für Zähler 0 und Pin T1 für Zähler 1) gezählt. Diese Pins sind Zweitfunktionen des Ports P3 und reduzierensomit die Anzahl der Steuerleitungen für dieexterne Peripherie. Die maximale Zählerfre-quenz entspricht der Taktfrequenz.
Bei einem Überlauf des Timers wird ein Inter-rupt ausgelöst.
212
1
∗
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 19
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Serieller Port
Die Controller verfügen über einen empfangs-gepufferten seriellen Port. Der Empfangspufferermöglicht ein Lesen des nächsten Bytes be-vor das aktuelle Byte in das Empfangsregistergeschrieben wurde.
Der serielle Port besitzt separate Sende- und Empfangsregister, die einen Duplex-Betrieb(simultanes Senden und Empfangen) ermög-lichen. Direktes Lesen und Schreiben desSende-/Empfangsregisters ist jedoch nichtmöglich. Der Zugriff erfolgt über ein SpecialFunction Register. Schreibbefehle an dieses Register werden an das Senderegister weiter-geleitet. Das Empfangsregister kann durchLesen des Special Function Register ausge-lesen werden.
Übertragungsmodi:
� bitweise Senden oder Empfangen über den RxD-Pin (der TxD-Pin über-trägt einen Schiebetrakt mit einemzwölftel der Oszillatorfrequenz)
� simultanes Senden und Empfangenüber TxD- bzw. RxD-Pin (der Taktwird aus der Oszillatorfrequenz oderdurch einen Zählerüberlauf generiert)
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 20
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Interrupts
Interrupts erlauben eine spontane Reaktionauf äußere und innere Ereignisse.
Bei dem 8051 Mikrocontroller gibt es 2 externeund 3 interne Interruptquellen, welche indivi-duell über das Interrupt Enable Register frei-gegeben oder gesperrt werden könnte.
Bei den externen Interruptquellen kann überdas entsprechende Bit im Timer Control Re-gister gesteuert werden, ob der Interrupt beieinem Low-Pegel oder bei einer negativenFlanke am entsprechenden Eingang ausge-löst werden soll. Da dieses Ereignis nur ein-mal innerhalb eines Maschinenzyklusses ab-gefragt wird, muss das Signal mind. 12 Oszil-latorperioden am Eingang anliegen.
Interne Interrupts werden durch den Zähleroder durch den seriellen Port ausgelöst.
In dem Interrupt Priority Register kann je-dem einzelnen Interrupt eine von zweiPrioritätsebenen (Voreinstellung: unterePrioritätsebene) zugeordnet werden.Interrupts der unteren Prioritätsebene können keine Interrupts der oberen Prio-ritätsebene unterbrechen, wenn sich diese gerade in der Bearbeitung befinden.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 21
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Interrupts
Da Interrupts nur einmal pro Maschinen-zyklus abgefragt werden, können mehrereInterrupts in einem Maschinenzyklus„gleichzeitig“ auftreten. Die Abarbeitungder Interrupts einer Prioritätsebene ge-schieht dann in einer vorgegebenen Reihenfolge.
Reset:
Der Reset ist ein nicht maskierbarer Inter-rupt mit dem Ziel, einige Register in einen definierten Zustand zu versetzen. Hierzuwird ein intern festgelegter Resetalgorith-mus abgearbeitet, der den Programm-zähler und die Special Function Registermit dem Wert 0 initialisiert. Ausgenommensind die Portregister, die mit dem Wert 1initialisiert werden und der Stackpointer(Wert 07h).
Wenn beim Anlegen der Versorgungs-spannung kein Reset durchgeführt wird, besitzt der Controller undefiniertes Ver-halten.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 22
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Interruptsausführung
Bei der Ausführung eines Interrupts wird,wenn nicht ein Interrupt höherer Priortitätausgeführt wird, der aktuelle Wert desProgrammzählers (16 Bit) auf dem Stackabgelegt. Weitere Register werden nichtgesichert. Anschließend wird der Pro-grammzähler mit dem neuen Wert ge-laden und somit in die Interruptroutineverzweigt.
RESET
Extern 0
Timer 0
Extern 1
Timer 1
Serieller Port
Timer 2 (nur 8032)
ROM
000h
0003h
000Bh
0013h
001Bh
0023h
002BhMit dem Befehl RETI wird die Ausführungdes Interrupts beendet.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 23
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Leistungsverbrauchreduzierung (CMOS)
Durch das Setzen des entsprechenden Bitsim Power Control Register kann der Mikro-controller in einen Idle- oder einen Power-Down-Modus geschaltet werden.
Im Idle-Modus wird das Taktsignal für dieCPU abgeschaltet (der Taktgenerator wirdvon der CPU getrennt). Dies führt zu einerReduktion des Leistungsverbrauchs umetwa 15 %.
Das RAM und die internen Peripherie-funktionen bleiben in Betrieb. Ein Interrupt(inkl. Reset) sorgt für ein Verlassen desIdle-Modus.
Im Power-Down-Modus wird derOszillator abgeschaltet. Der Leistungs-verbrauch wird in diesem Modus aufunter 10 µA reduziert.
Das RAM wird weiterhin mit Spannungversorgt (somit auch die Special Func-tion Register und die Ports). Eine Be-endigung dieses Modus ist nur mit einem Hardware-Reset möglich. Dieser initialisiert die Special FunctionRegister, jedoch nicht das RAM.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 24
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Die Mikrocontroller Familie 8051
CMOS264K128 Byte64K4K EPROM87C51
CMOS264K128 Byte64K-80C31
CMOS264K128 Byte64K4 K80C51
NMOS264K256 Byte64K8K EPROM8752
NMOS264K256 Byte64K-8032
NMOS264K256 Byte64K8K8052
NMOS264K128 Byte64K4K EPROM8751
NMOS264K128 Byte64K-8031
NMOS264K128 Byte64K4K8051
Technik16-Bit Timer
Externes RAM
Internes RAM
Externes ROM
Internes ROM
Baustein
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 25
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Der Mikrocontroller 8051/8052
8031/8032 kein interner Speicher8051 (4K)/8052 (8K) ROM8751 (4K)/8752 (8K) EPROM
internes ROM/EPROMinternes RAM
SpecialFunctionRegister
128 ByteRAM
(nur 8x52)
128 ByteRAM
FFh
80h
7Fh
00H
Tim
er 1
Tim
er 0
Tim
er 2
(nur
8xx
2)
Interruptkontrolle
Input/Output
Rechnerkern
Buskontrolle
Osz
illat
or
ProzessorPort 0 8 Bit
Port 0 8 Bit
Port 0 8 Bit
Port 0 8 Bit
serielleSchnittstelle
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 26
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
INT 0/P3.2
INT 1/P3.3
EA
PSEN
INT 0/P3.2
INT 1/P3.3
EA
PSEN
123456
7
8
9
10
11
12
13
14
15
16
17
39
38
37
36
35
34
33
32
31
30
29
2827262524232221201918
44 43 42 41 40
P1.4 P1.3 P1.2 P1.1 P1.0
A8
NC VCC P0.0 P0.1 P0.2 P0.3
P3.6 P3.7XTALXTAL VSS NC P2.0 P2.1 P2.4P2.3P2.2
A12A11A10A9A8WR RD 2 1
AD3AD2AD1AD0
P2.6
P2.7
ALE
NC
P0.7
P0.6
P0.5
P0.4
A13
A15
AD4
A14
AD5
AD6
AD7
P2.5T1/P3.5
T0/P3.4
TxD/P3.1
NC
RxD/P3.0
RST/VPD
P1.7
P1.6
P1.5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
21
22
23
24
25
80518031
80518031
PLCC 44DIP 40
P1.6
RxD/P3.0
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.7
RST/VPD
TxD/P3.1
T0/P3.4
T1/P3.5
WR/P3.6
RD/P3.7
XTAL2
XTAL1
VSS P2.0
P2.1
P2.2
P2.3
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
VCC
ALE
P2.7
P2.6
P2.5
P2.4
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
A15
A14
A13
A12
A11
A10
A9
Pinbelegung des 8031/8051
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 27
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Minimalsystem und erweitertes System
Ein Minimal System ist die kleinst-mögliche Anzahl von Bauteilen, die zum Aufbau eines vollständi-gen Computers benötigt werden.
Bei einem erweiterten System wird das Minimalsystem um externe Speicher und/oder externe I/O-Pins erweitert.
8
8
8
8
Peripherie
8
8
6
8 Peripherie
80518051
RAM PROM IOz.B. 8255 Perip
herie8
8
8
8
8
8
8
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 28
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Anwendungsbeispiel – Laufschriften für Reklamezwecke
Zwischenspeicher Multiplexer
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 29
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Laufschriften für Reklamezwecke
Laufschriften werden üblicherweise mit LED-Matrizen dargestellt. Die Ansteue-rung der LEDs geschieht über ein zeilen-weises multiplexen. Die Zwischenspeicherwerden sequentiell mit den Bitmustern
der Zeile geladen. Die LEDs werden dann durch Freigabe des entsprechendenTransistors angesteuert. Diese Schritte müssen periodisch mit einer hohen Fre-quenz ausgeführt werden, um dem Be-trachter einen Text anzuzeigen.
Die Größe der LED-Matrix ist u.a. durch dieAnzahl der benötigten Steuerleitungen be-grenzt:
� 8 Bit Datenbus für die Ansteuerung desZwischenspeichers
� Leitungen für die Selektion desZwischenspeichers (bei 8 Bit Zwischen-speichern)
� |Zeilen| Leitungen für die Zeilenauswahl(Ansteuerung der Transistoren)
Die Anzahl der Steuerleitungen kann mitDecoderbausteinen reduziert werden.
��
���
�
8
|Spalten|
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 30
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Die PIC-Familie
Bei den Mikrocontrollern der PIC-Familiehandelt es sich um RISC-Controller mitetwa 30 bis 60 Instruktionen (33 Instruk-tionen beim PIC 12C5xx). Eine Gruppie-rung der Mikrocontroller erfolgt durch dieLänge der Instruktionswörter:
� Base-Line 12 Bit
� Mid-Range 14 Bit
� High-End 16 Bit
Die Harvard-Architektur ermöglicht einenparallelen Zugriff auf den Daten- und denProgrammspeicher. Die Breite des Bus-ses zum Programmspeicher entspricht der Länge der Instruktionswörter, so dasseine Instruktion in einem Taktschritt ge-lesen und in das Instruktionsregister ge-schrieben werden kann (fetch). Da die Instruktion alle benötigten Daten enthält,kann sie im nächsten Taktschritt dekodiertund ausgeführt werden (execution). DieAusführung aller zur Verfügung stehendenOperationen ist in einem Taktschritt mög-lich. Ausnahme sind Verzweigungen, diezwei Taktschritte benötigen.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 31
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Pipelining
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4Q1 Q2 Q3 Q4
OSC1
1. MOVLW 55h2. MOVWF PortB3. CALL SUB4. BSF PortA, Bit35. Instruction at address SUB
Fetch SUB + 1Execute SUBFetch SUB
FlushExecute 3Fetch 4
Execute 2Fetch 3
Execute 1Fetch 2
Fetch 1
clk 1 clk 2 clk 6clk 5clk 4clk 3
Das anliegende Taktsignal wird internin 4 Zustände (Execution: Decode (Q1),Read Data (Q2), Process Data (Q3) undWrite Data (Q4)) eingeteilt.
Das Lesen einer Instruktion mit anschließen-der Ausführung wird durch die 2-stufige In-struktions-Pipeline ermöglicht. Eine Verzö-gerung tritt auf, wenn der Programmzählermit einem neuen Wert geladen wird (Flush).
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 32
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
PIC 12C5xx
Bei der PIC 12C5xx Familie handelt es sich um 8 Bit CMOS-Mikrocontroller, die in einem8 Pin Gehäuse untergebracht sind.
7
VSS
GP0
GP1
GP2 / T0CKI
VDD
GP5 / OSC1 / CLKIN
GP4 / OSC2
GP3 / MCLR / VPP 4
3
2
1
5
6
8
Die Controller stehen mit verschiedenen Speichervarianten zur Verfügung.
41 Byte1024 x 12PIC 12CR509A
16 Byte41 Byte1024 x 12PIC 12CE519
16 Byte25 Byte512 x 12PIC 12CE518
41 Byte1024 x 12PIC 12C509 (A)
25 Byte512 x 12PIC 12C508 (A)
EPROM Data
RAMData
ROM Program
EPROMProgram
MemoryDevice
Weiter Typen besitzen einen integrierten A/D-Wandler.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 33
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
PIC 12C5xx
Der PIC 12C5xx Mikrocontroller wirdüblicherweise mit 4 MHz betrieben. Auf-grund der 4 Zustände ergibt sich eineMaschinenzykluslänge von 1 µs.
Dieser Takt kann extern oder durch eineninternen RC Oszillator erzeugt werden. Der interne Oszillator ist jedoch nicht fürzeitkritische Anwendungen geeignet, weildie Frequenz sehr stark von der Span-nungsversorgung und der Temperaturabhängig ist. Eine Frequenz von 4 MHzwird bei einer Spannung von 5V undeiner Temperatur von 25°C erreicht.
Die integrierte ALU kann die Operationen
� Addition, Subtraktion
� logische Operationen (AND, OR, XOR)
�Schiebeoperationen
durchführen.
Für die Kommunikation stehen 6 bidirek-tionale Ports (GP0 bis GP5) zur Verfügung,die teilweise für ein Wakeup aus einemSleep-Modus verwendet werden können.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 34
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
PIC 12C5xx
ROM/EPROM512 x 12 or1024 x 12ProgramMemory
Program Counter
RAM25 x 8 or
41 x 8File
Registers
Stack 1Stack 2
2-stufiger Stack
FSR Register
STATUS Register
Addr MUX
MUX
ALU
W RegisterTimer 0
Instruction Register
InstructionDecode &
Control
TimingGeneration
Internal RCOSC
Device ResetTimer
Power-onReset
WatchdogTimer
MCLRVDD, VSS
OSC1/CLKINOSC2
RAM Addr.
Direct Addr 5
12 8
8
3
8
16 x 8EEPROM
DataMemory
PIC 12CE5xxOnly
GP0GP1GP2/T0CKIGP3/MCLR/VPPGP4/OSC2GP5/OSC1/CLKIN
12Program
Bus
Data Bus
SC
L
SD
A
indirectAddr5-7
9
GPIO
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 35
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
PIC 12C5xx Befehlssatz
opcode d f
opcode b f
opcode k
Byte-oriented
Bit-oriented
Linear and Control
11 10 9 8 7 6 5 4 3 2 1 0
0001 11df ffff0010 11df ffff
11 (2)
Add W and fDecrement f, Skip if 0
ADDWF f,dDECFSZ f,d
1110 kkkk kkkk1001 kkkk kkkk
12
AND literal with WCall subroutine
ANDLW kCALL k
Literal and Control Operations
0100 bbbf ffff0101 bbbf ffff
11
Bit Clear fBit Set f
BCF f,bBSF f,b
Bit-Oriented File Register Operations
Byte-Oriented File Register Operations
Msb Lsb
12 Bit OpcodeCyclesDescriptionMnemonic,
Operands
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 36
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Der Operand f bezeichnet eine 5 Bit RegisterAdresse (00h bis 1Fh), W ist der 8 Bit Akku-mulator (nicht adressierbar), b eine 3 Bit Adresse im 8 Bit Register und k eine 8 BitLiteral.
Das Bit d (destination select) gibt an, ob dasErgebnis im Akkumulator (d=1) oder im Re-gister f (d=0) gespeichert werden soll.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 37
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Daten und Programmspeicher
INDFTMROPCL
STATUSFSR
OSCCALGPIO
GeneralPurposeRegister
GeneralPurposeRegisters
Addressesmap back toaddressesin Bank 0
GeneralPurposeRegisters
Bank 1Bank 0
20h
2Fh30h
3Fh
PIC 12C509 (A)PIC 12CR509 APIC 12CE519
00h01h02h03h04h05h06h07h
0Fh10h
1Fh
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 38
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Der PIC 12C5xx besitzt 7 Special FunktionRegister, die vollständig im Datenspeicherintegriert sind. Zu den Special Function Re-gister zählen u. a. ein 8 Bit Echtzeit-Timer/Zähler (TMR0), die unteren 8 Bit des Pro-grammzählers (PCL), das Status-Flag(STATUS) und die I/O-Ports (GPIO). Zu-sätzlich sind noch 25 (bzw. 41) Byte freiverfügbar.
Der Programmspeicher kann je nachTyp 512 oder 1024 Instruktionen auf-nehmen. Im Gegensatz zu anderen Mikrocontrollern wird kein Speicherfür die Operanden benötigt (bis zu 2Byte beim 8051), da alle Informationenschon im 12 Bit Instruktionswort ent-halten sind.
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 39
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Die AVR-Mikrocontroller
Bei den AVR-Mikrocontrollern handelt es sich um 8 Bit RISC-Controller, wel-che für die Programmierung mit einer Hochsprache (C) optimiert wurden. Dies wurde durch einen Controller-Compiler Co-Design erreicht.
Merkmale:
� Harvard-Architektur
� 2-stufige Pipeline, 128 Instruktionen
� 32 8 Bit Registerin einem Taktschritt können zwei Oper-anden aus den Registern gelesen, einegewünschte Operation ausgeführt unddas Ergebnis zurückgeschrieben werden.
� Adressierungsmodi:- indirekte Adressierung
(mit Post-/Pre-Decrement)- indirekte Adressierung mit Displacement- direkte Adressierung
� Idle- und Power-Down-Modus
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 40
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Oscilator
WatchdogTimer
Timing andControl
StackPointer
ProgramCounter
ProgramFlash
SRAM
GeneralPurposeRegisters
X
ZY
InstructionRegister
InstructionDecoder
ControlLines ALU
MCU ControlRegister
Timer/Counters
InterruptUnit
EEPROM
StatusRegisters
SPIProgrammingLogic
UART
Port D Drivers
Data RegisterPort D
Data Dir.Reg. Port D
Data RegisterPort A
Port A Drivers
Data Dir.Reg. Port A
Port C Drivers
Data RegisterPort C
Internal8 Bit Data Bus
Data Dir.Reg. Port C
Port B Drivers
Data RegisterPort B
Data Dir.Reg. Port B
Oscillator
PC0 - PC7
PB0 - PB7 PD0 - PD7
PA0 - PA7
VCC
GND
RESET
ICP
ALE
XTAL1
XTAL2
AZ90S4414 /AT90S8515
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 41
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
AT90S4414 / AT90S8515 Port A Drivers Port A Drivers
Data RegisterPort A
Data Dir.Reg. Port A
Data RegisterPort C
Data Dir.Reg. Port C
InternetOscillator
Oscillator
WatchingTimer
Timing andControl
Timer/Counters
InterruptUnit
EEPROM
UART
Port A Drivers Port A Drivers
Data RegisterPort B
Data Dir.Reg. Port B
Data RegisterPort D
Data Dir.Reg. Port D
UARTUART
UART
Eingebettete Systeme, WS 2003/2004Teil 10 MikrocontrollerSeite 42
Johann Wolfgang Goethe-UniversitätTechnische InformatikKlaus Waldschmidt ©
Beispiel
C-Routine:
void routine(void){
long n1; //32 Bit (R3..R0)long n2; // 32 Bit (R7..R4)int n3; //16 Bit (R17:R16)…if( n1 != n2) n3 +=5;
}
Assembler-Routine:
cp R0, R4 ; n1-n2 (byte 0)cpc R1, R5 ; n1-n2-C (byte 1)cpc R2, R6 ; n1-n2-C (byte2)cpc R3, R7 ; n1-n2-C (byte 3)breq EQUAL ; branch if equalsubi R16,LOW(0xfffb) ; n3+5 (Lowbyte)suci R17;HIGH(0xfffb) ; n3+C (Highbyte)
EQUAL: