49
Udo John Mikrocomputertechnik - Schaltungstechniken – www.lmt-verlag.de

- Schaltungstechnikenudojohn.de/pdf_dateien/mc_schaltungstechnik.pdf · Nach dem Prinzip der von-Neumann-Architektur sind beispielsweise alle Mikrocontroller der 80x51-Serie (verschiedene

  • Upload
    lythien

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Udo John

Mikrocomputertechnik

- Schaltungstechniken –

www.lmt-verlag.de

Mikrocomputertechnik - Schaltungstechniken - Haben Sie Anregungen oder Kritikpunkte zu diesem Script? Dann senden Sie bitte eine E-Mail an [email protected]! Der Autor freut sich auf eine Rückmeldung. Alle Teile des Scriptes wurden mit großer Sorgfalt erstellt und geprüft. Trotzdem können Fehler nicht vollkommen ausgeschlossen werden. Der Autor und Herausgeber können für fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Unter der Voraussetzung, dass Copyright-Vermerk und Herausgeber nicht verändert oder im Script entfernt werden, darf das Script zu unterrichtlichen Zwecken frei verwendet und vervielfältigt werden. Eine gewerbliche Nutzung oder Veröffentlichung, z.B. über das Internet, ist ohne Einwilligung des Herausgebers nicht zulässig! Januar 2011

Mikrocomputertechnik - Schaltungstechniken -

3

Inhalt

Seite

1. Bussysteme ...................................................................................... 4

2. MOS-Technologie ............................................................................ 5

3. Tri-State-Technik .............................................................................. 9

4. Halbleiterspeicher ............................................................................ 15

5. ROM-Prinzip .................................................................................... 18

6. ROM-Technologie ........................................................................... 22

7. RAM-Bausteine ............................................................................... 27

8. Arithmetisch-Logische-Einheit (ALU) .............................................. 33

9. Rechenwerke .................................................................................. 37

10. Parallele Ausgabe ........................................................................... 43

11. Parallele Eingabe ............................................................................ 50

12. Der ATmega8 - Aufbau ................................................................... 37

13. Der ATmega8 - Befehlssatz ............................................................ 43

14. Der ATmega8 - I/O-Register ........................................................... 46

15. ASCII-Zeichentabelle ...................................................................... 48

16. Experimentierboards ....................................................................... 49

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Bussysteme Seite 4 von 49

4

Die Von-Neumann-Architektur Ein Mikrocomputersystem besteht aus folgenden Einheiten (Modulen):

• CPU (Central Processing Unit) • Arbeitsspeicher

o RAM (Random Access Memory)/flüchtiger Speicher o ROM (Read Only Memory)/nicht flüchtiger Speicher

• Eingabeports • Ausgabeports

Die Einheiten sind durch Adressbus und Datenbus miteinander verbunden. Der Steuerbus wird von der CPU kontrolliert und steuert den zeitlichen Ablauf im System.

CPU

Speicher Eingabe-Port

Ausgabe-Port

ROM

RAM

MEMRMEMW

IORIOW

8 D0...D7

Datenbus

A0...A15

Adressbus

16

8 88

88

Eingabe-gerät

Ausgabe-gerät

16

Mikrocomputer - Bussystem

*DMA

*Direct Memory Access

Steuerbus

Takterzeugung

Befehlszähler

Befehlsdekoder

Rechenwerk

Allzweck-Register

Programm-Ablaufsteuerung

Interrupt

Reset

Die angegebenen Busbreiten beziehen sich auf die ursprünglich häufig verwendeten Mikroprozessoren 8085 bzw. Z80.

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Bussysteme Seite 5 von 49

5

Aufgaben der einzelnen Einheiten: Zentraler Bestandteil dieser sogenannten von-Neumann-Architektur (nach John von Neumann, Mathematiker, 1903-1957) ist die CPU. Sie liest die Befehle und Daten aus dem Speicher, dekodiert die Befehle und steuert das Bussystem nach einem zentralen Takt. Ein Rechenwerk (Arithmetisch-Logische-Einheit, ALU) dient zur Durchführung von arithmetischen und logischen Verknüpfungen. Die auszuführenden Befehle (binärer Code, Maschinencode) sind in aufsteigender Reihenfolge im Speicher abgelegt. Jeder Speicherplatz hat eine eindeutige Adresse (16-Bit-Dualuahl). Der Befehlszähler beinhaltet immer die Adresse des nächsten auszuführenden Befehles. Im einfachsten Fall wird die Adresse nach jedem Befehl um +1 erhöht (außer bei Sprung- und Verzweigungsbefehlen). Nach einem RESET oder nach Anlegen der Betriebsspannung wird der Befehlszähler mit einer definierten Startadresse (i.a. 0x0000) geladen. An dieser Stelle befindet sich der erste auszuführende Befehl. Notwendigerweise muss an dieser Stelle das Programm im ROM-Speicher liegen (BIOS = Basic Input Output System). Anwenderprogramme können sowohl im ROM als auch im RAM liegen. Die Eigenschaften der CPU werden durch mannigfaltige Register für verschiedene Zwecke bestimmt. Wesentliche Merkmale der CPU sind die Taktfrequenz und die Anzahl der Register, sowie Adress- und Datenbusbreite. Der Arbeitsspeicher beinhaltet sowohl das Programm im Maschinencode (binäre Information) als auch die zu bearbeitenden Daten. Der Speicher ist heute in Halbleitertechnologie (EPROM, SRAM, Flash,...) ausgeführt. Die Eingabeeinheit empfängt Daten von verschiedenen Geräten in binärer Form. Im einfachsten Fall sind es Schalter. Es können aber auch Tastaturen, Mikrofone (über A/D-Wandler),... angeschlossen sein. Die Ausgabeeinheit stellt binäre und für den Menschen verwertbare Informationenen zur Verfügung. Im einfachsten Fall sind dies Leuchtdioden oder Relais. Weitere Ausgabegeräte sind Drucker, Bildschirm, Roboter ... . Viele Geräte sind sowohl Ein- wie Ausgabeeinheit (z.B. Soundkarte, Festplatten,…). Ein- und Ausgabedaten werden jedoch durch eindeutige Portadressen Und/oder durch Lese- und Schreiboperationen voneinander unterschieden. Der Informationsaustausch zwischen den einzelnen Einheiten verläuft nach einem festen von der Taktsteuerung der CPU vorgegebenem Verlauf (Maschinenzyklen). Prinzipiell sind 4 Maschinenzyklen möglich (siehe Abbildung Seite 3!). Jeder Maschinenzyklus beginnt mit dem Aussenden einer Speicherplatzadresse oder einer Portadresse von der CPU. Bei Lesezyklen (Speicher lesen oder Eingabe lesen) sendet die CPU auf dem Steuerbus ein /MEMR- oder /IOR-Signal und übernimmt die Daten vom Datenbus. Bei Schreibzyklen (Speicher schreiben oder Ausgabe schreiben) sendet die CPU die Daten über den Datenbus und sendet ein /MEMW- oder /IOW-Signal. Adressen werden grundsätzlich nur von der CPU gesendet. Der Adressbus ist unidirektional. Im Gegensatz dazu dient der Datenbus sowohl zum Lesen als auch zum Schreiben der Information (aus Sicht der CPU). Der Bus ist bidirektional. Die Breite des Adressbusses legt fest, wie groß der adressierbare Speicherbereich ist. Bei einer Breite von 16 Bit ist die Anzahl der möglichen Adressen 216=65536. Je breiter der Datenbus, desto mehr Informationen können mit einem Maschinezyklus übertragen werden. Moderne Prozessoren haben eine Datenbusbreite von 64 Bit.

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Bussysteme Seite 6 von 49

6

Maschinenzyklen

Adresse

Daten

MEMR

MEMW

Speicher lesen

Adresse

Daten

Eingabe lesen

IOR

IOW

Adresse

Daten

MEMR

MEMW

Speicher schreiben

Adresse

Daten

Ausgabe schreiben

IOR

IOW

Daten zur CPU

Daten von CPU

Daten zur CPU

Daten von CPU

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Bussysteme Seite 7 von 49

7

Besonderheiten: Langsame Ein- /Ausgabeeinheiten benötigen nur eine gelegentliche Bedienung durch die Software des MC-Systems. Die Bedienung des Gerätes kann durch ständige Abfrage erfolgen (Polling-Betrieb, z.B. Tastatur). Sinnvoller ist die Auslösung eines Interrupts bei Anforderung über eine gesonderte Leitung an die CPU, welche dann ein Unterprogramm zur Bedienung des Gerätes aufruft. Für manche Ein-/Ausgabegeräte ist die Software der CPU zu langsam (z.B. Video-Signale, Sound,...). Die Übernahme der schnell anfallenden Daten erfolgt im DMA-Betrieb (Direct Memory Access). Dabei wird die CPU vom Bussystem getrennt (d.h. Adress-, Daten- und Steuerbus werden hochohmig/Tri-State geschaltet) und ein spezieller DMA-Controller übernimmt die Steuerung des Bussystems um anfallende Daten direkt von der Eingabeeinheit in das RAM des Systemsspeichers zu übernehmen oder direkt vom RAM in die Ausgabeeinheit zu übertragen. Nach dem Prinzip der von-Neumann-Architektur sind beispielsweise alle Mikrocontroller der 80x51-Serie (verschiedene Hersteller) und der x86-Serie und deren Abkömmlinge aufgebaut. Diese Prozessoren zeichnen sich durch einen umfangreichen Befehlssatz aus (CISC = Complex Instruction Set Computer). Das ermöglicht eine relativ komfortable Programmierung mit geringem Speicherplatzbedarf. Der Nachteil dieser Rechner ist, dass Maschinenbefehle und Daten im selben physikalischen Speicher liegen. Alle zu verarbeitenden Daten müssen den Weg über die CPU nehmen. Das erfordert u.U. viele Maschinenzyklen pro Befehl und damit eine lange Ausführungsdauer. Die Ausführung der Befehle wird durch interne Mikroprogramme realisiert, was die Ablaufsteuerung entsprechend aufwendig macht.

Die Harvard-Architektur In früheren Zeiten war die CPU die langsamste Einheit in den Rechnern. Das heißt, die Bereitstellung der Daten nach dem von-Neumann-Prinzip war ausreichend schnell. Die Taktfrequenzen der CPU’s haben sich deutlich erhöht (mindestens Faktor 1000). Das führt dazu, dass die Daten nicht ausreichend schnell vom und zum Speicher übertragen werden können (sog. Von-Neumann-Flaschenhals). Kennzeichen der Harvard-Architektur ist die physikalische Trennung von Befehls- und Datenspeicher. Die Daten befinden sich in einem unabhängigen Speicherbereich, was den Zugriff stark beschleunigt. Außerdem lassen sich für Programm- und Datenspeicher unterschiedliche Wortbreiten festlegen, z.B. 16 Bit für den Programm- und 8 Bit für den Datenspeicher. Dadurch lassen sich mehr Informationen in den Befehlscode packen. So können zum Beispiel unmittelbare Daten und Adressen von Registern im Befehl codiert werden. Verzichtet man auf komplexe Befehle der CISC-Controller, so kann auf interne Steuerung durch Mikroprogrammierung verzichtet werden. Im Idealfall dauert jeder Befehl nur einen Takt! Dadurch ergibt sich eine Beschleunigung der Befehlsausführungszeit um ca. den Faktor 10. Da diese Prozessoren einen verringerten Befehlssatz haben (RISC = Reduced Instruction Set Computer), ist der Programmieraufwand in Assembler größer und benötigt mehr Speicherplatz. Durch die Verwendung von modernen C-Compilern (u.a. höheren Programmiersprachen) wird der Programmieraufwand jedoch in Grenzen gehalten. Die bekanntesten Mikroprozessoren nach diesem Prinzip sind die PIC-Controller der Firma Microchip und die AVR-Controller der Firma Atmel. Das Bild auf Seite 5 zeigt den prinzipiellen Aufbau eines AVR-Controllers. Neben den normalen I/O-Ports besitzen viele Controller weitere Ein-/Ausgabeeinheiten wie serielle Schnittstelle (UART), Timer für Echtzeitanwendungen und Pulsweitenmodulation, EEPROM zur Datenspeicherung, I2C-Bus für Erweiterungen, Analog-/Digitalwandler, u.a. Ein Statusregister beinhaltet Informationen über den Zustand des Controllers nach arithmetischen und logischen Verknüpfungen, z.B. wenn ein Überlauf eintritt oder das Ergebnis Null wird. In Abhängigkeit von diesen Zuständen können bedingte Entscheidungen ausgeführt werden.

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Bussysteme Seite 8 von 49

8

Aufbau eines Mikrocomputersystems mit Harvard-Archi tektur

Befehlsregister

Programmspeicher

ROM oder FLASH

Programmzähler

Datenspeicher

Allzweckregister

RAM

RAM

Ein-/Ausgabe-einheiten

ALU

8

Datenbus

Ablaufsteuerung

Steuerleitungen

UART

Timer

EEPROM

I2C

Ports

...

A/D-Wandler

Statusregister

Ab der CPU PentiumPro (Intel), welcher in PC’s eingebaut wird, sorgt eine vorgeschaltet Funktionseinheit vor der Ablaufsteuerung dafür, dass komplexe Befehle der CISC-Controller in RISC-Befehle umgewandelt werden. Möglich wurde das durch die ständig steigende Integrationsdichte digitaler Schaltungen. Neuere Pentium-CPU’s besitzen bis zu 300 Millionen(!) Transistorfunktionen bei einer Taktfrequenz von über 2 GHz. Auf diese Weise können die Vorteile der komplexen Befehle von CISC mit der schnellen Befehlsausführung von RISC kombiniert werden.

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

MOS-Technologie Seite 9 von 49

9

Die Grundlage aller elektronischen Schaltungen in der MC-Technik bildet der MOSFET (metal oxid semiconductor field effect transistor). Dessen Wirkungsweise soll im folgenden kurz erläutert werden.

Source

Gate

Drain

N N

P

UGS

DS

Bulk

SiO2

U

Bild 1 zeigt den Querschnitt durch dieses Bauelement. Grundlegendes Material ist Silizium (Si). Reines Silizium ist ein Nichtleiter. Erst durch Verunreinigung (Dotierung ) mit dreiwertigen Elementen (z.B. Bor) oder fünfwertigen Elementen (z.B. Phosphor) wird das Material leitfähig. Bei Dotierung mit dreiwertigen Elementen entstehen positive Ladungsträger (Löcher oder Defektelektronen). Bei Dotierung mit fünfwertigen Elementen entstehen negative freie Ladungsträger (Elektronen). Bei dotiertem Material sind grundsätzlich immer beide Ladungsträgerarten vorhanden. Überwiegen die positiven Ladungsträger spricht man von p-Material , überwiegen die negativen Ladungsträger von n-Material . Bei p-Material sind die Elektronen als Ladungsträger in der Minderheit. Man sagt Elektronen sind Minoritätsträger . Bei n-Material sind die Löcher (positive Ladungen) Minoritätsträger. Der MOSFET ist aufgebaut mit einem relativ großen p-Material (bulk) in welchem zwei n-dotierte Zonen eingelassen sind. Die n-Dotierten Zonen sind mit den Anschlüssen Source und Drain verbunden. Über eine Isolierschicht aus Siliziumdioxid (SiO2) ist das Gate angeschlossen. Gate und Bulk bilden einen Kondensator geringer Kapazität. Ohne Spannungsversorgung bilden sich an den pn-Übergängen Sperrschichten aus. Die Source-Drain-Strecke ist nicht leitend. Legt man eine Spannung UDS von z.B. +5Volt an, baut sich die Sperrschicht am Source-Anschluss ab, die Sperrschicht am Drain-Anschluss vergrößert sich indessen (vergleiche pn-Übergang bei Dioden). Die Source-Drain-Strecke ist nicht leitend. Legt man nun zusätzlich eine positive Spannung UGS von >2,5Volt am Gate an, werden negative Ladungsträger vom Bulk (die Minoritätsträger) zum Gate-Anschluss hingezogen. Die Anreicherung von Elektronen in der ursprünglichen Sperrschicht bewirken, dass sich diese Sperrschicht am Drain-Anschluss abbaut und somit die Source-Drain-Strecke leitend wird (siehe Bild 2). Es bildet sich ein n-Kanal. Die Höhe des Stromes hängt von der Höhe der Gatespannung UGS ab. Da das Gate isoliert angebracht ist, erfolgt die Steuerung praktisch leistungslos.

Source

Gate

Drain

N N

P

UGS

UDS

Bulk

SiO2

n-Kanal

0V 5V

>2,5V

Aus der Wirkungsweise erklärt sich die genaue Bezeichnung des Transistors: Selbstsperrender-n-Kanal-MOSFET

Bild 1

Bild 2

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

MOS-Technologie Seite 10 von 49

10

Der MOSFET lässt sich auch komplementär aufbauen. Das heißt: Der Bulk besteht aus n-Material und die dotierten Zonen für Source und Drain aus p-Material. Die Spannungsversorgung muss dann allerdings umgepolt werden. Die Drain-Source-Spannung UDS ist negativ (z.B. –5Volt). Die Source-Drain-Strecke wird leitend, wenn die Gate-Spannung UGS <-2,5Volt wird. Bild 3 und Bild 4 veranschaulichen den Aufbau des selbstsperrenden-p-Kanal-MOSFET .

Bild 3 Bild 4

Schaltzeichen:

N-Kanal-MOSFET P-Kanal-MOSFET In der Digitaltechnik findet der MOSFET ausschließlich als Schalter Anwendung. Vereinfacht kann man sagen:

- Der n-Kanal-MOSFET ist leitend, wenn die Gatespannung UGS >2,5Volt ist, ansonsten ist er gesperrt.

- Der p-Kanal-MOSFET ist leitend, wenn die Gatespannung UGS <-2,5Volt ist, ansonsten ist er gesperrt. Je nachdem welche Transistoren in integrierten Schaltungen Verwendung finden spricht man von NMOS- bzw. PMOS-Technologie . Werden beide Transistorarten innerhalb einer integrierten Schaltung verwendet spricht man von CMOS-Technologie (komplementäre MOS-Technologie). Die Gates der MOS-Transistoren bilden kleine Kapazitäten. Schon geringe Ladungen führen zu sehr hohen Spannungen, welche den MOSFET zerstören können. Beim Arbeiten mit solchen integrierten Schaltungen ist deshalb auf eine Erdung des menschlichen Körpers und aller Geräte zu achten, bevor die Bausteine berührt werden.

Source

Gate

Drain

UGS

DS

Bulk

SiO2

U

N

P P

Source

Gate

Drain

UGS

UDS

Bulk

SiO2

0V

N

P Pp-Kanal

-5V

<-2,5V

D

G

S

D

G

S

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

MOS-Technologie Seite 11 von 49

11

Anwendungsbeispiele: Erklären Sie bitte die Wirkungsweise!

NMOS-Inverter NMOS-NAND NMOS-NOR

Die CMOS-Technik: Bei dieser Technik werden sowohl N-Kanal wie auch P-Kanal-MOSFETs innerhalb einer integrierten Schaltung verwendet.

CMOS-Inverter CMOS-NOR

Beim CMOS-Inverter ist für den Fall, dass der Eingang E=0V ist T1 leitend und T2 gesperrt. Der Ausgang ist HIGH. Ist E=5V ist T2 leitend und T1 gesperrt. Der Ausgang ist LOW. Man erkennt, dass im stationären Zustand kein Strom von 5V über T1 und T2 nach Masse fließt. Die Stromaufnahme ist 0! Deshalb sind CMOS-Gatter besonders in batteriebetriebenen Geräten zu verwenden. Z.B. CMOS-Chips im PC für die Uhr und grundlegende Einstellungen im CMOS-Speicher (BIOS-Einstellungen). Lediglich während des Schaltvorganges fließt kurzzeitig ein Ausgleichsstrom. Die Stromaufnahme von CMOS-Gattern ist frequenzabhängig und steigt mit wachsender Frequenz stark an. Übungen: 1. Entwerfen Sie ein NAND-Gatter in CMOS-Technik! 2. Entwerfen Sie ein XOR-Gatter in CMOS-Technik!

E A

+5V

T1

T2

+5V

E1

E2

A

T1

T2

T3 T4

+5V

Ugs

E

A

T1

+5V

T1

E1

E2

T2

A

+5V

T1E1

E2

A

T2

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

MOS-Technologie Seite 12 von 49

12

Wahrheitstafeln und Schaltsymbole: Eingäng

e Ausgänge

E2 E1 NOT* AND OR NAND NOR XOR XNOR

0 0 1 0 0 1 1 0 1

0 1 0 0 1 1 0 1 0

1 0 1 0 1 1 0 1 0

1 1 0 1 1 0 0 0 1

Symbol: 1

&

1

&

1

=1

=

*) bei Anschluss von E1 Bauelemente (Integrierte Schaltungen): Im Laufe der geschichtlichen Entwicklung wurden integrierte Schaltkreise in unterschiedlichen Technologien entwickelt. Wegen des hohen Stromverbrauch werden veraltete Technologien mit bipolaren Transistoren wie TTL-Technik (Transistor-Transistor-Logik) und TTL-LS-Technik (Low-Power-Schottky) kaum noch verwendet. Als Standard existiert der so genannte TTL-Pegel. Das sind Bauelemente mit einer Versorgungsspannung von 4,5-5,5 Volt (unbedingt einhalten!) und einem Low-Pegel von <0,8V und einem High-Pegel von >2,4V. In CMOS-Technologie stehen die HC-Typen (High-Speed-CMOS) und HCT-Typen(HC mit TTL-Pegel) zur Verfügung. Die HC-Typen haben eine mögliche Versorgungsspannung von 2-6 Volt, wohingegen die HCT-Typen TTL-kompatibel sind. Wegen der unterschiedlichen Pegel kann es bei gleichzeitiger Verwendung von HC- mit TTL-Typen zu Fehlfunktionen in einer Schaltung kommen. Wenn möglich sollte man derartige Schaltungen vermeiden oder entsprechende Maßnahmen zur Pegelanpassung vornehmen. Bauelemente werden von vielen unterschiedlichen Herstellern angeboten. Die Typenbezeichnungen sind herstellerabhängig. Viele der in der folgenden Tabelle aufgeführten Schaltkreise sind auch mit mehr als 2 Eingängen verfügbar. Auswahl handelsüblicher Typen:

