TPU (Time Processor Unit) Die TPU ist ein Coprozessor für Timingaufgaben, sie arbeitet parallel zum Hauptprozessor (Host), um zum Beispiel PWM-Signale zu generieren. Die TPU besitzt eine Reihe festprogrammierter Zeitfunktionen, die im internen ROM abgelegt sind und die mit Parametern an spezielle Aufgabenstellungen angepaßt werden können. Die TPU kann aber auch vom Anwender direkt programmiert werden. Der Programmcode der TPU wird dann im internen 2KB-RAM des 68332 abgelegt und dieses RAM wird mit Hilfe des Emulationsbit im Control-Register der TPU (TPUMCR) direkt mit der TPU verbunden.
Die TPU enthält zwei 16-Bit Timer TCR1 und TCR2. TCR1 wird mit dem Systemtakt versorgt, TCR2 wird von einem externen Takt am Pin T2CLK angesteuert. Die beiden Timer dienen als Zeitreferenz für 16 Timerkanäle mit jeweils separater Hardware. Ein Kanal besteht aus: - 16-Bit Match-Register - 16-Bit Capture Register - Komparator - Pin-Logik für einen Ein/Ausgangspin Die Hardware arbeitet nach folgendem Schema: Pin als Ausgang Ein Vergleichswert wird im Matchregister gespeichert und permanent mit TCR1 oder TCR2 verglichen. Bei Übereinstimmung wird der Ausgang gesetzt, zurückgesetzt oder getoggelt. Pin als Eingang Die Pinlogik überwacht den Eingang. Beim erwarteten Ereignis (pos. oder neg. Flanke) wird der Inhalt von TCR1 oder TCR2 ins Capture Register geladen
Die Kommunikation zwischen TPU und Host erfolgt über einen Shared RAM Bereich mit 256 Byte. (Host Interface) Das Host Interface ist aufgeteilt in einen Bereich zur Initialisierung der TPU und in einen Bereich für die Parameter der 16 Kanäle, die abhängig von der verwendeten Timingfunktion verschiedene Bedeutungen haben. Jeder Kanal verfügt über 6 Parameter mit 16 Bit. Die Kanäle 14 und 15 besitzen jeweils 8 Parameter. Aufteilung: $FFFE00 - $FFFEF1 allgemeiner TPU-Bereich $FFFF00 - $FFFF0A 6 Parameter Kanal 0 $FFFF10 - $FFFF1A 6 Parameter Kanal 1 $FFFF20 - $FFFF2A 6 Parameter Kanal 2... $FFFFE0 - $FFFFEE 8 Parameter Kanal 14 $FFFFF0 - $FFFFFE 8 Parameter Kanal 15
Allgemeine TPU Register: Die Auswahl der TPU-Funktion pro Kanal erfolgt in den Channel Function Select Registern Die Bedeutung der Parameterregister ist abhängig von der gewählten Funktion. Für jede TPU-Funktion gibt es dazu eine separate Beschreibung.
TPU Funktionen Factory-Masked-Function CFS-Code Period/Pulse-Width-Accumulator PPWA $F Output-Compare OC $E Stepper-Motor SM $D Position-Synchronized-Pulse-Generator PSP $C Period-Measurement-With-Additional / Missing- Transition-Detect PMA/PMM $B Input-Capture / Input-Transition-Counter ITC $A Pulse-Width-Modulation PWM $9 Discrete-Input / Output DIO $8 Synchronized-Pulse-Width-Modulation SPWM $7 Quadrature-Decode QDEC $6
Channel-Function-Select-Registers (CFSR) CFSR0 $FFFE0C Channel 15 Channel 14 Channel 13 Channel 12 CFSR1 $FFFE0E Channel 11 Channel 10 Channel 9 Channel 8 CFSR2 $FFFE10 Channel 7 Channel 6 Channel 5 Channel 4 CFSR3 $FFFE12 Channel 3 Channel 2 Channel 1 Channel 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 4 Bit- Parameter in einem der CFSR zugeordnet. Host-Service-Request-Registers (HSRR) HSRR0 $FFFE18 CH15 CH14 CH13 CH12 CH11 CH10 CH9 CH8 HSSR1 $FFFE1A CH7 CH6 CH5 CH4 CH3 CH2 CH1 CH0 Die CPU verwendet zur Steuerung der TPU-Funktionen sogenannte Host-Service-Requests. 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.