27
Aufbau- und Funktionsmerkmale von Mikrocontrollern Strukturvergleich Eingebetteter Systeme Mikro- Prozessor Memory Host Inter- face Mem Inter- face IDE /ATA Inter- face Grafik Inter- face PCI Inter- face USB Inter- face LAN Inter- face I/O- control Memory- control Chip- satz Universelles Computersystem Prozessor- Einheit Memory I/O- control Analog Eingabe Analog Ausgabe Dig. Ein/ Aus Dig. Ein/ Aus Dig. Ein/ Aus Seriell Ein/ Aus Mikrocontroller Mikro- Prozessor Memory (Hauptspeicher) I/O- Control Memory- Control Analog Eingabe Analog Ausgabe Dig. Ein/ Aus Dig. Ein/ Aus Dig. Ein/ Aus Seriell Ein/ Aus Feldbus (z.B. PROFIBUS) zentrale Prozessor-Einheit dezentrale I/O-Einheiten (racks=Rahmen) mit I/O-Modulen Eingebetteter Industrie-Computer mit Ausgliederung der I/O-Komponenten Mikro- Pro- zes- sor Me- mory Ana- log Ein- gabe Ana- log Aus- gabe Dig. Ein/ Aus Dig. Ein/ Aus Hutschienen-Bus Eingebetteter Industrie-Computer mit kompakter Modularisierung der I/O-Komponenten CPU Von der Einbettung in Anlagen zur Einbettung in Geräte

Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

  • Upload
    vuliem

  • View
    228

  • Download
    6

Embed Size (px)

Citation preview

Page 1: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Aufbau- und Funktionsmerkmale von MikrocontrollernStrukturvergleich Eingebetteter Systeme

Mikro-Prozessor Memory

HostInter-face

MemInter-face

IDE/ATAInter-face

GrafikInter-face

PCIInter-face

USBInter-faceLANInter-face

I/O-control

Memory-control

Chip-satz

Universelles Computersystem

Prozessor-Einheit

Memory

I/O-control

AnalogEingabe

AnalogAusgabe

Dig.Ein/AusDig.Ein/Aus

Dig.Ein/Aus

SeriellEin/Aus

Mikrocontroller

Mikro-Prozessor

Memory(Hauptspeicher)

I/O-Control

Memory-Control

AnalogEingabe

AnalogAusgabe

Dig.Ein/AusDig.Ein/Aus

Dig.Ein/Aus

SeriellEin/Aus

Feldbus (z.B. PROFIBUS)

zentrale Prozessor-Einheit

dezentraleI/O-Einheiten

(racks=Rahmen)mit I/O-Modulen

Eingebetteter Industrie-Computermit Ausgliederung der I/O-Komponenten

Mikro-Pro-zes-sor

Me-mory

Ana-logEin-gabe

Ana-log

Aus-gabe

Dig.Ein/Aus

Dig.Ein/Aus

Hutschienen-Bus

Eingebetteter Industrie-Computermit kompakter Modularisierung der I/O-Komponenten

CPU

Von der Einbettungin Anlagen zur Einbettungin Geräte

Page 2: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Interne Mikrocontroller-Struktur

Memory

InterruptcontrolEinheit

timercontrolEinheit

ProzessorEinheit

interner Datenbus

I/O-Port A I/O-Port M

I/O-Port B I/O-Port N

...

...

Alle internen Einheiten trans-ferieren ihre Daten über einen einzigen internen Datenbus.

Signale von und zur umgebenden Schaltung wirken über Ports mit je 8 Einzelsignalen, deren Funktion (in, out, analog, digital) eingestellt werden kann.

Die Interrupt-control-Einheit ist im µC, weil die wichtigsten Interrupt-Requests im µC entstehen.

Dazu gehört besonders die Timer-control-Einheit, die zeitbezogene Ereignisse erzeugen kann.

Page 3: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Das Adressierungsproblem

ProgramMemory

DataMemory

InterruptcontrolEinheit

timercontrolEinheit

ProzessorEinheit

I/O-Port A I/O-Port M

I/O-Port B I/O-Port N

...

...

Nur eine einzige Einheit kann adressieren: die Prozessoreinheit.

Es wird zwischen Program-Memory und Data-Memoryunterschieden.