74HC(T)00 4-fach-NAND

74HC(T)02 4-fach-NOR

74HC(T)04 6-fach-NOT

74HC(T)08 4-fach-UND

74HC(T)32 4-fach-ODER

74HC(T)86 CD 4070 4-fach-XOR

CD 4077 4-fach-XNOR

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Tri-State-Technik Seite 13 von 49

13

Bei Bussystemen besteht häufig das Problem, dass mehrere Geräte mit ihren Ausgängen an dieselben Leitungen angeschlossen sind. Als Beispiel sei der Datenbus eines Mikrocomputersystems genannt. Angeschlossen sind beispielsweise der Systemspeicher mit seinen Ausgängen (beim Maschinenzyklus Speicher lesen) und ein oder mehrere Eingabeeinheiten. Mehrere Ausgänge dürfen ohne besondere Vorkehrungen niemals gemeinsam an eine Leitung angeschlossen werden! Eine Lösung dieses Problems besteht in der Verwendung von Schaltkreisen mit Tri-State-Ausgängen . Das nebenstehende Bild zeigt die Ausgangsstufe eines „normalen“ TTL-Gatters (Transistor-Transistor-Logik). Wird nur Transistor T1 mit einem Basisstrom ib1 angesteuert, wird T1 leitend und der Ausgang A liegt auf nahezu 5V (je nach Belastung); er hat also den Zustand High. Wird nur T2 mit ib2 angesteuert, wird T2 leitend T1 sperrt und der Ausgang A liegt auf Masse-Potential; er hat den Zustand Low. Die Diode hat den Zweck, die Schaltspannung für T1 um 0,7 Volt zu erhöhen, damit T1 und T2 nicht bei gleichem Pegel schalten. Die vorgeschaltete Logik muss sicherstellen, dass T1 und T2 niemals gleichzeitig angesteuert werden, da sonst ein Kurzschlussstrom über T1 und T2 auftritt, welcher nur noch von dem Vorwiderstand begrenzt wird. Der hohe Strom würde die Ausgangsschaltung zerstören. Daher bezieht die Schaltung auch ihren Namen: Totem-Pole-Schaltung (Totempfahl). Die folgende Schaltung zeigt die Auswirkungen, wenn zwei Ausgänge an eine gemeinsame Busleitung angeschlossen würden. Würde bei dieser Beschaltung T1 und T2* leitend, würde ein Kurzschlussstrom von +5V über T1, über die Busleitung und über T2* nach Masse fließen. Die Busleitung könnte zerstört werden! Diese Schaltung ist nicht zulässig! Wie sind eigentlich die Verhältnisse, wenn weder T1 noch T2 angesteuert werden?

T1

T2

A

Busleitung

ib2

ib1

+5V

T1

T2

A

Busleitung

ib1

+5V

A

+5V

