Motorola MC68332

Ausgemustert

Der Motorola MC68332 wird am NTB nicht mehr eingesetzt. Dieser Artikel wird deshalb nicht mehr aktualisiert und dient nur noch zur Archivierung.

The MC68332 ia s highly-integrated 32 bit microcontroller that combines high-performance data manipulation capabilities with powerful peripheral subsystems.This MCU is built up from standard modules that interface through a common intermodule bus (IMB).

The MCU incorporates a 32 bit CPU (CPU32), a system integration module (SIM), a time processing unit (TPU), a queued serial module (QSM) and a 2 Kbyte static RAM module with TPU emulation capability (TPURAM).

Weblink: www.freescale.com

Datenblätter

iMCB Board

Adapter für NTB Experimentiersystem Damit der MC68332 in unsere Experimentierkastenumgebung eingebunden werden kann, existiert das iMCB Board. Nebst den Daten- und Adressleitungen sind noch weitere wichtige Peripherieports wie z.B. QSPI, PORTF,TPU, Chipselects und weitere Steuer- und Kontrolleitungen herausgeführt.

NTB iMCB

Eckdaten

Taktrate 16 MHz
Internes RAM 2K RAM
Externes RAM 4M SRAM (512-kword x 8-bit)
Externes Flash 8 Megabit (1M x 8-Bit/512K x 16-Bit)

Achtung

Die Pins AS (Address Strobe) und DS (Data Strobe) des PortE sind auf dem iMCB Board sowie auf dem Footprint (Connector) vertauscht. Richtigerweise entspricht AS dem Pin PE4 und DS dem Pin PE5. Die Belegung auf dem Schema ist korrekt.

Unterlagen

  • iMCB Schema
  • iMCB Stecker

MC68332 Interfaceprint

MC68332 Interfaceprint Mit dem MC68332-Interfaceprint werden die Signale zwischen dem Host und Mikrokontroller verstärkt. So kann eine Kabellänge von mehr als 10 m ohne Probleme erreicht werden. Handelsübliche 9Pol-DSub-Buchsen für die serielle Kommunikation und 25Pol-DSub-Stecker für die BDI-Kommunikation ermöglichen den gebrauch von handelsüblichen Verbindungskabeln.

MC68332 mit Miniwebinterface

Um den MC68332 in eine Netzwerkumgebung zu integrieren gibt es den Ethernet-Subprint mit einem Ethernet-Controller-Chip von Crystal. So kann der MC68332 für diverse Aufgaben in einem Netzwerk, wie z.B. Server oder für Fernwartungszwecke benutzt werden. Mit Schnittstellen der gängigen Nezwerkprtokolldiensten (TCP,UDP…) lassen sich diverse Netzwerkanwendung implementieren. Miniwebinterface für MC86332

Tutorials und Application Notes

  • MC68332 Tutorial
  • PPWA TPU Function Application Note
  • UART TPU Function Application Note

Entwicklung mit dem BlackBox Java/Oberon CrossSystem

Der Microcontroller MC68332 kann mit BlackBox in Componentent Pascal oder in Java programmiert werden.

Unter folgendem Link finden Sie die komplette Java API-Beschreibung der Pakete mc68x32 (Treiber) und mc68x32test (Testprogramme).

FAQ

Wie kann ich externe Interrupts verwenden?

Will man keine externe Hardware bauen, die einen passenden Interruptvektor liefert, benutzt man mit Vorteil den Autovektor. Dazu muss das Signal AVEC' auf dem PortE auf logisch 0 gelegt werden, der Pin2 des PortE als Kontrollsignal und als Eingang konfiguriert werden. Achtung: das ist per Default nicht so! Im weiteren muss jetzt die zuständige Interruptserviceroutine an die passende Stelle in der Interrupttabelle „eingehängt“ werden. Dies geschieht mit Kernel.InstallIP(NameDerISR, Autovektor). Die Autovektoren für die externen Interrupteingänge 1 bis 7 betragen 25 bis 31.

Wie funktioniert der Low-Power Modus?

Im Kernel wird die Prozedur LPStop angeboten. Sie versetzt die CPU in den Low-Power Modus. Die Einstellungen im SYNCR des System Integration Moduls bestimmen dabei, ob z.B. der PLL weiter laufen soll. Es gibt grundsätzlich zwei Möglichkeiten den LPStop einzusetzen: 1. Stand-alone Hier muss zuerst der Periodic Interrupt Timer ausgeschaltet werden und dann kann in Low-Power Modus gewechselt werden. SYS.PUT2(0FFFA24H, 0); (* turn off PITR *) Kernel.LPStop Das Target kann nun z.B. durch einen externen Interrupt wieder gestartet werden. Dazu wird z.B. der externe Interrupt-Pin 4 als Kontrolleingang gesetzt und das AVEC-Signal ebenfalls als Kontrolleingang gesetzt und negativ asseriert. Eine Interruptserviceroutine muss jetzt für den Vektor 28 gesetzt werden. 2. Mit Scheduler In einem Task mit Periode 0 wird LPStop repetitiv aufgerufen. Der Periodic Interrupt Timer weckt das Target dann jeweils wieder auf. Es können beliebig viele andere Tasks installiert sein, jedoch sollten keine eine Periode von Null haben.