Im Data-I/O-Memory werden die Register des Prozessor-Register-satzes, die I/O-Register (I/O-Ports, timer-control, interrupt-control) und die Speicherzellen für die Variablen (Data Memory = RAM) zusammengefasst.Die bisher beschriebenen Merkmale gelten für alle Mikrocontroller. Die folgenden vertiefen die AVR-Architektur, speziell den ATmega169.

Page 4: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Die Adressierung des Data-I/O-MemoryDer Mikrocontroller ATmega169 ist ein 8Bit-Controller, d.h. die Register und die SRAM-Speicherwörter haben 8 Bit.

Bei den Standard-Prozessoren werden die Prozessor-Register nicht in den allgemeinen Adressraum eingeordnet. Das ist aber bei Mikrocontrollern sinnvoll, wie sich gleich zeigt.Die Zuordnung der I/O-Register entspricht dem memory-mapped-i/o der Standard-Prozessoren.

Die grundsätzliche Zuordnung erfasst zuerst 32 generalpurpose Register und darauf folgend eine Basisgruppe von 64 I/O-Registern. Bei diesem Typ folgt dann die Zuordnung von 160 (extended) I/O-Registern und darauf folgend 1024 Speicherwörter des internen SRAM.

Page 5: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Die Adressierung des Program-Memory

Immer dann, wenn die Programmablaufsteuerung mit Hilfe des Instruction-Pointer zum Memoryzugreift, gibt sie einem Auswahlsignal den Wert, der Program-Memory auswählt, sonst den Wert, der Data-I/O-Memory auswählt.

Die Trennung ist notwendig, weil Programme und Daten unterschiedlich gespeichert werden, die einen in Flash-Memories, die anderen in SRAMs.

Man muss nun nicht die Speicherwortbreite beim Befehlszugriff gleich derjenigen beim Datenzugriff machen. Tatsächlich ist hier die Wortbreite beim Zugriff zum Program-Memory 16 Bit. Die Maschinenbefehle sind 16 Bit oder 32 Bit lang, brauchen also 1 oder zwei Speicherzugriffe.

Der Adressraum umfasst 8K Adressen (13 Bit Instruction Pointer) und einen Speicherraum von 16 KByte Flash-Memory.

Page 6: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Flash-Memory - im System wieder programmierbar

Grundstruktur wie beim NMOS-Transistor, aber am Gate ist zwischen der Gateglasschicht(insulator) und einer zusätzlichen Glasschicht (tunnel oxide) eine Zwischenschicht eingezogen.Diese ist im Grundzustand elektrisch neutral. Beim Schreiben (program) wird der Zustand nur in den Zellen in den „geladenen“ Zustand geändert, die den zum neutralen Zustand entgegen gesetzten Zustand haben sollen. Man muss also einen Flash zuerst vollkommen löschen (erase), bevor man ihn neu programmiert. Für den Flash im ATmega169 werden 10000 Write/Erase-Zyklen angegeben.

Beim Programmieren treibt man mit Hilfe der angelegten Spannungen Elektronen in die Zwischenschicht, die dort bleiben, solange man die normalen Spannungen anlegt.

Sharp

Page 7: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

EEPROM getrennt von Program- und Data-Memory

Außer dem nicht-flüchtigen Flash-Program-Memory gibt es noch einen nicht-flüchtigen EEPROM-Speicher von 512 Byte.

Er ist über vier spezielle I/O-Register erreichbar: das EEPROM-Control- , das EEPROM-Daten- und die beiden EEPROM-Adress-Register.

Sobald beim Speicherzugriff das EEPROM-Adressregister verwendet wird, wird das Auswahlsignal für den EEPROM-Speicher erzeugt; die Adressbits können als normale Adresssignale angelegt werden, die für den Zugriff zum Data-Memory verwendet werden.

Für das Löschen und „Programmieren“ des Flashs oder des EEPROMs werden spezielle Befehle verwendet, da die beiden Vorgänge nichts mit dem normalen Lesen oder Schreiben zu tun haben.

Im Folgenden wird das Mapping aller Basis-I/O-Register zusammengestellt.

Page 8: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Die Basis-I/O-Register - mapping

Stackpointer

EEPROM-Adressierung

Timer/Counter0

Serial Peripheral Interface

Prozessor-Status

Microcontroller Control Unit

Analog Comparator ControlOn Chip Debug Related Register

Page 9: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Die Basis-I/O-Register - mapping

Port A

Port B

Port C

Port D

Port E

Port F

Port G

Interrupt-Controller

Page 10: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

ProgramMemory

DataMemory