T1*

T2*ib2*Kurzschlussstrom

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Tri-State-Technik Seite 14 von 49

14

Würde man bei einem Totem-Pole-Ausgang weder T1 noch T2 ansteuern, läge der Ausgang weder an +5V noch an Masse. Die angeschlossene Busleitung wäre potentialfrei. Eine solche „freie“ Leitung kann von anderen Ausgangsstufen genutzt werden. Gatter mit derartigen Tri-State-Ausgängen (3 Zustände: Low, High und hochohmig) besitzen einen zusätzlichen Steuereingang, mit welchem die Ausgänge abgeschaltet werden können. Das folgende Bild zeigt eine Prinzipschaltung :

Die Transistoren T3 und T4 sind an die Basisleitungen von T1 und T2 angeschlossen. Wenn der Steuereingang /OC (Output Control) Low-Pegel führt, sind T3 und T4 nicht leitend. Die Ausgangsschaltung kann „normal“ betrieben werden. Führt der Steuereingang /OC dagegen High-Pegel, werden T3 und T4 leitend, die Basisanschlüsse von T1 und T2 werden auf Massepotential geschaltet und sperren damit. Der Ausgang A ist abgeschaltet (hochohmig). In dieser Betriebsart kann die Busleitung von einem anderen Tri-State-Ausgang genutzt werden. Sind mehrere Tri-State-Ausgänge an die Busleitung angeschlossen, muss eine übergeordnete Steuerschaltung (Dekoder) sicherstellen, dass immer nur ein Ausgang aktiviert ist. Der Steuereingang trägt gelegentlich auch die Bezeichnung /EN (Enable). Die Invertierung besagt, dass der Ausgang bei Low-Pegel aktiviert wird. Wenn keiner der angeschlossenen Ausgänge aktiviert würde, würde die Busleitung potentialfrei und würde damit empfindlich gegen Störeinflusse. Um das zu vermeiden legt man die Busleitung über einen hochohmigen Widerstand (Pull-up-Widerstand) an +5V. Damit ist sichergestellt, dass die Leitung immer einen definierten Pegel hat.

T1

T2

A

ib1

+5V

ib2

OCoder

EN

T3 T4

+5V

Pull-up-Widerstand

4,7k

Busleitung

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Tri-State-Technik Seite 15 von 49

15

Das folgende Bild zeigt das Prinzip einer Tri-State-Ausgangsstufe in CMOS-Technik:

Dout

T1

T2

Din

EN

>=1

>=1

1A1

A2

A3

Die Funktionsweise veranschaulicht folgende Tabelle:

/EN Din A1 A2 A3 T1 T2 Dout

0 0 1 1 1 gesperrt leitend 0

0 1 0 0 0 leitend gesperrt 1

1 0 1 1 0 gesperrt gesperrt hochohmig

1 1 0 1 0 gesperrt gesperrt hochohmig

Symbole des Tri-State-Treibers:

Mit EN Aktiv-Low Mit EN Aktiv-High Mit EN Aktiv-High und Invertierung Nach IEC-Norm:

Din

EN

Dout Din

EN

Dout Din

EN

Dout

Din

ENDout1

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Tri-State-Technik Seite 16 von 49

16

&

&DIROC

A B

U1

U2

Anwendungen Wie erwähnt können Tri-State-Ausgänge parallel auf eine Busleitung geschaltet werden. Es muss sichergestellt sein, dass immer nur ein Ausgangstreiber aktiviert ist. Die folgende Schaltung zeigt das am Beispiel für 4 Ausgänge. Ein 1-aus-4-Demultiplexer (Dekoder) stellt sicher, dass in Abhängigkeit von den Steuerleitungen A0 und A1 immer nur einer der Ausgänge von den UND-Gattern U1 bis U4 Low-Pegel annimmt. Nur eine der vier Informationen D0 bis D3 wird auf die Busleitung gelegt.

A0

A1

& & & &+5V

Busleitung

4,7k

Pull-up-WiderstandU1 U2 U3 U4 1-aus-4-DEMUX

D0

D1

D2

D3

Nach diesem Prinzip, werden zum Beispiel mehrere Eingangseinheiten und/oder Speicher auf einen gemeinsamen Adressbus geschaltet (vgl. von-Neumann-System bei Mikrocomputern!). Eine weitere Verwendungsmöglichkeit als bidirektionaler Datenbustreiber zeigt das folgende Bild:

Für /OC = 1 sind sowohl der Ausgang vom Gatter U1 und der Ausgang vom Gatter U2 ‚0’. Die Anschlüsse an A und B sind hochohmig. Für /OC = 0 und DIR=1 ist der Ausgang für U1=1 und Daten werden von A nach B übertragen. Für /OC = 0 und DIR=0 ist der Ausgang für das Gatter U2=1 und Daten werden von B nach A übertragen. Der Steuereingang DIR (direction) steuert also die Datenrichtung. Der Datenbus bei MC-Systemen nach dem Von-Neumann-Prinzip ist beispielsweise bidirektional. Auswahl handelsüblicher Typen:

74HC(T)125 4-fach-3-State-Bustreiber mit Aktiv-Low Steuereingängen

74HC(T)126 4-fach-3-State-Bustreiber mit Aktiv-High Steuereingängen

74HC(T)244 2 mal 4-fach-3-State-Bustreiber mit gemeinsamen Aktiv-Low Steuereingängen

74HC(T)245 8-fach bidirektionaler Datenbustreiber

OC/ DIR Funktion 1 x Ausgänge hochohmig 0 1 Datenrichtung A nach B 0 0 Datenrichtung B nach A

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Halbleiterspeicher Seite 17 von 49

17

Halbleiterspeicher

� ROM 1)

� Maskenprogrammierbar 2)

� Anwenderprogrammierbar 3)

• PROM 4)

• EPROM 5)

• EEPROM 6)

• Flash-Speicher 7)

� RAM 8)

� Statisches RAM (SRAM) 9)

� Dynamisches RAM (DRAM) 10) 1) ROM = Read Only Memory; Speicherinhalt bleibt nach Wegnahme der Betriebsspannung erhalten. 2) Speicherinhalt wird beim Fertigungsprozess (nach Angaben des Anwenders) festgeschrieben. Sinnvoll nur bei großen Stückzahlen. 3) Speicherinhalt wird vom Anwender mit speziellen Programmiergeräten ("Brenner") festgelegt. Bei einigen Typen des EEPROM und beim Flash-Speicher können die Chips bei der Programmierung in der Schaltung verbleiben. 4) PROM = Programmable ROM; Speicherinhalt wird mit speziellen Programmiergeräten eingeschrieben. Der Inhalt ist dann unveränderlich. Lange Lebensdauer. Sinnvoll bei kleinen Stückzahlen. 5) EPROM = Erasable PROM; Speicherinhalt wird mit speziellen Programmiergeräten eingeschrieben. Die Bausteine können durch Betrahlung mit UV-Licht gelöscht und neu beschrieben werden. Der Inhalt der Speicherzellen bleibt für ca. 10 Jahre erhalten. Sinnvoll bei Prototypenentwicklung und Geräten mit geringer Lebensdauer. 6) EEPROM = Electrical EPROM. Wie EPROM, jedoch kann der Speicherinhalt mit elektrischen Impulsen gelöscht werden und der Baustein neu programmiert werden. Es gibt EEPROMs, welche zur Programmierung aus der Schaltung heraus genommen werden müssen, wie auch solche die in der Schaltung verbleiben. Sinnvoll bei Geräten, welche nur gelegentlich Programm- oder Datenänderungen erfordern (z.B. Speicherprogrammierbare Steuerungen, SPS). 7) Flash-Speicher können beliebig oft beschrieben werden (wie EEPROM). Sie verbleiben grundsätzlich in der Schaltung. Das Lesen und Schreiben erfolgt seriell durch ein Mikrocomputerprogramm. Sie haben damit die gleiche Funktion wie eine Festplatte ("Silizium Festplatte"). Sinnvoll bei Anwendungen, wo große Datenmengen dauerhaft gespeichert werden müssen (z.B. Digitalkamera) oder Inhalte nur gelegentlich geändert werden (z.B. Flash-BIOS in PCs). 8) RAM = Random Access Memory; Speicherinhalt geht nach Wegnahme der Betriebsspannung verloren. 9) Die Speicherung der Daten erfolgt durch Flip-Flop-Schaltungen. Speicher für sehr schnelle Anwendungen (z.B. Cache-Speicher in PC). Sehr teuer und relativ geringe Speicherdichte pro Chip. 10) Die Speicherung der Daten erfolgt auf der Basis von (Mini-)Kondensatoren. Damit die Daten nicht verloren gehen ist ein ständiger "Refresh" (Auffrischung) des Speichers erforderlich. Geringe Kosten und hohe Speicherdichte pro Chip. Typische Anwendung ist der Arbeitsspeicher in PCs. Weiterentwicklungen, vor allem mit dem Ziel einer höheren Geschwindigkeit, sind EDO, SDRAM, DDR, RDRAM, SLDRAM, u.a.

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

ROM-Prinzip Seite 18 von 49

- 18 -

Prinzip eines maskenprogrammierbaren ROM’s

Beispiel: Organisation 16 * 1 Bit / Speicherkapazität = 16 Bit

/CS = chip select (Bausteinauswahl) /OE = output enable (Lese-Freigabe) Mit dem Zeilendekoder wird in Abhängigkeit von A0 und A1 eine Zeilenleitung auf Low-Pegel gelegt. Die Spaltenleitungen, an deren Kreuzungspunkt eine Diode liegt, wird auf Low-Pegel gelegt. Spaltenleitungen ohne Diode erhalten High-Pegel. Der Spaltendekoder wählt in Abhängigkeit den Adressleitungen A2 und A3 eine Spaltenleitung aus, deren Zustand an den Tri-State-Treiber weitergegeben wird. Der Ausgang D wird aktiviert, wenn CS/ und OE/ Low-Pegel erhalten.

&

&

&

&

& & & &

>=1

>=1

+

Zeilendekoder1 aus 4 DEMUX

Spaltendekoder4 auf 1 MUX

Tristate-Treiber

Speicher-Matrix

A0

A1

A2

A3

CSOE

D

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

ROM-Prinzip Seite 19 von 49

- 19 -

Wahrheitstafel:

CS/ OE/ D 1 X hochohmig X 1 Hochohmig 0 0 Daten

Impulsplan:

A0...A3

CS

OE

D

taa

taa = Adress-Zugriffszeit Die Adress-Zugriffszeit ist kürzt möglichste Zeit, welche vom Anlegen der Adresse bis zum Erscheinen der Daten vergeht. (Größenordnung ca. 10…200ns) In einem vereinfachten Blockschaltbild besteht der Baustein aus Speichermatrix, Zeilendekoder, Spaltendekoder und Ausgangstreiber. Vereinfachtes Blockschaltbild: Funktionsplan:

A0A1

A2A3

4 * 4Matrix

1 aus 4DEMUX

4 auf 1 MUX

D

>=1CSOE

A0

A1

A2

A3

CS

OE

D

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

ROM-Prinzip Seite 20 von 49

- 20 -

Der oben dargestellte Baustein hat nur einen Ausgang. Der Datenbus ist aber erheblich breiter; z.B. 8 Bit. Das heißt: Ein Baustein muss unter einer angelegten Adresse mehrere Datenleitungen als Ausgang haben. Der folgende Baustein hat eine Organisation von 1K * 4 Bit . Das sind 1024 Adressen mit je 4 Bit. Die Speicherkapazität beträgt 4096 Bit. Dazu sind 4096 Speicherzellen in der Matrix erforderlich. Die Matrix lässt sich quadratisch aufbauen mit je 64 Zeilen- und 64 Spaltenleitungen. Blockschaltbild:

16 auf 1

MUX

16 auf 1

MUX

16 auf 1

MUX

16 auf 1

MUX

.

.

.

*64

.

.

.

Tri-State-Treiber

1 aus 64DEMUX

A0A1A2A3A4

A6A7A8A9

A5

CS

OE

D0 D1 D2 D3

...* 16... ...* 16... ...* 16... ...* 16...

64 * 64Matrix

64 auf 4 MUX

Der Zeilendekoder wählt mit den Adressleitungen A0 bis A5 eine von 64 Zeilenleitungen aus. Die 64 Spaltenleitungen sind in 4 Bereiche geteilt, welche jeweils auf einen 16 auf 1 MUX geschaltet sind. Somit werden bei jeder Adresse an A6 bis A9 vier Spalten als Datenleitung ausgewählt. Funktionsplan:

A0A1

A2A3

A4A5

A6

A7A8

A9

D0

D1

D2

D3OE

