28.02.2014 Aufrufe

Maschinenorientierte Programmierung - Termin 11, 16.12.2013

Maschinenorientierte Programmierung - Termin 11, 16.12.2013

Maschinenorientierte Programmierung - Termin 11, 16.12.2013

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Prof. Dr. Sven-Hendrik Voß | Wintersemester 2013<br />

Technische Informatik (Bachelor), Semester 2 <strong>Termin</strong> <strong>11</strong>, <strong>16.12.2013</strong><br />

<strong>Maschinenorientierte</strong> <strong>Programmierung</strong>


Seite 2 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Inhaltsverzeichnis<br />

Themen und <strong>Termin</strong>e<br />

Lernziele<br />

Datenkommunikation<br />

Parallele Datenübertragung<br />

Serielle Datenübertragung<br />

Serielle Schnittstelle<br />

Asynchrone Datenübertragung<br />

Synchrone Datenübertragung<br />

Serielle Schnittstelle des 8015<br />

SFR für serielle Schnittstelle<br />

Konfigurationsmodi<br />

Empfangen und Versenden von Daten<br />

Erzeugung der Baudrate<br />

Zusammenfassung


Seite 3 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Themen und <strong>Termin</strong>e - Seminaristischer Unterricht<br />

Seminaristischer Unterricht (SU) im Raum B-254, montags 10:00 - <strong>11</strong>:30 Uhr<br />

<strong>Termin</strong> Datum Themen<br />

1 07.10. Organisatorisches, Nachtrag sequentielle Logik<br />

2 14.10. Einführung, Rechnerarchitekturen<br />

3 21.10. Befehlsausführung und Organisationsprinzipien<br />

4 28.10. Adressierung und Maschinenprogrammierung<br />

5 04.<strong>11</strong>. Programmiermodell des 8051 Mikrocontrollers<br />

6 <strong>11</strong>.<strong>11</strong>. Assemblersyntax des 8051<br />

7 18.<strong>11</strong>. Assemblersyntax und Betriebsmodi des 8051<br />

8 25.<strong>11</strong>. I/O Port-<strong>Programmierung</strong>, Umgang mit Instruktionen und Programme<br />

9 02.12. Interrupt-<strong>Programmierung</strong><br />

10 09.12. Timer- und Counter-<strong>Programmierung</strong><br />

<strong>11</strong> 16.12. Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen<br />

23.12. fällt aus (Weihnachtsferien)<br />

30.12. fällt aus (Weihnachtsferien)<br />

12 06.01. Benutzung der seriellen Schnittstelle, Timer, Interrupts<br />

13 13.01. Praxisbeispiele<br />

14 20.01. Hardwarenahe <strong>Programmierung</strong> in C<br />

15 27.01. Wiederholung und Klausurvorbereitung<br />

16 03.02. Klausur<br />

17 10.02. Klausurrückgabe und Besprechung


Seite 4 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Lernziele<br />

Nach diesem <strong>Termin</strong> sollten Sie...<br />

◮<br />

◮<br />

◮<br />

Grundbegriffe der Datenkommunikation verinnerlicht haben<br />

die prinzipiellen Vorgänge bei der<br />

Seriellen-Schnittstellen-<strong>Programmierung</strong> verstanden haben<br />

Programme zum Senden und Empfangen über die serielle Schnittstelle<br />

schreiben können


Seite 5 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Datenkommunikation<br />

Datenübertragung<br />

Signal Gleichlauf Zeichenübertragung Betrieb<br />

analog<br />

asynchron<br />

1 1 1 0 1 1 0 1<br />

bitseriell<br />

simplex<br />

1<br />

digital<br />

synchron<br />

0<br />

1<br />

1<br />

bitparallel<br />

halbduplex<br />

0<br />

vollduplex<br />

Kern der Datenkommunikation: Transport von Daten → Datenübertragung<br />

von einem Sender mittels eines Übertragungskanals zu einem Empfänger<br />

In der Praxis: unterschiedliche Übertragungsmethoden, -ausführungen,<br />

-geschwindigkeiten


Seite 6 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Parallele Datenübertragung<br />

Mehrere Bits werden zeitgleich über mehrere Datenleitungen übertragen<br />

Anzahl der Datenleitungen meist Vielfache von 8 (Byte-Struktur!) plus ggf.<br />

zusätzliche Kanäle für Parität, Taktsignal, etc.<br />

Beispiel: 8-Bit breite parallele Datenübertragung<br />

MSB<br />