InterruptcontrolEinheit

timercontrolEinheit

serialperipheralInterface

ProzessorEinheit

I/O-Port A I/O-Port C

I/O-Port DI/O-Port BI/O-Port E

I/O-Port F

AnalogDigital

I/O-Port G

Der Überblick über die Einheiten der I/O-BasisregisterATmega169

Page 11: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Instruction fetch

InstructionDecoder

InstructionRegister

ProgramCounter

StackPointer

GeneralpurposeRegister

XYZ

ALU

StatusRegister

ProgramFlash

Data MemorySRAM

Adressen

Daten

Processing Unit

Wenn der Instruction Pointer (hier Program Counter) die Adresse beim Speichzugriff liefert, wird der Program Flash selektiert und liefert 1 oder 2 16Bit-Wörter in das Instruction Register.

Der Instruction Decoder erzeugt die internen Steuersignale für die ausführenden Schaltungen (Adressierung der general-purpose-Register, Einstellung der arithmetisch-logischen Einheit, usw.).

Page 12: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Instruction execute

InstructionDecoder

InstructionRegister

ProgramCounter

StackPointer

GeneralpurposeRegister

XYZ

ALU

StatusRegister

ProgramFlash

Data MemorySRAM

Adressen

Daten

Processing Unit

1

2

3

5

4

Das Holen der Operanden erfolgt:

als Konstante aus dem Befehl (1), durch Registerauswahl aus den general purpose Registern (2),durch direkte Adressierung mit der Adresse im Befehl (3),durch indirekte Adressierung mit den Adressen in den Registern X oder Y oder Z (4),durch den Stack-Pointer (5).

Die Speicherzugriffe selektieren das Data-Memory (SRAM).

Das Ergebnis einer Operation (Ausgang der ALU) wird in den ersten Operanden transferiert.

Das Statusregister wird gemäß dem Ergebnis eingestellt.

Page 13: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

General Purpose Registersatz

Der Entwurf des Mikrocontrollers erfolgte nach dem Prinzip des Reduced Instruction Set (RISC). Dabei werden die Befehle in ihrer Komplexität so begrenzt, dass sie möglichst in einem einzigen Prozessortakt ausgeführt werden können.

Ein wichtiger Beitrag dazu wird von der Zugriffstechnik zum Registersatz geleistet, wenn sie das Liefern des/der Operanden und die Übernahme des Ergebnisses in einem Takt schafft, was eine schaltungstechnische Optimierung bedeutet für folgende Zugriffsfälle:einen 8Bit-Operanden liefern und ein 8Bit-Ergebnis speichern, zwei 8Bit-Operanden liefern und ein 8Bit-Ergebnis speichern, zwei 8Bit-Operanden liefern und ein 16Bit-Ergebnis speichern, einen 16Bit-Operanden liefern und ein 16Bit-Ergebnis speichern.

Das bedeutet auch, dass die ALU ihre Operation in einem Takt schafft.

Die General-Purpose-Register bekommen die niederwertigen Adressen im allgemeinen Daten-I/O-Adressraum. Das bedeutet nicht, dass sie im SRAM realisiert sind. Sie sind Prozessor-Register.

Page 14: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

General Purpose Registersatz

Die letzten Register R26 bis R31 haben zu ihrer allgemeinen Funktion noch einebesondere: sie können als 16Bit-Pointer-Register verwendet werden, um zum Data-Memory (SRAM) zuzugreifen.

Nur mit ihnen kann man zum SRAM zugreifen. Sie werden X-, Y- und Z-Register genannt.

Page 15: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

AVR-Architektur

InstructionDecoder

InstructionRegister

ProgramCounter

StackPointer

GeneralpurposeRegister

XYZ

ALU

StatusRegister

ProgramFlash

Data MemorySRAM

Adressen

Daten

Processing Unit

InterruptUnit

SPIUnit

WatchdogTimer

AnalogComparator

I/O Modul 1

I/O Modul n

Die zentralen Funktionen werden ergänzt:

Interrrupt-Controller-Unit,Serial Peripheral Interface für einen synchronen bitseriellen Datentransfer hoher Übertragungsgeschwindigkeit,Timer-Unit für Zähler mit Takten, deren Perioden skalierbar sind, und I/O-Modulen für die digitale Ein-oder Ausgabe.

Page 16: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Befehlssatz des ATmega169Im Folgenden werden die wichtigsten Befehle für den ATmega169 vorgestellt. Der vollständige Befehlssatz wird in den Übungsunterlagen bereitgestellt.