CS

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

ROM-Technologie Seite 21 von 49

- 21 -

An dieser Stelle können nur die grundlegenden Prinzipien von Speicherbausteinen und nicht die teils sehr komplexen Herstellungsverfahren aufgezeigt werden. Wie beim maskenprogrammierbaren ROM (ROM-Prinzip) beschrieben, ist die Frage, ob der Inhalt einer Speicherzelle ‚0‘ oder ‚1‘ ist lediglich davon abhängig, ob an der adressierten Speicherzelle eine Diode vorhanden ist oder nicht. Vereinfacht auch gesagt, ob Zeilen- und Spaltenleitung beim auslesen leitend verbunden sind. Fusible-Link-Verfahren Bei diesem Verfahren werden im Fertigungsprozess an jedem Kreuzungspunkt Dioden in Reihe mit einer Schmelzsicherung (bestehend aus einer leicht schmelzbarer Titan-Wolf- oder Chrom-Nickel-Legierung) implementiert. Das bedeutet, dass im nicht programmierten Zustand an allen Speicherstellen ‚0‘ liegt. Mit speziellen Programmiergeräten („Brenner“) können mit einem genau definierten Stromimpuls die Schmelzsicherungen gezielt entfernt werden, z.B. durch Adressieren der gewünschten Speicherzelle und Anlegen einer Spannung an die Ausgänge des Bausteines. Zurück bleibt eine offene Verbindung zwischen Zeilen- und Spaltenleitung und damit eine programmierte ‚1‘. Die Programmierdauer beträgt ca. 1ms/pro Bit. Der Vorgang kann nicht mehr rückgängig gemacht werden (PROM).

+ +

unprogram-mierte Zelle

programmierteZelle

PROM - Fusible-Link-Verfahren

Schmelz-sicherung

AIM-Verfahren Beim AIM-Verfahren (Avalanche-Induced Migration) wird der umgekehrte Weg gegenüber dem Fusible-Link-Verfahren beschritten. Durch einen Programmierimpuls wird eine Diode in die Speicherzelle eingebrannt. Im nicht programmierten Zustand befindet sich an jeder Zelle ein bipolarer Transistor. Dieser Transistor ist technologisch ein N-P-N-Übergang, also im Prinzip zwei gegeneinander geschaltete Dioden. Durch den Avalanche-Effekt wird bei einem Stromimpuls die Emitter-Basis-Strecke zerstört. Übrig bleibt der PN-Übergang von Basis zum Kollektor und damit eine Diode. Im programmierten Zustand ist also eine ‚0‘ programmiert.

+ +

=

unprogram-mierte Zelle

programmierteZelle

PROM - AIM-Verfahren

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

ROM-Technologie Seite 22 von 49

- 22 -

EPROM-Technologie Die Speicherzelle eines EPROM’s ist der FAMOS-Transistor (Floating gate Avalanche MOS). Das folgende Bild zeigt den Aufbau:

Source

Gate

Drain

N N

P

UGS

UDS

Bulk

floating Gate

SiO2

Ergänzend zum NMOS-Feldeffekt-Transistor befindet sich innerhalb der Isolationsschicht zwischen Gate und Bulk eine leitfähige Metallplatte (floating gate). Im unprogrammierten Zustand verhält sich der MOSFET wie gewohnt. Zur Programmierung der Zelle wird an das Gate eine hohe positive Spannung (12,5 … 28V) angelegt. Durch das hohe elektrische Feld gelangen Elektronen nicht nur in den n-leitenden Kanal, sondern durch die Isolierschicht hindurch zum Floating-Gate ohne die Isolierung zu zerstören (Avalanche-Effekt oder Lawinendurchbruch). Nach Wegnahme der Programmierspannung bleibt diese Ladung bis zu 10 Jahre(!) erhalten. Durch die negative Ladung auf dem Floating-Gate kann der Transistor nicht mehr mit normaler Gatespannung durchgeschaltet werden. Es bleibt an der Speicherzelle eine offene Verbindung. Durch Bestrahlung mit UV-Licht werden die Ladungen angeregt und verlassen das Floating-Gate. Der Vorgang ist bis zu 10000 mal wiederholbar. Aufgabe:

- Lesen Sie das Datenblatt des EPROM-Bausteines 2716!

- Beschreiben Sie Aufbau und Organisation des EPROM-Bausteines 2716!

- Beschreiben Sie den Programmiervorgang des 2716!

EEPROM-Technologie Die EEPROM-Speicherzelle ist ebenso wie bei der EPROM-Zelle mit einem FAMOS-Transistor aufgebaut (floating gate). Die Programmierung und das Löschen erfolgt jedoch ausschließlich durch elektrische Impulse. Statt des Lawinendurchbruchs bei der Programmierung wird der „Tunnel-Effekt“ verwendet. Die Isolationsschicht zwischen Floating-Gate und Bulk ist sehr dünn, so dass Ladungen bei entsprechenden elektrischen Feldstärken durch diese Schicht gelangen können. Eine Sonderform der EEPROMs sind die Flash-Speicher. Die Unterschiede sind fließend. Im allgemeinen sind Flash-Speicher schneller beschreibbar. Flash Speicher können beim Schreiben und Lesen in der Schaltung verbleiben. Bekannte Vertreter von Flach-Speichern sind z.B. MMC-Speicherkarten und USB-Sticks.

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

RAM-Bausteine Seite 23 von 49

- 23 -

Das folgende Bild zeigt eine RAM-Speicherzelle in CMOS-Technik.

Die Transistoren T1 bis T4 bilden ein Flip-Flop bestehend aus zwei CMOS-Inverter, deren Ausgänge auf den jeweils anderen Inverter zurückgekoppelt sind. Wenn nach Anlegen der Betriebsspannung Ub an Knotenpunkt A Low-Pegel anliegt, ist T2 gesperrt und T1 leitend (das Gate vom p-Kanal_MOSFET T1 hat negatives Potential gegenüber Source). Am Knotenpunkt B liegt High-Pegel. Dadurch wird T4 leitend und T3 sperrt. Dieser Zustand ist stabil. Wenn nach Anlegen der Betriebsspannung an Knotenpunkt B Low-Pegel anliegt, ist T4 gesperrt und T3 leitend. An Knotenpunkt A liegt High-Pegel. Dadurch wird T2 leitend und T1 sperrt. Auch dieser Zustand ist stabil. Welcher Zustand sich einstellt ist zufällig. Der Speicherinhalt eines RAM ist nach Anlegen der Betriebsspannung unbestimmt ! Wenn die X- und Y-Auswahlleitungen ‚1’ sind, werden T5 und T7 bzw. T6 und T8 leitend. Die Information von Knotenpunkt A gelangt nach Schreib-/Leseleitung 2 und die Information von Knotenpunkt B nach Schreib-/Leseleitung 1. T5 bis T8 bilden Tri-State-Treiber. In der Praxis wird eine der beiden SL-Leitungen zum Einschreiben der Information benutzt und die andere zum Lesen der Information. Es ist zu beachten, dass die gelesene Information invers zur geschriebenen ist.

Y-Auswahlleitung

+ Ub

T3 T1

T4 T2

A B

X-Auswahlleitung

T5 T6

T7 T8

Schreib-/Leseleitung 1

Schreib-/Leseleitung 2

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

RAM-Bausteine Seite 24 von 49

- 24 -

Blockschaltbild der RAM-Speicherzelle:

Die Speicherzelle besitzt zwei Auswahlleitungen X und Y, sowie eine Leitung zum Einschreiben und eine Leitung zum Lesen der Information. Das folgende Bild zeigt einen RAM-Speicherbaustein mit der Organisation 16 * 1 Bit:

x y

L S

x y

L S

x y

L S

x y

L S

L S

x y

L S

x y

L S

x y

L S

x y

x y

L S

x y

L S

x y

L S

x y

L S

L S

x y

L S

x y

L S

x y

L S

x y

1 aus 4DEMUX

D

&

&

A0

A1

A2

A3

OEWR

CS

1 aus 4 DEMUX

X Y

L S

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

RAM-Bausteine Seite 25 von 49

- 25 -

Die Speicherzellen sind in einer Matrix bestehend aus 4 Zeilen und 4 Spalten angeordnet. Alle Schreib- und alle Leseleitungen sind miteinander verbunden. Über Zeilen- und Spaltendekoder wird immer nur eine Zelle ausgewählt. Über die Datenleitung D werden in Abhängigkeit von den Steuersignalen Daten sowohl eingeschrieben wie auch gelesen. Da Schreib- und Leseleitung inverses Potential haben, wird beim Lesen der Zustand noch einmal invertiert. Wahrheitstafel: CS/ OE/ WR/ D

1 X X hochohmig 0 0 1 Daten lesen 0 1 0 Daten schreiben 0 0 0 Daten schreiben

Impulsdiagramme: Daten schreiben:

A0 - A3

CS

WR

OE

D Daten extern

t

Daten lesen:

A0 - A3

CS

WR

OE

D

t

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

RAM-Bausteine Seite 26 von 49

- 26 -

Das folgende Bild zeigt die Blockschaltung eines RAM-Bausteines mit der Organisation 1k * 4 Bit:

Funktionsplan:

1 aus 16DEMUX

1 aus 16DEMUX

1 aus 16DEMUX

1 aus 16DEMUX

1 aus 64DEMUX

64 * 16 64 * 16 64 * 16 64 * 16

&

&

A0A1A2A3

A4

A5

A6

A7

A8

A9

D0D1D2D3

OEWRCS

A0

A1

A2A3

A4

A5

A6A7

A8

A9

D0

D1

D2

D3

CS

OE WR

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Arithmetisch-Logische-Einheit (ALU) Seite 27 von 49

- 27 -

Die Addition Ganze Zahlen werden in Computersystemen im Dualzahlensystem dargestellt. Beispiel für eine binäre Addition:

Dezimal Carry D7 D6 D5 D4 D3 D2 D1 D0 HEX

Operand A 185D 1 0 1 1 1 0 0 1 B9H

Operand B 107D 0 1 1 0 1 0 1 1 6BH

Übertrag 1 1 1 1 1 1 1

Summe 292D 1 0 0 1 0 0 1 0 0 124H Im diesem Beispiel ist das Ergebnis größer als 255. Das Ergebnis lässt sich nicht in einem 8-Bit-Wert darstellen. Es entsteht ein Übertrag in die 9. Stelle (Carry). Summe und Übertrag für die Addition von 2 Bits wird nach folgender Wahrheitstafel gebildet:

E2 E1 Summe

S Übertrag

Ü 0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