LSB<br />

Sender<br />

0<br />

0<br />

1<br />

0<br />

1<br />

1<br />

0<br />

1<br />

Empfänger<br />

0<br />

0<br />

1<br />

0<br />

1<br />

1<br />

0<br />

1<br />

MSB<br />

LSB


Seite 7 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Serielle Datenübertragung<br />

Einzelne Bits werden über eine Leitung zeitlich nacheinander übertragen<br />

Am Sender müssen Bytes in serielle Bits konvertiert werden<br />

(Parallel-Seriell-Wandler, Schieberegister), am Empfänger ist eine<br />

Seriell-Parallel-Wanldung nötig<br />

Bit-Reihenfolge und Byte-Reihenfolge müssen beachtet werden<br />

Beispiel: bitweise Datenübertragung (LSB first)<br />

Sender<br />

Empfänger<br />

MSB<br />

LSB<br />

0<br />

0<br />

1<br />

0<br />

1<br />

1<br />

0<br />

1<br />

zeitlich nacheinander (seriell)<br />

0 0 1 0 1 1 0 1<br />

MSB<br />

LSB<br />

0<br />

0<br />

1<br />

0<br />

1<br />

1<br />

0<br />

1<br />

MSB<br />

LSB


Seite 8 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Serielle Schnittstelle<br />

Für serielle Schnittstellen werden häufig folgende Abkürzungen verwendet:<br />

◮<br />

◮<br />

UART: Universal Asynchronous Receiver Transmitter<br />

USART: Universal Synchronous/Asynchronous Receiver Transmitter<br />

U(S)ART: Art der seriellen Datenübertragung auf logischer Ebene<br />

◮<br />

◮<br />

unabhängig von Spannungen (5V TTL-, 3V CMOS-Pegel, etc.)<br />

unabhängig von IO-Standards (RS232, optisch, high oder low aktiv, etc.)<br />

RS232: Schnittstellenstandard (Datenübertragung auf elektrischer Ebene)<br />

◮<br />

◮<br />

◮<br />

◮<br />

Festlegung von Übertragungspegeln: +/-12V Pegel, bipolar pro Leitung,<br />

low-aktiv<br />

Definition von Signalen: 2 Datenleitungen und viele Steuerleitungen<br />

Festlegung des physikalischen Interface: 9-poliger DSUB-Stecker (ältere<br />

Systeme: 25-poliger Stecker)<br />

Festlegung von Reichweite: üblicherweise 6-8 Meter


Seite 9 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Serielle Schnittstelle<br />

Controller Board<br />

Mikrocontroller<br />

UART<br />

TxD<br />

RxD<br />

RS232<br />

Transceiver<br />

DSUB9<br />

Buchse<br />

Verbindung<br />

zum PC o.ä.<br />

Bidirektionale UART benötigt 2 Daten-Leitungen und Masse (GND)<br />

◮<br />

”<br />

TxD“ (Transmit Data = Daten Senden) - P3.0 (Port 3)<br />

◮<br />

”<br />

RxD“ (Receive Data = Daten Empfangen) - P3.1 (Port 3)


Seite 10 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Serielle Schnittstelle<br />

Controller Board<br />

Mikrocontroller<br />

UART<br />

RS232<br />

Pegelwandlung!<br />

Transceiver<br />

TxD<br />

RxD<br />

DSUB9<br />

Buchse<br />

Verbindung<br />

zum PC o.ä.<br />

5V TTL<br />

Pegel<br />

RS232<br />

Pegel<br />

(+/-12V)<br />

Signale direkt am Mikrocontroller sind (fast immer) CMOS- oder TTL-Pegel<br />

◮<br />

kein direkter Anschluss einer RS232-Schnittstelle o.ä. möglich<br />

Für verschiedene Schnittstellen existieren passende Treiber/Receiver ICs<br />

◮<br />

Pegelwandung für Kompatibilität mit RS232-Schnittstelle


Seite <strong>11</strong> Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Serielle Schnittstelle<br />

RS232-Schnittstelle über DSUB9 Buchse<br />

RS232 Stecker DSUB9<br />

Pin Beschreibung<br />

1 Data carrier detect (DCD)<br />

2 Recieved data (RxD)<br />

3 Transmitted data (TxD)<br />

4 Data terminal ready (DTR)<br />

5 Signal ground (GND)<br />

6 Data set ready (DSR)<br />

7 Request to send (RTS)<br />

8 Clear to send (CTS)<br />

