1 Der Mikrocontroller 68332:

Transcrição

1 Der Mikrocontroller 68332:
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Vorwort
Im Praktikum Mikrocomputertechnik wird der Mikrocontroller 68332 von Motorola
eingesetzt.
Als
begleitende
Literatur
zum
Praktikum
empfiehlt
sich
das
Buch
„Mikrocomputertechnik“ von Prof. Peter Urbanek (ISBN 3-519-06262-3), in dem auch das
im Praktikum verwendete Board „NF300“ beschrieben wird.
Reference Manuals, Application Notes und Datenblätter etc. sind im Internet unter der
Adresse http://e-www.motorola.com/ verfügbar.
Sehr gut geeignet zur Praktikumsvorbereitung ist der folgende Auszug aus der Diplomarbeit
von Herrn Klaus Senning, in dem die für das Praktikum wesentliche Aspekte des
Mikrocontrollers 68332 sehr detailliert beschrieben werden.
Prof. Dr. Bayer
Klaus Senning
1
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Mikrocontroller MC 68332
1
Einführung
Ein Mikrocomputersystem, das auf einem Chip integriert ist, wird als Mikrocontroller
bezeichnet. Dieser beinhaltet neben der CPU meist einen Speicher und diverse I/OFunktionen. Die Mikrocontroller der 68300-Familie von Motorola sind modular aufgebaut.
Nachfolgend sind die wichtigsten Module zusammengefasst.
Central-Processing-Unit (CPU)
General-Purpose-Timer (GPT)
Time-Processor-Unit (TPU)
A/D-Converter (ADC)
System-Integration-Module (SIM)
Queued-Serial-Module (QSM)
Communication-Processor-Module (CPM)
Intermodule-Bus (IMB)
Arbeitsspeicher (RAM)
Festwertspeicher (ROM)
Je nach Anwendung werden unterschiedliche Anforderungen an den Leistungsumfang des
verwendeten Mikrocontrollers gestellt. Um eine möglichst breite Palette von
unterschiedlichen Anforderungen abdecken zu können, wird von Motorola eine Vielzahl von
Mikrocontrollern angeboten, die jeweils ein gut abgestimmtes Angebot der oben aufgelisteten
Module beinhalten. Einer der ersten Mikrocontroller aus der 68300-Familie war der MC
68332. Da er eine Auswahl an häufig benötigten Modulen bietet, wurde er zum bekanntesten
Vertreter dieser Mikrocontroller-Familie.
1.1
Aufbau des MC 68332
Der MC 68332 ist ein hochintegrierter 32 BitMikrocontroller. Er ist in HCMOS-Technologie (HighDensity Complementary Metal-Oxid Semiconductor)
gefertigt. In Bild 8.1 ist das Blockschaltbild des
Mikrocontrollers dargestellt. Der Mikrocontroller
beinhaltet eine 32 Bit-CPU, ein System-IntegrationModule, eine Time-Processor-Unit, ein Queued-SerialModule sowie ein 2 KB-Static-RAM. Die einzelnen
Module werden durch den Intermodule-Bus miteinander verbunden.
SRAM
TPU
(2KB)
SIM
IMB
QSM
CPU32
Bild 8.1: Blockschaltbild des MC 68332
[Urbanek 1999]
Das System-Integration-Module ist sehr komplex und besteht deshalb selbst wieder aus
mehreren Untermodulen. Dies sind im einzelnen:
Chip-Select-Module (CS)
External-Bus-Interface (EBI)
System-Clock-Module (SCM)
System-Test-Module (STM)
System-Protection-Module (SPM)
Klaus Senning
2
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Um die Anzahl der PINs des MC 68332 zu reduzieren, ist der Großteil der PINs mit mehreren
Funktionen belegt. Durch eine entsprechende Parametrierung des Mikrocontrollers kann,
abhängig von der jeweiligen Anwendung, zwischen den verschiedenen Funktionen gewählt
werden.
In Bild 8.2 sind die einzelnen Module des MC 68332, mit den jeweils zugehörigen PINs
dargestellt. Anstelle des System-Integration-Module sind dessen Untermodule abgebildet.
Bild 8.2: Detailliertes Blockschaltbild des MC 68332 (Module incl. PINs)
[Motorola 1995]
Klaus Senning
3
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
1.2
1.2.1
Central-Processing-Unit 32 (CPU32)
Einführung
Die CPU 32 war die erste Central-Processing-Unit der 68300-Mikrocontroller-Familie. Sie
verfügt intern über einen 32 Bit-Datenbus, während der externe Datenbus nur eine Breite von
16 Bit aufweist. Die CPU 32 + ist eine Erweiterung der CPU 32. Diese besitzt sowohl intern
als auch extern einen 32 Bit-Datenbus. Aus der 68300-Familie ist der MC 68349 und der MC
68360 mit der CPU 32 + ausgerüstet.
Die CPU 32 baut auf dem 68000 Prozessor auf. Da dieser aus der Vorlesung Informatik III
hinreichend bekannt ist, werden hier nur die wesentlichen Unterschiede zwischen der CPU 32
und dem 68000 kurz erläutert. Die wichtigste Erweiterung der CPU 32 im Vergleich zum
68000 ist die volle 32 Bit-Verarbeitung. Des Weiteren sind Unterschiede im Befehlssatz, im
Programmiermodell sowie bei der Adressierung vorhanden.
Aufgrund der 32 Bit-Architektur der CPU 32 wurden die folgenden Befehle von 16 Bit auf 32
Bit erweitert.
BCC
BRA
CHK
EXTB
LINK
Branch conditionally
Branch always
Check register against bounds
Sign Extend (EXTB.L Dn gleich EXT.W Dn EXT.L Dn)
Link and Allocate
Darüber hinaus verfügt die CPU 32 über einen neuen Datentyp. Neben den vom 68000
bekannten Datentypen Bit, BCD, Byte-Integer, Word-Integer und Longword-Integer wurde
der Datentyp Quadword-Integer neu implementiert. Dieser neue 64 Bit-breite Datentyp kann
nur von wenigen arithmetischen Befehlen verwendet werden. Diese sind im Anschluss
aufgelistet.
DIVS
DIVU
MULS
MULU
Divide signed (64 bit / 32 bit)
Divide unsigned
Multiply signed (32 bit * 32 bit)
Multiply unsigned
Zusätzlich können bei der CPU 32 im Gegensatz zum 68000 die nachfolgend aufgeführten
Befehle auch auf den Program-Counter angewendet werden.
CMPI
TST
Compare immediate
Test an operand
Neben den Erweiterungen an bereits bestehenden Befehlen verfügt die CPU 32 über einige
neue Befehle. Diese wurden nachfolgend zusammengefasst.
Klaus Senning
4
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Befehle für den Background-Debug-Mode (BDM):
BGND
Background
BKPT
Breackpoint
Low-Power-Stop-Anweisung:
LPSTOP
Low Power Stop
Tabellen-Interpolations-Befehle:
TBLS
Table Lookup and Interpolate (Signed) (Result rounded)
TBLSN
Table Lookup and Interpolate (Signed) (Result not rounded)
TBLU
Table Lookup and Interpolate (Unsigned) (Result rounded)
TBLUN
Table Lookup and Interpolate (Unsigned) (Result not rounded)
Zugriff auf das Supervisor-Register (DFC, SFC, VBR und USP):
MOVEC
Move control register
Zugriff auf einen beliebigen Adressraum:
MOVES
Move address Space
Überprüfung von oberer und unterer Feldgrenze:
CHK2
Check register against bounds
CMP2
Compare register against bounds
Zusätzlich zu den Änderungen am Befehlssatz wurden die beiden nachfolgend aufgelisteten
Adressierungsarten neu eingeführt.
Address Register Indirect with Index and Base Displacement:
Assemblerschreibweise:
(bd, An, Xn*SCALE)
mit
bd
= 32 Bit-Base-Displacement
An
= Address-Register
Xn
= Index-Register
SCALE
= Scale-Factor
Program Counter Indirect with Index and Base Displacement:
Assemblerschreibweise:
(bd, PC, Xn*SCALE)
mit
bd
= 32 Bit-Base-Displacement
PC
= Program-Counter
Xn
= Index-Register
SCALE
= Scale-Factor
Die beiden neuen Adressierungsarten bieten die Möglichkeit, eine Skalierung (SCALE) des
Index-Registers vorzugeben. Der Skalierungsfaktor kann 1, 2, 4 oder 8 betragen. Zusätzlich
wurde das Displacement von 8 Bit auf 32 Bit erweitert.
Auf eine detailliertere Beschreibung der CPU 32 wird an dieser Stelle verzichtet. Weitere
Informationen können dem Benutzerhandbuch [Motorola 1996/1] entnommen werden.
Klaus Senning
5
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
1.2.2
Programmiermodell
Das Programmiermodell der CPU 32 ist im Bild 8.3 dargestellt. Auf die grau hinterlegten
Register kann nur im Supervisor-Mode zugegriffen werden. Alle übrigen Register stehen
sowohl im Supervisor- als auch im User-Mode zur Verfügung.
31
15
7
D0
D1
D2
D3
D4
D5
D6
D7
31
Datenregister
15
A0
A1
A2
A3
A4
A5
A6
A7 = USP
A7´= SSP
User Stack Pointer
Supervisor Stack Pointer
31
Program Counter
Adressregister
PC
15
Status Register
31
Vector Base Register
CCR
SR
VBR
31
Source FC Register
2 0
SFC
31
Destination FC Register
DFC
2 0
Alternate
FunctionCode
Register
Bild 8.3: Programmiermodell der CPU 32
Im Unterschied zum 68000 besitzt die CPU 32 das Vector-Base-Register (VBR), das SourceFunction-Code-Register (SFC), sowie das Destination-Function-Code-Register (DFC). Durch
das Vector-Base-Register kann die Exception-Vektor-Tabelle im Speicher verschoben
werden. Nach dem Reset ist das VBR zunächst mit dem Wert $0 vorbelegt. Die ExceptionVektor-Tabelle beginnt somit, wie vom 68000 gewohnt, bei der Adresse $0. Um die
Exception-Vektor-Tabelle zu verschieben, muss deren neue Startadresse in das VBR
eingetragen werden.
Mit Hilfe des Source-Function-Code-Registers und des Destination-Function-Code-Registers
ist es zusammen mit dem MOVES-Befehl möglich, auf einen beliebigen Adressraum
zuzugreifen.
Klaus Senning
6
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Mit seinen 24 Adressleitungen stellt der MC 68332 einen Adressbereich von 16 MB zur
Verfügung. Darüber hinaus bietet er die Voraussetzungen, um unterschiedliche Adressräume
verwalten zu können. Hierfür werden die Function-Code-Leitungen FC0 – FC2 benötigt.
Durch diese kann der zu verwendende Adressraum ausgewählt werden. Der MC 68332
unterscheidet im Wesentlichen die Adressräume User- bzw. Supervisor-Daten und Userbzw. Supervisor-Programm. Über die gleichen Adressräume und dem damit verbundenen
Speicherschutz verfügte bereits der 68000. Zusätzlich bietet der MC 68332 nun eine
Möglichkeit, um auf beliebige Adressräume zugreifen zu können. Hierfür wird der
privilegierte Befehl MOVES (Move-Address-Space) verwendet. Der, während der
Bearbeitung dieses Befehls ausgegebene Function-Code kann mit Hilfe des SFC- und des
DFC-Registers vorgegeben werden. Der Function-Code wird jeweils durch Bit 0 – Bit 2 der
beiden Register definiert. Die übrigen Bits besitzen keine Funktion.
Ein weiterer Unterschied des MC 68332 im Vergleich zum 68000 zeigt sich bei genauerer
Betrachtung des Statusregisters (SR). Wie Bild 8.4 zeigt, sind anstelle eines Trace-Bits, wie
beim 68000, nun zwei Trace-Bits vorhanden. Diese tragen die Bezeichnung T0 und T1.
15
14
13
T1
T0
S
12
11
10
9
8
I2
I1
I0
7
6
5
4
3
2
1
0
X
N
Z
V
C
Bild 8.4: Aufbau des Statusregisters der CPU 32
Die Funktion des T1-Bits der CPU 32 ist identisch mit der des T-Bits beim 68000. Sobald
dieses Bit auf den Wert 1 gesetzt ist, wird nach jedem Befehl ein Interrupt ausgelöst. Die
zugehörige Interrupt-Service-Routine (ISR) enthält die Traceroutine.
Ist hingegen das T0-Bit gesetzt, wird die Traceroutine nur nach Sprungbefehlen wie z.B. BRA
und JMP aufgerufen. Dies bietet zusätzlichen Komfort bei der Fehlersuche.
1.2.3
Background-Debug-Mode (BDM)
Die 16 Bit- und 32 Bit-Mikrocontroller der Firma Motorola bieten eine integrierte DebuggerSchnittstelle. Ein Debugger ist ein Hilfsmittel zur Fehlersuche in Programmen, er ermöglicht
die Beeinflussung und Beobachtung des Programmablaufs.
Um die Debugger-Schnittstelle nutzen zu können, muss sich der Mikrocontroller in einem
speziellen Betriebsmodus befinden. Dieser wird als Background-Debug-Mode (BDM)
bezeichnet. In diesem Betriebsmodus gibt der Mikrocontroller die Kontrolle an den, über die
Debugger-Schnittstelle angeschlossenen Hostrechner ab. Der Hostrechner erhält dadurch
folgende Zugriffsmöglichkeiten:
Lesen/Schreiben von Registern
Lesen/Schreiben von einzelnen Speicherzellen
Lesen/Schreiben von Speicherblöcken
Starten der Befehlsbearbeitung
Aufruf von Unterprogrammen
Rücksetzen der externen Peripherie
Klaus Senning
7
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Die Debugger-Schnittstelle der Mikrocontroller der Firma Motorola wird als BDMSchnittstelle bezeichnet. Diese ist im Mikrocode des Mikrocontrollers integriert. Dies
unterscheidet sie von herkömmlichen Debugger-Schnittstellen.
Bei herkömmlichen Debugger-Schnittstellen muss der Mikrocontroller aus dem Zielsystem
entfernt und durch einen Emulator ersetzt werden (siehe Bild 8.5). Der benötigte Emulator ist
zum einen teuer und hat darüber hinaus Einfluss auf das Verhalten des Gesamtsystems, wie
z.B. Beschränkung der max. Taktfrequenz. Des Weiteren ist es nur schwer möglich, Zugriffe
auf den internen Speicher, sowie die interne Peripherie des Mikrocontrollers zu überwachen.
Bild 8.5: herkömmliche Debugger-Schnittstelle
Wie bereits erwähnt, ist die BDM-Schnittstelle im Mikrocontroller integriert. Aus diesem
Grund ist es nicht erforderlich, den Mikrocontroller aus dem Zielsystem zu entfernen. Das
Zielsystem wird an den Hostrechner mittels eines einfachen und kostengünstigen Interface
angeschlossen. Dieses Interface wird als Bus-State-Analyzer (BSA) bezeichnet (siehe Bild
8.6).
Bild 8.6: BDM-Schnittstelle
Mit Hilfe der BDM-Schnittstelle ist es möglich, auch interne Komponenten des
Mikrocontrollers zu überwachen. Darüber hinaus wird das Verhalten des Zielsystems nicht
beeinflusst. Die BDM-Schnittstelle ermöglicht somit einen uneingeschränkten Betrieb des
Zielsystems.
Weitere Informationen zur BDM-Schnittstelle sind in Kapitel 9 enthalten.
Klaus Senning
8
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
1.3
Internes SRAM
1.3.1
Einführung
Der Mikrocontroller MC 68332 besitzt ein internes SRAM. Dieses hat eine Größe von 2 KB.
Das SRAM kann entweder als normaler Schreib-Lese-Speicher oder als TPU- (TimeProcessor-Unit-) Emulationsspeicher eingesetzt werden. Zur Parametrierung besitzt das
SRAM drei Kontrollregister, das Base-Address-Register (RAMBAR), das ModuleConfiguration-Register (RAMMCR) und das Test-Register (RAMTST).
Wird das interne SRAM als normaler Schreib-Lese-Speicher eingesetzt, erfolgen die Zugriffe
ausschließlich über den Intermodule-Bus (IMB). Die TPU besitzt in diesem Fall keine
Zugriffsmöglichkeit. Auf das interne SRAM können sowohl Byte-, Word- und LongwordZugriffe ausgeführt werden. Darüber hinaus zeichnet sich das interne SRAM durch eine
geringe Zugriffszeit aus, wodurch es besonders für den Einsatz als Stack-Speicher geeignet
ist.
Des Weiteren verfügt das interne SRAM über eine separate Spannungsversorgung. Diese wird
an den VSTBY-PIN des Mikrocontrollers angeschlossen. Mit Hilfe der separaten
Spannungsversorgung kann das interne SRAM als nichtflüchtiger Speicher verwendet
werden. Fällt die Versorgungsspannung des MC 68332 unter einen bestimmten Pegel, schaltet
der Mikrocontroller selbständig in den Stand-By-Mode und verwendet als
Spannungsversorgung für das interne SRAM die, an den VSTBY-PIN angeschlossene
Spannungsquelle. Wird als Spannungsquelle z.B. eine Pufferbatterie eingesetzt, bleiben somit
die im SRAM gespeicherten Daten erhalten.
Wie bereits oben erwähnt, kann das interne SRAM auch als TPU-Emulationsspeicher
eingesetzt werden. Dieser dient als Programmspeicher für selbstentwickelte TPUMikroprogramme. In diesem Fall ist das interne SRAM über einen speziellen Bus direkt an
die TPU angeschlossen. Zugriffe über den IMB sind somit nicht möglich. Die oben
aufgeführten Kontrollregister haben in diesem Fall keinen Einfluss auf das SRAM, alle
Einstellungen werden mit Hilfe der TPU-Kontrollregister vorgenommen.
1.3.2
Kontrollregister
Von den drei Kontrollregistern des internen SRAMs werden zwei für dessen Parametrierung
benötigt. Dies ist das Base-Address-Register (RAMBAR) und das Module-ConfigurationRegister (RAMMCR).
SRAM-Base-Address-Register (RAMBAR)
Reset
Klaus Senning
$YFFB04
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
A23
A22
A21
A20
A19
A18
A17
A16
A15
A14
A13
A12
A11
-
-
DS
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
9
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Die Basisadresse des internen SRAMs kann an jede beliebige 2 KB-Grenze im
Adressbereich gelegt werden. Die Basisadresse wird durch das SRAM-Base-AddressRegister (RAMBAR) definiert. Hierfür wird Bit 3 – Bit 15 des RAMBAR verwendet. Bei
der Wahl der Basisadresse ist darauf zu achten, dass sich der Adressbereich des SRAMs
nicht mit den Kontrollregistern des MC 68332 überschneidet.
Das Disable- (DS-) Bit im RAMBAR wird verwendet, um das interne SRAM zu
aktivieren bzw. deaktivieren. Das DS-Bit wird nach dem Reset mit dem Wert 1 vorbelegt.
Somit ist das interne SRAM zunächst deaktiviert. Um es zu aktivieren, muss das DS-Bit
gelöscht werden. Überschneidet sich der Adressbereich des internen SRAMs mit dem
Adressbereich der Kontrollregister, kann das DS-Bit nicht gelöscht werden.
Das RAMBAR kann nach dem Reset nur einmal beschrieben werden. Somit kann der
Inhalt des Registers nach der Initialisierung nicht versehentlich verändert werden. Aus
diesem Grund ist es jedoch erforderlich, das RAMBAR mit nur einem Zugriff zu
parametrieren.
SRAM-Module-Configuration-Register (RAMMCR)
$YFFB00
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
STOP
-
-
-
-
-
-
RASP
-
-
-
-
-
-
-
-
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
Reset
Wird das STOP-Bit auf den Wert 1 gesetzt, schaltet das interne SRAM in den LowPower-Mode. In diesem Betriebsmodus bleiben die gespeicherten Informationen erhalten.
Ein Zugriff auf das interne SRAM ist jedoch nicht möglich. Durch Löschen des Stop-Bits
kann der Low-Power-Mode wieder verlassen werden. Auf das STOP-Bit kann nur im
Supervisor-Mode zugegriffen werden.
Ist das RAM-Array-Space- (RASP-) Bit gesetzt, kann auf das interne SRAM nur im
Supervisor-Mode zugegriffen werden. Soll das interne SRAM hingegen im Supervisorund User-Mode zur Verfügung stehen, muss das RASP-Bit gelöscht werden.
Klaus Senning
10
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
1.4
Queued-Serial-Module (QSM)
1.4.1
Einführung
In Bild 8.7 ist das Blockschaltbild des
Queued-Serial-Module
(QSM)
dargestellt. Das QSM besteht aus zwei
Untermodulen,
dem
Queued-SerialPeripheral-Interface (QSPI) und dem
Serial-Communication-Interface (SCI).
Das QSPI bietet eine synchrone serielle
Vollduplex-Schnittstelle. Diese wird
vorwiegend zur Kommunikation mit
Peripherie-Bausteinen oder mit einem
anderen Mikrocontroller eingesetzt.
Das SCI stellt eine asynchrone serielle
Vollduplex-Schnittstelle zur Verfügung.
Diese dient hauptsächlich zur Implementierung von RS 232 und RS 485 StandardSchnittstellen.
Wie Bild 8.7 zeigt, können die PINs des
QSM optional als I/O-Port verwendet
werden.
Bild 8.7: Blockschaltbild Queued-Serial-Module (QSM)
[Motorola 1996/3]
Queued-Serial-Peripheral-Interface (QSPI):
Wie bereits erwähnt, bietet das QSPI eine synchrone serielle Schnittstelle. Deren
maximale Datenrate beträgt 4,2 MBit/s. Das QSPI besitzt für Sende- und Empfangsrichtung jeweils einen eigenen 32 Byte-Pufferspeicher. Da das QSPI während eines
Datentransfers maximal 16 Datenbits überträgt, können mit Hilfe des Pufferspeichers bis
zu 16 Datentransfers ohne CPU-Zugriff durchgeführt werden. Für die Datenübertragung
werden drei Signalleitungen verwendet. Dies sind die Datenleitungen MISO (Master-InSlave-Out) und MOSI (Master-Out-Slave-In), sowie das Taktsignal SCK.
In Bild 8.8 ist das Funktionsprinzip
des QSPI dargestellt. Die Kommunikation findet stets zwischen
einem Master und einem Slave statt.
Der Master ist für die Steuerung der
Datenübertragung zuständig.
Zu Beginn eines Datentransfers laden
die beiden Kommunikationspartner
die zu sendenden Daten in die
Schieberegister.
Anschließend
Klaus Senning
werden
mit
Master
Slave
MISO
Schieberegister
Taktgenerator
MOSI
Schieberegister
SCLK
PCS
CS-Logik
CS-Logik
Bild 8.8:Funktionsprinzip des Queued-SerialPeripheral-Interface (QSPI) [Urbanek 1999]
jedem
11
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Taktsignal die, in den beiden Schieberegistern enthaltenen Daten um ein Bit verschoben.
Wie Bild 8.8 zeigt, sind die Schieberegister der beiden Kommunikationspartner durch die
Datenleitungen zu einem Ring verbunden. Somit sind nach einer bestimmten Anzahl von
Takten die Inhalte der beiden Schieberegister vertauscht. Die empfangenen Daten können
daraufhin aus den Schieberegistern ausgelesen werden.
Es besteht die Möglichkeit, an einen Master mehrere Slaves anzuschließen. Der Master
verwendet zur Auswahl des angesprochenen Slave-Bausteins die Peripheral-Chip-Select(PCS-) Signale. Das QSPI verfügt insgesamt über vier PCS-Signale, somit können
maximal 16 Slave-Bausteine verwaltet werden.
Serial-Communication-Interface (SCI):
Das SCI stellt eine asynchrone serielle Schnittstelle zur Verfügung. Die Baudrate dieser
seriellen Schnittstelle kann bei einem Systemtakt von 16,78 MHz im Bereich von 64 Baud
bis zu 524 kBaud eingestellt werden. Die Daten werden im NRZ- (Non-Return-To-Zero-)
Format übertragen. Für die Datenübertragung werden die drei Signalleitungen TransmitData (TXD), Receive-Data (RXD) und Ground (GND) benötigt.
1.4.2
Allgemeine QSM Kontrollregister
Diese Kontrollregister enthalten die Grundeinstellungen des Queued-Serial-Module. Sie
werden von beiden Untermodulen des QSM verwendet.
QSM-Configuration-Register (QSMCR)
15
14
STOP FRZ1
Reset
0
0
13
12
11
10
9
$YFFC00
8
7
6
5
4
FRZ0
-
-
-
-
-
SUPV
-
-
-
0
0
0
0
0
0
1
0
0
0
3
2
1
0
0
0
IARB
0
0
Mit Hilfe des STOP-Bits kann das QSM in den Low-Power-Mode geschaltet werden. In
diesem Betriebsmodus ist der Taktgenerator des QSM angehalten. Wird das STOP-Bit auf
den Wert 1 gesetzt, wechselt das QSM daraufhin in den Low-Power-Mode. Um
Übertragungsfehler zu vermeiden, muss zuvor sowohl das SCI als auch das QSPI separat
gestoppt werden. Sobald das STOP-Bit wieder gelöscht wird, wechselt das QSM zurück
in den normalen Betriebsmodus. Im Low-Power-Mode kann nur vom QSMCR gelesen
werden. Schreibzugriffe auf das QSM sind hingegen uneingeschränkt möglich.
Ist das Freeze 1- (FRZ1-) Bit gesetzt, wird das QSM deaktiviert, sobald der
Mikrocontroller in den Background-Debug-Mode wechselt. Die bereits gestarteten
Datentransfers werden ordnungsgemäß beendet. Ist das FRZ1-Bit gelöscht, arbeitet das
QSM auch im Background-Debug-Mode weiter. Dies kann zu unvorhersehbaren Fehlern
führen.
Das Freeze 0- (FRZ0-) Bit besitzt beim MC 68332 keine Funktion. Es ist für andere
Mikrocontroller der 68300-Familien reserviert.
Klaus Senning
12
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Das SUPV- (Supervisor-) Bit des QSMCR wird zusammen mit dem SUPV-Bit des SIMConfiguration-Registers (SIMCR) verwendet, um die QSM-Kontrollregister vor unbefugten Zugriffen zu schützen.
Ist das SUPV-Bit des QSMCR und das SUPV-Bit des SIMCR gesetzt, kann auf die QSMKontrollregister ausschließlich im Supervisor-Mode zugegriffen werden. Wird hingegen
eines der beiden SUPV-Bits gelöscht, ist ein Zugriff auf die QSM-Kontrollregister sowohl
im User- als auch im Supervisor-Mode möglich. Weitere Informationen hierzu können der
Beschreibung des SIMCR entnommen werden.
Die Interrupt-Arbitration-Identification-Number (IARB) definiert mehrere Prioritätsstufen innerhalb eines Interrupt-Levels. Lösen zwei Module gleichzeitig einen Interrupt
aus und besitzen beide den gleichen Interrupt-Level, so wird anhand der IARB
entschieden, welcher Interrupt als erster zu bearbeiten ist. Die IARB muss mit einem Wert
zwischen $1 (= niedrigste Priorität) und $F (= höchste Priorität) initialisiert werden. Nach
dem Reset-Vorgang enthält die IARB den Wert $0, somit ist keine Interrupt-Bearbeitung
möglich.
QSM-Interrupt-Level-Register (QILR)
QSM-Interrupt-Vector-Register (QIVR)
Reset
15
14
-
-
0
0
13
12
11
10
ILQSPI
0
0
9
$YFFC04
$YFFC05
8
7
6
5
ILSCI
0
0
0
4
3
2
1
INTV
0
0
0
0
0
0
-
1
1
1
1
Das dargestellte 16 Bit-Kontrollregister trägt zwei Bezeichnungen. Das höherwertige Byte
wird als QSM-Interrupt-Level-Register (QILR) und das niederwertige Byte als QSMInterrupt-Vector-Register (QIVR) bezeichnet.
Das QILR definiert den Interrupt-Level der beiden QSM-Untermodule SCI und QSPI. Der
Interrput-Level kann im Bereich von 1 (= niedrigste Priorität) bis 7 (= höchste Priorität)
variiert werden. Soll durch eines der QSM-Untermodule kein Interrupt ausgelöst werden,
ist der Interrupt-Level 0 einzutragen. Wird dem SCI und dem QSPI der gleiche InterruptLevel zugewiesen, besitzt das QSPI automatisch die höhere Priorität.
Das QIVR dient zu Initialisierung des Interrupt-Vektors. Durch das niederwertigste Bit
des Interrupt-Vektors wird signalisiert, von welchem der beiden Untermodule des QSM
der Interrupt erzeugt wurde. Ist das Bit gesetzt, hat das QSPI den Interrupt ausgelöst.
Entsprechend ist das Bit gelöscht, wenn der Interrupt vom SCI ausgelöst wurde.
QSM-PIN-Assignment-Register (PQSPAR)
QSM-Data-Direction-Register (DDRQS)
15
-
Reset
0
14
13
12
11
PCS3 PCS2 PCS1 PCS0
0
0
0
0
10
-
0
9
8
MOSI MISO
0
0
$YFFC16
$YFFC17
7
TXD
0
6
5
4
3
PCS3 PCS2 PCS1 PCS0
0
0
0
0
2
SCK
0
1
0
MOSI MISO
0
0
Das abgebildete 16 Bit-Kontrollregister trägt ebenfalls zwei Bezeichnungen. Das
höherwertige Byte wird als QSM-PIN-Assignment-Register (PQSPAR) und das
niederwertige Byte als QSM-Data-Direction-Register (DDRQS) bezeichnet.
Klaus Senning
13
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Wie bereits unter 8.5.1 erwähnt, können die PINs des QSM alternativ als 8 Bit-I/O-Port
verwendet werden. Mit Hilfe des PQSPAR werden die einzelnen PINs des QSM entweder
dem I/O-Port oder dem SCI bzw. dem QSPI zugeteilt. Hierfür ist jedem PIN ein Bit im
PQSPAR zugeordnet. Ist eines der Bits auf den Wert 1 gesetzt, so wird der zugehörige
PIN dem I/O-Port zugeordnet. Soll der PIN hingegen vom QSPI verwendet werden, muss
das entsprechende Bit gelöscht sein.
Die beiden PINs TXD und SCK stellen hierbei eine Ausnahme dar, da ihnen kein Bit im
PQSPAR zugeordnet ist. Der TXD-PIN wird automatisch dem I/O-Port zugeordnet,
sobald der Transmitter des SCI deaktiviert ist. Entsprechend verhält es sich mit dem SCKPIN. Ist das QSPI deaktiviert, wird auch dieser PIN dem I/O-Port zugeteilt.
Das DDRQS definiert, welche PINs des QSM als Eingänge und welche als Ausgänge
betrieben werden. Jedem PIN des QSM ist ein Bit des DDRQS zugeordnet. Um einen der
PINs als Eingang verwenden zu können, muss das entsprechende Bit gelöscht werden. Ist
das Bit hingegen auf den Wert 1 gesetzt, wird der zugehörige PIN als Ausgang betrieben.
Für alle PINs des QSPI ist diese Parametrierung erforderlich, unabhängig davon, ob sie
dem QSPI oder dem I/O-Port zugeordnet sind. Für den TXD-PIN muss diese Einstellung
nur dann vorgenommen werden, wenn der PIN dem I/O-Port zugeteilt ist. Ansonsten wird
der TXD-PIN stets als Ausgang verwendet.
QSM-Port-Data-Register (PORTQS)
15
14
13
12
11
10
$YFFC15
9
8
reserviert
Reset
0
0
0
0
0
7
TXD
0
0
0
0
6
5
4
3
PCS3 PCS2 PCS1 PCS0
0
0
0
0
2
SCK
0
1
0
MOSI MISO
0
0
Durch das QSM-Port-Data-Register werden die als Ausgänge definierten PINs des I/OPorts gesetzt bzw. zurückgesetzt. Darüber hinaus wird das Register verwendet, um den
logischen Zustand der als Eingänge definierten PINs einzulesen.
1.4.3
SCI Kontrollregister
Zum Programmiermodell des SCI gehören die allgemeinen QSM-Kontrollregister sowie die
vier SCI-Kontrollregister. Das SCI beinhaltet zwei Steuerregister, ein Statusregister und ein
Datenregister. Auf die SCI-Kontrollregister kann jederzeit zugegriffen werden. Wird jedoch
der Inhalt eines Steuerregisters geändert, während eine Datenübertragung stattfindet, so führt
dies in den meisten Fällen zu einem Übertragungsfehler. Um dies zu vermeiden, muss die
Übertragung angehalten werden, bevor der Inhalt eines Steuerregisters geändert wird.
SCI-Control-Register 0 (SCCR0)
15
Reset
Klaus Senning
14
13
-
-
-
0
0
0
12
11
10
$YFFC08
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
SCBR
0
0
0
0
0
0
0
14
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Das Steuerregister SCCR0 definiert die Baudrate der seriellen Schnittstelle. Anhand der
nachfolgenden Gleichung kann aus der eingestellten Systemfrequenz und der
gewünschten Baudrate der SCBR- (SCI-Baud-Rate-) Parameter errechnet werden.
SCBR =
Systemfrequenz
32 * Baudrate
SCI-Control-Register 1 (SCCR1)
15
-
Reset
0
14
13
LOOP W OM
0
0
$YFFC0A
12
11
10
9
8
7
6
5
4
3
2
1
0
ILT
PT
PE
M
W AKE
TIE
TCIE
RIE
ILIE
TE
RE
RW U
SBK
0
0
0
0
0
0
0
0
0
0
0
0
0
Das SCI bietet die Möglichkeit, den Ausgang des Transmitters (TXD-PIN) und Eingang
des Receivers (RXD-PIN) intern miteinander zu verbinden. Diese Funktion wird für
Testzwecke verwendet. Wird das LOOP-Bit auf den Wert 1 gesetzt, befindet sich das SCI
im Test-Modus. Im normalen Betriebsmodus ist das LOOP-Bit gelöscht.
Mit Hilfe des WOM- (Wired-Or-Mode-) Bits kann der Ausgang des Transmitters (TXDPIN) in den Wired-Or-Mode umgeschaltet werden. Im Wired-Or-Mode wird der Ausgang
des Transmitters als Open-Drain-Ausgang betrieben. Somit ist es möglich, mehrere
Ausgänge parallel zu schalten. Um den Ausgang des Transmitters als Open-DrainAusgang zu betreiben, muss das WOM-Bit gesetzt werden. Ist das WOM-Bit gelöscht,
wird der Ausgang als CMOS-Ausgang betrieben. Für den Fall, dass der TXD-PIN als
Eingang (I/O-Port) verwendet wird, besitzt das WOM-Bit keine Funktion.
Mit dem ILT- (Idle-Line-Detect-Type-) Bit kann das Verfahren zur Erkennung des IdleLine-Signals festgelegt werden. Ein Idle-Line-Signal liegt vor, sobald sich der Eingang
des Empfängers für die Dauer eines Transfers (= 10 - 11 Bit) ununterbrochen im
Ruhezustand (= logische Eins) befindet. Tritt ein Idle-Line-Signal auf, wird das IDLEFlag im SCI-Statusregister gesetzt.
Ist das ILT-Bit gelöscht, beginnt die Zählung der 10 bzw. 11 Bits des Idle-Line-Signals
sobald die erste logische Eins auf der Datenleitung erkannt wird. Ist das ILT-Bit gesetzt,
wird mit der Zählung erst nach dem STOP-Bit begonnen.
Das Parity-Enable- (PE-) Bit, das Parity-Type- (PT-) Bit sowie das Mode-Select- (M-)
Bit werden verwendet, um das Format des Übertragungsrahmens (Frame) zu definieren.
Durch das M-Bit wird die Anzahl der pro Frame übertragenen Datenbits vorgegeben. Es
gilt:
M-Bit = 0
8 Datenbits pro Frame
M-Bit = 1
9 Datenbits pro Frame
Der Übertragungsrahmen des SCI beinhaltet darüber hinaus ein Startbit und ein Stopbit.
Sind zwei Stopbits erforderlich, kann das letzte Datenbit als zweites Stopbit verwendet
werden.
Durch das SCI kann eine Paritätsprüfung der Datenbits vorgenommen werden. Um die
Paritätsprüfung zu aktivieren, muss das PE-Bit gesetzt werden. Für den Fall, dass die
Klaus Senning
15
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Paritätsprüfung aktiviert ist, wird vom Transmitter das Parity-Bit erzeugt und anstelle des
letzten Datenbits übertragen. Dadurch verringert sich die Anzahl der in einem Frame
übertragenen Datenbits. Der Receiver überprüft bei jedem empfangenen Datenpaket die
Parität. Tritt dabei ein Paritätsfehler auf, wird das PF-Flag des SCI-Statusregisters gesetzt.
Ist die Paritätsprüfung aktiviert, kann mit Hilfe des PT-Bits zwischen gerader und
ungerader Parität gewählt werden. Soll die Anzahl der in einem Übertragungsrahmen
enthaltenen Einsen gerade sein (gerade Parität), ist das PT-Bit zu löschen. Entsprechend
ist die Anzahl der enthaltenen Einsen ungerade (ungerade Parität), wenn das PT-Bit auf
den Wert 1 gesetzt ist.
M
0
0
0
1
1
1
PE PT
Frame-Format
0 X 1 Startbit, 1 Stopbit, 8 Datenbits, kein Paritätsbit
1
0 1 Startbit, 1 Stopbit, 7 Datenbits, 1 Paritätsbit (gerade Parität)
1
1 1 Startbit, 1 Stopbit, 7 Datenbits, 1 Paritätsbit (ungerade Parität)
0 X 1 Startbit, 1 Stopbit, 9 Datenbits, kein Paritätsbit
1
0 1 Startbit, 1 Stopbit, 8 Datenbits, 1 Paritätsbit (gerade Parität)
1
1 1 Startbit, 1 Stopbit, 8 Datenbits, 1 Paritätsbit (ungerade Parität)
X= Don`t Care
Bild 8.9: SCI Übertragungsrahmen
Durch das Receiver-Wakeup- (RWU-) Bit kann der Receiver in den Wakeup-Mode
geschaltet werden. Hierfür ist das RWU-Bit zu setzen. In diesem Betriebsmodus ignoriert
der Receiver alle ankommenden Datenpakete. Das Wake- (Wake-By-Address-Mark-)
Bit definiert, durch welches Ereignis der Receiver vom Wakeup-Mode zurück in den
normalen Betriebsmodus geschaltet wird. Ist das Wake-Bit gesetzt, wechselt der Receiver
sobald ein Address-Mark-Frame empfangen wird zurück in den normalen Betriebsmodus.
Ein Address-Mark-Frame beinhaltet eine logische Eins als letztes Datenbit. Ist das WakeBit gelöscht, muss ein Idle-Line-Signal erzeugt werden, um den Receiver in den normalen
Betriebsmodus zu schalten. Beim Wechsel vom Wakeup-Mode in den normalen
Betriebsmodus wird das RWU-Bit automatisch gelöscht.
Für die Parametrierung der Interrupt-Logik steht das Transmitter-Interrupt-Enable(TIE-) Bit, das Receiver-Interrupt-Enable- (RIE-) Bit, das Transmission-CompleteInterrupt-Enable- (TCIE-) Bit und das Idle-Line-Interrupt-Enable- (ILIE-) Bit zur
Verfügung. Jedem der vier Interrupt-Enable-Bits ist ein Flag des SCI-Statusregisters
zugeordnet. Ist sowohl das Interrupt-Enable-Bit als auch das zugehörige Flag im SCIStatusregister gesetzt, wird ein Interrupt ausgelöst. Weitere Informationen hierzu können
der Beschreibung des SCI-Statusregisters entnommen werden.
Der Transmitter sowie der Receiver des SCI können separat aktiviert bzw. deaktiviert
werden. Hierfür wird das Transmitter-Enable- (TE-) Bit und das Receiver-Enable(RE-) Bit verwendet. Es gilt:
TE-Bit = 0
Transmitter deaktiviert
TE-Bit = 1
Transmitter aktiviert
RE-Bit = 0
Receiver deaktiviert
RE-Bit = 1
Receiver aktiviert
Ist das Send-Break- (SBK-) Bit gesetzt, wird im Anschluss an die gerade stattfindende
Übertragung ein Break-Signal gesendet. Das Break-Signal ist ein Datenpaket bestehend
Klaus Senning
16
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
aus 10 - 11 logischen Nullen. Im Allgemeinen wird das Break-Signal verwendet, um dem
Kommunikationspartner das Ende der Datenübertragung zu signalisieren.
SCI-Status-Register (SCSR)
$YFFC0C
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
-
-
-
-
-
-
-
TDRE
TC
RDRF
RAF
IDLE
OR
NF
FE
PF
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
Reset
Das SCSR enthält neun Flags, die den aktuellen Zustand des SCI anzeigen. Die
Bedeutung der einzelnen Flags wird in der nachfolgenden Tabelle erklärt. Zusätzlich sind
die, den Flags zugeordneten Interrupt-Enable- (IE-) Bits des SCCR1 mit aufgeführt.
Status-Flag
TDRE
Bedeutung
Das Flag wird gesetzt, sobald das Transmit-Data-Register leer ist.
Transmit Data Reg. Empty
TC
Das Flag ist gesetzt, während der Transmitter Daten sendet.
Transmission Complete
RDRF
Receive Data Reg. Full
RAF
Das Flag wird gesetzt, sobald das Receive-Data-Register Daten
enthält.
Das Flag ist gelöscht, während der Receiver Daten empfängt.
Receiver Active Flag
IDLE
Idle-Line Detect
OR
Overrun
NF
Noise Flag
FE
Framing Error
PF
Parity Fault
Das Flag wird gesetzt, sobald der Receiver ein Idle-Line-Signal
empfängt.
Das Flag wird gesetzt, für den Fall, dass der Receiver Daten
empfängt, während das Receive-Data-Register bereits gefüllt ist.
Jedes Bit wird vom Receiver dreimal abgetastet. Sind die drei
Abtastwerte nicht identisch, wird das Flag gesetzt.
Das Flag wird gesetzt, sobald der Receiver einen Rahmenfehler
erkennt.
Das Flag wird gesetzt, sobald der Receiver einen Paritätsfehler
erkennt.
IE-Bit
TIE
TCIE
RIE
ILIE
-
Bild 8.10: Bedeutung der Flags des SCI-Statusregisters
In einigen Situationen ist es erforderlich, die Flags des SCI-Statusregisters zu löschen.
Wurde z.B. vom SCI ein Interrupt ausgelöst, muss durch die Interrupt-Service-Routine
das Flag, durch das der Interrupt ausgelöst wurde, zurückgesetzt werden. Sollte dies nicht
passieren, wird sofort nach Verlassen der Interrupt-Service-Routine erneut ein Interrupt
ausgelöst.
Mit Ausnahme des RAF-Flags müssen alle Flags manuell gelöscht werden. Das RAF-Flag
wird automatisch zurückgesetzt, sobald der Receiver ein Idle-Line-Signal empfängt. Zum
Löschen der übrigen Flags muss zunächst der aktuelle Zustand der Flags aus dem SCIStatusregister ausgelesen werden. Erfolgt anschließend ein Lesezugriff auf das ReceiverData-Register, werden alle Flags mit Ausnahme des TDRE-Flags und des TC-Flags
zurückgesetzt. Um das TDRE-Flag bzw. das TC-Flag zu löschen muss, nachdem der
Zustand der Flags aus dem SCI-Statusregister ausgelesen wurde, ein Schreibzugriff auf
das Transmitter-Data-Register erfolgen.
SCI-Data-Register (SCDR)
Klaus Senning
$YFFC0E
17
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Reset
15
14
13
12
11
10
9
-
-
-
-
-
-
-
0
0
0
0
0
0
0
8
7
6
5
4
3
2
1
0
Data8 Data7 Data6 Data5 Data4 Data3 Data2 Data1 Data0
0
0
0
0
0
0
0
0
0
Hinter dem SCI-Data-Register verbergen sich zwei Register die gemeinsam eine Adresse
belegen. Erfolgt auf das SCDR ein Lesezugriff, wird automatisch das Receiver-DataRegister (RDR) angesprochen. Dieses enthält die vom Receiver empfangenen Daten. Bei
einem Schreibzugriff auf das SCDR, wird hingegen das Transmitter-Data-Register (TDR)
angesprochen. Dieses enthält die zu sendenden Daten.
Beide Register sind identisch aufgebaut. Die zu sendenden bzw. empfangenen Daten sind
jeweils in den Bits 0-7 bzw. 0-8 des Registers enthalten.
1.4.4
QSPI Kontrollregister
Das Queued-Serial-Peripheral-Interface beinhaltet vier Steuerregister, ein Statusregister und
das QSPI-RAM. Das QSPI-RAM unterteilt sich in das Receive-Data-RAM, das TransmitData-RAM sowie das Command-RAM. Neben den QSPI-Kontrollregistern gehören auch die
allgemeinen QSM-Kontrollregister zum Programmiermodell des QSPI.
Wird während einer Datenübertragung der Inhalt eines der Steuerregister geändert, können
dadurch, ähnlich wie auch beim SCI, Übertragungsfehler verursacht werden. Um dies zu
vermeiden muss, bevor der Inhalt eines der Steuerregister geändert wird, die Übertragung
angehalten werden. Hiervon ist das QSPI-Control-Register 2 (SPCR2) ausgenommen. Das
SPCR2 kann auch während einer Übertragung geändert werden, ohne dadurch eine Störung
zu verursachen. Dies ist möglich, da der geänderte Registerinhalt erst nach Ende der
Übertragung wirksam wird.
QSPI-Control-Register 0 (SPCR0)
15
14
13
12
Reset
0
0
11
10
BITS
MSTR W OM
0
0
$YFFC18
9
8
7
6
5
4
0
0
1
0
3
2
1
0
0
1
0
0
SPBR
CPOL CPHA
0
0
0
0
Die synchrone serielle Kommunikation findet stets zwischen einem Master und einem
Slave statt. Das QSPI kann wahlweise als Master oder Slave betrieben werden. Ist das
Master/Slave-Mode-Select- (MSTR-) Bit gesetzt, wird das QSPI als Master eingesetzt
(Master-Mode). Soll das QSPI hingegen als Slave verwendet werden (Slave-Mode), ist
das MSTR-Bit zu löschen.
Durch das WOM- (Wired-Or-Mode-) Bit kann der Wired-Or-Mode aktiviert werden. In
diesem Betriebsmodus werden die Ausgänge des QSPI als Open-Drain-Ausgänge
betrieben. Somit ist es möglich, mehrere Ausgänge parallel zu schalten. Um den WiredOr-Mode zu aktivieren, muss das WOM-Bit gesetzt werden. Ist das WOM-Bit gelöscht,
werden die Ausgänge des QSPI als CMOS-Ausgänge betrieben.
Klaus Senning
18
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Der Parameter Bits-Per-Transfer (BITS) definiert die
Anzahl der, innerhalb eines Datentransfers übertragenen
Bits. Die Anzahl der Bits kann im Bereich von 8 bis 16
variiert werden (siehe Bild 8.11).
Wird das QSPI im Master-Mode betrieben, kann darüber
hinaus durch das Bit-Per-Transfer-Enable- (BITSE-) Bit des
Command-RAMs die Anzahl der pro Datentransfer
übertragenen Bits beeinflusst werden. Ist das BITSE-Bit auf
den Wert 1 gesetzt, wird während eines Datentransfers die
durch den BITS-Parameter vorgegebene Anzahl von Bits
übertragen. Ist das BITSE-Bit hingegen zurückgesetzt,
werden innerhalb eines Datentransfers 8 Bits übertragen.
Falls das QSPI im Slave-Mode betrieben wird, besitzt das
BITSE-Bit keine Funktion.
BITS
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Anza hl de r Bits
16
reserviert
reserviert
reserviert
reserviert
reserviert
reserviert
reserviert
8
9
10
11
12
13
14
15
Bild 8.11: Codierung des BITSParameters
Durch den Clock-Polarity- (CPOL-) und den Clock-Phase- (CPHA-) Parameter kann
das Verhalten des Taktsignals (SCLK) an den angeschlossenen Peripherie-Baustein
angepasst werden. Das CPOL-Bit definiert den Spannungspegel, welchen das Taktsignal
im Ruhezustand einnimmt. Durch das CPHA-Bit wird festgelegt, mit welcher Taktflanke
das Datensignal geändert bzw. gehalten wird.
CPOL = 0
CPOL = 1
COHA = 0
COHA = 1
Ruhezustand = Low-Pegel
Ruhezustand = High-Pegel
Während der führenden Taktflanke werden die Daten gehalten
Während der führenden Taktflanke werden die Daten geändert
Durch das SPCR0 wird darüber hinaus die Baudrate des QSPI definiert. Hierfür wird der
SPBR- (Serial-Clock-Baud-Rate-) Parameter verwendet. Die Taktfrequenz des QSPI
wird von der Systemfrequenz abgeleitet. Mit Hilfe der nachfolgend dargestellten
Gleichung kann aus der eingestellten Systemfrequenz und der gewünschten Baudrate der
SPBR-Parameter bestimmt werden.
SPBR =
Systemfrequenz
2 * Baudrate
- (4 – 2)
Der SPBR-Parameter kann im Bereich von 0 bis 255 variiert werden. Enthält der SPBRParameter den Wert 0 oder 1, wird der Taktgenerator des QSPI deaktiviert. Somit kann
keine Datenübertragung stattfinden.
Klaus Senning
19
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
QSPI-Control-Register 1 (SPCR1)
15
14
13
12
0
10
9
8
7
6
5
4
DSCKL
SPE
Reset
11
$YFFC1A
0
0
0
0
3
2
1
0
0
1
0
0
DTL
1
0
0
0
0
0
0
Mit Hilfe des QSPI-Enable- (SPE-) Bits wird das QSPI aktiviert bzw. deaktiviert. Um
das QSPI zu aktivieren, muss das SPE-Bit gesetzt werden. Für den Fall, dass das QSPI als
Master konfiguriert ist, wird unmittelbar nachdem das QSPI aktiviert wurde, der erste
Datentransfer gestartet. Wird das QSPI hingegen im Slave-Mode betrieben, wartet das
QSPI, nachdem es aktiviert wurde, auf einen Zugriff vom Master.
Soll das QSPI deaktiviert werden, ist das SPE-Bit zu löschen. Findet dies statt während
gerade eine Datenübertragung durchgeführt wird, können dadurch Übertragungsfehler
verursacht werden. Um dies zu verhindern, muss zunächst die Datenübertragung
angehalten und anschließend das QSPI deaktiviert werden. Die Datenübertragung kann
gestoppt werden, indem das HALT-Bit des SPCR3 gesetzt wird. Sobald die
Datenübertragung angehalten ist, wird daraufhin das HALTA-Flag des QSPI-Statusregisters gesetzt. Anschließend kann das QSPI deaktiviert werden.
Des Weiteren kann das SPE-Bit auch durch das QSPI gelöscht werden. Dies erfolgt
entweder nach Ende einer Datenübertragung oder im Fehlerfall. Ist das QSPI deaktiviert,
können die PINs des QSPI als I/O-Port und das QSPI-RAM als zusätzlicher RAMSpeicher verwendet werden.
Zwischen dem Anlegen des Peripheral-Chip-Select- (PCS-) Signals und dem Beginn der
Datenübertragung wird vom Master eine definierte Wartezeit eingehalten. Diese Wartezeit
kann auf den angeschlossenen Peripherie-Baustein abgestimmt werden. Hierfür ist im
SPCR1 der Delay-Before-Serial-Clock- (DSCKL-) Parameter vorhanden. Anhand der
nachfolgend dargestellten Gleichung kann aus der Systemfrequenz und der gewünschten
Wartezeit der DSCKL-Parameter errechnet werden.
DSCKL = Systemfrequenz * Wartezeit
Der DSCKL-Parameter kann im Bereich von 0 bis 127 gewählt werden, wobei der Wert 0
einem tatsächlichen Wert von 128 entspricht ( Wartezeit = 128 / Systemfrequenz).
Durch das PCS-To-Serial-Clock-Delay- (DSCK-) Bit im Command-RAM wird festgelegt,
ob die durch den DSCKL-Parameter definierte oder eine fest vorgegebene Wartezeit
verwendet wird. Ist das DSCK-Bit gesetzt, wird die durch den DSCKL-Parameter
definierte Wartezeit eingehalten. Ist das DSCK-Bit hingegen zurückgesetzt, entspricht die
Wartezeit, unabhängig vom aktuellen Inhalt des DSCKL-Parameters, der halben
Periodendauer des SCK-Signals.
Der Length-Of-Delay-After-Transfer- (DTL-) Parameter definiert die Wartezeit
zwischen zwei aufeinander folgenden Datentransfers. Nachfolgend ist die Gleichung zur
Berechnung des DTL-Parameters angegeben. Dieser Parameter kann im Bereich von 0 bis
255 eingestellt werden. Der Wert 0 entspricht einem tatsächlichen Wert von 256.
DTL =
Klaus Senning
Systemfrequenz * Wartezeit
32
20
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Zusätzlich kann anhand des Delay-After-Transfer- (DT-) Bits im Command-RAM
festgelegt werden, ob die eingestellte oder eine fest vorgegebene Wartezeit verwendet
werden soll. Ist das DT-Bit gesetzt, wird die, durch den DTL-Parameter definierte
Wartezeit eingehalten. Soll hingegen die fest vorgegebene Wartezeit (= 17 /
Systemfrequenz) verwendet werden, ist das DT-Bit zu löschen.
QSPI-Control-Register 2 (SPCR2)
15
14
13
SPIFIE W REN W RTO
Reset
0
0
0
12
11
9
8
ENDQP
-
0
10
$YFFC1C
0
0
0
0
7
6
5
4
-
-
-
-
0
0
0
0
3
2
1
0
NEW QP
0
0
0
0
Wie bereits erwähnt, können die, im SPCR2 enthaltenen Parameter auch während eines
Datentransfers geändert werden, ohne dadurch einen Übertragungsfehler zu verursachen.
Das QSPI übernimmt die geänderte Einstellung des SPCR2 erst nach Ende des
Datentransfers. Die laufende Übertragung kann somit ungestört beendet werden.
Die Interrupt-Logik des QSPI wird mit Hilfe von zwei Interrupt-Enable-Bits parametriert.
Eines davon ist das SPI-Finished-Interrupt-Enable- (SPIFIE-) Bit. Ist das SPIFIE-Bit
gesetzt, löst das QSPI einen Interrupt aus, wenn das SPI-Finished- (SPIF-) Flag im QSPIStatusregister (SPSR) gesetzt wird. Soll hingegen durch das SPIF-Flag kein Interrupt
ausgelöst werden, muss das SPIFIE-Bit gelöscht werden. Die Funktion des SPIF-Flags
wird im Zusammenhang mit der Beschreibung des QSPI-Statusregisters erläutert.
Das QSPI beinhaltet einen 80 Byte-RAM-Speicher. Dieser wird als QSPI-RAM
bezeichnet. Mit dessen Hilfe kann das QSPI bis zu 16 Datentransfers selbständig, d.h.
ohne CPU-Zugriff, ausführen. Das QSPI-RAM enthält 16 Einträge ($0 - $F), von denen
jeder die zur Durchführung eines Datentransfers benötigten Daten und Steuerinformationen enthält. Das SPCR2 beinhaltet zwei Zeiger auf das QSPI-RAM. Den NewQueue-Pointer (NEWQP) und den Ending-Queue-Pointer (ENDQP). Der NEWQP
definiert, mit welchem der 16 Einträge des QSPI-RAMs die Datenübertragung, nach
Aktivierung des QSPI, begonnen wird. Anschließend werden die einzelnen Einträge des
QSPI-RAMs der Reihe nach abgearbeitet. Der ENDQP zeigt auf den letzten
auszuführenden Eintrag im QSPI-RAM. Jeweils nach Ende eines Datentransfers überprüft
das QSPI ob der, durch den ENDQP markierte Eintrag erreicht wurde. Die beiden Zeiger
NEWQP und ENDQP müssen parametriert werden, bevor das QSPI aktiviert wird.
Das QSPI-RAM ist als Ring-Speicher realisiert. Das bedeutet, zeigt der ENDQP auf einen
Eintrag, der im QSPI-RAM vor dem Eintrag steht, der durch den NEWQP markiert ist,
wird nachdem das Ende des QSPI-RAMs erreicht wurde, die Bearbeitung mit dem ersten
Eintrag fortgesetzt.
Mit Hilfe des Wrap-Enable- (WREN-) Bits kann der Wraparound-Mode aktiviert bzw.
deaktiviert werden. Ist das WREN-Bit gelöscht und somit der Wraparound-Mode
deaktiviert, wird nachdem der durch den ENDQP markierte Eintrag bearbeitet wurde, das
Klaus Senning
21
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
SPI-Finished- (SPIF-) Flag im QSPI-Statusregister gesetzt und die Datenübertragung
angehalten.
Um den Wraparound-Mode zu aktivieren muss das WREN-Bit gesetzt werden. In diesem
Fall wird, nachdem der durch den ENDQP markierte Eintrag erreicht wurde ebenfalls das
SPI-Finished-Flag gesetzt. Die Datenübertragung wird jedoch nicht beendet.
Das Wrap-To- (WRTO-) Bit definiert, mit welchem Eintrag des QSPI-RAMs die
Übertragung fortgesetzt wird. Ist das WRTO-Bit gesetzt, wird als nächstes der, durch den
NEWQP markierte Eintrag bearbeitet. Soll hingegen die Bearbeitung mit dem ersten
Eintrag im QSPI-RAM fortgesetzt werden, ist das WRTO-Bit zu löschen. Befindet sich
das QSPI im Wraparound-Mode, muss die Datenübertragung manuell gestoppt werden.
Dies kann entweder durch Löschen des WREN-Bits oder durch Setzen des HALT-Bits
erfolgen.
QSPI-Control-Register 3 (SPCR3)
Reset
15
14
13
12
11
-
-
-
-
-
0
0
0
0
0
10
$YFFC1E
9
LOOP HMIE
0
0
8
7
6
5
4
0
3
2
1
0
0
0
0
0
SPSR
HALT
0
0
0
0
Durch das LOOP-Bit kann der Loop-Mode aktiviert bzw. deaktiviert werden. Im LoopMode ist der Datenausgang des QSPI intern mit dem Dateneingang verbunden. Dieser
Betriebsmodus wird zum Test des QSPI verwendet. Um den Loop-Mode zu aktivieren,
muss das LOOP-Bit gesetzt werden. Sobald das LOOP-Bit wieder gelöscht wird, wechselt
das QSPI in den normalen Betriebsmodus.
Das HALTA-And-MODF-Interrupt-Enable- (HMIE-) Bit dient zur Parametrierung der
Interrupt-Logik des QSPI. Ist das HMIE-Bit gesetzt, wird ein Interrupt ausgelöst, wenn
eines der beiden Flags HALTA oder MODF des QSPI-Statusregisters (SPSR) gesetzt ist.
Soll durch die beiden Flags kein Interrupt ausgelöst werden, ist das HMIE-Bit zu löschen.
Die Funktion dieser beiden Flags wird im Zusammenhang mit der Beschreibung des
QSPI-Statusregisters erklärt.
Wie bereits erwähnt, kann es aus mehreren Gründen erforderlich sein, das QSPI
anzuhalten. Hierfür wird das HALT-Bit benötigt. Ist das HALT-Bit gesetzt, wird die
Datenübertragung nach Ende des momentan stattfindenden Datentransfers angehalten und
das HALTA-Flag im QSPI-Statusregister gesetzt. Um die Datenübertragung wieder
fortzusetzen, muss das HALT-Bit gelöscht werden.
QSPI-Status-Register (SPSR)
Klaus Senning
$YFFC1F
22
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
15
14
13
12
11
10
9
8
SPCR3
Reset
0
0
0
0
0
0
0
7
6
5
4
SPIF
MODF
HALTA
-
0
0
0
0
0
3
2
1
0
CPTQP
0
0
0
0
Das QSPI-Statusregister enthält das SPI-Finished-Flag (SPIF), das Mode-Fault-Flag
(MODF), das Halt-Acknowledge-Flag (HALTA), sowie den Completed-Queue-Pointer
(CPTQP). Der CPTQP ist ein Zeiger auf das QSPI-RAM. Er markiert den zuletzt
bearbeiteten Eintrag.
Die Funktion der einzelnen Flags ist in der nachfolgend dargestellten Tabelle beschrieben.
Zusätzlich sind die, den Flags zugeordneten Interrupt-Enable- (IE-) Bits aufgeführt.
Status-Flag
SPIF
SPI Finished Flag
MODF
Mode Fault Flag
HALTA
Halt Acknowledge Flag
Bedeutung
Das Flag wird gesetzt, sobald der durch den ENDQP markierte
Eintrag im QSPI-RAM bearbeitet wurde.
Befindet sich das QSPI im Master-Mode (MSTR = 1) und liegt an
einem der Peripheral-Chip-Select- (PCS-) Signale ein Low-Signal
an, wird das Flag gesetzt und das QSPI deaktiviert.
Ist das HALT-Bit gesetzt, wird nach Ende des laufenden Datentransfers die Übertragung gestoppt und das HALTA-Flag gesetzt.
IE-Bit
SPIFIE
HMIE
HMIE
Bild 8.12: Bedeutung der Flags des QSPI-Statusregisters
Die Flags des QSPI-Statusregisters müssen manuell zurückgesetzt werden. Hierfür ist
zunächst der aktuelle Zustand der Flags aus dem QSPI-Statusregister auszulesen.
Anschließend können die Flags gelöscht werden. Zu diesem Zweck muss ein
Schreibzugriff auf das QSPI-Statusregister ausgeführt werden, um die entsprechenden
Bits zu überschreiben.
QSPI-RAM:
Auf das 80 Byte-QSPI-RAM kann sowohl die CPU als auch das QSPI zugreifen. Es
besteht die Möglichkeit, das QSPI-RAM als zusätzlichen RAM-Speicher zu verwenden.
Hierfür muss das QSPI deaktiviert werden. Ist das QSPI hingegen aktiviert, kann das
QSPI-RAM durch die CPU und das QSPI angesprochen werden. In diesem Fall dient das
QSPI-RAM zum Datenaustausch zwischen der CPU und dem QSPI.
Die CPU kann auf das QSPI-RAM Byte-, Word-, und Longword-Zugriffe ausführen. Ist
das QSPI aktiviert, kann eine Datenkonsistenz jedoch nur für Word-Zugriffe auf eine
gerade Speicheradresse und für Byte-Zugriffe gewährleistet werden. Erfolgt hingegen ein
Word-Zugriff auf eine ungerade Adresse oder ein Longword-Zugriff, wird dieser in
mehrere Zugriffe unterteilt. Dadurch kann es nicht ausgeschlossen werden, dass die im
QSPI-RAM enthaltenen Daten zwischen zwei CPU-Zugriffen durch das QSPI geändert
werden.
Das QSPI-RAM ist in drei Bereiche unterteilt. Diese tragen die Bezeichnungen ReceiveData-RAM, Transmit-Data-RAM und Command-RAM. Bild 8.13 zeigt den Aufbau des
QSPI-RAMs.
23
Klaus Senning
RR
RR 0
1
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Receive-Data-RAM
$YFFD00
$YFFD1E
Transmit-Data-RAM
$YFFD20
RR 2
RR 3
RR 4
RR 5
RR 6
RR 7
RR 8
RR 9
RR A
RR B
RR C
RR D
RR E
RR F
WORD
$YFFD3E
TR 0
TR 1
TR 2
TR 3
TR 4
TR 5
TR 6
TR 7
TR 8
TR 9
TR A
TR B
TR C
TR D
TR E
TR F
WORD
Command-RAM
$YFFD40
$YFFD4F
CR 0
CR 1
CR 2
CR 3
CR 4
CR 5
CR 6
CR 7
CR 8
CR 9
CR A
CR B
CR C
CR D
CR E
CR F
RAMEintrag
$0
$F
BYTE
Bild 8.13: Aufbau des QSPI-RAMs
Jeder Bereich des QSPI-RAMs beinhaltet 16 Register. Diese werden entsprechend als
Receive-Register (RR), Transmit-Register (TR) und Command-Register (CR) bezeichnet.
Die Receive-Register besitzen, wie auch die Transmit-Register, eine Datenbreite von 16
Bit, während die Command-Register nur über eine Breite von 8 Bit verfügen. Zu einem
Eintrag im QSPI-RAM gehört jeweils ein Receive-Register, ein Transmit-Register sowie
ein Command-Register. Ein Eintrag enthält somit alle Daten und Steuerinformationen die
erforderlich sind, um einen Datentransfer durchführen zu können. Das QSPI kann somit
bis zu 16 Datentransfers selbständig, d.h. ohne CPU-Zugriff, ausführen.
Im Receive-Data-RAM werden die vom QSPI empfangenen Daten gespeichert. Diese
können von der CPU ausgelesen werden. Das niederwertigste Bit des empfangenen
Datums wird, unabhängig von der Anzahl der pro Datentransfer übertragenen Datenbits,
an Bitposition 0 des Receive-Registers (RR) abgelegt.
Das Transmit-Data-RAM enthält die zu übertragenden Daten. Das niederwertigste Bit
des zu übertragenden Datums muss an Bitposition 0 des Transmit-Registers (TR)
abgespeichert werden.
Das Transmit- und Receive-Data-RAM wird unabhängig davon, ob das QSPI im Masteroder Slave-Mode betrieben wird, benötigt. Während hingegen das Command-RAM nur
dann verwendet wird, wenn sich das QSPI im Master-Mode befindet.
Klaus Senning
24
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Wie bereits erwähnt, wird die Datenübertragung durch den Master gesteuert. Das
Command-RAM enthält Informationen die vom Master zur Steuerung des Datentransfers
benötigt werden. Mit Hilfe des Command-RAMs können für jeden Datentransfer spezielle
Steuerinformationen vorgegeben werden. Somit ist es möglich, das QSPI flexibel auf die
Anforderungen der verschiedenen angeschlossenen Peripherie-Bausteine anzupassen.
Nachfolgend ist der Aufbau eines Command-Registers dargestellt.
7
6
5
4
3
2
1
0
CONT
BITSE
DT
DSCK
PCS3
PCS2
PCS1
PCS0
Das QSPI besitzt vier Peripheral-Chip-Select- (PCS-) Signale. Mit ihnen kann der
Master den gewünschten Kommunikationspartner (Slave) auswählen. Werden die PCSSignale direkt an die einzelnen Peripherie-Bausteine angeschlossen, können somit max.
vier Slave-Bausteine angesprochen werden. Unter Verwendung zusätzlicher Hardware ist
es möglich, mit den vier PCS-Signalen bis zu 16 Slave-Bausteine zu verwalten. Jedem der
vier Peripheral-Chip-Select-Signale ist ein PCS-Bit im Command-Register zugeordnet. Ist
eines der Bits gesetzt, wird am zugehörigen PCS-Signal eine logische Eins ausgegeben.
Soll hingegen eine logische Null ausgeben werden, ist das entsprechende Bit zu löschen.
Um die PCS-Signale verwenden zu können, sind folgende Einstellungen vorzunehmen.
Zunächst müssen mit Hilfe des PQSPAR-Registers die entsprechenden PINs dem QSPI
zugeordnet werden. Anschließend ist in das PORTQS-Register der gewünschte DefaultZustand der PCS-Signale einzutragen. Abschließend sind die, als PCS-Signale
verwendeten PINs im DDRQS als Ausgänge zu definieren.
Ist das Continue- (CONT-) Bit des Command-Registers gesetzt, werden nach Ende eines
Datentransfers die aktuellen Zustände der PCS-Signale bis zum nächsten Datentransfer
nicht verändert. Sollen hingegen zwischen zwei Datentransfers der durch das PORTQSRegister definierte Default-Zustand ausgegeben werden, ist das CONT-Bit zu löschen.
Die Funktion des PCS-To-SCK-Delay- (DSCK-) Bits, des Delay-After-Transfer- (DT-)
Bits sowie des Bits-Per-Transfer-Enable- (BITSE-) Bits wurde bereits mit der
Beschreibung des SPCR0 und SPCR1 ausführlich erläutert.
Klaus Senning
25
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
1.5
System-Integration-Module (SIM)
1.5.1
Einführung
Das SIM besteht aufgrund seiner Komplexität aus mehreren Untermodulen. Die Aufgaben der
einzelnen Untermodule werden im Anschluss kurz erläutert.
System-Configuration-And-Protection-Module (SPM):
Das SPM beinhaltet die Grundeinstellungen des System-Integration-Module. Des
Weiteren ist ein Bus-Monitor, ein Halt-Monitor, ein Spurious-Interrupt-Monitor sowie ein
Software-Watchdog zur Überwachung der Hard- und Software enthalten. Mit Hilfe des
Bus-Monitors können die Antwortzeiten der Buszugriffe überwacht werden. Übersteigen
diese einen definierten Wert, wird intern das /BERR-Signal aktiviert. Der Halt-Monitor
überwacht die CPU. Wechselt diese in den Halt-Zustand, wird dadurch der Halt-Monitor
aktiviert. Die Reaktion des Halt-Monitors kann durch dessen Parametrierung definiert
werden. Durch den Spurious-Interrupt-Monitor wird der Interrupt-Bestätigungs-Zyklus
überwacht. Nachdem ein Interrupt ausgelöst wurde, wartet der Mikrocontroller auf eine
Bestätigung des Interrupts. Bleibt diese Bestätigung aus, erzeugt der Spurious-InterruptMonitor nach Ablauf einer bestimmten Wartezeit den Spurious-Interrupt-Vektor. Zur
Überwachung der Software ist ein Software-Watchdog integriert. Durch die Software
erfolgt zyklisch ein Schreibzugriff auf eines der Watchdog-Register. Bleiben diese
Schreibzugriffe aus, wird dadurch der Software-Watchdog aktiviert.
Neben den Überwachungseinrichtungen verfügt das SPM über einen Timer, durch den
periodisch ein Interrupt ausgelöst werden kann. Dieser wird als Periodic-Interrupt-Timer
(PIT) bezeichnet. Der PIT erleichtert die Implementierung von Echtzeitbetriebssystemen.
Chip-Select-Module (CS):
Die meisten Mikrocontroller benötigen eine externe Hardware für die Erzeugung der
Chip-Select-Signale. Das Chip-Select-Module des SIM bietet die Möglichkeit, intern bis
zu 12 Chip-Select-Signale zu generieren.
Der Datentransfer auf dem Systembus des MC 68332 kann entweder synchron oder
asynchon erfolgen. Für den Fall, dass der Systembus asynchron arbeitet, muss vom
angesprochenen Peripherie-Baustein ein Bestätigungssignal erzeugt werden. Dieses wird
als Data-And-Size-Acknowledge- (/DSACK-) Signal bezeichnet. Das Chip-Select-Module
bietet zusätzlich die Möglichkeit, das /DSACK-Signal intern zu erzeugen. Hierfür ist ein
eigener DSACK-Generator integriert.
Um den Hardwareaufwand zu reduzieren, kann das CS-Module darüber hinaus zur
Erzeugung eines Interrupt-Acknowledge-Signals oder als AVEC-Generator, d.h. für die
interne Erzeugung des /AVEC-Signals, eingesetzt werden.
External-Bus-Interface (EBI):
Das EBI stellt die Verbindung zwischen dem internen Bussystem des Mikrocontrollers
und der externen Hardware her. Des Weiteren verfügt das EBI über drei I/O-Ports.
Das interne Bussystem beinhaltet insgesamt fast 100 Signale. Zusätzlich werden einige
PINs für I/O-Funktionen benötigt. Es ist nicht möglich, alle diese Signale gleichzeitig
nach außen zu führen. Deshalb sind den einzelnen PINs des EBI mehrere Funktionen
zugordnet. Durch die Parametrierung des EBI wird die Funktion der einzelnen PINs
definiert.
Klaus Senning
26
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Nur die Signale des Bussystems, die für die jeweilige Anwendung tatsächlich erforderlich
sind, werden an die entsprechenden PINs gelegt. Die übrigen PINs können somit für I/OFunktionen verwendet werden.
Das EBI enthält außerdem die Reset-Logik. Unter anderem ist diese für die HardwareInitialisierung zuständig.
System-Clock-Module (SCM):
Das System-Clock-Module stellt das, zum Betrieb des Mikrocontrollers erforderliche,
Taktsignal bereit. Das Taktsignal kann entweder intern oder extern erzeugt werden. Für
die interne Takterzeugung ist ein Phase-Locked-Loop (PLL) vorhanden. Mit dessen Hilfe
kann das Taktsignal von einer externen Referenzfrequenz abgeleitet werden.
System-Test-Module (STM):
Das System-Test-Module bietet umfangreiche Test-Möglichkeiten. Da diese dem
Benutzer jedoch nicht zugänglich gemacht werden und für den üblichen Betrieb auch
nicht von Interesse sind, wird hier nicht weiter darauf eingegangen.
Aufgrund der Komplexität des SIM werden in dieser Arbeit nur die, zum Verständnis des
EyeBot-Controllers erforderlichen Funktionen und Kontrollregister erklärt. Weitere
Informationen zum SIM können dem Benutzerhandbuch [Motorola 1996/2] entnommen
werden.
1.5.2
SPM Kontrollregister
In diesem Abschnitt werden die Kontrollregister des Periodic-Interrupt-Timers, sowie die zur
Definition der Grundeinstellungen des SIM benötigen Kontrollregister ausführlich
beschrieben. Die Funktionen der Hardware- und Software-Überwachungseinrichtungen
werden nicht näher erläutert.
SIM-Configuration-Register (SIMCR)
15
14
13
EXOFF FRZSW FRZBM
Reset
0
1
1
12
11
10
-
SLVEN
-
0
0
0
$YFFA00
9
8
SHEN
0
0
7
6
5
4
SUPV
MM
-
-
1
1
0
0
3
2
1
0
1
1
IARB
1
1
Das SIMCR ist das wichtigste SIM-Kontrollregister. Es enthält die Grundeinstellungen
des SIM.
Ist das External-Clock-Off- (EXOFF-) Bit gelöscht, kann das interne Taktsignal am
CLKOUT-PIN abgegriffen werden. Ist das Bit hingegen gesetzt, befindet sich dieser PIN
im hochohmigen Zustand.
Klaus Senning
27
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Für dem Fall, dass der Mikrocontroller in den Background-Debug-Mode wechselt, kann
der Bus-Monitor, der Software-Watchdog und der Periodic-Interrupt-Timer gezielt
deaktiviert werden. Hierfür wird das Freeze-Software-Enable- (FRZSW-) Bit und das
Freeze-Bus-Monitor-Enable- (FRZBM-) Bit des SIMCR verwendet. Ist das FRZSW-Bit
gesetzt, wird sowohl der Software-Watchdog als auch der Periodic-Interrupt-Timer
angehalten, sobald der Mikrocontroller in den Background-Debug-Mode wechselt. Ist das
Bit gelöscht, arbeiten beide Funktionsblöcke auch im Background-Debug-Mode
unverändert weiter. Das FRZBM-Bit definiert das Verhalten des Bus-Monitors. Ist das Bit
gesetzt, wird der Bus-Monitor deaktiviert, falls der Mikrocontroller im BackgroundDebug-Mode arbeitet. Soll der Bus-Monitor auch im Background-Debug-Mode aktiviert
bleiben, muss das Bit gelöscht werden.
Das Factory-Test-Mode-Enable- (SLVEN-) Bit wird ausschließlich für den Factory-Test
benötigt. Da diese Funktion dem Anwender nicht zugänglich ist, bleibt dieses Bit stets
zurückgesetzt.
Zur Fehlersuche können auf Wunsch interne Datentransfers am externen Bus sichtbar
gemacht werden. Nach dem Reset sind die beiden Show-Cycle-Enable- (SHEN-) Bits
gelöscht. Somit können die internen Datentransfers am externen Bus nicht überwacht
werden.
Das Supervisor/Unrestricted-Data-Space- (SUPV-) Bit des SIMCR wird zusammen mit
den SUPV-Bits des QSM-Configuration-Registers (QSMCR) und des TPUConfiguration-Registers (TPUMCR) verwendet, um bestimmte Kontrollregister des
jeweiligen Moduls vor unerlaubten Zugriffen zu schützen.
Mit Hilfe des SUPV-Bits des SIMCR kann die Speicherschutz-Funktion aktiviert bzw.
deaktiviert werden. Sobald das SUPV-Bit des SIMCR gesetzt ist, wird die SpeicherschutzFunktion aktiviert. Ist gleichzeitig das SUPV-Bit des QSMCR oder des TPUMCR gesetzt,
kann auf die Kontrollregister des jeweiligen Moduls ausschließlich im Supervisor-Mode
zugegriffen werden. Sollen die Kontrollregister hingegen im User- und Supervisor-Mode
zugänglich sein, muss das SUPV-Bit des jeweiligen Moduls gelöscht werden.
Ist das SUPV-Bit des SIMCR gelöscht und somit die Speicherschutz-Funktion deaktiviert,
kann unabhängig von den SUPV-Bits des QSMCR und des TPUMCR auf die
entsprechenden Kontrollregister im User- und Supervisor-Mode zugegriffen werden.
Die Kontrollregister des MC 68332 liegen in einem 4 KB-großen Speicher-Bereich. Mit
Hilfe des Module-Mapping- (MM-) Bits kann dieser Speicher-Bereich im Adressraum
verschoben werden. Ist das MM-Bit gesetzt, liegen die Kontrollregister im Adressbereich
von $FFF000 bis $FFFFFF (Y = $F). Ist das MM-Bit hingegen gelöscht, befinden sich die
Kontrollregister im Adressbereich von $7FF000 bis $7FFFFF (Y = $7).
Die Interrput-Arbitration-Identification-Number (IARB) definiert mehrere Prioritätsstufen innerhalb eines Interrupt-Levels. Lösen zwei Module gleichzeitig einen Interrupt
aus und besitzen beide den gleichen Interrput-Level, so wird anhand der IARB
entschieden welcher Interrupt als erster zu bearbeiten ist. Die IARB muss mit einem Wert
zwischen $1 (= niedrigste Priorität) und $F (= höchste Priorität) initialisiert werden. Nach
dem Reset-Vorgang enthält die IARB den Wert $0, somit ist keine Interrupt-Bearbeitung
möglich.
System-Protection-Control-Register (SYPCR)
Klaus Senning
$YFFA20
28
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Reset
15
14
13
12
11
10
9
8
7
6
-
-
-
-
-
-
-
-
SW E
SW P
0
0
0
0
0
0
0
0
1
0
5
4
SW T
0
3
2
HME
BME
0
0
0
1
0
BMT
0
0
Das SYPCR dient zur Parametrierung der verschiedenen Überwachungseinrichtungen des
SIM. Nach dem Reset sind mit Ausnahme des Software-Watchdogs und des SpuriousInterrupt-Monitors alle Überwachungseinrichtungen deaktiviert. Der Software-Watchdog
kann nach dem Reset durch Löschen des Software-Watchdog-Enable- (SWE-) Bits
deaktiviert werden. Im Gegensatz dazu besteht keine Möglichkeit, den Spurious-InterruptMonitor zu deaktivieren. Auf eine nähere Beschreibung der Überwachungseinrichtungen
wird aus den genannten Gründen verzichtet.
Periodic-Interrupt-Control-Register (PICR)
Reset
15
14
13
12
11
-
-
-
-
-
0
0
0
0
0
10
9
8
$YFFA22
7
6
5
4
PIRQL
0
0
3
2
1
0
1
1
1
1
PIV
0
0
0
0
0
Durch den Periodic-Interrupt-Timer (PIT) kann in einem definierten Zeittakt ein Interrupt
ausgelöst werden. Zur Parametrierung des PIT sind zwei Kontrollregister vorhanden.
Eines davon ist das PICR. Dieses enthält die, für die Interrupt-Bearbeitung erforderlichen
Einstellungen. Dies ist zum einen der Interrupt-Level. Dieser wird in den PeriodicInterrupt-Request-Level- (PIRQL-) Parameter eingetragen. Der Interrupt-Level legt die
Priorität des Interrupts fest. Er kann im Bereich von 1 (= niedrigste Priorität) bis 7 (=
höchste Priorität) gewählt werden.
Des Weiteren ist der Periodic-Interrupt-Vector- (PIV-) Parameter im PICR enthalten.
Dieser Parameter definiert den Interrupt-Vektor des PIT.
Periodic-Interrupt-Timer-Register (PITR)
Reset
15
14
13
12
11
10
9
8
-
-
-
-
-
-
-
PTP
0
0
0
0
0
0
0
x
$YFFA24
7
6
5
4
3
2
1
0
0
0
0
0
PITM
0
0
0
0
Das PITR dient zur Definition der Periodendauer mit welcher der Interrupt ausgelöst
werden soll. Das PITR enthält hierfür den Periodic-Timer-Prescaler-Control- (PTP-)
und den Periodic-Interrupt-Timing-Modulus- (PITM-) Parameter.
Ist das PTP-Bit gesetzt, wird ein zusätzlicher Teiler aktiviert. Dieser teilt den Basis-Takt
durch 512 (Periodic-Timer-Prescaler-Value (PTPV) = 512). Ist das PTP-Bit gelöscht, wird
der Teiler deaktiviert (PTPV =1).
Der PITM-Parameter wird aus der gewünschten Periodendauer, der EXTAL-Frequenz
und dem PTPV errechnet. Für die Berechnung kann die nachfolgend dargestellte
Klaus Senning
29
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Gleichung verwendet werden. Die EXTAL-Frequenz entspricht der, durch den Quarz am
EXTAL-PIN vorgegebenen Referenzfrequenz. Diese beträgt beim EyeBot-Controller
sowie beim NF300 32,77kHz.
Um den PIT zu deaktivieren, muss der Wert 0 in das PITR geschrieben werden. Daraufhin
wird der PIT nach dem nächsten Interrupt angehalten.
PIT-Periode =
1.5.3
PITM * PTP * 4
EXTAL-Frequenz
CS Kontrollregister
Das Chip-Select-Module besitzt zwei Chip-Select-Pin-Assignment-Register. Mit deren Hilfe
wird die Funktion der einzelnen PINs definiert. Des Weiteren enthält das CS-Module für die
Parameterierung der 12 CS-Signale jeweils zwei Kontrollregister. Das Chip-Select-BaseAdress-Register und das Chip-Select-Option-Register.
Wie bereits erwähnt, können 7 PINs des CS-Module als diskrete Ausgänge eingesetzt werden.
Diese werden als Port C bezeichnet. Das an Port C auszugebende Datum wird durch das Port
C-Data-Register definiert.
Chip-Select-Pin-Assignment-Register (CSPAR)
CSPAR0
Reset
$YFFA44
15
14
-
-
0
0
13
12
11
CS5
x
10
9
CS4
1
x
8
7
CS3
1
x
6
5
CS2
1
x
4
3
CS1
1
x
2
CS0
1
x
1
CSPAR1
Reset
1
0
CSBOOT
1
x
$YFFA46
15
14
13
12
11
10
-
-
-
-
-
-
0
0
0
0
0
0
9
8
7
CS10
x
6
5
CS9
1
x
4
3
CS8
1
x
2
1
CS7
1
x
0
CS6
1
x
1
Den einzelnen PINs des CS-Module sind mindestens zwei teilweise sogar drei Funktionen
zugeordnet.
Die beiden CSPAR definieren die Funktion der einzelnen PINs. Hierfür sind jedem der 12
PINs zwei Bits in einem der beiden CSPAR zugeordnet. Die folgende Tabelle zeigt die
verschiedenen Funktionen der PINs sowie den, für die jeweilige Funktion im CSPAR0
bzw. CSPAR1 einzustellenden Code.
Klaus Senning
30
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
PIN
CSBOOT
CS0
CS1
CS2
CS3
CS4
CS5
CS6
CS7
CS8
CS9
CS10
Disk. Ausgang
CSx = 00
PC0
PC1
PC2
PC3
PC4
PC5
PC6
ECLK
Systembus
CSx = 01
/BR
/BG
/BGACK
FC0
FC1
FC2
ADDR19
ADDR20
ADDR21
ADDR22
ADDR23
CS-Signal
CSx = 10
CSx = 11
8 Bit-Port
16 Bit-Port
8 Bit-Port
16 Bit-Port
8 Bit-Port
16 Bit-Port
8 Bit-Port
16 Bit-Port
8 Bit-Port
16 Bit-Port
8 Bit-Port
16 Bit-Port
8 Bit-Port
16 Bit-Port
8 Bit-Port
16 Bit-Port
8 Bit-Port
16 Bit-Port
8 Bit-Port
16 Bit-Port
8 Bit-Port
16 Bit-Port
8 Bit-Port
16 Bit-Port
Bild 8.14: Funktionen der PINs des Chip-Select-Module
Der MC 68332 unterstützt das Dynamic-Bus-Sizing, somit können an dessen 16 BitDatenbus sowohl 8 Bit- als auch 16 Bit-Peripherie-Bausteine angeschlossen werden. Um
auf die verschieden Peripherie-Bausteine zugreifen zu können, muss der MC 68332 deren
Datenbusbreite kennen. Die Datenbusbreite der angeschlossenen Peripherie-Bausteine
wird ebenfalls mit Hilfe der beiden CSPR definiert.
Der Reset-Zustand einiger Bits der beiden CSPR kann per Hardware-Initialisierung
vorgegeben werden. Die entsprechenden Bits wurden mit einem x gekennzeichnet. Die
Hardware-Initialisierung wird unter 8.6.6 im Detail erläutert.
Chip-Select-Base-Address-Register-Boot-ROM (CSBARBT)
$YFFA48
Chip-Select-Base-Address-Register 0-10 (CSBAR0 – 10)
$YFFA4C - $YFFA74
15
14
13
12
11
10
9
8
7
6
5
4
3
2
ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR
23
22
21
20
19
18
17
16
15
14
13
12
11
Reset
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
BLKSZ
1
1
1
Das Chip-Select-Base-Address-Register definiert die Größe des, durch das jeweilige CSSignal angesprochenen Adressbereichs. Des Weiteren enthält das Register die
Basisadresse des Adressbereichs.
Der Block-Size- (BLKSZ-) Parameter enthält die Größe des angesprochenen Adressbereichs. Die Blockgröße kann im Bereich von 2KB bis zu 1MB variiert werden. In
Abhängigkeit von der Größe des Adressbereichs, ist die Basisadresse zu bestimmen. Diese
ist stets ein Vielfaches der eingestellten Blockgröße. In der nachfolgend dargestellten
Tabelle sind die möglichen Blockgrößen zusammengefasst. Darüber hinaus sind jeweils
die zur Bestimmung der Basisadresse zur Verfügung stehenden Adressleitungen
aufgeführt.
Klaus Senning
31
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
BLKSZParameter
000
001
010
011
100
101
110
111
Blockgröße
2 KB
8 KB
16 KB
64 KB
128 KB
256 KB
512 KB
1 MB
Adressleitungen
Basisadresse
ADDR 23 - 11
ADDR 23 - 13
ADDR 23 - 14
ADDR 23 - 16
ADDR 23 - 17
ADDR 23 - 18
ADDR 23 - 19
ADDR 23 - 20
Bild 8.15: Definition der Blockgröße
Chip-Select-Option-Register-Boot-ROM (CSBARBT)
Chip-Select-Option-Register 0-10 (CSOR0 – 10)
15
14
Reset
0
13
12
BYTE
MODE
1
11
R/W
1
1
10
9
1
0
8
7
6
DSACK
STRB
1
1
0
$YFFA4A
$YFFA4E - $YFFA76
5
4
3
SPACE
1
1
1
2
1
IPL
0
0
0
AVEC
0
0
Das Chip-Select-Option-Register enthält weitere Parameter, die das Verhalten der CSSignale definieren. Insbesondere wird mit Hilfe der Chip-Select-Option-Register der
integrierte DSACK-Generator sowie der AVEC-Generator parametriert.
MODE
0 = asyn.
1 = syn.
BYTE
00 = aus
01 = nieder
10 = höher
11 = beide
R/W
00 = reserviert
01 = lesen
10 = schreiben
11 = beides
STRB
0 = AS
1 = DS
DSACK
0000 = 0 Wartezyklen
0001 = 1 Wartezyklus
0010 = 2 Wartezyklen
.........
1100 = 12 Wartezyklen
1101 = 13 Wartezyklen
1110 = Fast Termination
1111 = extern
SPACE
00 = CPU
01 = User
10 = Superv.
11 = S/U
IPL
AVEC
000 = jede Ebene 0 = aus
001 = Ebene 1
1 = ein
010 = Ebene 2
011 = Ebene 3
100 = Ebene 4
101 = Ebene 5
110 = Ebene 6
111 = Ebene 7
Bild 8.16: Aufbau des Chip-Select-Option-Registers
Die Mikrocontroller der 68000-Familie verwenden standardmäßig einen asynchronen
Systembus. Im Gegensatz dazu verfügt die 6800-Familie sowie die 6500-Familie über
einen synchronen Systembus. Um auch synchrone Peripherie-Bausteine der 6800-Familie
bzw. der 6500-Familie ansprechen zu können, kann der Systembus des MC 68332
wahlweise synchron oder asynchron betrieben werden. Mit Hilfe des Timing-Mode(MODE-) Bits kann für jedes CS-Signal individuell diese Einstellung vorgenommen
werden. Für den Fall, dass der synchrone Systembus zum Einsatz kommt, wird das
benötige Taktsignal ECLK anstelle der Adressleitung ADDR 23 ausgegeben.
Der Upper/Lower-Byte-Option- (BYTE-) Parameter definiert, ob das jeweilige CSSignal zum Zugriff auf das höherwertige oder niederwertige Byte eines Words bzw. zum
Zugriff auf beide Bytes verwendet werden soll. Zum besseren Verständnis werden
nachfolgend zwei kurze Beispiele beschrieben.
Klaus Senning
32
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Zunächst soll ein einzelner 8 Bit-Speicher-Baustein am MC 68332 betrieben werden.
Hierfür ist die Datenbusbreite des verwendeten CS-Signals durch das Chip-Select-PinAssignment-Register auf 8 Bit einzustellen. Da nur ein 8 Bit-Speicher-Baustein verwendet
wird, enthält dieser sowohl das höherwertige als auch das niederwertige Byte eines
Words. Aus diesem Grund muss der Speicher-Baustein durch das CS-Signal bei Zugriffen
sowohl auf das niederwertige als auch auf das höherwertige Byte aktiviert werden
(BYTE-Parameter = %11).
Nun werden zwei 8 Bit-Speicher-Bausteine an den MC 68332 angeschlossen. Um den 16
Bit-Datenbus ausnutzen zu können, wird einer der beiden Speicher-Bausteine an die
Datenleitungen DATA0 – DATA7 und der andere an die Datenleitungen DATA8 –
DATA15 angeschlossen. Somit enthält einer der beiden Speicher-Bausteine das
niederwertige Byte und der andere das höherwertige Byte eines Words. Der an die
Datenleitungen DATA0 – DATA7 angeschlossene Speicher-Baustein muss durch das CSSignal nur bei Zugriffen auf das niederwertige Byte aktiviert werden (BYTE-Parameter =
%01). Entsprechend wird der, an die Datenleitungen DATA8 – DATA15 angeschlossene
Speicher-Baustein, ausschließlich bei Zugriffen auf das höherwertige Byte aktiviert
(BYTE-Parameter = %10). Die Datenbusbreite ist in diesem Fall für beide CS-Signale auf
16 Bit einzustellen. Es ist zu beachten, dass zum Anschluss der beiden Speicher-Bausteine
die Adressleitung ADDR0 nicht benötigt wird.
Ein CS-Signal kann wahlweise nur für Lesezugriffe, nur für Schreibzugriffe oder für
Lese- und Schreibzugriffe freigegeben werden. Diese Einstellung wird mit Hilfe des
Read/Write- (R/W)- Parameters vorgenommen.
Durch den Address-Strobe/Data-Strobe- (STRB-) Parameter kann das zeitliche
Verhalten des CS-Signals auf den angeschlossenen Peripherie-Baustein abgestimmt
werden. Es besteht die Möglichkeit, das CS-Signal entweder synchron zum AddressStrobe-Signal oder synchron zum Data-Strobe-Signal zu aktivieren.
Wie bereits erwähnt, beinhaltet das CS-Module den DSACK-Generator. Dieser wird
verwendet, um das /DSACK-Signal intern zu erzeugen. Unter Verwendung des /DSACKSignals ist es möglich, Peripherie-Bausteine mit unterschiedlichen Zugriffszeiten am
Systembus zu betreiben. Um das Timing des MC 68332 an den angeschlossenen
Peripherie-Baustein anzupassen, kann der Mikrocontroller gesteuert durch das /DSACKSignal beim Zugriff auf den jeweiligen Peripherie-Baustein eine bestimmte Anzahl von
zusätzlichen Wartezyklen einlegen.
Wird der DSACK-Generator verwendet, muss dieser das zeitliche Verhalten des
verwendeten Peripherie-Bausteins kennen. Für diese Einstellung wird der Data-And-SizeAcknowledge- (DSACK-) Parameter verwendet. Dieser definiert die Anzahl der
Wartezyklen. Darüber hinaus wird der DSACK-Parameter eingesetzt, um den DSACKGenerator zu deaktivieren.
Die CPU 32 bietet die Möglichkeit, Speicherbereiche vor unerlaubten Zugriffen zu
schützen. Hierfür unterscheidet die CPU 32 verschiedene Adressräume. Dies ist im
Wesentlichen der User- bzw. Supervisor-Daten-Adressraum und der User- bzw.
Supervisor-Programm-Adressraum. Wird die CPU im User-Mode betrieben, kann nur auf
die User-Adressräume zugegriffen werden. Ein Zugiff auf die Supervisor-Adressräume ist
in diesem Betriebsmodus nicht möglich.
Klaus Senning
33
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Befindet sich die CPU hingegen im Supervisor-Mode, kann sowohl auf die Supervisor- als
auch auf die User-Adressräume zugegriffen werden. Um die einzelnen CS-Signale den
verschiedenen Adressräumen zuordnen zu können, ist der Address-Space-Select(SPACE-) Parameter vorhanden.
Zusätzlich unterscheidet die CPU 32 den sogenannten CPU-Adressraum. Dieser wird nur
dann angesprochen, wenn sich die CPU in einer definierten Ausnahmesituation befindet.
Hierzu gehört z.B. der Interrupt-Bestätigungs-Zyklus.
Das CS-Module kann während des Interrupt-Bestätigungs-Zyklus zur Erzeugung eines
Interrupt-Acknowledge- (/IACK) -Signals oder des /AVEC-Signals eingesetzt werden.
Soll durch das CS-Module ein /IACK-Signal generiert werden, so ist der hierfür
verwendete PIN mit Hilfe des Chip-Select-Pin-Assignment-Registers als CS-Signal zu
definieren. Die Datenbusbreite kann beliebig eingestellt werden. Wird das CS-Module
hingegen als AVEC-Generator eingesetzt, sollte der zugehörige PIN nicht als CS-Signal
definiert werden. Somit kann verhindert werden, dass das CS-Signal während des
Interrupt-Bestätigungs-Zyklus unbeabsichtigt aktiviert wird.
Um das CS-Module für die Erzeugung eines /IACK-Signals oder des /AVEC-Signals
nutzen zu können, muss das verwendete CS-Signal mit Hilfe des SPACE-Parameters dem
CPU-Adressraum zugeordnet werden. Erst nachdem der SPACE-Parameter entsprechend
eingestellt wurde, ist der Interrupt-Priority-Level- (IPL-) Parmeter und der AutovectorEnable- (AVEC-) Parameter für die Funktion des CS-Signals von Bedeutung.
Der CPU-Adressraum, dem das verwendete CS-Signal somit zugeordnet ist, wird während
bestimmter Ausnahmesituationen angesprochen. In diesem Fall kann anhand der
Adressleitungen ADDR19 - 16 die genaue Ausnahmesituation ermittelt werden.
Insgesamt unterscheidet der MC 68332 folgende Ausnahmesituationen:
-
Breakpoint-Acknowledge
Internal-Register-Access
Interrupt-Acknowledge
(ADDR19 – 16 = 0000)
(ADDR19 – 16 = 0001)
(ADDR19 – 16 = 1111)
Während des Interrupt-Bestätigungs-Zyklus sind somit die Adressleitungen ADDR19 - 16
gesetzt. Durch die Adressleitung ADDR3 – 1 wird in diesem Fall der Interrupt-Level
ausgegeben. Alle übrigen Adressleitungen sind auf den Wert 1 gesetzt.
Mit Hilfe des Adresskomparators kann somit ermittelt werden, ob der CPU-Adressraum
aufgrund eines Interrupt-Bestätigungs-Zyklus angesprochen wurde. Hierfür muss das
Chip-Select-Base-Address-Register folgendermaßen parametriert werden. Um die
Adressleitungen ADDR19 – 16 auswerten zu können, ist eine Blockgröße kleiner 128 KB
zu wählen (siehe Bild 8.15). Alle übrigen Bits des Chip-Select-Base-Address-Registers,
welche die Basisadresse enthalten, müssen gesetzt werden, da während des InterruptBestätigungs-Zyklus alle Adressleitungen mit Ausnahme von ADDR3 – 1 gesetzt sind.
Darüber hinaus wird durch den IPL-Parameter definiert, für welchen Interrupt-Level das
/IACK- bzw. das /AVEC-Signal erzeugt werden soll.
Somit wird das /IACK- bzw. /AVEC-Signal erzeugt, sobald durch die CPU der CPUAdressraum angesprochen wird, die Adressleitungen ADDR19 – 16 gesetzt sind und der,
durch die Adressleitungen ADDR3 – 1 ausgegebene Interrupt-Level mit dem IPLParameter übereinstimmt. Mit Hilfe des AVEC-Parameters wird festgelegt, ob durch das
CS-Module ein /IACK- oder das /AVEC-Signal erzeugt werden soll.
Klaus Senning
34
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Wird die CS-Logik als AVEC-Generator eingesetzt, sind die übrigen Parameter des ChipSelect-Option-Registers wie nachfolgend dargestellt zu initialisieren.
MODE
BYTE
R/W
-
=
=
=
%0
%11
%11
(asynchroner Systembus)
(beide Bytes)
(Lese- und Schreibzugriff)
Der Inhalt des STRB- und DSACK-Parameters ist in diesem Fall nicht von Bedeutung.
Port C-Data-Register (PORTC)
Reset
$YFFA40
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
-
-
-
-
-
-
-
-
-
PC6
PC5
PC4
PC3
PC2
PC1
PC 0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
Einige PINs des CS-Module können wahlweise als diskrete Ausgänge (Port C) betrieben
werden. Mit Hilfe des Port C-Data-Registers können die PINs des Port C gesetzt bzw.
zurückgesetzt werden.
1.5.4
EBI Kontrollregister
Das EBI verbindet das interne Bussystem des MC 68332 mit der externen Hardware. Einigen
Bussignalen ist fest ein PIN zugeordnet. Hierzu gehören die Datenleitungen, ein Großteil der
Adressleitungen sowie einige Steuersignale.
Die übrigen Bussignale können bei Bedarf nach außen geführt werden. Die PINs der nicht
benötigten Bussignale können als diskrete Ein- bzw. Ausgänge verwendet werden. Dadurch
ist es möglich, den Mikrocontroller optimal auf die jeweilige Anwendung anzupassen.
Pin-Assignment-Register
Port E (PEPAR)
Reset
$YFFA16
15
14
13
12
11
10
9
8
-
-
-
-
-
-
-
-
0
0
0
0
0
0
0
0
7
6
5
4
3
2
x
x
x
x
x
x
Port F (PFPAR)
Reset
Klaus Senning
1
0
PEPA7 PEPA6 PEPA5 PEPA4 PEPA3 PEPA2 PEPA1 PEPA0
x
x
$YFFA1E
15
14
13
12
11
10
9
8
-
-
-
-
-
-
-
-
0
0
0
0
0
0
0
0
7
6
5
4
3
2
1
0
PFPA7 PFPA6 PFPA5 PFPA4 PFPA3 PFPA2 PFPA1 PFPA0
x
x
x
x
x
x
x
x
35
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Das EBI verfügt über 16 PINs, von denen jeder einzelne wahlweise als Bussignal oder als
diskreter Ein- bzw. Ausgang eingesetzt werden kann. Diese sind zu zwei 8 Bit-Ports
zusammengefasst. Die beiden PIN-Assignment-Register definieren die Funktion der
einzelnen PINs. Jedem PIN ist hierfür ein Bit in einem der beiden PIN-AssignmentRegister zugeordnet. Ist eines der Bits zurückgesetzt, wird der zugeordnete PIN als
diskreter Ein- bzw. Ausgang betrieben. Soll der PIN hingegen als Bussignal verwendet
werden, ist das Bit zu setzen. Die den einzelnen PINs zugeordneten Bussignale sind in
Bild 8.17 und Bild 8.18 aufgeführt.
Die Reset-Zustände der beiden PIN-Assignment-Register können durch die HardwareInitialisierung vorgegeben werden.
PEPAR
Disk. I/O
PEPAx = 0
PE0
PE1
PE2
PE3
PE4
PE5
PE6
PE7
PEPA0
PEPA1
PEPA2
PEPA3
PEPA4
PEPA5
PEPA6
PEPA7
Systembus
PEPAx = 1
/DSACK0
/DSACK1
/AVEC
/RMC
/DS
/AS
SIZ0
SIZ1
PFPAR
Disk. I/O
PFPAx = 0
PF0
PF1
PF2
PF3
PF4
PF5
PF6
PF7
PFPA0
PFPA1
PFPA2
PFPA3
PFPA4
PFPA5
PFPA6
PFPA7
Bild 8.17: Bussignale des Port E
Systembus
PFPAx = 1
MODCLK
/IRQ1
/IRQ2
/IRQ3
/IRQ4
/IRQ5
/IRQ6
/IRQ7
Bild 8.18: Bussignale des Port F
Data-Direction-Register
Port E (DDRE)
Reset
$YFFA14
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
-
-
-
-
-
-
-
-
DDE7
DDE6
DDE5
DDE4
DDE3
DDE2
DDE1
DDE0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Port F (DDRF)
Reset
$YFFA1C
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
-
-
-
-
-
-
-
-
DDF7
DDF6
DDF5
DDF4
DDF3
DDF2
DDF1
DDF0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Jedem der 16 möglichen diskreten Ein- bzw. Ausgänge ist ein Bit in einem der beiden
Data-Direction-Register zugeordnet. Ist eines der Bits gesetzt, wird der zugehörige PIN
als Ausgang betrieben. Soll der PIN als Eingang verwendet werden, ist das zugehörige Bit
zu löschen. Nach dem Reset sind alle PINs als Eingänge definiert.
Die Einstellungen der beiden Data-Direction-Register betreffen nur die, durch die beiden
PIN-Assignment-Register als diskrete Ein- bzw. Ausgänge definierten PINs.
Data-Register
Klaus Senning
36
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Port E (PORTE)
Reset
$YFFA10 / $YFFA10
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
-
-
-
-
-
-
-
-
PE7
PE6
PE5
PE4
PE3
PE2
PE1
PE0
0
0
0
0
0
0
0
0
-
-
-
-
-
-
-
-
Port F (PORTF)
15
Reset
14
$YFFA18 / $YFFA1A
13
12
11
10
9
8
7
6
5
4
3
2
1
0
-
-
-
-
-
-
-
-
PF7
PF6
PF5
PF4
PF3
PF2
PF1
PF0
0
0
0
0
0
0
0
0
-
-
-
-
-
-
-
-
Durch die beiden Data-Register werden die als Ausgänge definierten PINs des jeweils
zugehörigen I/O-Ports gesetzt bzw. zurückgesetzt. Des Weiteren wird mit deren Hilfe der
aktuelle Zustand der als Eingänge betriebenen PINs eingelesen.
Beide Data-Register können jeweils unter zwei verschiedenen Adressen angesprochen
werden.
1.5.5
SCM Kontrollregister
Nachfolgend ist das Blockschaltbild des SCM dargestellt. Das SCM bietet die Möglichkeit,
den Systemtakt entweder intern oder extern zu erzeugen.
Für die interne Takterzeugung ist im Wesentlichen der Quarzoszillator zusammen mit dem
Phase-Locked-Loop (PLL) zuständig. Der PLL besteht aus einem Phasen-Vergleicher, einem
Filter und einem spannungsgesteuerten Oszillator (Voltage-Controlled-Oscillator VCO).
EXTAL XTAL
QuarzOszillator
Phase-Locked-Loop (PLL)
PhasenVergleicher
Filter
VCO
Teiler Y und W
SystemtaktSteuerung
(Teiler X)
Systemtakt
Bild 8.19:Blockschaltbild des SCM
Im Rückkopplungszweig des PLL sowie in der Systemtakt-Steuerung sind verschiedene
Teiler untergebracht. Mit deren Hilfe kann die Systemfrequenz eingestellt werden. Für die
interne Takterzeugung wird an den beiden Eingängen EXTAL und XTAL ein Quarz
Klaus Senning
37
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
angeschlossen. Dieser liefert die Referenzfrequenz (fEXTAL). Sollte der Quarz nicht
angeschlossen sein oder einmal ausfallen, kann die CPU trotzdem betrieben werden.
Zur Parametrierung des SCM ist ein Kontrollregister vorhanden. Dieses wird als ClockSynthesizer-Control-Register (SYNCR) bezeichnet.
Clock-Synthesizer-Control-Register (SYNCR)
Reset
15
14
W
X
0
0
13
12
11
10
9
8
Y
1
1
1
1
1
1
$YFFA04
7
6
5
EDIV
-
-
0
0
0
4
3
2
1
0
SLIMP SLOCK RSTEN STSIM STEXT
x
x
0
0
0
Wird der Systemtakt intern erzeugt, kann mit Hilfe der Parameter W, X und Y die
Systemfrequenz eingestellt werden. Die Parameter W und Y beeinflussen einen Teiler im
Rückkopplungszweig des PLL, während durch den Parameter X ein Teiler in der
Systemtakt-Steuerung aktiviert bzw. deaktiviert werden kann.
Die nachfolgend dargestellte Gleichung kann zur Bestimmung der Parameter W, X und Y
verwendet werden. Die Gleichung gilt für eine Referenzfrequenz (fEXTAL) von mindestens
25 kHz bis maximal 50 kHz.
fSYSTEM = fEXTAL [4(Y+1)(2 2W+X)]
Werden die Parameter W oder Y verändert, so benötigt der PLL eine gewisse Zeit, um
sich auf die neue vorgegebene Frequenz einzustellen. Während dessen kann die
vorgegebene Frequenz um bis zu 30% überschritten werden. Dies kann zu einer
Beschädigung des Mikrocontrollers führen. Um eine Gefährdung des Mikrocontrollers
ausschließen zu können, muss folgende Vorgehensweise eingehalten werden. Im
normalen Betrieb ist der X-Parameter gesetzt. Soll nun die Systemfrequenz verändert
werden, ist zunächst der X-Parameter zu löschen. Dadurch wird die Systemfrequenz
halbiert. Der, durch den X-Parameter gesteuerte Teiler liegt nicht innerhalb des PLL und
kann somit gefahrlos verändert werden. Nachdem nun die Systemfrequenz halbiert wurde,
können die Parameter W und Y verändert werden. Anschließend muss gewartet werden,
bis sich der PLL auf die neu vorgegebene Frequenz eingeschwungen hat. Daraufhin ist der
X-Parameter wieder zu setzen.
Anhand des Synthesizer-Lock- (SLOCK-) Bits kann erkannt werden, zu welchem
Zeitpunkt sich der PLL nach einer Änderung des Parameters W oder Y wieder im
eingeschwungenen Zustand befindet. Das SLOCK-Bit wird gesetzt, sobald der PLL den
eingeschwungenen Zustand erreicht hat.
Wie bereits erwähnt, kann die CPU auch ohne Quarz, d.h. ohne eine externe
Referenzfrequenz betrieben werden. Dieser Betriebsmodus wird als Limp-Mode
bezeichnet. Ist das Limp-Mode-Status- (SLIMP-) Bit gesetzt, befindet sich der
Mikrocontroller momentan im Limp-Mode. Funktioniert der angeschlossene Quarz
hingegen fehlerfrei, ist das SLIMP-Bit zurückgesetzt.
Der Limp-Mode muss gezielt freigegeben werden. Hierfür wird das Reset-Enable(RSTEN-) Bit verwendet. Ist das RSTEN-Bit zurückgesetzt, wechselt der Mikrocontroller
automatisch in den Limp-Mode, sobald keine Referenzfrequenz zur Verfügung steht.
Klaus Senning
38
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Sollte das RSTEN-Bit hingegen gesetzt sein, ist dadurch der Limp-Mode gesperrt. In
diesem Fall wird, sobald der angeschlossene Quarz ausfällt ein System-Reset ausgelöst.
Die übrigen Parameter des SYNCR sind für die meisten Anwendungen nicht von
Bedeutung. Weitere Informationen können ggf. dem Benutzerhandbuch [Motorola
1996/2] entnommen werden.
1.5.6
Hardware-Initialisierung
Nach den Reset befinden sich die Kontrollregister des Mikrocontrollers im Reset-Zustand.
Daraufhin muss der Mikrocontroller entsprechend der jeweiligen Anwendung initialisiert
werden. Es wird die Software- und die Hardware-Initialisierung unterschieden. Die meisten
Einstellungen werden mit Hilfe der Software-Initialisierung vorgenommen.
Bei der Software-Initialisierung werden die Kontrollregister durch ein Initialisierungsprogramm parametriert. Um das Initialisierungsprogramm zu starten, greift der
Mikrocontroller am Ende der Reset-Phase auf das Boot-ROM zu. Dort ist in Adresse 0 der
Startwert des Supervisor-Stack-Pointers und in Adresse 4 die Startadresse des
Initialisierungsprogramms abgespeichert. Der Mikrocontroller liest beide Informationen aus
dem Boot-ROM und initialisiert daraufhin den System-Stack-Pointer sowie den ProgramCounter. Anschließend wird mit der Bearbeitung des Initialisierungsprogramms begonnen.
Um die Software-Initialisierung durchführen zu können, muss der Mikrocontroller in der
Lage sein, auf das Boot-ROM zugreifen zu können. Die hierfür erforderlichen Einstellungen
können, wie auch einige weitere Grundeinstellungen, durch die Hardware-Initialisierung
vorgegeben werden. Die Hardware-Initialisierung wird bereits während der Reset-Phase
durchgeführt. Hierzu liest der Mikrocontroller den logischen Zustand einiger Datenleitungen,
der /BKPT-Leitung und der MODCLK-Leitung ein und initialisiert abhängig davon die
zugehörigen Kontrollregister. Die für die Hardware-Initialisierung verwendeten
Signalleitungen verfügen intern über einen sehr hochohmigen Pull-Up-Widerstand. Bleiben
die Leitungen offen (Default-Zustand), wird somit eine logische Eins eingelesen. Soll
hingegen eine logische Null erzeugt werden, muss an die jeweilige Signalleitung ein
entsprechender Pull-Down-Widerstand angeschlossen werden. In Bild 8.20 sind alle
Einstellungen zusammengefasst, die mittels der Hardware-Initialisierung vorgenommen
werden können.
Weitere Informationen zu diesem Thema sind im Benutzerhandbuch [Motorola 1996/2] zu
finden.
Klaus Senning
39
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
PIN
Pull-Up-Widerstand
DATA0
/CSBOOT 16-Bit-Port
/CS0
/CS1
/CS2
/CS3
/CS4
/CS5
/CS6
/CS6-7
/CS6-8
/CS6-9
/CS6-10
/DSACK0-1
/AVEC
/DS, /AS, /SIZE
/IRQ1-7
MODCLK
Test-Mode deaktiviert
Takterzeugung intern
BDM deaktiviert
Pull-Down-Widerstand
(Default-Zustand)
DATA1
DATA2
DATA3
DATA4
DATA5
DATA6
DATA7
DATA8
DATA9
DATA11
MODCLK
/BKPT
/CSBOOT 8-Bit-Port
/BR
/BG
/BGACK
FC0
FC1
FC2
ADDR19
ADDR19-20
ADDR19-21
ADDR19-22
ADDR19-23
PORTE
PORTF
Test-Mode aktiviert
Takterzeugung extern
BDM aktiviert
Bild 8.20: Voreinstellungen durch die Hardware-Initialisierung
Klaus Senning
40
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
1.6
Time-Processor-Unit (TPU)
1.6.1
Einführung
Die TPU ist weit mehr als nur ein einfacher Timer. Sie ist ein intelligenter Co-Prozessor zur
Bearbeitung von verschiedenen Timing-Aufgaben. Die TPU arbeitet unabhängig von der
CPU. Ihre Aufgabe besteht darin, Timerfunktionen mit einer hohen zeitlichen Auflösung und
hoher Funktionalität bereitzustellen.
In Bild 8.21 ist das Blockschaltbild der TPU dargestellt. Die TPU beinhaltet zwei 16 BitTime-Bases, 16 Timer-Channels, das Host-Interface, den Scheduler sowie die Microengine.
Die einzelnen Funktionsblöcke der TPU werden im Anschluss kurz erläutert.
Host-Interface
Control
Scheduler
Service
Request
Timer-Channels
Channel0
Compare-Reg.
Capture-Reg.
System
Configuration
ChannelNumber
IMB
Development
Support
Test
TCR 1
TCR 2
Comparator
Channel1
PINs
Compare-Reg.
Capture-Reg.
Microengine
Comparator
Channel Control
Data
Parameter RAM
Execu
-tionUnit
MicrocodeROM
.....
Control / Data
Channel15
Compare-Reg.
RAMInterface
Capture-Reg.
Comparator
Bild 8.21: Blockschaltbild der Time-Processor-Unit (TPU)
Time-Bases:
Die TPU beinhaltet zwei 16 Bit-Zähler für die Erzeugung der benötigten Taktsignale.
Diese werden als Timer-Count-Register 1 (TCR1) und als Timer-Count-Register 2
(TCR2) bezeichnet. Beide Zähler bieten die Möglichkeit, das benötigte Taktsignal vom
Systemtakt abzuleiten. Zusätzlich kann mit Hilfe von TCR2 auch ein externes Taktsignal
als Zeit-Basis verwendet werden. Dieses wird an PIN T2CLK eingespeist.
Den beiden Zählern sind verschiedene Teiler vorgeschaltet. Diese werden durch das TPUModule-Configuration-Register (TPUMCR) parametriert.
Timer-Channels:
Die TPU verfügt über 16 unabhängige Kanäle (Timer-Channels). Alle 16 Kanäle sind
identisch aufgebaut und somit absolut funktionsgleich. Pro Kanal ist ein 16 Bit-CaptureRegister, ein 16 Bit-Compare-Register sowie ein 16 Bit-Comparator vorhanden. Jeder
Kanal kann wahlweise als Ausgang oder Eingang betrieben werden.
Klaus Senning
41
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Die Funktion der einzelnen Kanäle wird durch die Parametrierung individuell festgelegt.
Die TPU kann dadurch an die Anforderungen der jeweiligen Anwendung angepasst
werden.
Host-Interface:
Die Kommunikation zwischen TPU und CPU wird über das Host-Interface der TPU
abgewickelt. Die CPU initialisiert und steuert die TPU. Hierfür enthält das Host-Interface
einige Kontrollregister. Die Funktion der einzelnen Kontrollregister wird nachfolgend
erläutert.
Zusätzlich ist im Host-Interface das Parameter-RAM untergebracht. Dieses ist ein 200
Byte-großes Dual-Ported-RAM. Das Parameter-RAM ist 16 Bit-breit organisiert. Den
Kanälen 0 bis 13 sind jeweils 6 Parameter-Worte und den Kanälen 14 bis 15 jeweils 8
Parameter-Worte zugeordnet. Die Bedeutung der einzelnen Parameter ist von der
verwendeten TPU-Funktion abhängig und wird im Zusammenhang mit deren Funktionsbeschreibung erläutert.
Scheduler:
Der Scheduler legt die Reihenfolge fest, in der die einzelnen TPU-Kanäle abgearbeitet
werden. Die Reihenfolge wird anhand der Kanalnummer und der, für den jeweiligen
Kanal eingestellten Priorität bestimmt. Nach dem Reset sind zunächst alle TPU-Kanäle
deaktiviert, die CPU aktiviert die Kanäle, indem sie ihnen die gewünschte Priorität
zuordnet. Es werden drei Prioritätsstufen unterschieden. Diese werden als High, Middle
und Low bezeichnet.
Microengine:
Die Microengine bekommt vom Scheduler die Bearbeitungsreihenfolge mitgeteilt und
führt daraufhin die entsprechenden TPU-Funktionen aus. Die TPU beinhaltet einige fest
vorgegebene Funktionen, diese werden als Factory-Masked-Functions bezeichnet. Der
Mikrocode dieser Funktionen ist in einem internen ROM der Microengine abgespeichert.
Es existieren hinsichtlich der enthaltenen Factory-Masked-Functions zwei Varianten des
MC 68332. Diese werden als Mask-Set A und Mask-Set G bezeichnet. Standardmäßig
wird der MC 68332 Mask-Set A eingesetzt. Dieser ist auch auf dem NF300 sowie dem
EyeBot-Controller integriert. In der folgenden Tabelle sind die Factory-Masked-Functions
des MC 68332 Mask-Set A zusammengefasst.
Factory-Masked-Function
Period/Pulse-Width-Accumulator
Output-Compare
Stepper-Motor
Position-Synchronized-Pulse-Generator
Period-Measurement-With-Additional /
Missing-Transition-Detect
Input-Capture / Input-Transition-Counter
Pulse-Width-Modulation
Discrete-Input / Output
Synchronized-Pulse-Width-Modulation
Quadrature-Decode
PPWA
OC
SM
PSP
CFS-Code
$F
$E
$D
$C
PMA/PMM
$B
ITC
PWM
DIO
SPWM
QDEC
$A
$9
$8
$7
$6
Bild 8.22: Übersicht der Factory-Masked-Functions des MC 68332 Mask-Set A
Klaus Senning
42
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Des Weiteren kann die TPU im sogenannten Emulation-Mode betrieben werden. In
diesem Betriebsmodus können selbstentwickelte TPU-Funktionen ausgeführt werden.
Diese werden im internen SRAM des MC 68332 abgelegt. Die Bearbeitungsgeschwindigkeit ist unabhängig davon, ob eine fest vorgegebene oder eine selbstentwickelte TPU-Funktion ausgeführt wird. Befindet sich die TPU im Emulation-Mode, so
kann die CPU auf das interne SRAM nicht zugreifen.
Nachfolgend wird ausschließlich die Verwendung von Factory-Masked-Functions
beschrieben. Der Emulation-Mode wird in dieser Arbeit nicht näher erläutert. Weitere
Informationen können ggf. dem Benutzerhandbuch [Motorola 1996/4] entnommen
werden.
1.6.2
TPU Kontrollregister
Dieser Abschnitt beschreibt die Kontrollregister des Host-Interface mit Ausnahme der TPUTest-Register. Die TPU-Kontrollregister dienen zur Initialisierung der gesamten TPU sowie
der einzelnen TPU-Kanäle. Auf alle Kontrollregister mit Ausnahme des Channel-InterruptStatus-Registers (CISR) können ausschließlich Word-Zugriffe ausgeführt werden. Das CISR
ermöglicht zusätzlich auch Byte-Zugriffe.
TPU-Module-Configuration-Register (TPUMCR)
15
STOP
Reset
0
14
13
TCR1P
0
12
11
TCR2P
0
0
10
9
8
EMU
T2CG
STF
0
0
0
0
7
$YFFE00
6
SUPV PSCK
1
0
5
4
-
-
0
0
3
2
1
0
0
0
IARB
0
0
Auf das TPUMCR kann ausschließlich im Supervisor-Mode zugegriffen werden. Das
Register enthält die Grundeinstellungen der TPU.
Das STOP-Bit wird verwendet, um die TPU anzuhalten. Ist das Bit gesetzt, wird die
interne Takt-Erzeugung sowie die Microengine deaktiviert. Die beiden Timer-CountRegister behalten den zuletzt gespeicherten Wert bei. Sobald die TPU angehalten ist wird
das STOP-Flag (STF) im TPUMCR gesetzt.
Ist das STF gesetzt und damit die TPU angehalten, kann die CPU weiterhin auf alle
Register des Host-Interface mit Ausnahme der beiden Channel-Priority-Register (CPR)
zugreifen. Wird trotzdem versucht auf ein CPR zu schreiben oder davon zu lesen, löst der
MC 68332 einen Bus-Fehler aus.
Befindet sich die TPU im normalen Betriebszustand, ist sowohl das STOP-Bit als auch
das STOP-Flag zurückgesetzt.
Wie bereits kurz erwähnt, sind den beiden Zählern TCR1 und TCR2 verschiedene Teiler
vorgeschaltet. Diese werden verwendet um die Zähltakte einzustellen.
Der Zähltakt des TCR1 kann ausschließlich vom Systemtakt abgeleitet werden. Der
gewünschte Zähltakt wird durch die beiden Parameter TCR1-Prescaler-Control
(TCR1P) und Prescaler-Clock (PSCK) festgelegt. Anhand des nachfolgend dargestellten
Blockschaltbildes können die beiden Parameter bestimmt werden.
Klaus Senning
Systemtakt
43
/4
MUX
/ 32
TCR1
Prescaler
TCR1
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Bild 8.23: Blockschaltbild des TCR1
Der Zähltakt des Zählers TCR2 wird auf sehr ähnliche Weise erzeugt. Das zugehörige
Blockschaltbild ist in Bild 8.24 dargestellt. Die beiden Parameter TCR2-PrescalerControl (TCR2P) und TCR2-Clock/Gate-Control (T2CG) definieren den Zähltakt des
TCR2. Im Unterschied zum TCR1 kann der Zähltakt des TCR2 entweder vom Systemtakt
oder von einem extern erzeugten Taktsignal abgeleitet werden. Dieses wird an PIN
T2CLK eingespeist.
Für den Fall, dass der Zähltakt vom Systemtakt abgeleitet wird, kann der T2CLK-PIN als
Gate-Eingang genutzt werden. Sobald an den Gate-Eingang eine logische Null angelegt
ist, wird der Zähler TCR2 angehalten. Liegt am T2CLK-PIN im Gegensatz dazu eine
logische Eins an, ist der Zähler gestartet.
Systemtakt
externer
Takt
T2CLK
A
/8
MUX
Synchronizer /
Filter
B
T2CG
0
A
1
B
TCR2
Prescaler
TCR2
TCR2P
00
/1
01
/2
10
/4
11
/8
Bild 8.24: Blockschaltbild des TCR2
Wie bereits erwähnt, kann die TPU im Emulation-Mode betrieben werden. In diesem
Betriebsmodus führt die TPU selbstentwickelte TPU-Funktionen aus. Diese werden im
internen SRAM des MC 68332 abgelegt. Die CPU kann währenddessen auf das interne
SRAM nicht zugreifen. Durch das Emulation-Control- (EMU-) Bit wird definiert, ob die
TPU im normalen Betriebsmodus oder im Emulation-Mode betrieben werden soll. Ist das
Bit gelöscht, befindet sich die TPU im normalen Betriebsmodus. Wird das Bit gesetzt,
schaltet das interne SRAM zusammen mit der TPU in den Emulation-Mode.
Klaus Senning
44
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Das SUPV- (Supervisor-) Bit des TPUMCR wird zusammen mit dem SUPV-Bit des
SIM-Configuration-Registers (SIMCR) verwendet, um bestimmte TPU-Kontrollregister
vor unerlaubten Zugriffen zu schützen.
Einige TPU-Kontrollregister stehen unabhängig vom aktuellen Inhalt der beiden SUPVBits ausschließlich im Supervisor-Mode zur Verfügung. Für die übrigen TPUKontrollregister kann mit Hilfe der beiden SUPV-Bits definiert werden, ob ein Zugriff
ebenfalls nur im Supervisor-Mode oder im User- und Supervisor-Mode möglich ist.
Ist das SUPV-Bit des TPUMCR und das SUPV-Bit des SIMCR gesetzt, kann auf die
TPU-Kontrollregister ausschließlich im Supervisor-Mode zugegriffen werden. Sobald
eines der beiden SUPV-Bits gelöscht ist, kann auf einen Teil der TPU-Kontrollregister
sowohl im User- als auch im Supervisor-Mode zugegriffen werden. Weitere
Informationen hierzu können der Beschreibung des SIMCR entnommen werden
Ebenso wie für die anderen Module des MC 68332 muss auch für die TPU die InterruptArbitration-Identification-Number (IARB) festgelegt werden. Die IARB definiert
mehrere Prioritätsstufen innerhalb eines Interrupt-Levels. Lösen zwei Module gleichzeitig
einen Interrupt aus und besitzen beide den gleichen Interrput-Level, so wird anhand der
IARB entschieden welcher Interrupt als erster zu bearbeiten ist. Die IARB muss mit
einem Wert zwischen $1 (= niedrigste Priorität) und $F (= höchste Priorität) initialisiert
werden. Nach dem Reset-Vorgang enthält die IARB den Wert $0, somit ist keine
Interrupt-Bearbeitung möglich.
TPU-Interrupt-Configuration-Register (TICR)
Reset
15
14
13
12
11
-
-
-
-
-
0
0
0
0
0
10
9
8
$YFFE08
7
6
CIRL
0
0
5
4
CIBV
0
0
0
0
0
3
2
1
0
-
-
-
-
0
0
0
0
Um eine fehlerfreie Interrupt-Bearbeitung zu ermöglichen, muss neben der InterruptArbitration-Identification-Number, die im TPUMCR enthalten ist, der Interrupt-Level
sowie der Interrupt-Vektor vorgegeben werden.
Der Channel-Interrupt-Request-Level- (CIRL-) Parameter enthält den Interrupt-Level
der TPU. Der Interrupt-Level definiert die Priorität des Interrupts. Er kann im Bereich von
1 (= niedrigste Priorität) bis 7 (= höchste Priorität) variiert werden.
Der Interrupt-Vektor wird durch den Channel-Interrupt-Base-Vector- (CIBV-)
Parameter definiert. Der Interrupt-Vektor umfasst 8 Bits. Das CIBV definiert hiervon das
höherwertige Nibble. Das niederwertige Nibble des Interrupt-Vektors wird zur
Unterscheidung der einzelnen TPU-Kanäle verwendet. Die TPU trägt hier automatisch die
Kanalnummer ein und erzeugt somit für jeden TPU-Kanal einen individuellen InterruptVektor.
Channel-Interrupt-Enable-Register (CIER)
Klaus Senning
$YFFE0A
45
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
CH15
CH14
CH13
CH12
CH11
CH10
CH9
CH8
CH7
CH6
CH5
CH4
CH3
CH2
CH1
CH0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Reset
Mit Hilfe des CIER kann für jeden der 16 TPU-Kanäle separat die Interrupt-Bearbeitung
freigegeben bzw. gesperrt werden. Jedem TPU-Kanal ist ein Bit im CIER zugeordnet. Ist
eines der Bits gesetzt, kann der zugehörige TPU-Kanal einen Interrupt auslösen. Soll
durch den jeweiligen TPU-Kanal hingegen kein Interrupt ausgelöst werden, ist das Bit zu
löschen.
Channel-Interrupt-Status-Register (CISR)
$YFFE20
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
CH15
CH14
CH13
CH12
CH11
CH10
CH9
CH8
CH7
CH6
CH5
CH4
CH3
CH2
CH1
CH0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Reset
Jedem TPU-Kanal ist ein Bit im CISR zugeordnet. Ein Interrupt wird ausgelöst, sobald die
einem TPU-Kanal zugehörigen Bits im CISR und CIER gleichzeitig gesetzt sind. Die Bits
des CISR müssen manuell zurückgesetzt werden. Hierfür ist zunächst der Inhalt des CISR
auszulesen. Anschließend müssen die gesetzten Flags mit einer Null überschrieben
werden.
Ist für einen TPU-Kanal die Interrupt-Bearbeitung nicht freigegeben, kann das
entsprechende Bit des CISR im Polling-Verfahren überwacht werden.
Channel-Function-Select-Registers (CFSR)
CFSR0
$YFFE0C
15
14
13
12
11
Channel 15
Reset
10
9
8
7
Channel 14
6
5
4
3
Channel 13
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
Channel 10
Channel 9
0
0
1
0
Channel 8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
CFSR2
0
0
$YFFE10
Channel 7
Channel 6
Channel 5
1
0
Channel 4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
CFSR3
0
0
$YFFE12
Channel 3
Reset
0
$YFFE0E
Channel 11
Reset
1
Channel 12
CFSR1
Reset
2
0
0
0
Channel 2
0
0
0
0
Channel 1
0
0
0
0
1
0
Channel 0
0
0
0
0
0
Mit Hilfe der CFSR kann für jeden der 16 TPU-Kanäle individuell die auszuführende
Factory-Masked-Function ausgewählt werden. Zu diesem Zweck ist jedem TPU-Kanal ein
Klaus Senning
46
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
4 Bit-Parameter in einem der CFSR zugeordnet. Die verwendete Codierung ist in Bild
8.22 dargestellt. Auf die CFSR kann ausschließlich im Supervisor-Mode zugegriffen
werden.
Host-Sequence-Registers (HSQR)
HSQR0
$YFFE14
15
14
13
CH15
Reset
0
12
11
CH14
0
0
10
9
CH13
0
0
8
7
CH12
0
0
6
5
CH11
0
0
4
3
CH10
0
0
2
0
0
0
CH8
0
HSQR1
0
0
$YFFE16
15
14
13
CH7
Reset
1
CH9
12
11
CH6
0
0
10
9
CH5
0
0
8
7
CH4
0
0
0
6
5
CH3
0
0
4
3
CH2
0
0
2
1
CH1
0
0
0
CH0
0
0
0
Jedem TPU-Kanal ist ein 2 Bit-Parameter in einem der beiden HSQR zugeordnet. Dieser
wird von einigen Factory-Masked-Functions verwendet, um den aktuellen Betriebsmodus
festzulegen. Die verwendete Codierungen ist von der eingesetzten TPU-Funktion
abhängig.
Host-Service-Request-Registers (HSRR)
HSRR0
$YFFE18
15
14
13
CH15
Reset
12
11
CH14
10
9
CH13
8
7
CH12
6
5
CH11
4
3
CH10
2
0
CH8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
HSSR1
0
0
$YFFE1A
CH7
Reset
1
CH9
0
CH6
0
0
CH5
0
0
CH4
0
0
CH3
0
0
CH2
0
0
1
CH1
0
0
0
CH0
0
0
0
Die CPU verwendet zur Steuerung der TPU-Funktionen sogenannte Host-ServiceRequests. Diese werden mit Hilfe der beiden HSRR an die einzelnen TPU-Kanäle
gesendet. Jeder TPU-Kanal besitzt hierfür einen Host-Service-Request-Parameter in
einem der beiden HSRR. Die zur Verfügung stehenden Host-Service-Requests sind von
der verwendeten TPU-Funktion abhängig.
Enthält der Host-Service-Request-Parameter den Wert $0, wird vom zugehörigen TPUKanal momentan kein Host-Service bearbeitet. Daraufhin kann die CPU ein Host-ServiceRequest absetzen, indem ein von $0 verschiedener Wert in den Host-Service-RequestParameter geschrieben wird. Die Bits der beiden HSRR können durch die CPU nur gesetzt
werden. Das Rücksetzen übernimmt die TPU. Diese löscht den Host-Service-RequestParameter, sobald die Bearbeitung des Host-Service abgeschlossen ist.
Channel-Priority-Registers (CPR)
CPR0
Klaus Senning
$YFFE1C
47
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
15
14
13
CH15
Reset
12
11
CH14
10
9
CH13
8
7
CH12
6
5
CH11
4
3
CH10
2
0
CH8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
CPR1
0
0
$YFFE1E
CH7
Reset
1
CH9
0
CH6
0
0
CH5
0
0
CH4
0
0
CH3
0
0
CH2
0
0
Der Scheduler ermittelt die Bearbeitungsreihenfolge der
einzelnen TPU-Kanäle. Hierfür wird die Kanal-Nummer
sowie die Priorität des TPU-Kanals verwendet. Die
Priorität der einzelnen TPU-Kanäle wird durch die beiden
CPR definiert. Es werden die drei Prioritätsstufen Low,
Middle und High unterschieden. Zusätzlich können mit
Hilfe der beiden CPR die TPU-Kanäle deaktiviert
werden. In Bild 8.25 ist die verwendete Codierung
dargestellt. Auf die beiden CPR kann ausschließlich im
Supervisor-Mode zugegriffen werden.
1
CH1
0
0
0
CH0
0
Prioritä t
Kanal deaktiviert
Low
Middle
High
0
0
CP-Code
00
01
10
11
Bild 8.25: Codierung der Prioritätsstufen
Parameter-RAM
Auf das 200 Byte-Parameter-RAM kann sowohl die CPU als auch die TPU zugreifen. Das
Parameter-RAM wird zum Datenaustausch zwischen der CPU und der TPU verwendet.
Den einzelnen TPU-Kanälen sind jeweils sechs bzw. acht 16 Bit-Parameter zugeordnet. In
Bild 8.26 sind die Adressen der einzelnen Parameter aufgelistet.
KanalNummer
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BasisAdresse
$YFFFxx
$YFFFxx
$YFFFxx
$YFFFxx
$YFFFxx
$YFFFxx
$YFFFxx
$YFFFxx
$YFFFxx
$YFFFxx
$YFFFxx
$YFFFxx
$YFFFxx
$YFFFxx
$YFFFxx
$YFFFxx
D0
Parameter-Adresse
1 2 3 4 5 6
02 04 06 08 0A 12 14 16 18 1A 22 24 26 28 2A 32 34 36 38 3A 42 44 46 48 4A 52 54 56 58 5A 62 64 66 68 6A 72 74 76 78 7A 82 84 86 88 8A 92 94 96 98 9A A2 A4 A6 A8 AA B2 B4 B6 B8 BA C2 C4 C6 C8 CA D2 D4 D6 D8 DA -
E0
E2
E4
E6
E8
EA EC EE
F0
F2
F4
F6
F8
FA
0
00
10
20
30
40
50
60
70
80
90
A0
B0
C0
FC
7
FE
Bild 8.26: Aufteilung des Parameter-RAMs
Die Bedeutung der einzelnen Parameter ist von der verwendeten TPU-Funktion abhängig.
Eine Ausnahme stellt der CHANNEL-CONTROL-Parameter dar. Dieser wird von allen
Klaus Senning
48
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Factory-Masked-Functions des MC 68332 Mask-Set A verwendet. Die übrigen Parameter
werden im Zusammenhang mit der Beschreibung der einzelnen TPU-Funktionen erläutert.
Der CHANNEL-CONTROL-Parameter ist jeweils im Parameter-Wort 0 enthalten (siehe
Bild 8.26). Nachfolgend wird der Aufbau des CHANNEL-CONTROL-Parameters kurz
erläutert. Wie Bild 8.27 zeigt, setzt sich der CHANNEL-CONTROL-Parameter aus dem
Time-Base/Directionality-Selection- (TBS-), dem Pin-Action-Control- (PAC-) sowie dem
Pin-State-Control- (PSC-) Parameter zusammen.
15
Parameter 0
-
14
-
13
12
-
-
11
-
10
-
9
8
-
7
6
TBS
5
4
3
PAC
2
1
0
PSC
Bild 8.27: Aufbau des CHANNEL-CONTROL-Parameters
Die zu verwendende Zeitbasis (TCR1 bzw. TCR2) kann mit Hilfe des TBS-Parameters
ausgewählt werden. Zudem legt der TBS-Parameter fest, ob der zugehörige TPU-Kanal
als Eingang oder Ausgang betrieben werden soll.
Für den Fall, dass der TPU-Kanal als Eingang genutzt wird, kann mit Hilfe des PACParameters festgelegt werden, auf welche Signalflanke die TPU-Funktion reagieren soll.
Findet der TPU-Kanal hingegen als Ausgang Verwendung, definiert der PAC-Parameter
das Ausgangsverhalten des TPU-Kanals.
Der PSC-Parameter ist nur dann von Bedeutung, wenn der TPU-Kanal als Ausgang
betrieben wird. In diesem Fall kann durch den PSC-Parameter der logische Zustand des
Ausgangs direkt vorgegeben werden.
1.6.3
Factory-Masked-Functions
Wie bereits erwähnt, beinhaltet der MC 68332 einige vorgegebene TPU-Funktionen. Diese
werden als Factory-Masked-Functions bezeichnet. In Bild 8.22 sind alle Factory-MaskedFunctions des MC 68332 Mask-Set A aufgelistet.
Nachfolgend wird die Pulse-Width-Modulation-TPU-Function (PWM) sowie die Period
/Pulse-Width-Accumulator-TPU-Function (PPWA) ausführlich beschrieben. Informationen
zu den übrigen TPU-Funktionen können ggf. dem Benutzerhandbuch [Motorola 1996/4]
entnommen werden.
1.6.3.1 Pulse-Width-Modulation-TPU-Function (PWM)
1.6.3.1.1 Funktionsbeschreibung
Mit Hilfe dieser TPU-Funktion können pulsweitenmodulierte Rechtecksignale (PWMSignale) auf sehr einfache Weise erzeugt werden. Von der CPU wird zur Definition des
PWM-Signals die Periodendauer sowie die Pulsdauer an die TPU übergeben. Unter
Verwendung dieser beiden Parameter erzeugt die TPU ohne weitere Unterstützung durch die
CPU das PWM-Signal.
Klaus Senning
49
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Standardmäßig werden Änderungen der Pulsoder Periodendauer erst mit der nächsten
steigenden Signalflanke wirksam (siehe Bild
8.28). Ist die Interrupt-Bearbeitung freigegeben,
wird ebenfalls mit jeder steigenden Signalflanke
ein Interrupt ausgelöst.
Zusätzlich bietet die PWM-TPU-Funktion die
Möglichkeit, Änderungen der Perioden- oder
Pulsdauer sofort zu übernehmen. Hierfür stellt
die PWM-TPU-Funktion einen eigenen HostService-Request mit dem Code %01 zur
Verfügung. Wird dieser Host-Service-Request
ausgelöst, übernimmt die TPU die vorgegebene
Puls- und Periodendauer nicht erst mit der
nächsten steigenden Signalflanke, sondern sofort.
Ist die Interrupt-Bearbeitung freigegeben, wird
gleichzeitig ein Interrupt ausgelöst.
steigende Flanke
Pulsdauer
t
Periodendauer
Bild 8.28: PWM-Signal
Die PWM-TPU-Funktion kann entweder im normalen Betriebsmodus oder im sogenannten
Level-Mode arbeiten. Wird die PWM-TPU-Funktion im Level-Mode betrieben, kann die
Pulsdauer entweder 0% oder 100% der Periodendauer betragen. Zwischenwerte können in
diesem Betriebsmodus nicht vorgegeben werden. Im Gegensatz dazu kann im normalen
Betriebsmodus die Pulsdauer jeden beliebigen Zwischenwert annehmen. Nachfolgend wird
der normale Betriebsmodus beschrieben.
1.6.3.1.2 Parameter-RAM
Für die Parameterübergabe zwischen der CPU und der TPU wird das Parameter-RAM
benötigt. In Bild 8.29 sind die von der PWM-TPU-Funktion verwendeten Parameter sowie
deren Position im Parameter-RAM dargestellt.
Parameter 0
Parameter 1
15
14
13
12
11
10
9
-
-
-
-
-
-
-
8
7
6
5
4
3
2
1
0
CHANNEL-CONTROL
OLDRIS
Parameter 2
PW MHI
Parameter 3
PW MPER
Parameter 4
PW MRIS
Parameter 5
-
Bild 8.29: Aufbau des Parameter-RAMs der PWM-TPU-Funktion
Der Parameter 0 enthält den CHANNEL-CONTROL-Parameter. Die übrigen Bits des
Parameters 0 werden, wie auch der gesamte Parameter 5 von der PWM-TPU-Funktion nicht
verwendet.
Den Aufbau des CHANNEL-CONTROL-Parameters zeigt Bild 8.27. Von den drei
enthaltenen Parametern wird zur Konfiguration der PWM-TPU-Funktion nur der TBSParameter verwendet. Mit dessen Hilfe wird die zu verwendende Zeitbasis ausgewählt. In der
nachfolgenden Tabelle ist die hierfür erforderliche Codierung dargestellt.
Klaus Senning
50
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
TBS
PAC
1
0
PSC
0
1
Beschreibung
0
0
1
0
0
TCR1
0
1
1
1
TCR2
Bild 8.30: Codierung des CHANNEL-CONTROL-Parameters
Zur Definition des PWM-Signals wird von der CPU die Periodendauer und die Pulsdauer an
die TPU übergeben, wobei der Parameter PWMPER die Periodendauer und der Parameter
PWMHI die Pulsdauer enthält. Die nachfolgend dargestellte Gleichung dient zur
Bestimmung des PWMHI- bzw. PWMPER-Parameters.
PWMPER bzw. PWMHI =
Perioden- bzw. Pulsdauer
Zeitbasis (TCR1 bzw. TCR2)
Beide Parameter dürfen einen maximalen Wert von $8000 nicht überschreiten. Ein minimaler
Wert kann nicht fest vorgegeben werden, da dieser davon abhängig ist, welche anderen TPUFunktionen gleichzeitig von der TPU ausgeführt werden. Im sogenannten Best-Case darf die
Periodendauer bzw. Pulsdauer nicht kleiner als 32 Systemtakte gewählt werden. Der BestCase tritt dann ein, wenn von der TPU ausschließlich die PWM-TPU-Funktion bearbeitet
wird. Ist dies nicht der Fall, muss eine Worst-Case-Betrachtung durchgeführt werden. Weitere
Informationen hierzu sind im Benutzerhandbuch [Motorola 1996/4] und [Motorola 1997/1]
enthalten.
Die beiden Parameter OLDRIS bzw. PWMRIS können von der CPU nur gelesen werden.
Die TPU aktualisiert diese Parameter jeweils mit der steigenden Signalflanke. Im OLDRISParameter wird der Zählerstand von TCR1 bzw. TCR2 zum Zeitpunkt der letzten steigenden
Signalflanke abgelegt, während der Parameter PWMRIS den Zählerstand für die folgende
steigende Flanke enthält.
1.6.3.1.3 Initialisierung
Um Fehler bei der Initialisierung der PWM-TPU-Funktion zu vermeiden, sollte die folgende
Vorgehensweise eingehalten werden.
Zunächst müssen die TPU-Kontrollregister mit Ausnahme des Channel-Priority-Registers
(CPR) parametriert werden, wobei das Host-Sequence-Register (HSQR) von der PWM-TPUFunktion nicht genutzt wird. Daraufhin ist der CHANNEL-CONTROL-, der PWMPERsowie der PWMHI-Parameter im Parameter-RAM einzutragen.
Nachdem das Parameter-RAM und die TPU-Kontrollregister parametriert wurden, muss zur
Initialisierung der PWM-TPU-Funktion der entsprechende Host-Service-Request ausgelöst
werden. Dem hierfür verwendeten Host-Service-Request ist der Code %10 zugeordnet.
Sobald die Bearbeitung dieses Host-Service-Requests abgeschlossen ist, kann die PWM-TPUFunktion gestartet werden. Zu diesem Zweck muss die gewünschte Priorität in das CPR
eingetragen werden.
Klaus Senning
51
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
1.6.3.2 Period / Pulse-Width-Accumulator-TPU-Function (PPWA)
1.6.3.2.1 Funktionsbeschreibung
Die PPWA-TPU-Funktion dient zur Messung der Puls- oder Periodendauer eines Rechtecksignals. Mit Hilfe dieser TPU-Funktion kann die Puls- bzw. Periodendauer über max. 255
Signalperioden aufsummiert werden.
Zusätzlich besteht die Möglichkeit, durch die PPWA-TPU-Funktion andere TPU-Funktionen
zu steuern. Hierfür müssen die zu steuernden TPU-Kanäle mit dem TPU-Kanal, der die
PPWA-TPU-Funktion ausführt, verknüpft werden. Solch eine Verknüpfung wird als Link
bezeichnet.
Die PPWA-TPU-Funktion verfügt über vier verschiedene Betriebsmodi, die nachfolgend kurz
erläutert werden. Zur Auswahl des zu verwendenden Betriebsmodus wird das Host-SequenceRegister (HSQR) eingesetzt.
-
Mode 0 (HSQR = %00):
Dieser Betriebsmodus dient zur Messung der Periodendauer. Die Periodendauer kann über
max. 255 Signalperioden aufsummiert werden. Das Messergebnis besitzt eine Genauigkeit
von 24 Bit. Ein Überlauf des Messergebnisses wird nicht überwacht. Nach Ende der
Messung kann durch die TPU ein Interrupt ausgelöst werden. In diesem Betriebsmodus ist
es nicht möglich, eine Verknüpfung zu einem anderen TPU-Kanal herzustellen.
-
Mode 1 (HSQR = %01):
Auch dieser Betriebsmodus wird zur Messung der Periodendauer eingesetzt. Es bestehen
jedoch zwei Unterschiede zu Mode 0. Zum einen beträgt die Genauigkeit des Messergebnisses nur 16 Bit und zum anderen kann in diesem Betriebsmodus eine Verknüpfung
zu max. 8 TPU-Kanälen hergestellt werden.
Ebenso wie in Mode 0 besteht auch in Mode 1 die Möglichkeit, nach Ende der Messung
ein Interrupt zu erzeugen. Darüber hinaus kann ein Interrupt ausgelöst werden, sobald das
Messergebnis die 16 Bit-Grenze erreicht hat.
-
Mode 3 (HSQR = %10):
Dieser Betriebsmodus dient zur Messung der Pulsdauer. Im Übrigen ist Mode 3 identisch
zu Mode 0.
-
Mode 4 (HSQR = %11):
Mode 4 ist weitestgehend identisch zu Mode 1. Auch hier besteht der einzige Unterschied
darin, dass statt der Periodendauer die Pulsdauer gemessen wird.
1.6.3.2.2 Parameter-RAM
Zur Parameterübergabe zwischen der CPU und der TPU wird das Parameter-RAM verwendet
In Bild 8.31 ist der Aufbau des Parameter-RAMs dargestellt. Nachfolgend werden die
einzelnen Parameter erläutert.
Klaus Senning
52
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
15
Parameter 0
14
13
12
START-LINK-CHANNEL
11
10
9
8
7
LINK-COUNT-CHANNEL
5
4
3
2
1
0
CHANNEL-CONTROL
MAX-COUNT
Parameter 1
6
PERIOD-COUNT
LAST-ACCUM
Parameter 2
ACCUM
Parameter 3
ACCUM-RATE
Parameter 4
PPW A-UB
PPW A-LW
Parameter 5
Bild 8.31: Aufbau des Parameter-RAMs der PPWA-TPU-Funktion
Durch die Parameter START-LINK-CHANNEL und LINK-COUNT-CHANNEL wird
eine Verknüpfung zu anderen TPU-Kanälen hergestellt. Beide Parameter sind nur in Mode 0
und 3 von Bedeutung. Eine Verknüpfung kann zu einem Block von bis zu 8 aufeinander
folgenden TPU-Kanälen hergestellt werden. Die Kanal-Nummer des ersten TPU-Kanals wird
durch den START-LINK-CHANNEL-Parameter festgelegt, während der Parameter LINKCOUNT-CHANNEL die Anzahl der TPU-Kanäle definiert, die verknüpft werden sollen.
Der Aufbau des CHANNEL-CONTROL-Parameters wurde bereits in Bild 8.27 dargestellt.
Es fällt auf, dass der CHANNEL-CONTROL-Parameter der PPWA-TPU-Funktion statt 9 nur
8 Bits beinhaltet. Die nachfolgende Tabelle enthält alle, zum Betrieb der PPWA-TPUFunktion erforderlichen Einstellungen des CHANNEL-CONTROL-Parameters.
TBS
PAC
PSC
1
Beschreibung
1
0
0
1
Mode 2 / 3
0
1
0
Mode 0 / 1
TCR 1
0
0
0
TCR 2
0
1
1
Bild 8.32: Codierung des CHANNEL-CONTROL-Parameters
Wie anhand von Bild 8.32 zu erkennen ist, definiert der TBS-Parameter die zu verwendende
Zeitbasis. Zusätzlich muss abhängig vom gewählten Betriebsmodus der PAC-Parameter
unterschiedlich initialisiert werden.
Der MAX-COUNT-Parameter legt die Anzahl der Signalperioden fest, über die entweder
die Pulsdauer oder die Periodendauer aufsummiert wird. Die maximale Anzahl der
Signalperioden beträgt 255. Enthält der MAX-COUNT-Parameter den Wert 0 oder 1, wird die
Puls- bzw. Periodendauer einer Signalperiode bestimmt.
Der Parameter PERIOD-COUNT enthält die Anzahl der Signalperioden, die während der
laufenden Messung bereits erfasst wurden. Dieser Parameter wird von der TPU aktualisiert.
Zu Beginn der Messung setzt die TPU diesen Parameter auf Null. Ist der PERIOD-COUNTParameter gleich dem MAX-COUNT-Parameter wird die Messung beendet.
Der ACCUM-Parameter wird mit jeder fallenden Signalflanke (Mode 0 - 4) bzw. mit jeder
steigenden Signalflanke (Mode 2 und 3) durch die TPU aktualisiert. Zusätzlich kann der
ACCUM-Parameter periodisch aktualisiert werden. Im Parameter LAST-ACCUM wird der
Zählerstand des TCR1 bzw. TCR2 zum Zeitpunkt der zuletzt durchgeführten Aktualisierung
des ACCUM-Parameters gespeichert.
Der ACCUM-Parameter enthält, während die Messung läuft, die beiden niederwertigen Bytes
des aktuellen Messergebnisses. Nach Ende der Messung wird der aktuelle Wert des ACCUMKlaus Senning
53
Praktikum Mikrocomputertechnik
Prof. Dr. Bayer
Parameters in den PPWA-LW-Parameter kopiert. Von dort kann die CPU das Messergebnis
auslesen.
Im Mode 0 und 2 wird das Messergebnis mit einer Genauigkeit von 24 Bit ermittelt. Der
Parameter PPWA-UB enthält das höchstwertige Byte des Messergebnisses. Im Gegensatz zu
allen anderen Parametern muss dieser nach jeder Messung durch die CPU gelöscht werden.
Perioden- bzw.
( PPWA-LW + PPWA-UB * 216 ) * Zeitbasis (TCR1 bzw. TCR2)
=
Pulsdauer
MAX-COUNT
Der ACCUM-Parameter kann periodisch aktualisiert werden. Durch den ACCUM-RATEParameter wird der zeitliche Abstand festgelegt, in dem der ACCUM-Parameter aktualisiert
wird. Durch den ACCUM-RATE-Parameter wird die Genauigkeit beeinflusst, mit der der
ACCUM-Parameter die Perioden- bzw. Pulsdauer der gerade laufenden Messung angibt. Auf
die Genauigkeit des Endergebnisses hat diese Einstellung jedoch keinen Einfluss, da die
PPWA-TPU-Funktion das Messergebnis auch dann aktualisiert, wenn am Signaleingang, wie
oben beschrieben, eine entsprechende Signalflanke auftritt. Somit wird die Genauigkeit des
Endergebnisses allein durch die verwendete Zeitbasis bestimmt.
Die Aktualisierungsrate kann mit Hilfe der folgenden Gleichung bestimmt werden. Je höher
diese gewählt wird, desto höher wird dadurch die Auslastung der TPU. Somit sollte, wenn
nicht die Zwischenwerte der aktuellen Messung, sondern nur das Endergebnis für die
jeweilige Anwendung von Bedeutung ist, die minimale Aktualisierungsrate (ACCUM-RATE
= $FF) gewählt werden.
Aktualisierungsrate =
1
ACCUM-RATE * Zeitbasis (TCR1 bzw. TCR2)
1.6.3.2.3 Initialisierung
Um Fehler bei der Initialisierung der PPWA-TPU-Funktion zu vermeiden, sollte die folgende
Vorgehensweise eingehalten werden.
Zunächst müssen die TPU-Kontrollregister mit Ausnahme des Channel-Priority-Registers
(CPR) parametriert werden. Daraufhin ist der CHANNEL-CONTROL-, der MAX-COUNTsowie der ACCUM-RATE-Parameter im Parameter-RAM einzutragen. Zusätzlich muss für
Mode 1 und 3 auch der START-LINK-CHANNEL- sowie der LINK-COUNT-CHANNELParameter konfiguriert werden.
Nachdem das Parameter-RAM und die TPU-Kontrollregister parametriert wurden, muss zur
Initialisierung der PPWA-TPU-Funktion der entsprechende Host-Service-Request ausgelöst
werden. Dem hierfür verwendeten Host-Service-Request ist der Code %10 zugeordnet.
Sobald die Bearbeitung dieses Host-Service-Requests abgeschlossen ist, kann die PPWATPU-Funktion gestartet werden. Hierfür muss die gewünschte Priorität in das CPR
eingetragen werden.
Klaus Senning
54

Documentos relacionados