21

)21()21(

EEÜ

EEEES

∧=∧∨∧=

Bei der binären Addition muss bei jeder Stelle außer den beiden Operanden E1 und E2 der Übertrag der vorherigen Stelle noch berücksichtigt werden (außer bei der ersten Stelle). Vollständige Wahrheitstafel für eine Stelle unter Berücksichtigung des Übertrages (Volladdierer):

Die Wahrheitstafel lässt sich durch das folgende Schaltnetz realisieren (Halbaddierer):

Blockschaltbild:

Der Volladdierer entsteht durch Hintereinanderschaltung von 2 Halbaddierern. Ein Übertrag entsteht wenn einer der beiden HA einen Übertrag liefern.

Blockschaltbild:

Eingänge Ausgänge

E2 E1 ü S Ü

0 0 0 0 0

0 1 0 1 0

1 0 0 1 0

1 1 0 0 1

0 0 1 1 0

0 1 1 0 1

1 0 1 0 1

1 1 1 1 1

&

&

&

>=1 S

Ü

E2 E1Halbaddierer

S

ÜHA

E1

E2

S

Ü

E1

E2

S

Ü

E1

E2

>=1

HA1 HA2S

Ü

E1

E2

ü

Volladdierer

E1

E2

ü

S

ÜVA

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Arithmetisch-Logische-Einheit (ALU) Seite 28 von 49

- 28 -

Das folgende Bild zeigt ein 8-Bit-Addierwerk. Es benötigt 8 Volladdierer. Der Übertragsausgang eines VA ist mit dem Übertragseingang des folgenden VA verbunden. Der letzte Übertrag ist das Carry. Der Übertragseingang des ersten VA muss für eine einfache 8-Bit-Addition auf ‚0’ liegen.

27 226 2 2 2 2 2012345 27 226 2 2 2 2 2012345

ü

E1

E2

S

Ü

VA8

ü

E1

E2

S

Ü

ü

E1

E2

S

Ü

ü

E1

E2

S

Ü

ü

E1

E2

S

Ü

ü

E1

E2

S

Ü

ü

E1

E2

S

Ü

ü

E1

E2

S

Ü

VA1

VA2

VA3

VA4

VA5

VA6

VA7

20

2

2

2

2

2

2

2

1

2

3

4

5

6

7

Operand AOperand B

Summe

Carry

+Inkrement

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Arithmetisch-Logische-Einheit (ALU) Seite 29 von 49

- 29 -

Die Subtraktion Negative Zahlen werden im Zweierkomplement dargestellt. Das Zweierkomplement ist das Einerkomplement des Betrages der Zahl plus 1. Die Zahl -58 ergibt sich beispielsweise folgendermaßen:

Dezimal Carry D7 D6 D5 D4 D3 D2 D1 D0 HEX

Operand 58D 0 0 1 1 1 0 1 0 3AH

Einerkomplement 1 1 0 0 0 1 0 1 C5H

Inkrement +1 1

Übertrag 1

Zweierkomplement -58D 1 1 0 0 0 1 1 0 C6H Das höchstwertigste Bit (MSB) bestimmt das Vorzeichen der Zahl. Ist MSB=0 ist die Zahl positiv und bei MSB=1 ist die Zahl negativ. Für 8-Bit-Dualzahlen ergibt sich damit ein Wertebereich von -128 bis +127. Die Subtraktion erfolgt durch die Addition des Zweierkomplementes. Carry bleibt solange man sich im zulässigen Wertebereich befindet unberücksichtigt. Beispiel:

Dezimal Carry D7 D6 D5 D4 D3 D2 D1 D0 HEX

Minuend R 107D 0 1 1 0 1 0 1 1 6BH

Subtrahend S +(-58)D 1 1 0 0 0 1 1 0 C6H

Übertrag (1) 1 1 1 1

Differenz 49D 0 0 1 1 0 0 0 1 31H Da die Subtraktion auf die Addition des Zweierkomplementes zurückgeführt wird, kann das 8-Bit-Addierwerk auch für die Subtraktion verwendet werden. Lediglich für die Bildung des Einer- und Zweierkomplementes muss eine zusätzliche Schaltung entwickelt werden. Für die Bildung des Einerkomplementes ist eine bitweise Invertierung erforderlich. Ein einzelnes Bit lässt sich mit Hilfe eines XOR-Gatters realisieren: Wahrheitstabelle des XOR-Gatters: S D A

0 0 0

0 1 1

1 0 1

1 1 0 Man erkennt, dass der Dateneingang D invertiert wird, wenn der Steuereingang S = 1 ist.

=1D

SA

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Arithmetisch-Logische-Einheit (ALU) Seite 30 von 49

- 30 -

Das folgende Bild zeigt ein steuerbares Rechenwerk, mit welchem sich außer Addition und Subtraktion eine Reihe anderer Operationen durchführen lassen. Steuerbares Addier-/Subtrahierwerk:

& & & & & & & & & & & & & & & &

=1 =1 =1 =1 =1 =1 =1 =1 =1 =1 =1 =1 =1 =1 =1 =1

2022222227 6 5 4 3 2 12022222227 6 5 4 3 2 1

2022222227 6 5 4 3 2 12022222227 6 5 4 3 2 1

2022222227 6 5 4 3 2 1

8-Bit-Addierwerk

Summe

ü

Operand R Operand S

Operand A Operand B

U1U2U3U4U5U6U7U8 U9U10U11U12U13U14U15U16

X1X2X3X4X5X6X7X8 X9X10X11X12X13X14X15X16

Ergebnis E

+

S0

S1

S2

S3

S4

Carry

Ü

R-Komplement

S-Komplement

Inkrement

S-Auswahl

R-Auswahl

Die Gatter U1…U8 bzw. U9…U16 arbeiten als logische Tore. Mit S4=0 bzw. S3=0 werden die Ausgänge U1…U8 und/oder U9…U16 gleich 0, das heißt die Operanden R bzw. S werden nicht ausgewählt. Mit dem Steuersignalen S2=1 bzw. S1=1 können die Operanden R bzw. S bitweise invertiert werden. Mit S0=1 wird der Operand S inkrementiert um beispielsweise nach der Invertierung das Zweierkomplement von S zu bilden. Das 8-Bit-Addierwerk entspricht der Schaltung auf Seite 2. Tabelle einiger möglicher Berechnungen: S4 S3 S2 S1 S0 Ergebnis E

0 0 0 0 0 00H

1 1 0 0 0 R + S

1 1 0 1 1 R - S

0 1 0 1 0 /S (Einerkomplement)

1 0 1 0 0 /R (Einerkomplement)

0 1 0 1 1 /S+1 (Zweierkomplement)

0 0 0 1 0 FFH

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Arithmetisch-Logische-Einheit (ALU) Seite 31 von 49

- 31 -

Bitoperationen Für Anwendungen in der Steuerungstechnik sind bitweise UND-, ODER- und XOR-Verknüpfungen erforderlich. Beispiel einer bitweisen UND-Verknüpfung: D7 D6 D5 D4 D3 D2 D1 D0 HEX

Operand R 0 1 1 0 1 1 0 1 6DH

Operand S 1 1 1 1 0 1 0 0 F4H

Ergebnis 0 1 1 0 0 1 0 0 64H Überträge bleiben bei den bitweisen Verknüpfungen unberücksichtigt. Auf der folgenden Seite ist eine vollständige arithmetisch logische Einheit (ALU), welche um die Bitoperationen erweitert ist. Erläuterungen zur Schaltung: Neben dem steuerbaren Addier-/Subtrahierwerk mit den Steuereingängen S0 bis S4 besitzt die Schaltung die Gatter U33…U40 für eine bitweise UND-Verknüpfung, die Gatter O9…O16 für eine bitweise ODER-Verknüpfung und die Gatter X1…X8 für eine bitweise XOR-Verknüpfung. Alle Ergebnisse liegen parallel an den Eingängen von U1 bis U32. In Abhängigkeit von den Steuerleitungen S5 und S6 wird über die logischen Tore U1…U32 nur ein Ergebnis auf die Ausgänge O1…O8 übertragen. Die Gatter U1 bis U32 und O1 bis O8 bilden in Verbindung mit S5 und S6 einen 32-auf-8-Multiplexer, welcher von 32 Eingängen immer 8 zur Ausgabe leitet. Für die gesamte Schaltung wird in Datenblättern häufig das folgende Funktionsschaltbild verwendet:

Operand R Operand S

Ergebnis

8

8 8

ALUSteuerung

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Arithmetisch-Logische-Einheit (ALU) Seite 32 von 49

- 32 -

=1

=1

=1

=1

=>1

=>1

=>1

=>1

>=

1>

=1

&&

&&

&&

&&

&&

&&

& & & &

>=

1>

=1

&&

&&

&&

&&

U32

U31

U26

U25

U24

U23

U18

U17

U16

U15

U10

U8

U7

U2

U1

U44

U43

U42

U41

U1

U9

U17

U25

U2

U10

U18

U26

U7

U15

U23

U31

U8

U16

U24

U32

U33

U34

U39

U40

O9

O10

O15

O16

X1

X2

X7

X8

220

22

22

12

56

72

202

22

21

25

67

Ope

rand

RO

pera

nd S

Ste

uerb

ares

Add

ier-

/Sub

trah

ierw

erk

S0

S1

S2

S3

S4

S5

S6

Ste

ueru

ng

AD

D/S

UB

UN

D

OD

ER

XO

R

202

22

22

76

52

1

Car

ry

Erg

ebni

s

32

O8

O7

O2

O1

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Rechenwerke Seite 33 von 49

- 33 -

Das folgende Bild zeigt ein Register-Rechenwerk als so genannte 2-Adress-Maschine.

Zwischen-register

Operand B

ALU

Befehlsregister

Steuerung

Operand A+ Ergebnis

Takt

Vor Ausführung des Befehles befinden sich die zu verknüpfenden Operanden in zwei getrennten Registern (Operand a und Operand B). Die Auszuführende Operation ist im Befehl hinterlegt (Befehlsregister). Bei fallender Flanke des Taktsignales übernimmt das Zwischenregister die Information von Operand A. Die beiden Operanden liegen jetzt parallel am Eingang der ALU. Nach kurzer Rechenzeit erscheint das Ergebnis am Ausgang der ALU. Das Ergebnis liegt zugleich am Eingang von Operand A. Bei steigender Flanke des Taktsignals wird das Ergebnis in Operand A übernommen. Das bedeutet, dass ein Register bei diesem Rechenwerk verändert wird, welches dann das neue Ergebnis enthält. Beispiel: Bei der MCU ATmega8 führt der Befehl add r0,r1 dazu, dass der Inhalt von Register r1 zu dem Inhalt von Register r0 addiert wird. Das Ergebnis steht in r0. Aus der Tatsache, dass im Befehl die Adressen von zwei Registern angegeben wird, bezieht das Rechenwerk seinen Namen (2-Adress-Maschine). Selbstverständlich müssen mit entsprechenden Befehlen die ausgewählten Register vorher mit den gewünschten Operanden geladen werden.

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Rechenwerke Seite 34 von 49

- 34 -

Ein wesentlicher Vorteil in der RISC-Architektur besteht darin, dass für die Ausführung eines Befehles i.a. nur 1 Taktimpuls benötigt wird. Für Berechnungen stehen außerdem eine Vielzahl von Registern zur Verfügung. Die MCU ATmega8 besitzt beispielweise 32 Allzweckregister (r0…r31). Jedes einzelne Register kann sowohl als Quelle wie auch als Ziel zur Verfügung stehen. Das folgende Bild verdeutlicht den Programmablauf bei diesem RISC-Prozessor.

ALU

Steuerung

Befehlsregister

r0

r1

r2

.

.

.Register-satz

r31

r30

r29

Register-auswahl

Programm-speicher

Programmzähler

Takt

4K * 16 Bit

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Parallele Ausgabe Seite 35 von 49

- 35 -

=

B0 B1 B2 B3

A0 A1 A2 A3

A=B =

B0 B1 B2 B3

A0 A1 A2 A3

A=B

+* 8

1

1

A0A1A2A3A4A5A6A7

A0...A15

16

D0...D7

IOR

IOW

8

Adressbus

Datenbus D0...D7

CLK Q0

Q1

Q2

Q3

Q4

Q5

Q6

Q7

8*LED

CLR

1RESOUT

IC2 - 'LS85 IC3 - 'LS85

IC1'LS273

S0S1S2S3S4S5S6S7

CPU

Wirkungsweise : Bei einem OUT- Befehl der CPU wird eine 8 Bit Adresse an A0 bis A7 auf den Adressbus geschaltet. Diese Adresse wird mit der eingestellten Port-Adresse über IC2 und IC3 verglichen. Die Port-Adresse wird mit den Schaltern S0 bis S7 fest eingestellt. Der OUT-Befehl legt als nächstes die Daten aus dem Akkumulator auf den Datenbus. Danach wird die Steuerleitung IOW/ aktiviert. Wenn IOW/ = 0 ist und die eingestellte Adresse mit der gesendeten Adresse übereinstimmt, wird ein Impuls an CLK des IC1 gesendet. Dadurch werden die Daten auf dem Datenbus von IC1 (´LS273) übernommen und gespeichert. Die Anzeige der Daten erfolgt in obiger Schaltung durch LED’s. Für die Port-Adresse 01H sind alle Schalter bis auf S0 zu schließen. Bei geöffneten Schaltern liegt der entsprechende Eingang über Pull-up-Widerstände auf High.

A0...A7

D0...D7

IOW

Ausgangsdaten

Daten von CPU (Akku)

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Parallele Eingabe Seite 36 von 49

- 36 -

=

B0 B1 B2 B3

A0 A1 A2 A3

A=B =

B0 B1 B2 B3

A0 A1 A2 A3

A=B

+* 8

Q0...Q7

D0

D1

D2

D3

D4

D5

D6

D7

OC C

+

* 8

1

1

Eingabe-

Daten

A0A1A2A3A4A5A6A7

A0...A15

16

IOR

IOW

8

Adressbus

Datenbus

S0S1S2S3S4S5S6S7

D0...D7

'LS85'LS85

CPU

'LS373

Wirkungsweise : Die binären Eingabedaten liegen an D0 bis D7 des IC1 (‘LS373) an. Die Daten werden solange übernommen wie an C von IC1 High-Pegel anliegt. Bei einem ‚IN‘ - Befehl der CPU wird eine 8 Bit Adresse an A0 bis A7 auf den Adressbus geschaltet. Diese Adresse wird mit der eingestellten Port-Adresse über IC2 und IC3 verglichen. Die Port-Adresse wird mit den Schaltern S0 bis S7 fest eingestellt. Durch den IN-Befehl wird die Steuerleitung IOR/ aktiviert. Wenn IOR/ = 0 ist und die eingestellte Adresse mit der gesendeten Adresse übereinstimmt, wird ein Low-Impuls an OC/ des IC1 gesendet. Dadurch werden die gespeicherten Eingabedaten auf den Datenbus geschaltet und können von der CPU in den Akkumulator übernommen werden. Während dieses Impulses ist wegen C=0 die Eingabe der Daten verriegelt. Für die Port-Adresse 00H sind alle Schalter zu schließen. Bei geöffneten Schaltern liegt der entsprechende Eingang über Pull-up-Widerstände auf High.

A0...A7

Eingabedaten

IOR

D0...D7 Daten zur CPU (Akku)

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Der ATmega8 Seite 37 von 49

- 37 -

Aufbau der ATmega8-MCU Das vollständige Datenblatt des ATmega8 finden Sie unter: http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf An dieser Stelle wird nur so viel beschrieben wie es für einen ersten Einstieg in der Programmierung erforderlich ist. Bild 3.1: Blockschaltbild

Bild3.2: Pinbelegung

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Der ATmega8 Seite 38 von 49

- 38 -

Das Blockschaltbild Bild 3.1 zeigt die vielfältigen Möglichkeiten der MCU auf: Die Arithmetisch Logische Einheit (ALU) des CPU-Kernes hat eine Rechenbreite von 8 Bit. Mit ihr lassen sich arithmetische und logische Verknüpfungen zwischen zwei Operanden durchführen (z.B.: Addition, Subtraktion, binäre UND-/ODER-/XOR-Verknüpfung, Multiplikation, Inkrement, Dekrement, Links-/Rechtsschieben,...). Die schon angesprochenen Allzweckregister r0 bis r31 (GPR) sind direkt mit der ALU verbunden. Das bedeutet, dass Rechenoperationen nur unter Verwendung dieser Register möglich sind!

Beispiel:

add r0,r1 ;addiert den Inhalt des Registers r1 zu r 0, das Ergebnis steht in r0 ;bei allen Befehlen mit zwei Operanden

;steht das Zielregister stets vor dem Komma Auf Grund der RISC1-Architektur des Prozessors benötigt die Ausführung der meisten Befehle nur eine Zeit von einem Takt. Bei einer Taktfrequenz von 4 Mhz bedeutet das, dass bis zu 4 Millionen(!) Befehle pro Sekunde (MIPS2) ausgeführt werden können bzw. die Ausführungszeit eines Befehles 0,25 µs dauert. Dafür ist die Anzahl der möglichen Befehle gegenüber anderen Prozessormodellen eingeschränkt. Die Befehle befinden sich in binär kodierter Form im Programmspeicher und werden in aufsteigender Reihenfolge (außer bei Sprüngen und Verzweigungen) beginnend mit der Startadresse 0x0003 (=Hex-Zahl) nach einem Reset der MCU ausgeführt. Es handelt sich um einen Flash-Speicher, welcher beliebig oft neu programmiert werden kann. Sein Inhalt bleibt bei Wegnahme der Versorgungsspannung erhalten. Für das Programmieren sind spezielle Brenner mit entsprechender Software erforderlich. Über die SPI-Schnittstelle (synchroner serieller Datenbus) kann der Controller programmiert werden, während er in der Schaltung verbleiben kann (ISP=In System Programming). Der Programmspeicher hat eine Organisation von 4k*16Bit. Das bedeutet: Der Adressbus hat eine Breite von 12 Bit mit einem Adressbereich von 0x000 bis 0xFFF (=4095 dezimal). Ein einzelner Befehl benötigt mindestens 16Bit (=2 Byte). Einige Befehle belegen auch zwei Adressplätze (2*16 Bit oder 4 Byte). Der Programm Counter (PC) hat demnach eine Breite von 12 Bit. Er beinhaltet immer die Adresse des nächsten auszuführenden Befehles. Sein Inhalt kann durch Sprung- und Verzweigungsbefehle beeinflusst werden. Viele Befehle beeinflussen nach ihrer Ausführung die Zustände der Register Stack-Pointer und Status-Register. Der Stack-Pointer wird hauptsächlich bei Unterprogrammen verwendet. Er verwaltet den so genannten Stapelspeicher (Stack) in welchem Rücksprungadressen und Registerinhalte zwischengespeichert werden. Das Status-Register beinhaltet die sogenannten Flags (= 1 Bit-Werte), welche nach arithmetischen und logischen Operationen beeinflusst werden. Zum Beispiel: Das Z-Flag (Zero-Flag) wird 1, wenn nach einer Operation das Ergebnis Null wird. Instruction Register und Instruction Decoder erzeugen die erforderlichen Signale zur Steuerung der CPU. Die Kenntnis der genauen Funktionsweise ist für die Programmierung nicht erforderlich. 1 Reduced Instruction Set Computing (engl. für Rechnen mit reduziertem Befehlssatz) 2 Millions Instructions Per Second 3 Eine alternative Schreibweise ist $0000 – In diesem Buch werden je nach Zweckmäßigkeit beide Arten benutzt

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Der ATmega8 Seite 39 von 49

- 39 -

Das SRAM Von wesentlicher Bedeutung für den Programmierer ist der Umgang mit dem integrierten statischem Speicher (SRAM). Sein Inhalt geht nach Wegnahme der Betriebsspannung verloren. Bild 3.3: Aufbau SRAM

Das SRAM ist Byte-orientiert, d.h. auf jeder physikalischen Adresse ist 1 Byte (=8 Bit) abgelegt. Der physikalische Adressbereich von $0000 bis $045F ist in drei logische Bereiche gegliedert (siehe Bild 3.3!): Die Allzweckregister (GPR) r0 bis r31 Die schon bekannten Allzweckregister liegen im physikalischen Adressbereich $0000 bis $001F. Wie schon erwähnt sind diese Register direkt mit der ALU verbunden und ermöglichen arithmetische und logische Verknüpfungen, sowie das Laden und Kopieren von Informationen. Beispiele: ldi r16,$30 ;lade Register r16 mit dem Konstanten W ert $30

;Dieser Befehl ist nur für die Register r16 bis r31 erlaubt! inc r16 ;inkrementiere r16 ldi r17,$32 ;lade Register r17 mit $32 add r16,r17 ;addiere r16 und r17 – Ergebnis in r16 mov r0,r16 ;kopiere r16 nach r0 – r16 bleibt unverä ndert rol r0 ;rotiere r0 um 1 Bit nach links – entspricht Multiplikation mit 2

Logische Adressen

Physikalische Adressen

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Der ATmega8 Seite 40 von 49

- 40 -

Die I/O-Register Im physikalischen Bereich des SRAM von $0020 bis $005F liegen 64 Bytes der sogenannten I/O-Register. Durch diese Register erfolgt beispielsweise der Zugriff auf die Ports der MCU. Außerdem steuern diese Register die Wirkungsweise aller Einheiten der MCU wie z.B. Timer, Analog/Digital-Wandler, serielle Schnittstelle, usw. Statt der physikalischen Adressen werden im Assemblercode die logischen Adressen $00 bis $3F verwendet. Der Zugriff auf diese Register erfolgt mit den Lese- und Schreibbefehlen IN und OUT. Ein direktes Beschreiben dieser Register ist nicht möglich. Der Austausch von Informationen erfolgt immer über die Allzweckregister r0 bis r31. Beispiel: ldi r16,$f0 ;lade r16 mit $f0 out $17,r16 ;kopiere r16 nach I/O-Register $17 in r0,$16 ;übertrage I/O-Register $16 nach r0 ;verwechseln Sie nicht das GPR r16 mit dem I/O-Re gister $16! Beim Schreiben in ein I/O-Register ist Vorsicht geboten, da durch diese Register das Verhalten des Mikrocontrollers gesteuert wird. Die genaue Bedeutung der einzelnen Register und ihren Bits ist dem Datenblatt zu entnehmen. In obigem Beispiel ist das I/O-Register $16 die Information, welche an den Pin-Anschlüssen PB0 bis PB7 anliegen (z.B. durch angeschlossene Schalter). Durch das I/O-Register $17 wird die Datenrichtung der Anschlüsse festgelegt (hardwareabhängig). Eine genaue Erklärung folgt in Kapitel 4. Zur besseren Lesbarkeit des Programmcodes ist es sinnvoll die logischen Adressen $16 und $17 durch sinnvolle Symbole zu ersetzen. Die Definition von Symbolen erfolgt durch die Assembler-Anweisung .equ . Der Compiler ersetzt diese Symbole durch die zugewiesenen logischen Adressen. Beispiel: .equ DDRB = $17 ;DDRB ist ein Symbol für I/O-Re gister $17(Data direction) .equ PINB = $16 ;PINB ist ein Symbol für I/O-Re gister $16 ldi r16,$f0 ;lade r16 mit $f0 out DDRB,r16 ;DDRB wird durch $17 ersetzt – r16 ���� I/O-Register $17

in r0,PINB ;PINB wird durch $16 ersetzt – PB0...PB7 ���� r0 Die Symboldefinitionen für alle I/O-Register befinden sich in einer Datei mit dem Namen m8def.inc . Mit der Anweisung .include<m8def.inc> zu Beginn eines jeden Programms sind alle Symbole für den Programmierer verfügbar. Außer mit den Befehlen IN und OUT zum Lesen und Schreiben für I/O-Register ist es möglich einzelne Bits innerhalb eines Registers auf 1 oder 0 zu setzen. Mit dem Befehl SBI wird ein Bit auf 1 gesetzt und mit CBI auf 0. Beispiel: sbi $16,0 ;setzt Bit 0 in I/O-Register $16 auf 1 oder mit Symbolen: sbi PINB,PINB0 ;setzt Bit 0 in I/O-Register PINB au f 1

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Der ATmega8 Seite 41 von 49

- 41 -

Das DRAM Im Anschluss an den I/O-Registern schließt sich im SRAM ein weiterer 1kByte großer Speicherbereich mit den physikalischen Adressen $0060 bis $045F. Dieser Bereich wird DRAM (Data-RAM) genannt und kann zur Zwischenspeicherung größerer Datenmengen genutzt werden. Eine Möglichkeit direkt auf die Inhalte dieser Adressen zuzugreifen besteht mit den Befehlen STS und LDS. Beispiel: ldi r16,$41 ;lade Register r16 unmittelbar mit $41 sts $60,r16 ;kopiere den Inhalt von r16 zur direkte n Speicherplatzadresse $60 lds r0,$60 ;kopiere den Inhalt der Speicherplatzadr esse $60 nach r0 Mit STS und LDS lässt sich auch auf alle anderen Bereiche des SRAMs zugreifen. Es ist nur zu beachten, dass statt der logischen bzw, symbolischen Adressen die physikalischen Adressen zu verwenden sind (siehe Bild 3.3!). Beispiel: ldi r16,$f0 ;lade r16 mit $f0 sts $37,r16 ;kopiere r16 nach der direkten Adresse $37 = I/O-Register $17(=DDRB) lds r0,$36 ;kopiere von der direkten Adresse $36 = I/O-Register $16(=PINB) nach

;r0 Eine weitere oft verwendete Methode auf Adressen zuzugreifen ist die indirekte Adressierung unter Verwendung der Register(-paare) X, Y und Z. Diese Möglichkeit wird in späteren Kapiteln behandelt (z.B. Kapitel 9). Die PIN-Belegung und Beschaltung des ATmega8: Der ATmega8 ist in verschiedenen Ausführungs- und Gehäuseformen lieferbar. Die hier gemachten Angaben beziehen sich auf ein PDIP-Gehäuse mit 28 Anschlüssen (siehe Bild 3.2!). GND (Pin 8+22) Masseanschluss VCC (7) Versorgungsspannung (+5V) AVCC (20) Versorgungsspannung für internen A/D-Wandler. Der Anschluss sollte mit VCC

verbunden werden, auch wenn der A/D-Wandler nicht verwendet wird. Bei Verwendung des A/D-Wandlers sollte er über ein Tiefpassfilter mit VCC verbunden werden (siehe Bild 3.4!).

AREF (21) externe Referenzspannung des A/D-Wandlers. Kann im einfachsten Fall mit der

stabilisierten Spannung VCC verbunden werden. PB0...PB7(14...19,9,10) PC0...PC6(23...28,1) PD0...PD7(2...6,11..13) 23 I/O-Anschlüsse, mehrfach belegt. Die 23 I/O-Anschlüsse haben je nach Programmierung (über I/O-Register) unterschiedliche Funktionen. Beispielsweise dienen die Anschlüsse PC0 bis PC5 als analoge Eingänge oder PD0 und PD1 als Empfangs- und Sendedaten für eine serielle Schnittstelle (USART). Weitere Ein-/Ausgänge sind für die Bussysteme, externe Interrupts, Timer, externer RESET, usw. vorgesehen. Die zusätzlichen Anwendungen verringern natürlich die Anzahl der verfügbaren binären Ein-/Ausgänge. Als Minimalbeschaltung sollte man außerdem an PB6 und PB7 (Pin 9 und 10) einen Quarz zur Takterzeugung anschließen (siehe Bild 3.4!).

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Der ATmega8 Seite 42 von 49

- 42 -

8 GND

7 VCC

21 AREF

20 AVCC

22 GND

1 PC6(/RESET)

9 XTAL1

10 XTAL2

PB0...PB7

8

PC0...PC6

7

PD0...PD7

8

100nF

10µH*

100nF

4MHz

10k

22pF

22pF

+5V

+5V

+5V

*ersatzweise ein Widerstand 47Ohm

ATmega8Bild 3.4: Beschaltung

Weitere Anwendungsmöglichkeiten des ATmega8: Im integrierten EEPROM können Daten gespeichert werden, welche nach Wegnahme der Betriebsspannung erhalten bleiben sollen. Der A/D-Wandler gestattet die Erfassung analoger Werte von 6 unterschiedlichen Quellen. Die erforderliche Referenzspannung ist ebenfalls integriert, kann aber auch von außen zugeschaltet werden. Ein Analogkomparator wertet den Vergleich zweier analoger Spannungen aus (für verschiedene Messzwecke geeignet). Der MCU besitzt 3 integrierte Timer für zeitkritische Anwendungen. Die Timer ermöglichen beispielsweise die Realisierung einer Uhr (RTC = real time clock). Timer lassen sich auch zur Pulsweitenmodulation (PWM) einsetzen um analoge Werte auszugeben oder für die Drehzahlsteuerung von Gleichstrommotoren. Für die asynchrone Datenübertragung steht ein USART (serielle Schnittstelle, full duplex) zur Verfügung. Darüber lässt sich beispielsweise eine Verbindung zur COM-Schnittstelle eines PC‘s herstellen. Über ein Zweidraht Bussystem (TWI) lässt sich der Mikrocontroller mit vielen andern integrierten Bausteinen verbinden, die dieses Bussystem (I2C) unterstützen. Der Watchdog-Timer ist in der Lage die Zykluszeit eines Programms zu überwachen, um nach einer Störung in der Anlage eine entsprechende Reaktion auszulösen. Interne oder externe Ereignisse können einen Interrupt auslösen (z.B.: Empfang eines Zeichens über die serielle Schnittstelle oder Überlauf eines Timers,...). Eine leistungsfähige Interrupt-Einheit ermöglicht die Verarbeitung solcher Ereignisse, bei welchen das laufende Programm unterbrochen und eine spezielle Service-Routine zur Verarbeitung aufgerufen wird. Die hier dargestellten Anwendungsmöglichkeiten erheben keinen Anspruch auf Vollständigkeit. Auf viele Anwendungen wird in späteren Kapiteln eingegangen. Es empfiehlt sich die in diesem Kapitel dargestellten Programmfragmente mit dem AVR-Studio4-Simulator/Debugger zu testen!

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Der ATmega8 - Befehlssatz Seite 43 von 49

- 43 -

Mnemonics Operands Description Operation Flags #Clocks ARITHMETIC AND LOGIC INSTRCTIONS

ADD Rd, Rr Rd ← Rd + Rr Add two Registers Z,C,N,V,H 1

ADC Rd, Rr Rd ← Rd + Rr + C Add with Carry two Registers Z,C,N,V,H 1

ADIW Rdl,K Rdh:Rdl ← Rdh:Rdl + K Add Immediate to Word Z,C,N,V,S 2

SUB Rd, Rr Rd ← Rd - Rr Subtract two Registers Z,C,N,V,H 1

SUBI Rd, K Rd ← Rd - K Subtract Constant from Register Z,C,N,V,H 1

SBC Rd, Rr Rd ← Rd - Rr - C Subtract with Carry two Registers Z,C,N,V,H 1

SBCI Rd, K Rd ← Rd - K - C Subtract with Carry Constant from Reg. Z,C,N,V,H 1

SBIW Rdl,K Rdh:Rdl ← Rdh:Rdl - K Subtract Immediate from Word Z,C,N,V,S 2

AND Rd, Rr Rd ← Rd • Rr Logical AND Registers Z,N,V 1

ANDI Rd, K Rd ← Rd • K Logical AND Register and Constant Z,N,V 1

OR Rd, Rr Rd ← Rd v Rr Logical OR Registers Z,N,V 1

ORI Rd, K Rd ← Rd v K Logical OR Register and Constant Z,N,V 1

EOR Rd, Rr Rd ← Rd ⊕ Rr Exclusive OR Registers Z,N,V 1

COM Rd Rd ← 0xFF − Rd One’s Complement Z,C,N,V 1

NEG Rd Rd ← 0x00 − Rd Two’s Complement Z,C,N,V,H 1

SBR Rd,K Rd ← Rd v K Set Bit(s) in Register Z,N,V 1

CBR Rd,K Rd ← Rd • (0xFF - K) Clear Bit(s) in Register Z,N,V 1

INC Rd Rd ← Rd + 1 Increment Z,N,V 1

DEC Rd Rd ← Rd − 1 Decrement Z,N,V 1

TST Rd Rd ← Rd • Rd Test for Zero or Minus Z,N,V 1

CLR Rd Rd ← Rd ⊕ Rd Clear Register Z,N,V 1

SER Rd Rd ← 0xFF Set Register None 1

MUL Rd, Rr R1:R0 ← Rd x Rr Multiply Unsigned Z,C 2

MULS Rd, Rr R1:R0 ← Rd x Rr Multiply Signed Z,C 2

MULSU Rd, Rr R1:R0 ← Rd x Rr Multiply Signed with Unsigned Z,C 2

FMUL Rd, Rr R1:R0 ← (Rd x Rr) << 1 Fractional Multiply Unsigned Z,C 2

FMULS Rd, Rr R1:R0 ← (Rd x Rr) << 1 Fractional Multiply Signed Z,C 2

FMULSU Rd, Rr R1:R0 ← (Rd x Rr) << 1 Fractional Multiply Signed with Unsigned Z,C 2

BRANCH INSTRUCTIONS RJMP k PC ← PC + k + 1 Relative Jump None 2

IJMP PC ← Z Indirect Jump to (Z) None 2

RCALL k PC ← PC + k + 1 Relative Subroutine Call None 3

ICALL PC ← Z Indirect Call to (Z) None 3

RET PC ← STACK Subroutine Return None 4

RETI PC ← STACK Interrupt Return I 4

CPSE Rd,Rr if (Rd = Rr) PC ← PC + 2 or 3 Compare, Skip if Equal None 1 / 2 / 3

CP Rd,Rr Rd − Rr Compare Z, N,V,C,H 1

CPC Rd,Rr Rd − Rr − C Compare with Carry Z, N,V,C,H 1

CPI Rd,K Rd − K Compare Register with Immediate Z, N,V,C,H 1

SBRC Rr, b if (Rr(b)=0) PC ← PC + 2 or 3 Skip if Bit in Register Cleared None 1 / 2 / 3

SBRS Rr, b if (Rr(b)=1) PC ← PC + 2 or 3 Skip if Bit in Register is Set None 1 / 2 / 3

SBIC P, b if (P(b)=0) PC ← PC + 2 or 3 Skip if Bit in I/O Register Cleared None 1 / 2 / 3

SBIS P, b if (P(b)=1) PC ← PC + 2 or 3 Skip if Bit in I/O Register is Set None 1 / 2 / 3

BRBS s, k if (SREG(s) = 1) then PC←PC+k + 1 Branch if Status Flag Set None 1 / 2

BRBC s, k if (SREG(s) = 0) then PC←PC+k + 1 Branch if Status Flag Cleared None 1 / 2

BREQ k if (Z = 1) then PC ← PC + k + 1 Branch if Equal None 1 / 2

BRNE k if (Z = 0) then PC ← PC + k + 1 Branch if Not Equal None 1 / 2

BRCS k if (C = 1) then PC ← PC + k + 1 Branch if Carry Set None 1 / 2

BRCC k if (C = 0) then PC ← PC + k + 1 Branch if Carry Cleared None 1 / 2

BRSH k if (C = 0) then PC ← PC + k + 1 Branch if Same or Higher None 1 / 2

BRLO k if (C = 1) then PC ← PC + k + 1 Branch if Lower None 1 / 2

BRMI k if (N = 1) then PC ← PC + k + 1 Branch if Minus None 1 / 2

BRPL k if (N = 0) then PC ← PC + k + 1 Branch if Plus None 1 / 2

BRGE k if (N ⊕ V= 0) then PC ← PC + k + 1 Branch if Greater or Equal, Signed None 1 / 2

BRLT k if (N ⊕ V= 1) then PC ← PC + k + 1 Branch if Less Than Zero, Signed None 1 / 2

BRHS k if (H = 1) then PC ← PC + k + 1 Branch if Half Carry Flag Set None 1 / 2

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Der ATmega8 - Befehlssatz Seite 44 von 49

- 44 -

Mnemonics Operands Description Operation Flags #Clocks BRHC k if (H = 0) then PC ← PC + k + 1 Branch if Half Carry Flag Cleared None 1 / 2

BRTS k if (T = 1) then PC ← PC + k + 1 Branch if T Flag Set None 1 / 2

BRTC k if (T = 0) then PC ← PC + k + 1 Branch if T Flag Cleared None 1 / 2

BRVS k if (V = 1) then PC ← PC + k + 1 Branch if Overflow Flag is Set None 1 / 2

BRVC k if (V = 0) then PC ← PC + k + 1 Branch if Overflow Flag is Cleared None 1 / 2

BRIE k Branch if Interrupt Enabled if ( I = 1) then PC ← PC + k + 1 None 1 / 2

BRID k Branch if Interrupt Disabled if ( I = 0) then PC ← PC + k + 1 None 1 / 2

DATA TRANSFER INSTRUCTIONS MOV Rd, Rr Move Between Registers Rd ← Rr None 1

MOVW Rd, Rr Copy Register Word Rd+1:Rd ← Rr+1:Rr None 1

LDI Rd, K Load Immediate Rd ← K None 1

LD Rd, X Load Indirect Rd ← (X) None 2

LD Rd, X+ Load Indirect and Post-Inc. Rd ← (X), X ← X + 1 None 2

LD Rd, - X Load Indirect and Pre-Dec. X ← X - 1, Rd ← (X) None 2

LD Rd, Y Load Indirect Rd ← (Y) None 2

LD Rd, Y+ Load Indirect and Post-Inc. Rd ← (Y), Y ← Y + 1 None 2

LD Rd, - Y Load Indirect and Pre-Dec. Y ← Y - 1, Rd ← (Y) None 2

LDD Rd,Y+q Load Indirect with Displacement Rd ← (Y + q) None 2

LD Rd, Z Load Indirect Rd ← (Z) None 2

LD Rd, Z+ Load Indirect and Post-Inc. Rd ← (Z), Z ← Z+1 None 2

LD Rd, -Z Load Indirect and Pre-Dec. Z ← Z - 1, Rd ← (Z) None 2

LDD Rd, Z+q Load Indirect with Displacement Rd - (Z + q) None 2

LDS Rd, k Load Direct from SRAM Rd ← (k) None 2

ST X, Rr Store Indirect (X) ← Rr None 2

ST X+, Rr Store Indirect and Post-Inc. (X) ← Rr, X ← X + 1 None 2

ST - X, Rr Store Indirect and Pre-Dec. X ← X - 1, (X) ← Rr None 2

ST Y, Rr Store Indirect (Y) ← Rr None 2

ST Y+, Rr Store Indirect and Post-Inc. (Y) ← Rr, Y ← Y + 1 None 2

ST - Y, Rr Store Indirect and Pre-Dec. - None 2

STD Y+q,Rr Store Indirect with Displacement (Y + q) ← Rr None 2

ST Z, Rr Store Indirect (Z) ← Rr None 2

ST Z+, Rr Store Indirect and Post-Inc. (Z) ← Rr, Z ← Z + 1 None 2

ST -Z, Rr Store Indirect and Pre-Dec. Z ← Z - 1, (Z) ← Rr None 2

STD Z+q,Rr Store Indirect with Displacement (Z + q) ← Rr None 2

STS k, Rr Store Direct to SRAM (k) ← Rr None 2

LPM Load Program Memory R0 ← (Z) None 3

LPM Rd, Z Load Program Memory Rd ← (Z) None 3

LPM Rd, Z+ Load Program Memory and Post-Inc Rd ← (Z), Z ← Z+1 None 3

SPM Store Program Memory (Z) ← R1:R0 None -

IN Rd, P In Port Rd ← P None 1

OUT P, Rr Out Port P ← Rr None 1

PUSH Rr Push Register on Stack STACK ← Rr None 2

POP Rd Pop Register from Stack Rd ← STACK None 2

BIT AND BIT-TEST INSTRUCTIONS SBI P,b Set Bit in I/O Register I/O(P,b) ← 1 None 2

CBI P,b Clear Bit in I/O Register I/O(P,b) ← 0 None 2

LSL Rd Logical Shift Left Rd(n+1) ← Rd(n), Rd(0) ← 0 Z,C,N,V 1

LSR Rd Logical Shift Right Rd(n) ← Rd(n+1), Rd(7) ← 0 Z,C,N,V 1

ROL Rd Rotate Left Through Carry Rd(0)←C,Rd(n+1 )← Rd(n),C←Rd(7) Z,C,N,V 1

ROR Rd Rotate Right Through Carry Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) Z,C,N,V 1