9 Ring indicator (RI)


Seite 12 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Asynchrone Datenübertragung<br />

Zeichensynchronisation: Empfangstakt synchronisiert sich nach jedem<br />

übertragenen Zeichen erneut mit Sendetakt<br />

Zur Synchronisation der Datenübertragung wird ein Start Bit (0) sowie ein<br />

oder mehrere Stop Bits (1) benötigt<br />

Folgendes muss im Vorfeld der Übertragung bekannt sein:<br />

◮<br />

◮<br />

◮<br />

Schrittgeschwindigkeit (Baudrate)<br />

Anzahl Datenbytes pro Zeichen<br />

Parität<br />

◮ Anzahl Stop Bits (üblicherweise 1 oder 2)<br />

Erkennbar: gesenkte Übertragungsrate, da z.B. für 8 Informationsbits mind.<br />

10 Bits über die Leitung gesendet werden müssen (25% Overhead)


Seite 13 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Asynchrone Datenübertragung<br />

Zeichenfolge besteht aus einer Folge von Datenbits, die für jedes Zeichen<br />

von Start- und Stop Bit eingerahmt werden<br />

Zwischen zwei aufeinanderfolgenden Zeichen können beliebig lange Pausen<br />

sein, da Beginn eines Zeichens am Start Bit eindeutig erkannt wird<br />

T<br />

E S T<br />

0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 1 0 1 1 0 1 1 0 0 1 0 1 0 1 1 0 0 0 1 0 1 0 1 0 1 1<br />

Start Bit<br />

Datenbits<br />

Datenbits<br />

Datenbits<br />

Datenbits<br />

Start Bit Start Bit Start Bit<br />

Stop Bits Stop Bits Stop Bits Stop Bits<br />

Datenstrom asynchron


Seite 14 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Asynchrone Datenübertragung<br />

Ablauf bei asynchroner Datenübertragung<br />

◮ Leitung liegt im Ruhezustand immer auf logisch 1<br />

◮ jedem Zeichen ist ein Start Bit vorangestelt (immer Wert 0)<br />

→ Empfangsbaustein erkennt wann ein Zeichen ankommt<br />

◮<br />

◮<br />

Datenbits in LSB-first Reihenfolge<br />

nach Datenbits folgt optional Prüfbit (Parity)<br />

◮ letztlich folgen 1 oder 2 Stop Bits (immer Wert 1)<br />

→ somit Trennung zum nächsten Start Bit


Seite 15 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Synchrone Datenübertragung<br />

Übertragung wird mit einem Taktsignal zeitlich synchronisiert → kein Start<br />

bzw. Stop Bit nötig, auch Schrittgeschwindigkeit (Baudrate) muss nicht<br />

zwangsläufig bekannt sein<br />

Rahmensynchronisation: Empfangstakt synchronisiert sich erst nach<br />

Übertragung eines größeren Datenblocks erneut mit Sendetakt<br />

Damit: höherer Datendurchsatz, da mehrere hundert Bytes ohne Pause<br />

zwischen einzelnen Zeichen übertragen werden (ohne Redundanz)<br />

Man unterscheidet zwischen zwei Protokollklassen<br />

◮<br />

◮<br />

Zeichenorientierte Übertragung<br />

Bitorientierte Übertragung


Seite 16 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Synchrone Datenübertragung<br />

Zeichenfolge besteht aus einer Folge von Datenbits, die hintereinander als<br />

Ganzes übertragen wird<br />

Sender und Empfänger müssen nur am Anfang der Übertragung durch eine<br />

vereinbarte Bitfolge synchronisiert werden (oder per separater Taktleitung)<br />

T<br />

E S T<br />

0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0<br />

Datenstrom synchron


Seite 17 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Synchrone Datenübertragung<br />

Ablauf bei synchroner Datenübertragung<br />

◮<br />

◮<br />

◮<br />

◮<br />

◮<br />

Taktsignal oder Synchronisation zu Beginn der Datenübertragung nötig<br />

→ damit Empfangsbaustein Anfang einzelner Zeichen erkennt<br />

Synchronisation geschieht durch Übertragung einiger<br />

Synchronisationszeichen<br />

wenn keine Daten zur Übertragung anstehen: Idle-Sequenz zur<br />

Synchronisation<br />

synchrone Übertragung erfolgt blockweise (Datenblock durch<br />

Blocksicherungszeichen (Prüfsumme, CRC) und Blockendekennzeichnung<br />

markiert)<br />