Er ist eine Untermenge der Befehle, die insgesamt für die AVR-Architektur gelten.

Beim Erlernen des Befehlssatzes ist es wichtig, dass man dessen grundsätzliche Struktur erkennt und aus diesem Wissen die Befehlsform assoziiert. Dann kann man sich bei der Anwendung an das Prinzip erinnern, wenn man unsicher ist.

Also merkt man sich die grundsätzliche Gliederung in die Operationsgruppen und merkt sich dazu die Prinzipien der Adressierung, die für jede Operationsgruppe gelten.

Deshalb werden im Folgenden die Befehle in einer Matrix vorgestellt. Die Spalten geben die Operationsgruppen wieder. Diese sind in den Zeilen gemäß ihren Adressierungs-möglichkeiten gegliedert.

Die Operationen der Befehle sind englische Kürzel, die eigentlich sehr einprägsam sind. Hier wird die Funktion aber deutsch beschrieben, um die Funktion ohne Übersetzung schneller erfassen zu können.

Besonders bei den verknüpfenden Befehlen erkennt man die Ungleichartigkeit der Adressierungsmöglichkeiten. Es wäre zum Lernen einfacher, wenn (wie beim Standardprozessor) überall die gleichen Adressierungen möglich wären. Beim Controller-Entwurf hätte das sicher seine Kosten bezogen auf das RISC-Konzept gehabt. Die Ungleichartigkeit erzwingt mehr Übung, um damit sicher umzugehen.

Prägen Sie sich zuerst die Prinzipien ein, bevor Sie mit der Anwendung loslegen.

Page 17: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Adressierung bei Transferbefehlen

PUSH Rd2

POP Rd2

OUT port, Rd1

IN Rd, port1

MOV Rd,Rr1

Register-Register-Transfer, 0<r<31, 0<d<31, 0<port<63

SDD Rp+k6, Rd2

LDD Rd, Rp+k62

SRAM indirekt mit decrement Rpzuvor, Rp = X/Y/Z

ST Rp+, Rd2

LD Rd,Rp+2

ST Rp, Rd2

LD Rd, Rp2

STS Rd, k162

LDS Rd, k162

SRAM indirekt mit displacement-Konstante, Rp = Y/Z

SRAM indirekt mit Rp = X/Y/Z

ST –Rp, Rd2

LD Rd,-Rp2

SRAM indirekt mit increment Rphinterher, Rp = X/Y/Z

Der Befehlssatz des Mikrocontrollers ist darauf ausgelegt, dass man mit den internen Registern arbeitet. Man erkennt bei jedem Befehl rechts unten die Taktzahl, die der Befehl benötigt. Wenn das SRAM nicht beteiligt ist bzw. keine 16Bit-Operation verwendet wird, braucht ein Befehl nur einen Taktzyklus.Was man bei Standardprozessoren als wichtiges Merkmal hat (nämlich die Flexibilität beim Adressieren), ist hier nicht gefragt. Hier geht es u.a. um einfach verifizierbare kurze Ablaufzeiten, die man anhand von Befehl-Abzählen = Takt-Abzählen feststellen kann.Variable im SRAM müssen für die Verarbeitung mit einem Ladebefehl gezielt in ein Register geladen werden bzw. nach der Verarbeitung aus dem Register in das SRAM gespeichert werden. LD für Load, ST für Store,0<k16<65535,0<k6<63.

SRAM direkt

Page 18: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Funktion der Transferbefehle

lade Register Rd auf den Stack

hole Register Rd vom Stack

speichere Register Rd in das I/O-Register port

lade das I/O-Register port in das Register Rd

kopiere Register Rr in das Register Rd

speichere Register Rd indirekt adressiert in den Datenspeicher, Pointer = Rp + k6, Rp = Y/Z

dekrementiere zuerst Rp, lade dann Register Rd indirekt adressiert aus dem Datenspeicher, Pointer = Rp = X/Y/Z

speichere das Register Rd indirekt adressiert in den Datenspeicher, Pointer = Rp = X/Y/Z, inkrementiere dann Rp

speichere das Register Rd indirekt adressiert in den Datenspeicher, Pointer = Rp = X/Y/Z

speichere das Register Rd direkt adressiert in den Datenspeicher, Pointer = k16

lade Register Rd indirekt adressiert aus dem Datenspeicher, Pointer=Rp + k6,Rp =Y/Z