ASR Rd Arithmetic Shift Right Rd(n) ← Rd(n+1), n=0:6 Z,C,N,V 1

SWAP Rd Swap Nibbles Rd(3:0)←Rd(7:4),Rd(7:4)←Rd(3:0) None 1

BSET s Flag Set SREG(s) ← 1 SREG(s) 1

BCLR s Flag Clear SREG(s) ← 0 SREG(s) 1

BST Rr, b Bit Store from Register to T T ← Rr(b) T 1

BLD Rd, b Bit load from T to Register Rd(b) ← T None 1

SEC Set Carry C ← 1 C 1

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Der ATmega8 - Befehlssatz Seite 45 von 49

- 45 -

Mnemonics Operands Description Operation Flags #Clocks CLC Clear Carry C ← 0 C 1

SEN Set Negative Flag N ← 1 N 1

CLN Clear Negative Flag N ← 0 N 1

SEZ Set Zero Flag Z ← 1 Z 1

CLZ Clear Zero Flag Z ← 0 Z 1

SEI Global Interrupt Enable I ← 1 I 1

CLI Global Interrupt Disable I ← 0 I 1

SES Set Signed Test Flag S ← 1 S 1

CLS Clear Signed Test Flag S ← 0 S 1

SEV Set Twos Complement Overflow. V ← 1 V 1