Datenbits in LSB-first Reihenfolge


Seite 18 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Serielle Schnittstelle des 8015<br />

Serielle Schnittstelle des 8051 ist eine Vollduplex-Schnittstelle (zeitgleiches<br />

Versenden und Empfangen von Daten möglich)<br />

Schnittstelle besitzt einen Empfangspuffer → weiteres Datenbyte kann<br />

empfangen werden, obwohl letztes Byte noch nicht ausgelesen wurde<br />

<strong>Programmierung</strong> (SCON) und Datentransfer (SBUF) der seriellen<br />

Schnittstelle erfolgt über SFRs<br />

Ein/Ausgabepufferregister SBUF: physikalisch zwei Register, aber nur eine<br />

Adresse<br />

Betrieb in 4 verschiedenen Modi: 1x synchron, 3x asynchron<br />

Baudrate der seriellen Schnittstelle kann über verschiedene Möglichkeiten<br />

erzeugt werden:<br />

◮<br />

◮<br />

Baudrate wird von der Oszillatorfrequenz abgeleitet<br />

Baudrate wird mittels Timer 1 erzeugt


Seite 19 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

SFR für serielle Schnittstelle<br />

Special Function Register SCON<br />

◮<br />

◮<br />

◮<br />

an Adresse 98h, bitadressierbar<br />

Reset Wert 00h<br />

Kontroll- und Statusregister für die serielle Schnittstelle<br />

Serial Control Register<br />

SCON<br />

MSB<br />

SM0 SM1 SM2 REN TB8 RB8 TI RI LSB<br />

SM0, SM1 Auswahl der 4 Betriebs-Modi 0, 1, 2, 3<br />

SM2 Hilfsbit für Multicontroller-Kommunikation: bei Modus 0 Wert 0, bei Modus 1 Wert 1, bei<br />

Modi 2 und 3 Wert 1: RI wird nicht aktiviert, wenn empfangenes Datenbit 9 Wert 0 hat<br />

REN generelle Empfangsfreigabe: Wert 1 für Empfang zugelassen, Wert 0 für nicht zugelassen<br />

TB8 zu sendendes Datenbit 9 (Modi 2 und 3)<br />

RB8 empf. Datenbit 9 (Modi 2 und 3) oder Stop Bit (Modus 1); in Modus 0 nicht verwendet<br />

TI<br />

Transmit Interrupt: wird in Mode 0 bei Bit 8 automatisch gesetzt, in anderen Modi bei Stop<br />

Bits; manuelles Löschen notwendig<br />

RI<br />

Receive Interrupt: wird in Mode 0 bei Bit 8 automatisch gesetzt, in anderen Modi bei Stop<br />

Bits; manuelles Löschen notwendig


Seite 20 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

SFR für serielle Schnittstelle<br />

Modus-Wahl der seriellen Schnittstelle anhand SM0 und SM1<br />

SM0 SM1 Modus<br />

0 0 Modus 0 – synchroner Betrieb, feste Baudrate<br />

0 1 Modus 1 – 8-Bit UART, variable Baudrate<br />

1 0 Modus 2 – 9-Bit UART, feste Baudrate<br />

1 1 Modus 3 – 9-Bit UART, variable Baudrate


Seite 21 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

SFR für serielle Schnittstelle<br />

Special Function Register SBUF<br />

◮<br />

◮<br />

◮<br />

◮<br />

an Adresse 99h, nur byte-adressierbar<br />

Reset Wert XXh<br />

Empfang- und Sendepuffer der seriellen Schnittstelle<br />

Beschreiben dieses Registers initiiert Sendevorgang<br />

Serial Interface Buffer Register<br />

SBUF<br />

MSB<br />

LSB<br />

7 6 5 4 3 2 1 0<br />

SBUF Eingangsspeicher → lesen<br />

SBUF Ausgangsspeicher → schreiben<br />

Durch Schreibvorgang auf SBUF wird Übertragung der Daten über serielle Schnittstelle eingeleitet


Seite 22 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Konfigurationsmodi<br />

Mode 0, Shift Register (Synchronous) Mode<br />

◮<br />

◮<br />

◮<br />

◮<br />

◮<br />

synchrone Übertragung<br />

RXD-Leitung (P3.0) dient als Datenleitung für ein- und ausgehende<br />

Daten<br />

TXD-Leitung (P3.1) dient als Taktleitung für die Synchronisation<br />

Baudrate beträgt fest 1/12 von Oszillatorfrequenz f osc<br />