dekrementiere zuerst Rp, lade dann Register Rd indirekt adressiert aus dem Datenspeicher, Pointer = Rp = X/Y/Z

lade Register indirekt adressiert aus dem Datenspeicher, Pointer = Rp = X/Y/Z , inkrementiere danach Rp

lade Register Rd indirekt adressiert aus dem Datenspeicher, Pointer = Rp = X/Y/Z

lade Register Rd direkt-adressiert aus dem Datenspeicher, Pointer = k16

PUSH Rd

POP Rd

OUT port, Rd

IN Rd, port

MOV Rd,Rr

SDD Rp+k6, Rd

ST –Rp, Rd

ST Rp+, Rd

ST Rp, Rd

STS Rd, k16

LDD Rd, Rp+k6

LD Rd,-Rp

LD Rd,Rp+

LD Rd, Rp

LDS Rd, k16

Page 19: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Adressierung bei arithmetisch/logischen Befehlen

NEG Rd1

COM Rd1

TST Rd1

DEC Rd1

INC Rd1

Register/Registerpaar-Konstante Adressierung 24<p<30, 16<d<31, 0<K6<63, 0<K8<255

Register-Register-Adressierung, 0<d<31, 0<r<31

CPI Rd,K81

CPC Rd,Rr1

CP Rd,Rr1

EOR Rd,Rr1

SBIW Rp,K62

ADIW Rp,K62

SBC Rd,Rr1

ADC Rd,Rr1

SBCI Rd,K81

ORI Rd,K81

OR Rd,Rr1

Register-Adressierung, 0<d<31

ANDI Rd,K81

SUBI Rd,K81

AND Rd,Rr1

SUB Rd,Rr1

ADD Rd,Rr1

Die folgende Notation der Funktion legt die Verknüpfung und den Transfer des Ergebnisses fest.

Page 20: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Rd ← Inversion von Rd, 1-KomplementCOM RdRd ← Rd Exklusiv-ODER RrEOR Rd,RrRd ← Rd ODER K8, 0<K8<255 ORI Rd,K8

Rd UND RdTST RdRd ← Rd ODER RrOR Rd,Rr

Rd – K8, 0<K8<255 , Flags zeigen >/</= 0CPI Rd, K8

Rd ← Inversion von Rd +1, 2-Komplement

Rd ← Rd UND K8, 0<K8<255 Rd ← Rd UND Rr

Rd – Rr -C, Flags zeigen >/</= 0

Rd – Rr, Flags zeigen >/</= 0

Rd ← Rd - 1

Rd+1:Rd ← Rd+1:Rd - K6, 0<K6<63, Rp= high-Byte:low-Byte = Rd+1:Rd

Rd ← Rd – K8 -C, 0<K8<255

Rd ← Rd – K8, 0<K8<255

Rd ← Rd – Rr -CRd ← Rd - RrRd ← Rd +1

Rd+1:Rd ← Rd+1:Rd + K6, 0<K6<63, Rp= high-Byte:low-Byte = Rd+1:Rd

Rd ← Rd + Rr +CRd ← Rd + Rr

NEG Rd

ANDI Rd,K8AND Rd,Rr

CPC Rd,Rr

CP Rd,Rr

DEC Rd

SBIW Rp,K6

SBCI Rd,K8

SUBI Rd,K8

SBC Rd,RrSUB Rd,RrINC Rd

ADIW Rp,K6ADC Rd,RrADD Rd,Rr

Page 21: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Schieben und Multiplizieren

Register-Register-Adressierung16<d<23, 16<r<23

Register-Adressierung0<d<31

arithmeticshift right

ASR Rd1

swapnibbles

SWAP Rd1

MULSU Rd,Rrmul signed withunsigned

2

rotate rightrotate leftlogical shiftright

logical shiftleft

MULS Rd,Rrmul signed

2

ROR Rd1

MUL Rd, Rrmul unsigned

2

ROL Rd1

LSR Rd1

LSL Rd1

Page 22: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Adressierung bei Verzweigungsbefehlen

ICALLindirekt mit Z 3

IJMP2

RCALL k123

RJMP k122

RETI4

RET4

indirekt mit Z

relativ: -2048<k12<+2047

Unbedingte Verzweigungen

PC (16 Bit)

+

k (12Bit)

PC (16 Bit) Z (16 Bit)