CLV Clear Twos Complement Overflow V ← 0 V 1

SET Set T in SREG T ← 1 T 1

CLT Clear T in SREG T ← 0 T 1

SEH Set Half Carry Flag in SREG H ← 1 H 1

CLH Clear Half Carry Flag in SREG H ← 0 H 1

MCU CONTROL INSTRUCTIONS NOP No Operation None 1

SLEEP Sleep (see specific descr. for Sleep function) None 1

WDR Watchdog Reset (see specific descr. for WDR/timer) None 1

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Der ATmega8 - I/O-Register Seite 46 von 49

- 46 -

Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bi t 1 Bit 0

0x3F (0x5F) SREG I T H S V N Z C

0x3E (0x5E) SPH – – – – – SP10 SP9 SP8

0x3D (0x5D) SPL SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0

0x3C (0x5C) Reserved

0x3B (0x5B) GICR INT1 INT0 – – – – IVSEL IVCE

0x3A (0x5A) GIFR INTF1 INTF0 – – – – – –

0x39 (0x59) TIMSK OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 – TOIE0

0x38 (0x58) TIFR OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 – TOV0

0x37 (0x57) SPMCR SPMIE RWWSB – RWWSRE BLBSET PGWRT PGERS SPMEN

0x36 (0x56) TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN – TWIE