Übertragung von 8 Datenbits (LSB first)


Seite 23 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Konfigurationsmodi<br />

Mode 1, 8-Bit UART, Variable Baud Rate<br />

◮ asynchrone Übertragung<br />

◮ RXD-Leitung (P3.0) dient dem Empfang von eingehenden Daten<br />

◮ TXD-Leitung (P3.1) dient dem Versenden von ausgehenden Daten<br />

◮ Baudrate ist variabel einstellbar (z.B. über Timer 1)<br />

◮ Übertragung von 10 Bits: 1 Start Bit (0), 8 Datenbits (LSB first) und 1<br />

Stop Bit (1)<br />

◮ beim Empfang wird Stop Bit im SFR SCON im Flag RB8 gespeichert<br />

MSB<br />

LSB<br />

Sender<br />

0<br />

0<br />

1<br />

0<br />

1<br />

1<br />

0<br />

1<br />

Stop Bit<br />

8 Daten-Bits (LSB first)<br />

MSB<br />

Start Bit<br />

1 0 0 1 0 1 1 0 1 0<br />

LSB<br />

Empfänger<br />

0<br />

0<br />

1<br />

0<br />

1<br />

1<br />

0<br />

1<br />

MSB<br />

LSB<br />

Dieser Modus wird in der Praxis (und im Labor) am häufigsten verwendet!


Seite 24 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Konfigurationsmodi<br />

Mode 2, 9-Bit UART, Fixed Baud Rate<br />

◮ asynchrone Übertragung<br />

◮ RXD-Leitung dient dem Empfang von eingehenden Daten<br />

◮ TXD-Leitung dient dem Versenden von ausgehenden Daten<br />

◮ Baudrate entweder mit 1/64 oder 1/32 der Oszillatorfrequenz f osz<br />

konfigurierbar<br />

◮ Übertragung von <strong>11</strong> Bits: 1 Start Bit (0), 8 Datenbits (LSB first) +<br />

programmierbares 9. Datenbit und 1 Stop Bit (1)<br />

◮ beim Empfang wird 9. Datenbit im SFR SCON im Flag RB8 gespeichert<br />

◮ beim Versenden wird 9. Datenbit im SFR SCON im Bit TB8 angegeben<br />

◮ Verwendung 9. Datenbit: z.B. als Parity Bit (PSW.0 ist Paritybit P)<br />

Stop Bit<br />

9 Daten-Bits (LSB first)<br />

Start Bit<br />

1 0 0 0 1 0 1 1 0 1 0<br />

xB8 MSB<br />

LSB


Seite 25 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Konfigurationsmodi<br />

Mode 2, 9-Bit UART, Fixed Baud Rate<br />

Datenrahmen<br />

1 2 3 4 5 6 7 8 9 10 <strong>11</strong> Schritt<br />

1 2 3 4 5 6 7 8 Datenbit<br />

Stop Bit<br />

9.Datenbit oder<br />

Paritätsbit<br />

1.-8.Datenbit<br />

Start Bit


Seite 26 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Konfigurationsmodi<br />

Mode 3, 9-Bit UART, Variable Baud Rate<br />

◮<br />

◮<br />

asynchrone Übertragung<br />

entspricht Mode 2, jedoch mit variabel einstellbarer Baudrate über Timer<br />

1 (oder internen Baudratengenerator z.B. bei Siemens 80c515c)


Seite 27 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Empfangen und Versenden von Daten<br />

Versenden von Daten<br />

In allen Modi wird das Versenden von Daten durch das Beschreiben des<br />

SBUF Registers initiiert (d.h. durch Befehl der SBUF als Ziel angibt)<br />

Empfangen von Daten<br />

Mode 0 (Synchron)<br />

◮<br />

◮<br />

Datenempfang wird durch den Zustand der Flags RI und REN im SFR<br />

SCON gesteuert<br />

Bedingung RI=0 UND REN=1<br />

Modi 1-3 (Asynchron)<br />

◮<br />

◮<br />

Datenempfang wird durch den Empfang des Start Bits initiiert<br />

Voraussetzung ist REN=1 im SFR SCON


Seite 28 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Empfangen und Versenden von Daten<br />

Aufbau und Steuerungung des seriellen Ports<br />

Seriell-Control-Register SCON<br />

SM0 SM1 SM2 REN TB8 RB8 TI RI<br />

Steuerlogik<br />

der seriellen<br />

Schnittstelle<br />

Timer 1<br />

Überlauf<br />