Fragen: Welche Zahlendarstellung liegt der relativen Adresse zugrunde?

Worin unterscheiden sich RET und RETI?

Page 23: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Adressierung bei Verzweigungsbefehlen

BR xx k7 : Verzweige (Branch), wenn Bedingung xx erfüllt, nach PC ← PC + k7 +1, sonst PC ← PC + 1, -64<k<+63

xx=EQ: equalNE: not equalCS carry setCC carry clearedSH same/higherLO lowerMI minusPL plusGE greater/equal 0LT less than 0 usw. !/2

Bedingte Verzweigungen Bedingtes Überspringen eines Befehls

SBxx: Überspringe (Skip) nächsten Befehl, wenn Bedingung xx erfüllt, sonst nicht; 0<port<63, 0<b<7, 0<d<31, 0<r<31

SBRC Rd, b: Skip, wenn Bit b in Rd gleich 0SBRS Rd, b: Skip, wenn Bit b in Rd gleich1SBIC port, b: Skip, wenn Bit b in port gleich 0SBIS port, b: Skip, wenn Bit b in port gleich 1

CPSE Rd, Rr : Vergleiche durch Rd – Rr und Skip, wenn Rd = Rr

!/2/3

Ausnahmen zur normalen Ablaufsteuerung

Warten auf Interrupt-Request 1SLEEP

Watchdog Rücksetzen 1WDR

No Operation 1NOP

Page 24: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Setzen und Rücksetzen von Statusbits

I: Global Interrupt EnableT: Copy Storage

H: Half Carry FlagS: Sign

V: 2-Complement OverflowN: Negative

Z: ZeroC: Carry

SEi, wobei für i der Flag-Name einzusetzen ist, bedeutet: Setzen des Flags.

CLi bedeutet „Clearen“ des Flags.

Bits in Registern Setzen bzw. RücksetzenRd ← 255, alle Bits in Rd 1 setzen 1 SER Rd

Rd ← 0, alle Bits in Rd 0 setzen 1CLR Rd

0<K8<255, 16<d<31Rd ← K8 1LDI Rd,K8

Setze Bit b in port auf 0 1CBI port, b

0<port<63, 0<b<7Setze Bit b in port auf 1 1SBI port, b

Rd ← Rd UND (Inversion von K8) Setze die Bits, die in K8 1 sind, in Rd auf 0. 1

CBR Rd, K8

16<d<31, 0<K8<255Rd ← Rd ODER K8 Setze die Bits, die in K8 1 sind, in Rd auf 1. 1

SBR Rd, K8

Page 25: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Mikrocontroller für die Einstiegsübungen

Die ersten Übungen sollen Sie mit dem Befehlssatz vertraut machen. Dazu testen Sie die von Ihnen ent-wickelten Programme mit einem Simulator, der den Programmablauf mit allen Zustandsänderungen des Controllers und Speichers nach-bildet.

Die Simulation einer strukturell einfachen Version des Mikro-controllers, die befehlskompatibel zum ATmega169 ist, garantiert beim Test einen schnellen Überblick. Deshalb fiel die Wahl auf den AT90S2313, der alle Befehle wie vorgestellt enthält, bis auf die Multiplikationsbefehle.

Der Strukturplan gibt den Überblick: die Vereinfachung der Struktur liegt in weniger I/O-Funktionen und geringeren Speicherräumen.

Page 26: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

StackpointerProzessor-Status

Microcontroller Control Unit

Timer/Counter0

Timer/Counter1

Timer/Counter1

Interrupt-Controller

Watchdog

Das Register-Mapping des Mikrocontrollers AT90S2313

Page 27: Aufbau- und Funktionsmerkmale von · PDF fileInterne Mikrocontroller-Struktur Memory Interrupt control Einheit timer control Einheit Prozessor Einheit interner Datenbus I/O-Port A

Das Register-Mapping des Mikrocontrollers AT90S2313

EEPROM-Adressierung

Port B

Port D

UART

Analog Comparator Control

Die Zuordnung zwischen den I/O-Registern und dem Daten-I/O-Adressbereich ist für die einzelnen Typen der AVR-Architektur unterschiedlich. Die Struktur und Funktion der Register für die einzelnen Funktionseinheiten ist aber gleich. Solange man die symbolischen Namen für die Register verwendet, kann der Übersetzer die Adressen einsetzen, die für den jeweiligen Typ gelten. Ansonsten muss man sich selbst die Mühe der Anpassung machen.