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