CPU<br />

Takt<br />

SBUF Senderegister<br />

0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1<br />

8 7<br />

0<br />

8051 interner Bus<br />

SBUF Empfangsregister<br />

0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1<br />

8 7<br />

0<br />

0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1<br />

8 7<br />

Schieberegister<br />

0<br />

TxD<br />

RxD


Seite 29 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Empfangen und Versenden von Daten<br />

Seriell-Control-Register SCON<br />

SM0 SM1 SM2 REN TB8 RB8 TI RI<br />

Steuerlogik<br />

der seriellen<br />

Schnittstelle<br />

Timer 1<br />

Überlauf<br />

CPU<br />

Takt<br />

SBUF Senderegister<br />

0/1<br />

8 7<br />

0/1<br />

0/1<br />

0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1<br />

SBUF Empfangsregister<br />

8 7<br />

8 7<br />

Einfacher Sendevorgang<br />

MOV SBUF, A<br />

Send: JNB SCON.1, Send<br />

CLR SCON.1<br />

8051 interner Bus<br />

0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1<br />

0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1<br />

Schieberegister<br />

0<br />

0<br />

0<br />

TxD<br />

RxD


Seite 30 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Empfangen und Versenden von Daten<br />

Seriell-Control-Register SCON<br />

SM0 SM1 SM2 REN TB8 RB8 TI RI<br />

Steuerlogik<br />

der seriellen<br />

Schnittstelle<br />

Timer 1<br />

Überlauf<br />

CPU<br />

Takt<br />

SBUF Senderegister<br />

0/1<br />

8 7<br />

0/1<br />

0/1<br />

0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1<br />

SBUF Empfangsregister<br />

8 7<br />

8 7<br />

Einfacher Empfangsvorgang<br />

Empf: JNB<br />

CLR<br />

MOV<br />

8051 interner Bus<br />

0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1<br />

0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1<br />

Schieberegister<br />

SCON.0, Empf<br />

SCON.0<br />

A, SBUF<br />

0<br />

0<br />

0<br />

TxD<br />

RxD


Seite 31 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Empfangen und Versenden von Daten<br />

Überwachung und Betrieb<br />

Fehlererkennung<br />

◮<br />

◮<br />

◮<br />

Zeichenlänge beträgt wahlweise 8 oder 9 Bit<br />

keine hardwaremäßige Erkennung von Übertragungsfehlern<br />

Parity, Überlauferkennung und Stop-Bit-Fehler per Software<br />

Überwachung der seriellen Schnittstelle<br />

◮<br />

◮<br />

durch Bitabfrage des SCON Registers<br />

per Interrupt


Seite 32 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Empfangen und Versenden von Daten<br />

Interrupts<br />

Serielle Schnittstelle unterstützt Interrupts<br />

◮<br />

◮<br />

◮<br />

◮<br />

◮<br />

Senden wird durch Beschreiben von SBUF gestartet<br />

Interrupt Request Flag TI wird gesetzt, wenn Frame komplett gesendet<br />

wurde (nach Senden von Bit 7 von SBUF)<br />

Empfang wird bei REN=1 durch Startbit begonnen (Wert in SBUF)<br />

Interrupt Request Flag RI wird gesetzt, wenn Frame komplett<br />

empfangen wurde (nach Empfang des Stop Bits)<br />

wenn Interrupts der seriellen Schnittstelle nicht genutzt: Abfragen von RI<br />

und TI durch Polling (zyklische Abfrage)<br />

Reaktion auf Interrupts<br />

◮<br />

◮<br />

◮<br />

◮<br />

◮<br />

Empfangs- und Sendeinterrupt verwenden den gleichen Interruptvektor<br />

beide Flags lösen selben Interrupt aus<br />

Interrupt Service Routine (ISR) muss auswerten: welches Ereignis?<br />

Art des Interrupt-Ereignis anhand der Flags feststellbar<br />

ISR muss beide Flags (RI, TI) zurücksetzen


Seite 33 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Erzeugung der Baudrate<br />

Definition Baudrate<br />

Maß für die Schrittgeschwindigkeit bei der Datenübertragung in Einheit [Bd]<br />

◮<br />

Baudrate = Schrittgeschwindigkeit<br />

◮<br />

◮<br />

◮<br />

◮<br />

Schrittgeschwindigkeit ist Kehrwert der Schrittdauer T Schritt<br />

Schrittgeschwindigkeit gibt Zahl der gesendeten Zeichen bzw. Zustände<br />