0x35 (0x55) MCUCR SE SM2 SM1 SM0 ISC11 ISC10 ISC01 ISC00

0x34 (0x54) MCUCSR – – – – WDRF BORF EXTRF PORF

0x33 (0x53) TCCR0 – – – – – CS02 CS01 CS00

0x32 (0x52) TCNT0 Timer/Counter0 (8 Bits)

0x31 (0x51) OSCCAL Oscillator Calibration Register

0x30 (0x50) SFIOR – – – – ACME PUD PSR2 PSR10

0x2F (0x4F) TCCR1A COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10

0x2E (0x4E) TCCR1B ICNC1 ICES1 – WGM13 WGM12 CS12 CS11 CS10

0x2D (0x4D) TCNT1H Timer/Counter1 – Counter Register High byte

0x2C (0x4C) TCNT1L Timer/Counter1 – Counter Register Low byte

0x2B (0x4B) OCR1AH Timer/Counter1 – Output Compare Register A High byte

0x2A (0x4A) OCR1AL Timer/Counter1 – Output Compare Register A Low byte

0x29 (0x49) OCR1BH Timer/Counter1 – Output Compare Register B High byte

0x28 (0x48) OCR1BL Timer/Counter1 – Output Compare Register B Low byte

0x27 (0x47) ICR1H Timer/Counter1 – Input Capture Register High byte

0x26 (0x46) ICR1L Timer/Counter1 – Input Capture Register Low byte

0x25 (0x45) TCCR2 FOC2 WGM20 COM21 COM20 WGM21 CS22 CS21 CS20

0x24 (0x44) TCNT2 Timer/Counter2 (8 Bits)

0x23 (0x43) OCR2 Timer/Counter2 Output Compare Register

0x22 (0x42) ASSR – – – – AS2 TCN2UB OCR2UB TCR2UB

0x21 (0x41) WDTCR – – – WDCE WDE WDP2 WDP1 WDP0

0x20 (0x40) UBRRH URSEL – – – UBRR[11:8]

UCSRC URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL

0x1F (0x3F) EEARH – – – – – – – EEAR8

0x1E (0x3E) EEARL EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0

0x1D (0x3D) EEDR EEPROM Data Register

0x1C (0x3C) EECR – – – – EERIE EEMWE EEWE EERE

0x1B (0x3B) Reserved

0x1A (0x3A) Reserved

0x19 (0x39) Reserved

0x18 (0x38) PORTB PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0

0x17 (0x37) DDRB DDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0

0x16 (0x36) PINB PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0

0x15 (0x35) PORTC – PORTC6 PORTC5 PORTC4 PORTC3 PORTC2 PORTC1 PORTC0

0x14 (0x34) DDRC – DDC6 DDC5 DDC4 DDC3 DDC2 DDC1 DDC0

0x13 (0x33) PINC – PINC6 PINC5 PINC4 PINC3 PINC2 PINC1 PINC0

0x12 (0x32) PORTD PORTD7 PORTD6 PORTD5 PORTD4 PORTD3 PORTD2 PORTD1 PORTD0

0x11 (0x31) DDRD DDD7 DDD6 DDD5 DDD4 DDD3 DDD2 DDD1 DDD0

0x10 (0x30) PIND PIND7 PIND6 PIND5 PIND4 PIND3 PIND2 PIND1 PIND0

0x0F (0x2F) SPDR SPI Data Register

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Der ATmega8 - I/O-Register Seite 47 von 49

- 47 -

Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bi t 1 Bit 0

0x0E (0x2E) SPSR SPIF WCOL – – – – – SPI2X

0x0D (0x2D) SPCR SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0

0x0C (0x2C) UDR USART I/O Data Register

0x0B (0x2B) UCSRA RXC TXC UDRE FE DOR PE U2X MPCM

0x0A (0x2A) UCSRB RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8

0x09 (0x29) UBRRL USART Baud Rate Register Low byte

0x08 (0x28) ACSR ACD ACBG ACO ACI ACIE ACIC ACIS1 ACIS0

0x07 (0x27) ADMUX REFS1 REFS0 ADLAR – MUX3 MUX2 MUX1 MUX0

0x06 (0x26) ADCSRA ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0

0x05 (0x25) ADCH ADC Data Register High byte

0x04 (0x24) ADCL ADC Data Register Low byte

0x03 (0x23) TWDR Two-wire Serial Interface Data Register

0x02 (0x22) TWAR TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE

0x01 (0x21) TWSR TWS7 TWS6 TWS5 TWS4 TWS3 – TWPS1 TWPS0

0x00 (0x20) TWBR Two-wire Serial Interface Bit Rate Register

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

ASCII - Zeichentabelle Seite 48 von 49

- 48 -

Dez Hex

Dez Hex

Dez Hex

Dez Hex

0 0x00 NUL 32 0x20 SP 64 0x40 @ 96 0x60 `

1 0x01 SOH 33 0x21 ! 65 0x41 A 97 0x61 a

2 0x02 STX 34 0x22 " 66 0x42 B 98 0x62 b

3 0x03 ETX 35 0x23 # 67 0x43 C 99 0x63 c

4 0x04 EOT 36 0x24 $ 68 0x44 D 100 0x64 d

5 0x05 ENQ 37 0x25 % 69 0x45 E 101 0x65 e

6 0x06 ACK 38 0x26 & 70 0x46 F 102 0x66 f

7 0x07 BEL 39 0x27 ' 71 0x47 G 103 0x67 g

8 0x08 BS 40 0x28 ( 72 0x48 H 104 0x68 h

9 0x09 TAB 41 0x29 ) 73 0x49 I 105 0x69 i

10 0x0A LF 42 0x2A * 74 0x4A J 106 0x6A j

11 0x0B VT 43 0x2B + 75 0x4B K 107 0x6B k

12 0x0C FF 44 0x2C , 76 0x4C L 108 0x6C l

13 0x0D CR 45 0x2D - 77 0x4D M 109 0x6D m

14 0x0E SO 46 0x2E . 78 0x4E N 110 0x6E n

15 0x0F SI 47 0x2F / 79 0x4F O 111 0x6F o

16 0x10 DLE 48 0x30 0 80 0x50 P 112 0x70 p

17 0x11 DC1 49 0x31 1 81 0x51 Q 113 0x71 q

18 0x12 DC2 50 0x32 2 82 0x52 R 114 0x72 r

19 0x13 DC3 51 0x33 3 83 0x53 S 115 0x73 s

20 0x14 DC4 52 0x34 4 84 0x54 T 116 0x74 t

21 0x15 NAK 53 0x35 5 85 0x55 U 117 0x75 u

22 0x16 SYN 54 0x36 6 86 0x56 V 118 0x76 v

23 0x17 ETB 55 0x37 7 87 0x57 W 119 0x77 w

24 0x18 CAN 56 0x38 8 88 0x58 X 120 0x78 x

25 0x19 EM 57 0x39 9 89 0x59 Y 121 0x79 y

26 0x1A SUB 58 0x3A : 90 0x5A Z 122 0x7A z

27 0x1B ESC 59 0x3B ; 91 0x5B [ 123 0x7B {

28 0x1C FS 60 0x3C < 92 0x5C \ 124 0x7C |

29 0x1D GS 61 0x3D = 93 0x5D ] 125 0x7D }

30 0x1E RS 62 0x3E > 94 0x5E ^ 126 0x7E ~

31 0x1F US 63 0x3F ? 95 0x5F _ 127 0x7F DEL

www.lmt-verlag.de

Mikrocomputertechnik © Udo John

Experimentierboards Seite 49 von 49

- 49 -

myAVR Board light, als Bausatz Das Board ist ausgestattet mit einem ATmega8, 3 LED’s, 2 Potentiometer als Analogwertgeber, 2 Taster, 1 Summer, 1 Lichtsensor und einem USB für den PC. Die Programmierung erfolgt über den USB-Anschluss des PC. Die Software ist kostenfrei. Der ATmega8 kann während der Programmierung in der Schaltung verbleiben. Passende Kabel sind im Shop erhältlich. Die Spannungsversorgung erfolgt über den USB-Anschluss.

myAVR Board MK2 USB, bestückt oder als Bausatz Ausstattung wie myAVR Board light, jedoch mit USB-Programmer. Die Programmierung, die serielle Kommunikation und die Spannungsversorgung erfolgt über eine USB-Schnittstelle des PC oder über Batterie bzw. Netzteil. Die Programmierung ist direkt aus der Entwicklungsumgebung AVR-Studio4 möglich.

AVR-Multi-IO-Karte (Bausatz) Mit diesem Bausatz lassen sich alle Beispiele und Übungen des Buches „Mikrocomputertechnik - Das Praxisbuch -„ realisieren. Er enthält eine durchkontaktierte und gebohrte Platine zur einfachen Bestückung. Der Anschluss an die myAVR-Boards erfolgt über eine Stiftleiste.Der Bausatz enthält alle Bauteile für eine 6-stellige-7-Segment-Anzeige, einen 8-poligen DIP-Schalter, eine weitere einzelne 7-Segment-Anzeige und 8 LED’s.