


![]() |
MEGA340 - Handbuch |
- Einführung
- Baugruppen
- Schnittstellen
- Debugger Support
- Bei Problemen
- Patches, Anderungen, Versionen und Bugs
- Applikationstips
- Anhang A NICO-Monitor (ist im SCOTTY08-Handbuch beschrieben)
- Anhang B FLASH-Entwicklungspaket (ist im SCOTTY08-Handbuch beschrieben)
Autor: Walter Scherer
Copyright © MCT Paul & Scherer Mikrocomputertechnik GmbH. Alle Rechte vorbehalten.
Dieses Handbuch, wie auch das beschriebene Produkt, wurde sorgfältig erstellt und geprüft. Trotzdem können Fehler und Irrtümer nicht ausgeschlossen werden. MCT übernimmt keinerlei Verantwortung für die uneingeschränkte Richtigkeit und Anwendbarkeit des Handbuchs oder des beschriebenen Produkts und für die aus eventuell vorhandenen Fehlern resultierenden Schäden.
Änderungen ohne vorherige Ankündigung vorbehalten.
![]()
1 Einführung
Mit dem MEGA340 haben Sie einen Einplatinenrechner mit herausragenden Eigenschaften erworben. Der grosszügige Ausbau mit Speicher und die hohe Rechenleistung verbunden mit einer leistungsfähigen Hochsprachen Entwicklungsumgebung prädestinieren ihn für anspruchsvolle Projekte. Die interne Peripherie des Controllers MC68340 wurde durch vielfach benötigte Peripherie ergänzt. Die hohe Integrationsdichte und geringe Stromaufnahme des MEGA340 wurde durch die Bestückung mit Surface Mount Devices in CMOS Technik, kombiniert mit modernen Powersave Techniken erreicht.
Die integrierten Funktionen des MC68340:
- M68000 aufwärtskompatibler CPU32 Prozessorkern
- Programmierbare Taktfrequenz von 16.67 oder 25MHz bis herunter zu 135kHz
- Hard- und Software-Watchdogs
- Interrupttimer
- Flexibles Chip-Select-Generator System
- Programmierbare I/O-Ports mit 16Bit Breite
- Low-Power-Stop-Mode für alle integrierten Baugruppen
- 2 DMA-Kanäle
- 2 serielle Kanäle
- 2 16Bit-Universaltimer
- Incircuit Debugging Mode (Background Debugger)
- Randabtaster (JTAG Port)
Funktionen des MEGA340:
- TLX+ Businterface für Erweiterungen
- MC68340 Businterface für Erweiterungen herausgeführt
- Maximal 2MB EPROM oder 1MB FLASH
- EPROM und onboard programmierbares FLASH
- Maximal 4MB batteriepufferbares RAM
- CAN Netzwerk Controller (optional)
- Batteriegepufferte Uhr (RTC) mit Kalender (optional)
- 2 serielle Schnittstellen mit austauschbaren Treibermoduln
- 55 z.T. multifunktionale parallel I/O-Leitungen
- 2 DMA-Kanäle für externe High Speed Peripherie
- 4 analoge Inputs mit 12Bit Auflösung (optional)
- Background Debugger / JTAG Interface
- Powerstecker mit Powerdown-Sleep und Power Fail Funktionen
- Nur eine Versorgungsspannung von +5V ±5%
Zusatzbaugruppen erlauben den schnellen Einsatz in unterschiedlichsten Anwendungen:
- Serielle Treibermodule (IF-Module: RS232, RS422, RS485, Stromschleife, Lichtleiter, ... )
- Netzteile mit Power Management Funktionen
- Background Debugging Interface
Last but not least - die Software:
- Monitor NICO340
- Ein leistungsfähiger K&R / ANSI-C Compiler mit erweiterter ANSI Standard Library (ECO-C)
- Sourcecode Debugger
- Urlader für FLASH
![]()
1.1 Auslieferungszustand
Der MEGA340 Einplatinenrechner wird in folgender Konfiguration ausgeliefert:
- Die ROM Typ Jumper sind auf den bestückten ROM Typ eingestellt
- Das RAM ist je nach bestellter Bestückungsoption korrekt konfiguriert und getestet.
- Bereits installierte Software im ROM (Monitor und zusätzlich Urlader bei FLASH) verwendet den Kanal 0 mit 19200Baud, 8Bit, 1 Stopbit und no Parity.
- Der V.24 RESET ist nicht aktiv.
- Die Referenzspannung für den ADC ist mit einem 2.5V Typ bestückt.
Das Datenbuch zum MC68340 ist nur im Lieferumfang des Entwicklungspakets enthalten.
![]()
1.2 Inbetriebnahme
![]()
Zum ersten Kennenlernen und zum Feststellen eventueller Transportschäden sollten Sie die folgenden Schritte durchgehen. Denken Sie daran, isolierende Unterlagen zu verwenden und Stecker nur im spannungslosen Zustand zu stecken oder zu ziehen. Im folgenden wird immer davon ausgegangen, dass Sie einen PC als Hostrechner verwenden.
- Legen Sie den Einplatinenrechner so hin, dass die Beschriftung der CPU mit nach rechts geneigtem Kopf lesbar ist. Die CPU ist der Chip im 144pol. Quad Flatpack mit den enorm vielen kleinen Beinchen auf allen 4 Seiten.
Sehen Sie sich alle Bauteile mal in Ruhe an - checken Sie auf Transportschäden, insbesondere verbogene Pins an den Steckverbindern.
- Schliessen Sie die Stromversorgung an wie im Bild zu sehen. Sie benötigen ein Festspannungsnetzteil mit +5V ±5%. Regelbare Netzteile sollten nur im Notfall verwendet werden. Ungeregelte Netzteile oder Batteriepakete dürfen nicht direkt verwendet werden.
- Schliessen Sie die V.24 an. Dazu brauchen Sie einen IF232LP Treibermodul oder eine andere, zum IF232LP Modul kompatible Treiberschaltung. Der IF232LP Treibermodul wird mit einem 10pol. Flachbandkabel an den MEGA340 und mit einem Standard-Nullmodemkabel an den PC angeschlossen.
Im Bild ist der Serielle Kanal 0 verwendet. MCT Software benutzt defaultmässig diese Schnittstelle.
- Installieren Sie die beim MEGA340 Handbuch mitgelieferte Terminal-Emulator-Software (TM.EXE) auf Ihrem PC. Es ist ohne weiteres möglich, andere Terminal-Emulatoren zu verwenden.
- Konfigurieren Sie den verwendeten Terminal-Emulator auf 19200Baud, 8 Datenbits, no Parity und 1 Stopbit. Bei TM.EXE ist das die Defaultdefaulteinstellung. Starten Sie den Terminal-Emulator.
- Schalten Sie den MEGA340 ein. Es muss bei Verwendung des NICO-Monitors oder des Minimonitors eine Copyright Notiz und anschliessend ein Prompt kommen. Return/Enter liefert ein neues Prompt.
Wenn Sie soweit gekommen sind, sollte alles in Ordnung sein. Sie können also mit der Entwicklung Ihrer Applikation loslegen.
![]()
1.3 Logische Pegel
Wenn in diesem Handbuch auf logische Pegel eines Signals eingegangen wird, werden zwei Konventionen verwendet.
- 1. High und Low Pegel:
- Diese Pegel entsprechen den direkt messbaren Spannungen an der physikalisch vorhandenen Leitung.
- 2. Aktiv und inaktiv:
- Signale werden, wenn das eine klarere Beschreibung ergibt, als aktiv und inaktiv bezeichnet. Dabei sind highaktive Signale (z.B. FREEZE) im aktiven Zustand bei High Pegel und inaktiv bei Low Pegel. Low aktive Signale (z.B. RESET*) sind im Low Pegel aktiv und bei High Pegel inaktiv.
Signale, die mit einem angehängten '*' markiert werden, sind Low aktiv. Für Signale in GAL Gleichungen gilt eine andere Konvention, hier wird Lowaktiv durch ein vorangestelltes '/' markiert. RESET* und /RESET sind äquivalent.
![]()
1.4 Numerische Angaben
Alle Zahlenwerte werden dezimal angegeben. Hexadezimale Werte werden mit einem vorangestellten 0x markiert. Der Wert 65535 entspricht also dem Wert 0xFFFF.
![]()
2 Baugruppen
2.1 Indikator LEDs
Auf der Platine befinden sich links unterhalb der CPU zwei Indikator LEDs.
Die linke HALT-LED signalisiert einen Double-Fault. Ein Double-Fault tritt nur dann auf, wenn die CPU nach einem Fehler nicht einmal mehr in der Lage ist die Exceptionhandlerroutine anzuspringen. Typischerweise deutet das leuchten der Halt LED auf einen gravierenden Fehler in der Software hin.
Die rechte SOFT-LED kann mit 0 Pegel an PB0 zum Leuchten gebracht werden. Per Software kann die LED also ein- und ausgeschaltet werden. Viel Spass damit...
Der Startupcode von normal übersetzten ECO-C Programmen nutzt die SOFT-LED zum signalisieren von Fehlercodes in einer Art Morsealphabet. Details dazu befinden sich in den mitgelieferten Librarysourcen von ECO-C.
![]()
2.2 Adressbelegung
Bei der M68000 Familie werden alle Peripheriebaugruppen in den linearen Speicheradressraum des Prozessors gemappt. Beim MEGA340 wird die Adressdekodierung zum Grossteil durch programmierbare Select-Generatoren auf dem MC68340 erledigt. Die Programmierung der Chip-Select-Generatoren erfolgt nach untenstehender Tabelle. Abweichende Adressen können zwar eingestellt werden - jedoch wird sich in den meisten Anwendungen kein Vorteil ergeben.
CS # Adresslage Speicher/Funktion Intern
0
1
2
2
2
2
2
3
3
3
3
30x04000000... 0x04000FFF
0x01000000... 0x011FFFFF
0x00000000... 0x003FFFFF
0x02000000... 0x02000007
0x02000040... 0x0200005F
0x02000081
0x02000081
0x020000C1
0x80000000... 0xFFFFFEFF
0x80FFFFC0... 0x80FFFFDF
0x80FFFFA0... 0x80FFFFBF
0x80FFFF60... 0x80FFFF7F
0x80FFFEE0... 0x80FFFEFFMC68340 Intern
EPROM/FLASH
RAM
ADC
RTC
CAN_ALE (write)
MODEMCTRL (read)
CAN Controller
Externer Bus
TLX+ 0
TLX+ 1
TLX+ 2
TLX+ 3Nicht aufgeführte Adressbereiche führen beim Zugriff zu einem Bus Error.
Alle Adressen sind über die Basisregister der Chip-Select Generatoren einstellbar. Deshalb sind die oben angegebenen Adressen lediglich als bequeme Konvention zu sehen. In diesem Handbuch, sowie in allen von MCT angebotenen Softwareprodukten werden defaultmässig diese Adressen verwendet.
Der Buserrortimer kann per Software umkonfiguriert werden. Das Verhalten des MEGA340 beim Zugriff auf nicht dekodierte Adressbereiche hängt von diesen und anderen Einstellungen ab. Normalerweise sollte es genügen den Buserrortimer auf die maximal mögliche Timeoutzeit zu setzen.
![]()
2.3 Interrupts
Interne Interrupts werden wie im MC68340 Handbuch beschrieben verwendet. An externen Interrupts sind nur der TLXINT* und der CAN-Controller Interrupt CANIRQ* sowie NMI* vorhanden. Wie diese drei Quellen auf die Interruptlevel verteilt sind ist in den Kapiteln zum TLX+ Businterface, CAN-Controller und NMI zu finden.
NMI
Der NMI kann vom Netzteil über den Power-Stecker J1 ausgelöst werden. NMIs vom Netzteil werden beim Ausfall der Versorgungsspannung ausgelöst, wobei je nach Netzteil noch einige Millisekunden bis Minuten zum Retten des aktuellen Zustands und Herunterfahren des gesteuerten Prozesses bleiben.
NMI* ist fest auf PB7 gelegt. Die Priorität des NMI ist damit fest auf 7 gelegt. Die Controlregister des Port B müssen entsprechend programmiert werden, um den NMI freizugeben.
![]()
2.4 Stromversorgung
Der MEGA340 wird über einen 4pol. Floppysteckverbinder versorgt. Die Belegung dieses Steckers entspricht im wesentlichen einem normalen 3½" Floppylaufwerkstecker. Nach Entfernen der Kabel an Pin 3 und 4 kann z.B. die Floppy Versorgung eines normalen PC Netzteils verwendet werden.
Pin Signal Beschreibung 1
2
3
4VCC
GND
Power_Good
Power_Off+5V ±5%
Referenz
NMI* Eingang am MEGA340
Interrupt*/Alarm* Ausgang der RTC
VCC: +5V ±5% Stromversorgung. GND: Spannungsreferenz der Stromversorgung. Power_Good: Dieses Signal liefert vom Netzteil eine Stromausfallsmeldung. Eine negative Flanke löst bei geeigneter Programmierung des Port B einen NMI aus. Power_Off: Dieses Signal kann verwendet werden, um das Netzteil auszuschalten. Über die Alarmfunktion der RTC kann nach Ablauf einer programmierbaren Zeit das Netzteil wieder eingeschaltet werden. Die Stromaufnahme an VCC beträgt typ. 150mA und maximal 250mA in der Standardversion.
Die Notstromversorgung der RTC und des RAMs ist mit einer Lithiumzelle mit 3V realisiert. Die Lebensdauer der Zelle beträgt ca. 3 Jahre bei maximaler Betriebstemperatur (70 Grad Celsius) und 10 Jahre bei einer Temperatur von 20 Grad Celsius. Zu diesen Zeiten kann die Betriebsdauer des Rechners mit einer externen Stromversorgung addiert werden.
Die Lithiumzelle ist eingelötet. Das Auswechseln sollte nur von qualifiziertem Personal durchgeführt werden.
Da die Lebensdauer der Lithiumzelle in manchen Anwendungen zu gering ist kann ein externer Akku verwendet werden. Die Batteriespannung ist auf den VACCU Pin auf dem unteren Steckverbinder gelegt. Ein Vorwiderstand mit 10kOhm erlaubt den direkten Anschluss von Akkus mit bis zu ca. 100mAh.
Akkus mit höherer Kapazität sollten direkt von VCC über einen geeigneten Vorwiderstand und eine Diode geladen werden. Alternativ kann auch der 10kOhm Widerstand gegen einen kleineren Wert getauscht werden.
![]()
2.5 Power Down Betriebsarten
Neben den Betriebsmodi der CPU, ist auf dem MEGA340 ein voller Powerdown mit Zeit- oder interruptgesteuertem Betrieb möglich. Das Netzteil POWER1 ist bereits auf einen solchen extern gesteuerten Betrieb vorbereitet. Diese Netzteile haben einen low-aktiven Power-On Eingang, über den die 5V Versorgung vom Netzteil eingeschaltet werden kann. Weitere Details finden sich im Kapitel RTC und der Beschreibung des entsprechenden Netzteils.
![]()
2.6 RESET
Der RESET wird onboard mit einem Spannungskomparator generiert. Die minimale Versorgungsspannung für die Auslösung des Resets beträgt 4.5... 4.7V. Eine Verzögerungsschaltung garantiert eine minimale Dauer des Resets. Weitere Massnahmen auch bei Verwendung geschalteter Stromversorgungen sind daher nicht erforderlich. "Geschaltet" meint hier nicht etwa ein Schaltnetzteil sondern eine z.B. per Relais abschaltbare 5V Stromversorgung mit der Absicht den Rechner nur dann zu aktivieren wenn wirklich Arbeit ansteht (siehe auch Power Down Betriebsarten).
Batteriegepufferte Systeme haben generell einige spezielle, subtile Probleme. Wenn ein Schreibzugriff von einem Reset unterbrochen wird kann mit geringer Wahrscheinlichkeit ein undefinierter Wert geschrieben werden. Das bedeutet allerdings nicht, dass andere Teile des RAMs unzulässig modifiziert werden. Ein weiteres Problem ist die Möglichkeit, dass zusammenhängend geschriebene Multibyte-Transfers in der Mitte unterbrochen werden.
Eine denkbare Massnahme gegen das undefinierte Schreiben von Daten im Resetzeitpunkt wäre eine Hardwaresperre des Resets. Damit ist es jedoch nicht mehr in jedem Fall möglich die Integrität des RAM-Inhalts beim Power-Down zu garantieren. Das Problem abgebrochener Multibyte-Transfers ist prinzipiell nicht sinnvoll in Hardware lösbar.
Abhilfe gegen die beschriebenen Effekte ist, rein in Hardware, nur schwer möglich. Das Problem partieller Schreibzugriffe mit undefiniertem Resultat kann durch sorgfältiges Design der kritischen Bereiche beseitigt werden. Solche kritischen Variablenblocks sollten ohnehin mit einer Konsistenzprüfung versehen werden und es sollte auch nicht wichtig sein, dass der zuletzt geschriebene Block in jedem Fall korrekt ist. Optimal ist es beim Power-Down einen NMI auszulösen, der für konsistente Datenbereiche sorgt. Nachdem alles aufgeräumt ist kann die CPU z.B. mit einem STOP Kommando angehalten werden.
![]()
2.7 RAM
Vorgesehen ist der Einsatz von 128KB und 512KB RAM Typen im Flatpack Gehäuse. Da die Bausteine eingelötet sind, ist eine nachträgliche Änderung der Bestückung nicht sinnvoll möglich. Erweiterungen der RAM Kapazität um RAMs gleichen Typs sind natürlich machbar.
Es kann für Anwendungen, die nur maximal 64KB RAM benötigen eine Sonderversion gefertigt werden. Diese Version erspart gegenüber der kleinsten Standardversion mit minimal 256KB RAM geringfügig Kosten. Sollte für Ihre Anwendung die Sonderversion in Frage kommen wenden Sie sich bitte an uns.
Die im RAM gespeicherten Daten werden bei installierter Lithiumzelle auch bei Ausfall der externen Stromversorgung gehalten. Im Interesse einer möglichst langen Lebensdauer der Lithiumzelle muss ein Low-Power RAM verwendet werden. Die typische Lebensdauer der Lithiumzelle beträgt ca. 4-12 Jahre je nach Betriebstemperatur, Einschaltdauer, Anzahl und Typ der RAMs.
Konfiguration
Die Grösse des RAMs kann über den Chip-Select Generator 1 in Zweierpotenz Schritten eingestellt werden. Defaultmässig wird als Grösse die maximal bestückbare Grösse angenommen. Dabei ergeben sich folgende Effekte:
- Alle 4 Blocks sind adressierbar, auch wenn der entsprechende Block nicht bestückt ist. Solche "Löcher" liefern undefinierte Werte beim Lesen.
- Wenn 128KB RAMs verwendet werden spiegelt sich das RAM 4 mal.
Bei korrekter Jumperstellung erkennt die Startup-Routine von ECO-C die Speichergrösse und programmiert den Chip-Select, so dass der Speicher ohne Löcher und Spiegelungen in den Adressraum eingeblendet wird.
Selektion des RAM Typs
Da minimal die ersten 2 RAMs bei der Fertigung des MEGA340 bestückt werden und ein mixen von 128KB und 512KB RAMs nicht vorgesehen ist, sollte die Einstellung des RAM Typs durch den Anwender nicht erforderlich sein. Der RAM Typ wird über 3 Lötjumper mit je 3 Pads auf der Unterseite des Boards eingestellt.
RAM Typ J12 J8 J9 32KB
128KB
512KB1-2
1-2
2-31-2
1-2
2-32-3
2-3
1-2Die Bestückung mit zwei 32KB RAM ist nur für Sonderversionen gedacht. Es können in diesem Fall maximal 64KB RAM insgesamt verwendet werden.
![]()
2.8 ROM
Die EPROM/ROM Sockel können mit folgenden Typen bestückt werden:
Typ
Grösse
(KB)Onbrd
prog.Onbrd
lösch.ROM
30ROM
31ROM
127C010
27C020
27C040
27C080
29F010
29F040128
256
512
1024
128
2*256N
N
N
N
J
JN
N
N
N
J
J-
A18
A18
A18
-
A18WE*
WE*
A19
A19
WE*
WE*VCC
VCC
VCC
A20
-
A20Selektion des ROM Typs
Der Typ wird über 3 Jumperfelder selektiert:
Typ J10 J11 J13 27C010
27C020
27C040
27C080
29F010
29F0401-2
1-2
2-3
2-3
1-2
1-21-2
1-2
1-2
2-3
-
--
-
-
-
-
1-2Die Jumper J11 und J13 dürfen nie gleichzeitig gebrückt werden.
![]()
2.9 FLASH
Flash-Memory lässt sich ohne Zusatzhardware direkt in der Schaltung programmieren und wieder löschen. Daraus ergeben sich erhebliche Vorteile für Entwicklung und Fertigung von Produkten auf Basis des MEGA340. Insbesondere die leichte Reprogrammierung auch im Feld spart Aufwand und ermöglicht Produkteigenschaften, wie sie mit EPROMs nicht denkbar sind. Durch den Einsatz von Flash-Memories von AMD, sowie dazu kompatiblen Typen, kann auf Programmierspannungsgeneratoren und ähnlich problematische Hardware verzichtet werden.
Generelle Hinweise
Auf dem MEGA340 sind zwei Flash-Memories parallelgeschaltet, um auf eine Busbreite von 16Bit zu kommen. Schreibzugriffe müssen immer in einer Breite von 16Bit erfolgen. Damit ist die kleinste programmierbare Einheit ein 2 Byte breites Wort auf einer geraden Adresse.
Je nach Programmierung des Chip-Select-Generators für das FLASH führt Schreiben zu einem Buserror. Vor dem Schreiben muss deshalb das Write-Protect Bit im Mask Register des Chip-Select-Generators 0 gelöscht werden. Nach dem Schreiben sollte das Bit wieder gesetzt werden, um versehentliches Schreiben mit fatalen Folgen für das Programm zu unterdrücken.
Das FLASH-Entwicklungspaket (siehe Anhang) ermöglicht ein komfortables Arbeiten mit Flash-Memories.
![]()
2.10 RTC
Die RTC72421 ist über 16 Register mit einer Breite von 4Bit ansprechbar. Diese Register liegen in einem Port von jeweils 8Bit Breite, wobei die obersten 4Bit beim Lesen undefinierte Werte liefern und beim Schreiben irrelevant sind. Die Basisadresse ist 0x02000040. Jedes zweite Byte ist nicht benutzt.
Zusammen mit dem Netzteil POWER1 kann der Alarmausgang der RTC zum periodischen Einschalten des MEGA340 verwendet werden. Dazu muss lediglich die RTC auf periodische Interrupts programmiert werden, und der dafür vorgesehene Jumper auf den Netzteilen entfernt werden. Durch Schreiben von 0 auf das IRQ-Bit in der RTC, schaltet sich der Rechner selbst aus. Nach Ablauf der (mit T1/T0) programmierten Periode wird der Strom wieder eingeschaltet.
Adresse Name D3 D2 D1 D0 Funktion 0x02000041
0x02000043
0x02000045
0x02000047
0x02000049
0x0200004B
0x0200004D
0x0200004F
0x02000051
0x02000053
0x02000055
0x02000057
0x02000059
0x0200005B
0x0200005D
0x0200005FS1
S10
Mi1
Mi10
H1
H10
D1
D10
Mo1
Mo10
Y1
Y10
W
CtlD
CtlE
CtlFS08
m08
H08
D08
M08
Y08
Y80
ADJ
T1
TSTS04
S40
m04
m40
H04
PAM
D04
M04
Y04
Y40
W4
IRQ
T0
E/US02
S20
m02
m20
H02
H20
D02
D20
M02
Y02
Y20
W2
BSY
I/S
STPS01
S10
m01
m10
H01
H10
D01
D10
M01
M10
Y01
Y10
W1
HLD
MSK
RSTSekunde Einer
Sekunde Zehner
Minute Einer
Minute Zehner
Stunde Einer
Stunde Zehner
Tag Einer
Tag Zehner
Monat Einer
Monat Zehner
Jahr Einer
Jahr Zehner
Wochentag
Control Reg. D
Control Reg. E
Control Reg. FDie Bits in den Controlregistern haben im einzelnen folgende Bedeutung:
PAM: PM (0) oder AM (1). ADJ: 30 Sekunden Adjust. Die Minuten werden inkrementiert, wenn die Sekunden > 30 sind. Die Sekunden werden auf 00 gesetzt. Nach Setzen von ADJ muss minimal 100 Mikrosekunden gewartet werden. Das Bit wird automatisch wieder gelöscht. IRQ: Dieses Read-Only Bit reflektiert den Zustand des Interrupt Ausgangs der RTC (1 = Interrupt, 0 = kein Interrupt). Beim Schreiben einer 0 wird ein anstehender Interrupt wieder zurückgenommen. BSY: Zeigt nach dem Setzen von HLD an, ob ein Übertrag zu erwarten ist (1 = Übertrag, 0 = kein Übertrag). HLD: Siehe vorhergehendes Bit. T1/T0: Diese Bits dienen der Programmierung der Periodendauer des Interruptausgangs der RTC. Die Periodendauer beträgt:
T1 T0 Zeitintervall 0
0
1
10
1
0
1[1/64] Sekunde
1 Sekunde
1 Minute
1 StundeI/S: Dieses Bit muss auf 1 programmiert werden. MSK: Dieses Bit sperrt den Interrupt Ausgang der RTC. Es muss auf 0 programmiert werden. TST: Dieses Bit muss auf 0 programmiert werden. E/U: Europäische 24 Stunden- (1) oder US AM/PM-Zeit (0). STP: STP = 1 stoppt die Uhr. RST: RST = 1 löscht die internen Zähler unterhalb des 1Hz Teilers. Solange RST = 1 wird die Uhr angehalten. Die Bereiche der einzelnen Zeiteinheiten:
Einheit von bis Kommentar Sekunden
Minuten
Stunden
Monate
Jahre
Wochentag00
00
00
01
00
059
59
23
12
99
6
bis 11 im AM/PM Mode
Sonntag ist 0Programmierung der RTC
Mit folgender Programmsequenz lässt sich die Uhr stellen:
RTC->ctlf = 7; /* stop, reset, 24 hour mode */
RTC->sec = sec;
RTC->secd = sec10;
RTC->min = min;
RTC->mind = min10;
RTC->hour = hour;
RTC->hourd = hour10;
RTC->day = day;
RTC->dayd = day10;
RTC->mon = mon;
RTC->mond = mon10;
RTC->year = year;
RTC->yeard = year10;
RTC->week = week;
RTC->ctle = 0; /* 64Hz, enable std.p output */
RTC->ctld = 0;
RTC->ctlf = 4; /* 24 hour mode, start clock */
Zum Lesen ist nichts weiter nötig, als die Zeitregister in einen Buffer zu kopieren. Wenn sich während des Lesens die Register verändern, wird eine falsche Zeit ausgegeben. Um dies zu erkennen wird die RTC zweimal gelesen und die Ergebnisse verglichen. Falls sie ungleich sind wird der Lesevorgang wiederholt.
RTC63421
Die RTC63421 ist eine gegenüber der RTC72421 verbesserte Ausführung. Die beiden RTCs sind pinkompatibel und mit Ausnahme der Controlregister und der zusätzlichen Alarmtimer Funktion softwarekompatibel. Die RTC63421 hat als wesentliche Verbesserung einen frei programmierbaren Alarmtimer, der verwendet werden kann, um nach beliebigen Zeitintervallen die Power On Funktion des POWER1 Netzteils zu triggern.
Die RTC63421 ist optional verfügbar. Details der Programmierung werden im bei der Option mitgelieferten Datenblatt beschrieben.
![]()
2.11 Stromverbrauch
Bei dem MEGA340 kann die interne Taktfrequenz per Software eingestellt und somit die Stromaufnahme beeinflusst werden. Dazu müssen lediglich die oberen 8Bit des internen Registers syncr im SIM-Registerblock verändert werden. In dem folgenden Diagramm ist die Abhängigkeit der Stromaufnahme von der Taktfrequenz dargestellt. Für die Messungen wurde ein MEGA340 mit 256KB SRAM, IF-Modul, ohne RTC, ohne ADC und ohne CAN-Controller verwendet.
![]()
2.12 25MHz Version
Der MEGA340 ist auch in einer 25MHz Version verfügbar. Gegenüber der Standard Version hat der MEGA340-25 folgende Unterschiede:
- Die CPU ist ein MC68340-25.
- Die PLL muss entsprechend programmiert werden. Die MCT Software stellt 16.67MHz als Default ein.
![]()
3 Schnittstellen
Mit Ausnahme des Power Steckers sind alle Schnittstellen in die beiden 64pol. Steckerleisten am oberen und unteren Rand integriert. Die beiden Stecker liegen in einem 1/10" Raster. Die 4 Befestigungslöcher sind relativ zu den Steckverbindern in einem 1/20" Raster.
Alle Signale sind auf nach unten gerichteten Pfostensteckern verfügbar. Damit ist der Einsatz des MEGA340 auf einer Basisplatine problemlos möglich. Alle Interfaces, die häufig über Flachbandkabel auf externe Baugruppen geführt werden, sind mit langen Pfostensteckern ausgestattet. Diese langen Pfostenstecker sind nach unten genauso lang wie bei den normalen Signalen. Nach oben sind diese Pfosten lang genug um Buchsenleisten mit angepressten Flachbandkabeln aufstecken zu können. Folgende Interfaces sind auf lange Pfosten gelegt:
Interface Leiste Von Bis # Anschluss an TLX+
Seriell 0
Seriell 1
BDM Port
ADC/CANoben
unten
unten
unten
unten1
64
48
32
1026
55
39
17
126
10
10
16
10Grafik LCD, Std Peripherie
Serielle Module
Serielle Module
Background Debug Rüssel
Analog I/O, CAN Bus![]()
3.1 Festlegungen durch vorgegebene Hardware
Folgende Baugruppen des MC68340 sind durch externe Beschaltung in Ihrer Programmierbarkeit eingeschränkt und müssen entsprechend diesen Vorgaben konfiguriert werden:
- Port B
- wird für Chip-Selects und IRQs verwendet. Lediglich PB0 kann als I/O-Port genutzt werden. PB6 dient zum an- und abschalten der ADC-Referenz.
- Clockgenerator
- für die 32kHz-CPU-Taktversorgung. Dieser Generator verwendet einen externen 32kHz-Quarz. Die Konfiguration muss entsprechend gewählt werden.
![]()
3.2 Externes Businterface
Alle nötigen Signale für den Anschluss von externen Mikroprozessorbus Bausteinen sind auf die obere Pfostenleiste gelegt. Die Anordnung der Signale ist hierarchisch strukturiert. Wenn kein Businterface benötigt wird, können die meisten Leitungen als universelle uni- oder bidirektionale Ports verwendet werden. Details zur Verwendung des Businterfaces als Parallel Port befinden sich im Kapitel Parallel Ports.
TLX+ Businterface
Den Kern bildet das TLX+ Interface. Diese Schnittstelle ist extrem einfach zu benutzen und erlaubt den Anschluss der meisten Intel buskompatiblen Bausteinen ohne zusätzliche Glue Logik. Alle Signale auf diesem Interface sind entweder gepuffert oder unkritisch was Belastung und Leitungslängen angeht. Alle Signale auf dem TLX+ können über Flachbandkabel mit bis zu 25cm Länge geführt werden. Bei geeigneter Terminierung können noch grössere Distanzen überbrückt werden.
Die CSx* Signale werden mit einem Standard Trick generiert. Diese Selects werden über einen Treiber von Adressleitungen gesteuert. Dadurch kann im Prinzip jede Kombination von Selects generiert werden. Meist sind jedoch nur die Kombinationen von Interesse, bei denen nur eine der Leitungen auf Low ist. Die entsprechenden Adressen für 4 Chip-Selects am TLX+ sind in der Adressmap angegeben. Weitere Chip-Selects lassen sich bei Anwendung derselben Methode auf die nachfolgenden Adressbits (OP0... OP7 auf dem Vollinterface) generieren.
Pin Name Name Pin 1
3
5
7
9
11
13
15
17
19GND
VCC
pWE*
pEN0/A5
ppA2
pD0
pD2
pD4
pD6
-GND
nc
pRD*
ppA1
RESET*
pD1
pD3
pD5
pD7
ppA32
4
6
8
10
12
14
16
18
2021
23
25ppA4
pEN2/A7
TLXINT*pEN1/A6
pEN3/A8
GND22
24
26Beim direkten Anschluss von Grafik-LCDs sind nur die ersten 20 Pins nötig.
Interrupts
Der Interruptausgang des TLX+ Businterfaces ist auf ein Lötjumperfeld gelegt. Durch eine Lotbrücke kann der Interrupteingang und damit die Priorität selektiert werden. Die Priorität des TLX-Interrupts ist je nach Wahl von PB3 oder PB5 auf 3 oder 5 festgelegt.
Jumper # Pin Signal Funktion wenn gebrückt J2 1
2
3PB5
TLXIRQ*
PB3
TLX+ Interrupt auf PB5
TLX+ Interrupt auf PB3
16Bit Erweiterung des TLX+ Interfaces
Direkt auf das TLX+ Interface folgen weitere 8 Datenleitungen. Diese Datenleitungen sind über Treiber mit D8... 15 am Prozessorbus verbunden. Für die elektrischen Eigenschaften gelten dieselben Regeln wie für die anderen Datenleitungen auf dem TLX+. Es ist nicht möglich beim Zugriff die einzelnen Bytes zu differenzieren. Es werden also immer 16Bit Transfers durchgeführt - unabhängig von der eigentlichen Portbreite des selektierten Registers und der Breite des von der CPU gewünschten Transfers. Diese Einschränkung sollte nie zu Problemen führen, da 16Bit Peripherie mit getrennten Bytes kaum existiert. Sollte diese Funktionalität trotzdem nötig werden, sind die erforderlichen Signale im Vollinterface enthalten.
Pin Name Name Pin 1
3
5
7
9
11
13
15
17
19GND
VCC
pWE*
pEN0/A5
ppA2
pD0
pD2
pD4
pD6
-GND
nc
pRD*
ppA1
RESET*
pD1
pD3
pD5
pD7
ppA32
4
6
8
10
12
14
16
18
2021
23
25ppA4
pEN2/A7
TLXINT*pEN1/A6
pEN3/A8
GND22
24
2627
29
31
33pD8
pD10
pD12
pD14pD9
pD11
pD13
pD1528
30
32
34Volles Businterface
Für Applikationen, in denen ein asynchrones Businterface im M68000 Stil oder ein grosser Adressraum nötig ist, kann das volle Businterface verwendet werden. Dadurch werden jedoch die im TLX+ Interface enthaltenen Chip-Select Leitungen pEN0... pEN3 zu Adressleitungen umdefiniert und können nicht mehr in ihrer TLX+ Funktion verwendet werden.
Zu den im 16Bit TLX+ enthaltenen Signalen kommen noch folgende Signale hinzu:
- Alle Adressleitungen ab A9 bis A31
- A0, SIZE und READ um den Bustransfertyp voll zu erkennen
- DSACK0* und DSACK1* um den Transfer als 8 oder 16Bit Transfer zu terminieren
Da nicht alle Signale zur Realisierung des M68000 Busses auf die Stecker geführt sind, ergeben sich folgende Einschränkungen:
- Die Functioncodes fehlen. IACK Transfers können an der Adresse (0xFFFFFFFx) erkannt bzw. intern behandelt werden. Andere CPUspace Transfers werden nicht unterstützt und sollten auch nicht nötig sein.
- BERR* fehlt. Die Terminierung von fehlerhaften Zyklen wird vom internen BERR* Timer erledigt. Retry Zyklen werden nicht unterstützt.
- HALT* ist auf der unteren Leiste vorhanden, sollte aber nur in exotischen Ausnahmefällen nötig sein.
- AS* und DS* sind durch RD* und WR* ersetzt. Die ursprüngliche Funktion von AS* ergibt sich aus (RD* & WR*).
- SIZE1 ist nicht vorhanden. Es existiert ohnehin nur ein 16Bit Bus beim MC68340, so dass für SIZE1 kaum Bedarf besteht.
- BR*, BG* und BGACK* fehlen. Da zwei DMA Kanäle bereits vorhanden sind ist das kein grosser Verlust.
- RMC* fehlt. Das könnte nur in Multiprozessorapplikationen von einer gewissen Bedeutung sein. Der Lotjumper J4 erlaubt es RMC* auf das Signal PB0 zu legen.
- Der CPU Clock ist auf die untere Leiste gelegt.
Pin Name Name Pin 1
3
5
7
9
11
13
15
17
19GND
VCC
pWE*
EN0 / A5
ppA2
pD0
pD2
pD4
pD6
-GND
nc
pRD*
ppA1
RESET*
pD1
pD3
pD5
pD7
ppA32
4
6
8
10
12
14
16
18
2021
23
25
27
29
31
33ppA4
pEN2 / A7
TLXINT*
pD8
pD10
pD12
pD14pEN1 / A6
pEN3 / A8
GND
pD9
pD11
pD13
pD1522
24
26
28
30
32
3435
37
39
41
43
45
47
49
51
53
55
57
59
61
63ppA0
OA1 / A10
OA3 / A12
OA5 / A14
OA7 / A16
A18
A20
A22
A24 / PA0
A26 / PA2
A28 / PA4
A30 / PA6
READ
DSACK0*
VCCOA0 / A9
OA2 / A11
OA4 / A13
OA6 / A15
A17
A19
A21
A23
A25 / PA1
A27 / PA3
A29 / PA5
A31 / PA7
SIZ0
DSACK1*
VCC36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
- VCC:
- +5V ±10% Stromversorgung für die Peripherieschaltung.
- GND:
- Referenz.
- VEE:
- Kontrastspannung bei LCDs - nicht verwendet.
- RD*:
- Read-Enable, Strobe für einen Lesezugriff (aktiv low). Adress- und Chip-Enable Leitungen sind stabil wenn RD* aktiv ist. Die Daten müssen beim Übergang in den inaktiven Zustand gültig sein. Die Pulsbreite ist programmierbar.
- WE*:
- Write-Enable, Strobe für einen Schreibzugriff (aktiv low). Daten-, Adress- und Chip-Enable Leitungen sind stabil wenn WE* aktiv ist. Die Pulsbreite ist programmierbar.
- RESET*:
- Reset dient zum zurücksetzen der Peripherie und ist direkt mit dem Prozessor-Reset verbunden. Dieses Signal ist bidirektional.
- TLXINT*:
- Interrupteingang. Hiermit lässt sich ein Interrupt erzeugen (aktiv low). An diesen Eingang lässt sich ein Interrupt Ausgang mit Totempole Struktur oder mehrere Open-Collector Ausgänge zusammen mit einem Pullupwiderstand anschliessen. Als Interrupteingang wird PB3 oder PB5 verwendet.
- pD0... pD15:
- Diese Datenleitungen sind über einen Bustreiber mit D0... D15 am Prozessorbus verbunden.
- ppA1... ppA4:
- Die Adressleitungen sind über einen Bustreiber mit entsprechenden Adressen am Prozessorbus verbunden (A3/A4 nur TLX+).
- pEN0... pEN3, A5... A8:
- Chip-Enable Signale, hierüber lassen sich verschiedene Baugruppen selektieren. Die pENx Signale sind mit den internen Adressleitungen A5... A8 über einen Treiber verbunden. Daraus ergeben sich zwar recht merkwürdige Adressen um jeweils nur eins der pENx Signale je Transfer zu aktivieren. Es wird jedoch möglich diese Signale als zusätzliche Addressleitungen zu verwenden.
- READ:
- Ungepuffertes R/W* Signal vom MC68340.
- SIZ0:
- Ungepuffertes SIZE0 Signal vom MC68340.
- OA0... OA7, A9... A16:
- Gepufferte Adressleitungen A9... A16.
- A17... A23:
- Ungepufferte Adressleitungen A17... A23.
- PA0... PA7, A23... A31:
- Ungepufferte Adressleitungen A23... A31 oder je nach Programmierung des MC68340 PA0... PA7.
- DSACK0*, DSACK1*:
- Ungepufferte DSACKx* Signale vom MC68340.
![]()
3.3 Parallel Ports
Auf dem MEGA340 sind die Parallel I/O Ports und das Businterface zu grossen Teilen auf die selben Anschlüsse gelegt, wobei die primäre Idee dabei nicht etwa die Einsparung von Pins, sondern die generelle Maximierung der Flexibilität bei gleichzeitig minimalem Hardwareaufwand war.
Die Benutzung der Ports ist zwar auf den ersten Blick mehr als merkwürdig - mit einer einfachen Routine kann der etwas verwinkelte Zugriff auf die Ports jedoch abgekapselt und damit simplifiziert werden.
Die Ports lassen sich in folgenden Gruppen nutzen:
- D0... D15:
- Wenn das Businterface gar nicht genutzt wird, kann D0... D15 als Input Port verwendet werden.
- A1... A4, pEN0... pEN3 / A5... A8, OA0... OA7 / A9... A16:
- Beim Lesen vom TLX+ Port wird die Adresse in Latches geschrieben und dauerhaft bis zum nächsten Lesezugriff gehalten. Der OA0 Port kann trotz Benutzung des TLX+ Businterfaces als Output Port Verwendung finden, wenn in die TLX+ Adressen die entsprechenden 8 Datenbits eingeblendet werden.
- PA0... PA7 / A23... A31:
- Dieser 8Bit I/O Port kann bei entsprechender Programmierung des MC68340 ohne jede Einschränkung verwendet werden.
- TLXINT*:
- Dieser Interrupteingang kann als I/O Leitung oder als Interrupt Eingang benutzt werden. Interaktionen mit dem Businterface existieren keine.
Parallel I/O Beispielroutinen
Die folgenden Beispielroutinen sind als Beispielfile im Lieferumfang des Entwicklungspakets enthalten.
![]()
3.4 Peripherie Interfaces
Sämtliche Peripherie Signale liegen auf dem unteren Pfostenstecker. Es sind folgende Signalgruppen unterscheidbar:
- Analog zu Digital Inputs
- CAN Interface
- Power und CPU Management
- Background Debugging
- Timer I/O
- DMA
- Seriell I/O
Pin Name Name Pin 1
3
5
7
9AIN0
AIN2
VCC
CANRxD0
CANRxD1AIN1
AIN3
GND
CANTxD0
CANTxD12
4
6
8
1011
13
15STDP*
NMI*
HALT*VACCU
VREF
PB0/RMC*12
14
1617
19
21
23
25
27
29
31VCC
TMS*
TCK
CPUCLK
IPPE*
IFETCH*
FREEZE
BKPT*TDO
TDI
GND
-
VCC
RESET*
GND
GND18
20
22
24
26
28
30
3233
35
37TIN1
TGATE1*
TOUT1*TIN2
TGATE2*
TOUT2*34
36
3839
41
43
45
47GND
CTS1*
DTR1*
RxD1
DSR1*DCD1*
RTS1*
TxD1
RI1*
VCC40
42
44
46
4849
51
53DREQ1*
DACK1*
DONE1*DREQ2*
DACK2*
DONE2*50
52
5455
57
59
61
63GND
CTS0*
DTR0*
RxD0
DSR0*DCD0*
RTS0*
TxD0
RI0*
VCC56
58
60
62
64ADC
Der auf dem MEGA340 optional installierbare A/D-Wandler ADC7803 kann auf 4 Kanälen Analogwerte mit 12Bit Auflösung und einer Wandelrate von 9us einlesen.
Die onboard Spannungsreferenz erlaubt einen Eingangsbereich des Wandlers von 0... 2.5V. Alternativ kann die 4.096V Referenzdiode LT1009 anstelle der standardmässigen LM336 installiert werden.
Wenn die RTC nicht verwendet wird kann es sinnvoll sein die Anzahl der Waitstates auf 1 zu reduzieren. Der Unterschied bei den Zugriffszeiten ist zwar nicht sehr gross, kann jedoch bei kritischen Applikationen wichtig sein.
Powerdown Mode
ADC und Spannungsreferenz können in einen stromsparenden Modus geschaltet werden. Beim Wandler wird dazu lediglich das PDown-Bit im SFR gesetzt. Die Spannungsreferenz wird über den Port B6 an- und ausgeschaltet.
Interface
Pin Name Name Pin 1
3
5AIN0
AIN2
VCCAIN1
AIN3
GND2
4
6
VCC: +5V ±10% Stromversorgung für die Peripherieschaltung. GND: Referenz. AIN[0 . . 3 ] : Analoge Inputs mit einem Spannungsbereich von 0...2.5V oder bei anderer Referenzspannung bis Vref. Register
Die Tabelle zeigt die Register des ADC mit ihrem Bit-Layout. Die angegebenen Offsets sind relativ zur Basisadresse 0x02000000 des ADC.
Off. Name D7 D6 D5 D4 D3 D2 D1 D0 1
3
7Low
High
SFRAD7
Busy
Busy..
Cerr..
Pfail..
0..
AD11
Pdown..
..
0..
..
CalAD0
AD8
Mode
AD[0 . . 11 ] : Daten vom Wandler. Diese Daten können nur gelesen werden. Busy: Der Wandler ist intern mit einer Konversion oder Kalibrierung beschäftigt oder in einem Fehlerstatus. Cerr: Während des Kalibrierens trat ein Overflow auf. Pfail: Die Versorgungsspannung ist unter 3V gefallen. Der Wandler muss neu kalibriert werden. Pdown: Mit diesem Bit kann der Wandler in einen Power Down Mode geschaltet werden. Nach dem wiederaktivieren muss erneut kalibriert werden. Cal: Zeigt eine laufende Kalibrierung an. Mode: Mode zeigt den selektierten Mode der Output Latches an.
Mode Funktion 0
1Transparent Mode
Latched ModeIm Transparent Mode werden die Daten sichtbar, so wie die Wandlung die Bits liefert. Im Latched Mode werden die alten Daten bis zum Abschluss der Wandlung stabil gehalten und dann komplett durch den neuen Wert ersetzt.
Initialisierung
Das SF-Register muss vor der ersten Konversion initialisiert werden. Ausserdem sollte beim Auftreten von Fehlern - im wesentlichen Power Fail - erneut initialisiert werden. Initialisiert wird durch Schreiben von 0x02 ins SFR.
Referenz
Die Referenz auf dem MEGA340 kann über Port B6 ein- und ausgeschaltet werden. Die Referenz auszuschalten ist immer dann sinnvoll, wenn Strom gespart werden soll. Um die Referenz einzuschalten, müssen die Bits 6 im PBDR und PBDDR auf 1 gesetzt werden. Zum Ausschalten sind lediglich die beiden Bits auf 0 zu setzen. Nach dem Wiedereinschalten ist wieder zu initialisieren.
Einleiten einer Konversion
Die Konversion wird durch Schreiben der Kanalnummer (0... 3) auf das Low Register eingeleitet. Nach ca. 10us oder nachdem BUSY wieder inaktiv ist kann der gewandelte Wert aus den Datenregistern gelesen werden.
CAN Controller
Der optionale CAN-Controller SJA1000 (Full CAN nach CAN2.0B Standard) erlaubt die Kommunikation von Steuerrechnern untereinander und mit verteilten Messwertaufnehmern und Aktuatoren. Dabei ist die Vernetzung mit minimalem Verkabelungsaufwand und gleichzeitig hoher Störsicherheit möglich. Das Interface zum Netz stellt folgende Signale zur Verfügung:
Pin Name Name Pin 5
7
9VCC
CANRxD0
CANRxD1GND
CANTxD0
CANTxD16
8
10
VCC: +5V ±10% Stromversorgung für die Peripherieschaltung. GND: Referenz. CANRxXX: Diese Signale entsprechen den Transmit- und Receive-Signalen am CAN-Controller. Interrupts
Der Interruptausgang des CAN-Controllers ist auf ein Lötjumperfeld gelegt. Durch eine Lotbrücke kann der Interrupteingang und damit die Priorität selektiert werden. Die Priorität des CAN-Interrupts ist je nach Wahl von PB3 oder PB5 auf 3 oder 5 festgelegt.
Jumper # Pin Signal Funktion wenn gebrückt
J3
1
2
3PB3
CANIRQ*
PB5
CAN Interrupt auf PB3
CAN Interrupt auf PB5
Power und CPU Management
Pin Name Name Pin 11
13
15STDP*
NMI*
HALT*VACCU
VREF
PB0/RMC*12
14
16
VCC: +5V ±10% Stromversorgung für die Peripherieschaltung. GND: Referenz. STDP*: Open Collector Alarmausgang von der Real-Time-Clock. Mit diesem Signal kann ein externes Netzteil wiedereingeschaltet werden. VACCU: Mit der Notstromversorgung über einen 10kOhm Widerstand verbunden. NMI*: Non Maskable Interrupt. Kann bei geeigneter Programmierung mit einer negativen Flanke einen NMI auslösen. VREF: 2.5V oder 4.096V Analogreferenz. VREF kann als Referenzspannung für externe Verstärker verwendet werden. Alternativ kann über VREF - nach dem Entfernen der onboard Referenz - eine Referenzspannung mit 2.5V...4.75V von aussen eingespeist werden. HALT*: Direkt mit dem Halt* Pin der CPU verbunden. PB0: Port B - Bit 0. Timer
Die beiden universal Timer sind frei einsetzbar. Alle externen Signale sind auf die untere Steckerleiste gelegt. Der Ausgang des Timer 1 ist mit dem externen Takteingang des integrierten DUART verbunden. Wenn der DUART nicht auf den externen Takteingang programmiert wird, kann der Timer 1 ohne Einschränkung benutzt werden.
Pin Name Name Pin 33
35
37TIN1
TGATE1*
TOUT1*TIN2
TGATE2*
TOUT2*34
36
38
VCC: +5V ±10% Stromversorgung für die Peripherieschaltung. GND: Referenz. TINx: Timer x Input. TGATEx*: Timer x Gate Input. TOUTx*: Timer x Output. Wie die Timer programmiert werden ist im Datenbuch zum MC68340 detailliert beschrieben.
DMA
Die beiden Onboard DMA Kanäle sind voll verwendbar. Die Signale DMA Request (DREQx*), DMA Acknowledge (DACKx*) und Done (DONEx*) sind auf die untere Steckerleiste gelegt. Um Störungen zu verhindern, sind die DONEx* Leitungen über einen 10k Pullup-Widerstand gegen VCC auf inaktiv Potential gezogen.
Der 32Bit Mode des DMA Controllers kann bei geeignetem Design der Hardware verwendet werden, da beide DSACKx* Signale verfügbar sind.
Pin Name Name Pin 49
51
53DREQ1*
DACK1*
DONE1*DREQ2*
DACK2*
DONE2*50
52
54
VCC: +5V ±10% Stromversorgung für die Peripherieschaltung. GND: Referenz. DREQx*: DMA Request x. DACKx*: DMA Acknowledge x. DONEx*: DMA Done x. Serielle Schnittstellen
Die seriellen Schnittstellen 0 und 1 sind praktisch funktionsgleich. Die Programmierung erfolgt wie im Handbuch des MC68340 beschrieben. Die Frequenz des Taktoszillators beträgt 3.6864MHz - damit sind die im Datenbuch zum MC68340 angegebenen Baudrate-Tabellen voll anwendbar.
Die externe Taktfrequenz des DUARTs wird vom Timer 1 geliefert. Damit sind auch ungewöhnliche Baudraten oder die externe Einspeisung der Baudrate möglich. Wenn der externe Takteingang des DUART nicht selektiert wird, kann der Timer 1 ohne Einschränkung verwendet werden.
Die Modem Control Signale sind vollständig vorhanden. RTS* und DTR* werden direkt über die Modemcontrol Ausgänge des DUART gesteuert. RTS* funktioniert so wie im Datenbuch beschrieben. DTR* ist auf die Output Ports OP6 (Kanal 0) und OP4 (Kanal 1) gelegt. CTS* ist direkt mit den CTS* Pins des DUARTS verbunden. Alle anderen Modem Control Signale sind über einen Multiplexer lesbar. Dabei liegen die Modemcontrolsignale für den Kanal 0 immer auf der Datenleitung D0 und das entsprechende Signal für den Kanal 1 auf der Datenleitung D1. Die nachstehende Tabelle listet die Belegung des MODEMCTRL-Multiplexers auf:
Adresse Signal D1 D0 0x02000081
0x02000083
0x02000085
0x02000087DSR*
RI*
DCD*
RxD*DSR1*
RI1*
DCD1*
RxD1*DSR0*
RI0*
DCD0*
RxD0*Die MODEMCTRL-Ports können nur gelesen werden. Beim Schreiben würde das Adressregister des CAN-Controllers überschrieben werden, was meist nicht das gewünschte Ergebnis liefern wird.
Die Steckverbinder für die seriellen Schnittstellen sind in dem äusseren Steckverbinder J6 integriert. Beachten Sie bitte, dass die beiden integrierten 10pol. Blöcke für die seriellen Schnittstellen verdreht in den Peripherie-Steckverbinder eingefügt sind (durchaus mit Absicht).
Belegung der ersten seriellen Schnittstelle:
Pin Signal Signal Pin 56
58
60
62
64DCD0
RTS0*
TxD0
RI0
VCCGND
CTS0*
DTR0*
RxD0
DRS055
57
59
61
63Belegung der zweiten seriellen Schnittstelle:
Pin Signal Signal Pin 40
42
44
46
48DCD1
RTS1*
TxD1
RI1
VCCGND
CTS1*
DTR1*
RxD1
DSR139
41
43
45
47
VCC: +5V ±10% Stromversorgung für die Peripherieschaltung. GND: Referenz. DSRx: Data Set Ready. Auf dem Seriellen Kanal 0 ist DSR über einen Jumper auf RESET* legbar. Details befinden sich unter V.24 RESET. RIx: Ring Indikator Eingang vom Modem. RXDx: Receive Data Eingang. TXDx: Transmit Data Ausgang. DTRx*: Data Terminal Ready Ausgang. RTSx*: Request To Send Ausgang. CTSx*: Clear To Send Eingang. DCDx: Data Carrier Detect Eingang. Dieser Eingang ist interruptfähig. V.24 RESET
Das DSR* Signal auf dem seriellen Kanal 0 kann genutzt werden, um vom Hostrechner aus per Software eine RESET auszulösen. Dazu muss DSR* auf Low gepulst werden. Die Pulsbreite sollte minimal ca. 0.1 Sekunden betragen. Der V.24 Reset kann durch Stecken des Jumpers J5 aktiviert werden.
Der Terminal-Emulator 'TM.EXE' bietet die Möglichkeit über Kommandozeilenparameter oder interaktiv mit ALT-R einen Reset auszulösen.
![]()
4 Debugger Support
Auf dem MEGA340 steht ein Debugging Interface direkt in Hardware zur Verfügung. Dieses Interface umfasst folgende Grundfunktionen:
- Laden und ausführen von Programmen
- Abbrechen von Programmen mit Abfrage und Modifikation aller Register und des Speichers
- Start des Debuggers nach Exceptions
- Programmieren von onboard Flash-Memory
- Abfrage aller Pins am MC68340
Background-Debug_Stecker
Der 16pol. Debug Stecker enthält das von Motorola standardisierte 8pol. Background-Debug Interface, sowie einige zusätzliche Signale und den JTAG Port. Dieser Steckverbinder ist aufwärtskompatibel zum von Motorola vorgeschlagenen BDM Stecker mit nur 8 Pins.
Pin Name Name Pin 17
19
21
23
25
27
29
31
33TDO
TMS*
TCK
CPUCLK
IPPE*
IFETCH*
FREEZE
BKPT*VCC
TDI
GND
-
VCC
RESET*
GND
GND18
20
22
24
26
28
30
32
34
VCC: +5V ±10% Stromversorgung für die Debuggerschaltung. GND: Referenz. RESET*: Bidirektionaler Reset. CPUCLK: Interner CPU Takt zur Synchronisation der Debuggerschaltung. BKPT*: Breakpoint / DSCLK Eingang der CPU. FREEZE: Indikator, dass die CPU im Debug-Mode ist. IFETCH*: Instruction-Fetch Ausgang oder serieller Eingang des Debuggerports. IPPE*: Pipeline-Flush oder serieller Ausgang des Debuggerports. TCK: JTAG Port Clock Eingang. TMS: JTAG Port Mode Eingang. TDI: JTAG Port Daten Eingang. TDO: JTAG Port Daten Ausgang. Background Debugging
Die CPU des MEGA340 hat einen in Microcode realisierten Debugger mit auf dem Chip. Der Background-Debugging Monitor bietet Zugriff auf alle internen Register der CPU, sowie den gesamten Speicherbereich. Ausserdem können Programme gestartet und zu beliebigen Zeitpunkten abgebrochen werden. Weitere Information zum Background-Debugging Interface findet sich im Datenbuch zum MC68340.
Programmierung von Flash-Memories
Flash-Memories können direkt in der Schaltung mit Hilfe des Background-Debugging Interfaces programmiert werden. Die dazu nötigen Speicherzugriffe sind dieselben wie bei der Programmierung durch Software auf dem MEGA340. Da das FLASH nach dem Reset direkt ohne weiteres les- und schreibbar ist, sind keine weiteren Vorbereitungen nötig.
JTAG Port
Der Boundary Scan Port der CPU auf dem MEGA340 ist über den Debugging Stecker zugänglich. Dieser Port erlaubt das Auslesen der Pintreiber-Daten aller relevanter Pins am MC68340. Details befinden sich im Handbuch zum MC68340.
![]()
5 Bei Problemen
- Der Einplatinenrechner ist am Netzteil und PC angeschlossen, meldet sich aber nicht oder nicht korrekt.
Checken Sie: Stromversorgung auf dem Rechner (direkt z.B. am ROM messen). Bei weniger als 4,75V könnte bereits der Reset Generator ansprechen. Die korrekte Spannung beträgt 5.0V +/- 5%, wobei die Spannung nicht unbedingt an der Untergrenze sein sollte.
V.24 Kabel inklusive Handshakeleitungen.
Ist der Terminal-Emulator korrekt konfiguriert?
Kann die Software auf dem Einplatinenrechner überhaupt mit einem Terminal-Emulator kommunizieren?
- Die RTC liefert seltsame Werte
Die RTC muss wenigstens einmal korrekt gesetzt werden. Der Monitor bietet ein Kommando an.
- Interrupts vom TLX+ oder CAN-Controller kommen nicht bei der CPU an
Meist liegt es daran, dass die Interrupt-Selekt Jumper nicht korrekt eingestellt sind. Im Auslieferungszustand sind die Jumper ganz ohne Brücken. Damit werden TLXINT* und CANINT* auf keinen der Interrupteingänge der CPU geführt und können folglich auch keinen Interrupt auslösen.
- Der ADC liefert nicht die selben Werte wie ein älteres Board
Wir haben in der Vergangenheit einige Serien mit 4.096V Referenzen ausgeliefert. Dies ist zwar die bessere Referenzspannung - leider müssen wir uns auf eine Spannung festlegen. Wir haben uns für 2.5V entschieden weil dies insgesamt am unproblematischsten ist. Die 4.096V Referenz kann mit minimalem Aufwand nachgerüstet werden. Verwendet werden kann jeder zur LT1009 pinkompatible Typ mit einer Spannung von 2.5V...4.75V.
- Der NICO Monitor gibt nach dem Reset seltsame Zeichen aus und geht möglicherweise in eine Endlosschleife
Der Monitor kann per Software konfiguriert werden. Wenn die Konfiguration falsch ist kann der Monitor u.U. nicht mehr korrekt starten.
Schliessen Sie im ausgeschalteten Zustand des Rechners die Stromversorgung direkt an den RAMs zwischen Pin 16 und Pin 32 kurz. Danach nimmt der Monitor seine Defaultwerte wie unter Inbetriebnahme beschrieben.
![]()
6 Patches, Änderungen, Versionen und Bugs
Version 1.00
Die Platinen der Version 1.00 enthalten folgende, bekannte Fehler. Alle Fehler sind auf allen ausgelieferten Platinen gepatcht.
Hinweis: Die folgende Tabelle dient lediglich Ihrer Information! Es ist nicht erforderlich oder sinnvoll diese Patches auszuführen, da dies bereits geschehen ist!
- Das READ-Signal an den beiden HCT245-Treibern muss invertiert werden. READ* steht zur Verfügung.
- Am 3.68MHz-Oszillator des MC68340 muss ein 10MOhm-Widerstand über den Quarz gelegt werden, um das Anschwingen zu ermöglichen.
- Am HCT138 muss CSPER* von Pin 4 abgetrennt werden. Pin 4 wird mit DS* verbunden. Dieser Patch ist nur notwendig, wenn der A/D-Wandler ADC7803 verwendet werden soll.
Version 1.10
Die Version 1.10 korrigiert alle Fehler der Version 1.00. Ausserdem wurden folgende, weitestgehend kompatible Erweiterungen eingebaut:
- Zwei LEDs erlauben die direkte Anzeige des HALT Zustands und eines applikationsspezifischen per Software einstellbaren Zustands.
- Die Reset Schaltung wurde modifiziert. Wir hatten hier zwar keine Rückmeldungen von Kunden - waren aber trotzdem der Meinung, dass eine Minimaldauer des Resetpulses die Zuverlässigkeit des Systems verbessert. Ein Reset dauert jetzt ca. 10ms unabhängig von der Anstiegszeit der VCC Versorgung.
- Das RMC Signal kann per Lötjumper auf PB0 gelegt werden. Das kombinierte Signal liegt auf den externen Steckverbindern. Als Nebeneffekt wird RMC dann auch auf der SoftLED angezeigt und die SoftLED Funktion ist nicht mehr direkt verwendbar. RMC wird nur in sehr ungewöhnlichen, meist Multiprozessorapplikationen gebraucht.
- Die Möglichkeit ein 27512 ROM zu verwenden entfällt. Die Kosten für 27010 ROMs sind nur minimal höher. Das lästige Splitting von 29F040 FLASHs in zwei Blocks entfällt. Da die Platine schon recht eng bestückt war und durch die Modifikationen alles noch enger wurde fiel uns diese Entscheidung leicht.
- Der frequenzbestimmende Widerstand am ADS7803 wurde von 100kOhm auf 20kOhm verkleinert. Die Wandelzeit beträgt damit nur noch 9µs.
- Hohe Bauteile (RTC und ADC) neben den Steckverbindern wurden weiter ins Innere verlegt um mehr Raum für Stecker zu schaffen.
- Die Bestückung ist weitestgehend auf SMT umgestellt.
![]()
7 Applikationstips
Autostart von Applikationsprogrammen
Der NICO Monitor erlaubt den automatischen Start von Programmen und generell das Ausführen von Kommandos direkt nach einem Reset. Der prinzipielle Mechanismus ähnelt den Start Skripts von MS-DOS (AUTOEXEC.BAT) und UNIX (/etc/rc). Einige Beispiele:
env autoexec h
Nach jedem Reset wird der Help Text des Monitors ausgegeben.
env autoexec 0x2020"
Nach dem Reset wird das Programm auf der Adresse 0x2020 gestartet.
Um eine einmal gesetzte autoexec Variable zu löschen, muss entweder das RAM gelöscht werden (ausschalten oder bei Batteriepufferung das RAM von GND nach VCC für ca. 1 Sekunde kurzschliessen) oder es muss ein env autoexec Kommando gegeben werden.
Startup Select
Soll der Monitor durch manuellen Eingriff auf verschiedene Arten gestartet werden, sind die autoexec1..9 Variablen nützlich. Nach jeden Reset wartet Nico für ca. eine halbe Sekunde auf einen erneuten Reset. Durch mehrfaches Resetten kann ein interner Zähler inkrementiert werden. Nachdem der Monitor schliesslich durch die Startphase gelaufen ist wird die Anzahl der gegebenen Reset Pulse ausgewertet und die autoexec Variable mit der angehängen Anzahl der Pulse ausgeführt. Ein Beispiel:
env autoexec1 "sp hello walter"
env autoexec2 hWenn nur ein Resetpuls kommt, wird autoexec1 ausgeführt - es wird also nach einem einzelnen Reset oder nach dem Einschaltendas Programm auf 0x2000 mit den Argumenten hello und walter ausgeführt. Wird nach dem Reset der Reset Taster ein zweites mal gedrückt, benutzt der Monitor die Variable autoexec2 und bei noch mehr Resets eben sinngemäss
Die autoexec Variable wird, falls gesetzt, vor der autoexec1..9 Variablen ausgeführt.
![]()
Anhang A NICO-Monitor (ist im SCOTTY08-Handbuch beschrieben)
Anhang B FLASH-Entwicklungspaket (ist im SCOTTY08-Handbuch beschrieben)
www.mct.de: Produkte: Einplatinencomputer: MEGA340