pro Sekunde an<br />

Schritt: kleinstes Zeitintervall zwischen zwei aufeinanderfolgende<br />

Zustandswechseln bei zeitdiskreten Signalen<br />

nicht zu verwechseln mit Datenrate (= Bitrate)!<br />

Benannt nach Jean Maurice Émile Baudot (franz. Ingenieur und Erfinder,<br />

1845 - 1903), der 1874 den Baudot-Telegraphen erfand<br />

Mit einem (Takt-)Schritt können ein oder mehrere Bits eines Datenstroms<br />

übertragen werden<br />

Anzahl Bits pro Zustand multipliziert mit Baudrate ergibt Bitrate


Seite 34 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Erzeugung der Baudrate<br />

Beispiel für Baudrate gleich Bitrate<br />

U<br />

5V<br />

1<br />

Bitstrom<br />

0 1 0 1 1 0 1 0<br />

Baud = BPS<br />

t<br />

0<br />

Für zweiwertige (binäre Signale) codiert jeder Zustandswechsel ein Bit<br />

◮<br />

◮<br />

Schrittgeschwindigkeit in Baud = Übertragungsgeschwindigkeit in bit/s<br />

Schrittgeschwindigkeit wird dann als Bitrate (oder Bitfolgefrequenz)<br />

bezeichnet<br />

Baudrate und Bitrate sind gleich, wenn ein<br />

Symbol genau einem Bit entspricht!


Seite 35 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Erzeugung der Baudrate<br />

Mehrstufige Signale können mehr als zwei Werte annehmen (z.B. Dibit: zwei<br />

Bit pro Signalwert)<br />

◮<br />

unterschiedliche Spannungswerte repräsentieren Paare von Bits (Dibits,<br />

3 oder 4 Bits, etc.)<br />

Für mehrstufige Signale mit n-möglichen Wertestufen gilt die Beziehung:<br />

v = v Schritt · ld(n), angegeben in bit/s<br />

◮ ld ist Logarithmus Dualis, Logarithmus zur Basis 2<br />

◮<br />

Datenrate (bit/s) unterscheidet sich von Schrittgeschwindigkeit (Baud)


Seite 36 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Erzeugung der Baudrate<br />

Beispiel für Baudrate ungleich Bitrate<br />

U<br />

15V<br />

10V<br />

5V<br />

Bitstrom<br />

0 0 1 0 0 1 1 1 0 1 1 1 1 0 0 0<br />

Baud BPS<br />

t<br />

<strong>11</strong><br />

10<br />

01<br />

00<br />

Bei mehrstufigen Signalen codiert jeder Zustandswechsel mehr als 1 Bit, hier<br />

z.B. zwei Bit<br />

◮<br />

Übertragung doppelt so vieler Informationsbits mit gleicher Baudrate!<br />

Bitrate ist höher als Baudrate, wenn für ein<br />

Symbol mehrere Bits verwendet werden!


Seite 37 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Erzeugung der Baudrate<br />

Möglichkeiten der Baudraten-Erzeugung für die serielle Schnittstelle<br />

◮ mit Hilfe des Timer 1<br />

◮<br />

mittels Baudratengenerator (falls verfügbar, z.B. 80c515c)<br />

Baudrate kann über Flag in PCON zusätzlich erhöht werden<br />

Um einen fehlerfreien Datentransfer zwischen einem<br />

PC und einem 8051 zu ermöglichen, muss sichergestellt<br />

werden, dass die Baudrate des 8051 mit der des<br />

COM Ports vom PC übereinstimmt!


Seite 38 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Erzeugung der Baudrate<br />

Baudrate in Mode 0<br />

Die Baudrate in Mode 0 beträgt fest:<br />

Baudrate Mode 0 = f osz/12<br />

Baudrate in Mode 2<br />

Die Baudrate in Mode 2 hängt vom Bit SMOD im SFR PCON ab<br />

◮<br />

◮<br />

SMOD=0: Baudrate 1/64 der Oszillatorfrequenz<br />

SMOD=1: Baudrate 1/32 der Oszillatorfrequenz<br />

Baudrate Mode 2 = ( 2 SMOD /64 ) · f osz


Seite 39 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Erzeugung der Baudrate<br />

Baudrate in den Modi 1 und 3<br />

In den Modi 1 und 3 kann die Baudrate mit dem Timer 1 variabel erzeugt<br />

werden<br />

Erzeugung der Baudrate mittels Timer 1 (generell)<br />