Warum wird ein periodischer Task mit einer Periodendauer zwischen 1 und 10ms nicht regelmässig abgearbeitet?

Die Systemzeit wird durch den Kernel verwaltet. Der Periodic Interrupt Timer löst z.B. alle 10ms einen Interrupt aus und die Interrupt-Serviceroutine erhöht die Systemzeit um 10ms. Hat ein Task die Periodendauer 1ms, werden zu diesem Zeitpunkt gleich 10 Durchläufe nötig, d.h. der Task wird 10 mal in die Taskschleife eingefügt. Will man, dass ein Task (z.B. für Regelungsaufgaben) in regelmässigen Abständen ausgeführt wird, muss der Kernel abgeändert werden. 1. Zwei Konstanten erhalten neu die Werte nofTicksPerSec = 1000; msPerTick = 1; 2. Der Periodische Interrupt Timer (PITR) muss so konfiguriert werden, dass er jede ms einen Interrupt erzeugt. In der Prozedur TargetStart wird der PITR neu auf den Wert 8 gesetzt. Achtung: Der Timer läuft mit der Frequenz des externen Quarzes (32.768Hz)geteilt durch 4 und nicht etwas mit dem Systemtakt.

Programm startet nicht aus dem Flash

Die Speisung muss innerhalb kurzer Zeit auf 5V ansteigen. Insbesondere Labornetzgeräte sind oft zu langsam. Der Reset-Baustein auf dem iMCB-Modul bewirkt zwar eine Verzögerung. Diese reicht dann nicht aus. Schalten Sie in diesem Fall das Netzgerät zuerst ein und verbinden Sie erst dann die Schaltung mit der Speisung. Bei Betrieb mit einem Akku ist das alles kein Problem.

Zeitmessung in Mikrosekunden

Der 332 weist keinen Timer mit Mikrosekundenauflösung auf. Trotzdem ist es manchmal wünschenswert kurze Zeiten präzise zu messen (z.B. für die Beurteilung von Code). Im Modul TobKernel wird eine Prozedur GetTimeSecMsUs angeboten. Diese liefert die aktuelle Zeit in Sekunden, Millisekunden und Mikrosekunden. Damit der 332 das machen kann, muss im Modul TobKernel die Konstante CtimeBaseActiv auf TRUE gesetzt werden und das Modul neu crosscompiliert werden. Ebenso darf dann der TPU-Kanal 15 nicht für sonstige Aufgaben verwendet werden!

Wie kann der externe Reset Pin verwendet werden?

Der externe Reset Pin ist sowohl Ein- als auch Ausgang. Sie können einen Reset des Prozessors auslösen, indem Sie das Signal auf 0 setzen. Der Prozessor wird neu aufstarten, sobald das Signal wiederum auf 1 geht. Der Reset kann aber auch als Ausgang verwendet werden um Peripheriebausteine zurückzusetzen.

Der Prozessor hat unerwartete Interrupts und stoppt

Durch verschiedene Ereignisse (z.B. Program Exceptions durch Laufzeitfehler) löst der Prozessor einen Interrupt (Trap) aus. Oder ein Peripheriebaustein (z.B. TPU) löst einen Interrupt aus, ohne das Sie eine dafür zuständige Serviceroutine am richtigen Ort installiert haben. Mit InfoXo68x32.ShowExceptionHistory können Sie sich auf dem Log die Information über die Quelle Ihres Interrupts ausgeben.

Target Commands funktionieren nicht

Wenn Sie vom Host aus einen Command auf dem Target starten möchten, muss zwingend ein Scheduler auf dem Target laufen, d.h. es muss z.B. das Modul To68x32Tasks mitgeladen werden.

Die Pinbeschriftung von AS und DS (PortE) ist falsch

Die Pins AS (Address Strobe) und DS (Data Strobe) des PortE sind auf dem iMCB Board sowie auf dem Footprint (Connector) vertauscht. Richtigerweise entspricht AS dem Pin PE4 und DS dem Pin PE5. Die Belegung auf dem Schema ist korrekt.