◮<br />

◮<br />

◮<br />

Baudrate leitet sich von Überlaufrate des Timer 1 und Flag SMOD ab<br />

Überlaufrate ist Anzahl der Überläufe des Timers pro Sekunde<br />

Betriebsart des Timer für Überlaufrate nicht von Bedeutung<br />

Baudrate Mode 1 und 3 = ( 2 SMOD /32 ) · Timer 1 Overflow Rate<br />

Wahl der Timer-Betriebsart für die gewünschte Baudrate<br />

◮<br />

◮<br />

für gängige Baudraten: Interrupts sperren und Timer als 8-Bit<br />

Auto-Reload-Timer einstellen (Modus 2)<br />

für sehr langsame Baudraten: Interrupts freigeben und Nachladen des<br />

Timers (16-Bit, Modus 1) selbst übernehmen → über Timer 1 Interrupt<br />

ein Software-Reload ausführen!


Seite 40 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Erzeugung der Baudrate<br />

Baudrate in den Modi 1 und 3<br />

Erzeugung der Baudrate mittels Timer 1 im Auto-Reload-Betrieb (Modus 2)<br />

◮<br />

Baudrate leitet sich aus folgender Formel ab<br />

Baudrate Mode 1 und 3 = ( 2 SMOD /32 ) · (f osz/(12 · (256 − TH1)))


Seite 41 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Erzeugung der Baudrate<br />

Special Function Register PCON<br />

◮<br />

◮<br />

◮<br />

an Adresse 87h, nur byte-adressierbar<br />

Reset Wert 0xxx0000b<br />

beeinhaltet Flags zur Steuerung des Idle- und Power-Down Modus,<br />

insbesondere aber SMOD-Flag zur Steuerung der seriellen Schnittstelle<br />

Power Control Register<br />

PCON<br />

MSB<br />

SMOD PDS IDLS SD GF1 GF0 PDE IDLE<br />

nur serielle<br />

Schnittstelle<br />

LSB<br />

SMOD serielle Schnittstelle: Wert 1 für Verdoppelung der Baudrate in den Modi 1, 2 und 3<br />

PDS Power Down Start: Wert 1 für Power Down Modus aktiv<br />

IDLS Idle Start: Wert 1 für Idle Modus aktiv<br />

SD<br />

Shut Down: Wert 1 für Ruhezustand<br />

GF0, GF1 generelles Flag 0 und 1 (kann allgemein benutzt werden)<br />

PDE, IDLE Power Down und Idle Mode Enable: jeweils Wert 1 für Freigabe


Seite 42 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Zusammenfassung<br />

Heute haben Sie gelernt...<br />

◮<br />

◮<br />

◮<br />

in welcher Form und Bündelung Daten über die serielle Schnittstelle<br />

übertragenen werden<br />

wie die Übertragungsgeschwindigkeit (baud) und die Anzahl der Bits zur<br />

Übertragung konfiguriert werden<br />

wie die serielle Schnittstelle per Interrupt kontrolliert werden kann


Seite 43 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Ausblick auf nächste Stunde<br />

In der nächsten Stunde widmen wir uns...<br />

◮<br />

◮<br />

◮<br />

einfachen Beispielprogrammen zum Thema Polling und Interrupts,<br />

Timer- und Serielle-Schnittstellen-<strong>Programmierung</strong><br />

Tricks zur Beeinflussung der Zeitintervalle beim Timer<br />

praktischen Einsatzsfällen der seriellen Schnittstelle


Seite 44 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Hinweise zum Selbststudium<br />

Zur Vertiefung wird empfohlen...<br />

◮<br />

◮<br />

MOP-Skript (Kapitel noch nicht fertig)<br />

M. Mazidi, J. Mazidi, R. McKinlay: The 8051 Microcontroller and<br />

Embedded Systems Using Assembly and C, Prentice Hall, ISBN<br />

013<strong>11</strong>9402X


Seite 45 Aufbau und <strong>Programmierung</strong> von seriellen Kommunikationsschnittstellen | <strong>Maschinenorientierte</strong> <strong>Programmierung</strong> | Wintersemester 2013<br />

Kritik<br />

Nun sind Sie dran:<br />

◮<br />

◮<br />

◮<br />

◮<br />

Kritik: Was funktioniert gut / was schlecht?<br />

Anregungen<br />

Wünsche<br />

Verbesserungsvorschläge in Bezug auf Inhalt und Organisation der<br />

Vorlesung

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!