


![]() |
ZWERG11A - Handbuch |
- Anhang A Entwicklungspaket 11 (auch für ZWERG11plus und IC11B)
Autor: Erhard 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 Allgemeines
Der ZWERG11A bildet eine Familie von Einplatinencomputern, die etwas aus dem Rahmen fällt. Die Grösse von ca. 51mm x 54mm erinnert mehr an ein etwas zu gross geratenes IC, als an einen herkömmlichen Platinenaufbau. Die technischen Merkmale dieses Einplatinencomputers können sich aber dennoch sehen lassen, zu verdanken ist dies in erster Linie dem Microcontroller MC68HC11, der von Hause aus schon eine Menge Hardwarefunktionen auf dem Chip hat. Die nachfolgende Tabelle zeigt was der ZWERG11A in den verschiedenen Varianten so zu bieten hat.
- 8Bit CPU mit 500ns Buszugriffszeit
- Timersystem mit acht 16Bit-Registern
- 256 Byte internes RAM
- 512 oder 2048 Byte internes EEPROM (als Programm- oder Parameterspeicher)
- serielles Kommunikations Interface (SCI) mit externen Treibermoduln für RS232, RS422, RS485, 20mA Schleife, Lichtleiter, ...
- serielles Peripherie Interface (SPI) für Systemerweiterung
- ca. 40 parallele Ein-/Ausgänge
- leistungsfähige Interruptstruktur mit ca. 20 Interruptvektoren
- 8-kanaliger A/D-Wandler mit 8Bit Auflösung und 16us Wandlungszeit
- Real Time Clock mit seriellem Anschluss (SPI) RTC4553
- Batterie für RTC
- Direktanschluss von alphanumerischen und grafischen LCDs
- Reset-Controller mit Spannungsüberwachung für einen sicheren Betrieb des Boards
![]()
1.1 Versionen
Der ZWERG11A wird in zwei verschiedenen Versionen angeboten. Die Versionen ZWERG11A und ZWERG11A/E2 sind in der gleichen Bauform mit unterschiedlichen CPU-Typen bestückt. Die Standardversion enthält einen MC68HC11A1 mit 512 Byte EEPROM. Die E2 Variante bietet durch den MC68HC811E2 einen grösseren EEPROM Block mit 2048 Byte.
![]()
1.2 Anwendungen, für die ZWERG11A geeignet ist
Mit dem ZWERG11A können Aufgaben gelöst werden, für die bisher aus Platz- und Kostengründen nur TTL-Schaltungen in Frage kamen. Man ereicht zwar nicht dieselben Antwort- und Verzögerungszeiten wie bei TTL-Lösungen, gewinnt aber erheblich an Flexibilität und Sicherheit. Die "Schaltung" kann jederzeit durch Änderung der Software an neue Anforderungen angepasst werden.
Eine weiteres Anwendungsfeld sind intelligente Sensoren. Der ZWERG11A kann mit seinem A/D-Wandler bis zu acht Messwerte erfassen, gegebenenfalls auch vorverarbeiten, auf Grenzwerte sofort selbstständig reagieren und diese Werte speichern bzw. auf Abfrage über die serielle Schnittstelle senden. Durch den direkten Anschluss von LCDs können auch Messgeräte mit intelligenter Messwertaufbereitung und komfortabler Messwertanzeige aufgebaut werden.
Da der Programmspeicher auf 512 Byte in der Standardversion beschränkt ist, kann der ZWERG11A sinnvollerweise nur in Assembler programmiert werden. Auf Wunsch kann der Programmspeicher auf 2048 Byte (EEPROM) durch den Einsatz des MC68HC811E2 erweitert werden. Wenn der Speicherbedarf noch grösser ist, lässt sich auch der Prozessor MC68HC711E9 auf das Board auflöten, man hat dann 12KB EPROM bzw. OTP-ROM zu Verfügung. Die Programmierung kann "on board" erfolgen. In der Regel reichen die 512 Byte aber für die Anwendungen, für die der ZWERG11A konzipiert ist.
![]()
1.3 Lieferumfang des Entwicklungspakets
- Platine ZWERG11A (A1 bzw. E2-Typ)
- Steckverbinder für Stromversorgung
- IF232LP-Modul
- Flachband-Kabel für IF-Modul
- RS232-Kabel für PC
- Entwicklungssoftware AS11, Beispiele und Downloadprogramm
- Der ZWERG11A wird ohne das Potentiometer R3, dass zur Einstellung der Kontrastspannung einer LC-Anzeige dient, geliefert, da je nach angeschlossener Anzeige dieser Widerstand einen anderen Wert haben muss.
![]()
1.4 Inbetriebnahme
Im folgenden wird die Inbetriebnahme eines ZWERG11A an einem PC beschrieben.
Als erstes sollte der ZWERG11A mit dem Netzteil und dem PC verbunden werden. Das Bild unten zeigt wie. Das Netzteil muss eine geregelte Gleichspannung von 5 Volt mit einer Toleranz von ±5% liefern. Um das Schadensrisiko durch versehentliche Kurzschlüsse zu minimieren, sollte eine eventuell vorhandene Strombegrenzung auf ca. 100mA eingestellt werden. Der Stecker J2 wird zum Anschluss der Stromversorgung benutzt. Dabei wird +5 Volt an Pin1 angelegt und GND an Pin2. Um die Stromversorgung verpolungssicher zu gestalten, wurde ein 4pol. Steckverbinder gewählt wie er bei 3.5" Floppylaufwerken üblich ist (im Lieferumfang des Entwicklungspakets enthalten). Die Verbindung zum PC wird über das mitgelieferte RS232-Kabel hergestellt. Die folgende Beschreibung geht davon aus, dass Sie die serielle Schnittstelle COM1 für die Verbindung PC-ZWERG11A gewählt haben.
![]()
Nachdem die Verkabelung abgeschlossen ist, schalten Sie als erstes den PC ein. Auf der mitgelieferten Diskette befindet sich Entwicklungs-Software, die als erstes installiert werden muss. Eine Anleitung finden Sie in dem File 'readme' auf der Diskette. Nach erfolgreicher Installation befindet sich auf Ihrer Harddisk ein Terminalprogramm, das auf das Arbeiten mit Einplatinencomputern abgestimmt ist (TM.EXE). Nach dem Aufruf dieses Programms mit der Eingabezeile TM können Sie den ZWERG11A einschalten. Auf dem Bildschirm muss nun die Meldung MINI11: erscheinen. Mit Hilfe dieses minimalen Monitors können Sie erste Gehversuche mit dem ZWERG11A machen. Die Quelle (Assembler) des Minimonitors ist auf der zu diesem Handbuch gehörenden Diskette enthalten.
Das Programm TM stellt, wenn es ohne Parameter aufgerufen wird COM1 auf 9600Baud, no Parity, 8 Datenbits und ein Stopbit ein 1. Andere Werte z.B. COM2 sind möglich. Die Beschreibung der Parameter können Sie sich von der "online" Hilfe des Programms TM erklären lassen (Aufruf 'TM -?').
Eigene Programme können mit Hilfe eines Standard Editors erstellt, mit Hilfe des Cross Assemblers AS11 übersetzt und dann in das EEPROM des ZWERG11A übertragen werden.
Unter ZWERG11A Programmierung wird der Bootstrap-Vorgang ausführlich beschrieben.
In dem File 'readme' wird die Benutzung der mitgelieferten Software-Tools beschrieben. Ausserdem finden sich hier aktuelle Informationen zum ZWERG11A-Entwicklungspaket.
![]()
1.5 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. E) im aktiven Zustand bei High-Pegel und inaktiv bei Low-Pegel. Lowaktive Signale (z.B. RESET*) sind im Low-Pegel aktiv und bei High-Pegel inaktiv. Signale, die mit einem angehängten '*' markiert werden, sind lowaktiv. Für Signale in GAL-Gleichungen gilt eine andere Konvention, hier wird lowaktiv durch ein vorangestelltes '/' markiert. RESET* und /RESET haben die gleiche Bedeutung.
![]()
1.6 Numerische Angaben
Alle Zahlenwerte werden dezimal angegeben. Hexadezimale Werte werden mit einem vorangestellten 0x markiert 2. Der Wert 65535 entspricht also dem Wert 0x0000FFFF.
![]()
2 Baugruppen
2.1 Speicheraufteilung
Die Adressmap beim ZWERG11A enthält nur die internen Baugruppen des MC68HC11A1 bzw. MC68HC811E2. Ein Ummappen der internen Baugruppen ist zwar möglich, sollte aber vermieden werden, da es sonst zu Problemen mit dem Cross-Assembler kommen kann. Der EEPROM-Block liegt je nach Prozessorversion auf unterschiedlichen Basisadressen. Die mitgelieferte Entwicklungssoftware nimmt auf diesen Umstand bereits Rücksicht.
Start Ende Funktion 0x0000
0x1000
0xB600
0xF000
0xF8000x00FF
0x103F
0xB7FF
0xF0FF
0xFFFFInterner RAM Block
Peripherie Block
Internes EEPROM beim MC68HC11A1
Reserviert für Entwicklungssoftware
Der Monitor mappt hier das interne
RAM hin.
Internes EEPROM beim MC68HC811E2![]()
2.2 EEPROM
Die Speicherung der für den ZWERG11A erstellten Programme erfolgt im internen EEPROM des MC68HC11. Dies ermöglicht eine leichte Programmierung ohne den Zwang, ein Programmiergerät zur Verfügung haben zu müssen. Da die Neuprogrammierung über die serielle Schnittstelle erfolgt, ist ein Ausbau des Boards in der Regel nicht erforderlich. Zum Download der Programme wird die serielle Schnittstelle benötigt, deshalb muss der Jumper J3 frei zugänglich sein. Mit seiner Hilfe wird beim ZWERG11A die serielle Schnittstelle freigeschaltet. Zur Programmierung genügt ein PC, dies kann natürlich auch ein Notebook PC für den mobilen Einsatz sein.
Ein Anwenderprogramm das im EEPROM läuft darf niemals auf das EEPROM ohne Weiteres schreiben, da nach dem Write das EEPROM für die Writezykluszeit (ca. 3... 10ms) blockiert ist und in dieser Zeit nicht mehr normal ausgelesen werden kann. Um das EEPROM dennoch im Betrieb programmieren zu können, muss eine Routine ins RAM kopiert werden, die das EEPROM programmiert und anschliessend die Writezykluszeit abwartet und erst dann zurück ins EEPROM springt (siehe dazu auch das Beispielprogramm eeprom.a).
![]()
2.3 RTC
Die RTC4553 ist über 16 Register mit einer Breite von 4Bit ansprechbar. Das Interface zur RTC ist über das SPI des MC68HC11 realisiert. Write Enable und Chip Select sind über Portleitungen einstellbar. Zusätzlich verfügt die RTC über zwei Speicherbänke mit der Grösse von 15 x 4Bit.
Port Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PA CS* PB WR* Die Details der Programmierung des SPI sind im Datenblatt zum MC68HC11 beschrieben. Ein Beispiel zur Programmierung der RTC ist im Lieferumfang des E11 Entwicklungspakets enthalten.
Die folgende Tabelle zeigt Adressen, Namen und Funktionen der einzelnen RTC-Register:
Adresse Name D3 D2 D1 D0 Funktion 0x0
0x1
0x2
0x3
0x4
0x5
0x6
0x7
0x8
0x9
0xA
0xB
0xC
0xD
0xE
0xFS1
S10
Mi1
Mi10
H1
H10
W
D1
D10
Mo1
Mo10
Y1
Y10
CtlD
CtlE
CtlFS08
0
m08
0
H08
PAM
0
D08
0
M08
0
Y08
Y80
TPS
BSY
SYSS04
S40
m04
m40
H04
0
W4
D04
0
M04
0
Y04
Y40
ADJ
PON
0S02
S20
m02
m20
H02
H20
W2
D02
D20
M02
0
Y02
Y20
CNT
0
MS1S01
S10
m01
m10
H01
H10
W1
D01
D10
M01
M10
Y01
Y10
E/U
0
MS0Sekunde Einer
Sekunde Zehner
Minute Einer
Minute Zehner
Stunde Einer
Stunde Zehner
Wochentag
Tag Einer
Tag Zehner
Monat Einer
Monat Zehner
Jahr Einer
Jahr Zehner
Control Reg. D
Control Reg. E
Control Reg. FDie Bits in den Kontrollregistern haben im einzelnen folgende Bedeutung:
0: Eine "0" bedeutet, dass beim Lesen immer eine Null erscheint. Beim Schreiben soll dort immer eine Null hin. Sekunde - Jahr: BCD Code. PAM: Zeigt PM (0) oder AM (1) an. Nur im 12-Stunden-Mode. ( 00:00 bis 11:59 = AM; 12:00 bis 23:59 = PM ) Wochentag: Der Wochentag wird wie folgt kodiert:
Data 0 1 2 3 4 5 6 Wochentag So Mo Di Mi Do Fr Sa TPS: Mit diesem Bit wird die Frequenz eingestellt die auf den Pin TPout* ausgegeben werden kann.
TPS bit Frequenz 0
11024 Hz
1/10 HzADJ: 30 Sekunden Adjust(1). 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. CNT: Zähler-Reset MS[0 . . 1 ]: Mit diesem zwei Bit breiten Feld kann einer von drei Modes selektiert werden:
M1 M0 Mode 0
0
1
10
1
0
1Zähler- (Sekunde - Jahr) & Kontrollregister
Zähler- (Sekunde - Jahr) & Kontrollregister
RAM Block 1 & Kontrollregister 3
RAM Block 2 & Kontrollregister 3BSY: Dieses Bit wird beim Lesen und Schreiben benötigt und zeigt an ob ein Übertrag ansteht. D.h. dass z.B. die Sekunden gerade genullt haben und die Minuten dadurch erhöht wurden. Die gelesene Zeit wäre dann falsch.
BYS Bit Mode Funktion 0
1Kein Übertrag
ÜbertragLesen, Schreiben erlaubt
Lesen, Schreiben verbotenPON: Dieses Bit ist 1, wenn die RTC noch nicht initialisiert wurde. E/U: Setzt Europäischen 24 Stunden- (1) oder US AM/PM-Mode (0). SYS: Dieses Bit auf 1 setzt die RTC in einen definierten Anfangszustand: 12:00:00 Uhr und 01.01.00 (Sonntag); AM/PM-Mode 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 0![]()
2.4 TLX+ Steckverbinder ST1
Das TLX+ Interface erlaubt den Anschluss von Grafik-LCDs und generell die Erweiterung des ZWERG11A mit Intel-Bus-Kompatiblen Peripheriebausteinen. Da der gesamte Bus per Software gesteuert wird, ergibt sich ein extrem unkritisches Timing.
Der TLX+ Steckverbinder ist ein 26pol. zweireihiger Pfostenstecker. In der folgenden Tabelle ist die Zuordnung der Pins zu den Ports des MC68HC11 und deren verwendeter Name aufgeführt.
Pin Signal MC68HC11 MC68HC11 Signal Pin 1
3
5
7
9
11
13
15
17
19GND
VCC
WE*
CS0*
A1
D0
D2
D4
D6
-
PB4
PB6
PB1
PC0
PC2
PC4
PC6
PB5
PB0
PC1
PC3
PC5
PC7
PB2GND
VEE
RD*
A0
RESET*
D1
D3
D5
D7
A22
4
6
8
10
12
14
16
18
2021
23
25A3
CS2*
TLXINT*PB3
STRB
IRQ*PB7
STRA
CS1*
CS3*
GND22
24
26Beim Anschluss von Grafik-LCDs werden nur die ersten 20 Pins nötig. Einige Grafik-LCDs verwenden auch die Pins 21 und 22, die dann nicht mit dem TLX+ verbunden werden dürfen.
VCC: +5V ±5% Stromversorgung für die Peripherieschaltung. GND: Referenz. VEE: Kontrastspannung für LCDs. Auf dem ZWERG11A ist zur Einstellung das Potentiometer R3 vorgesehen. 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. WE*: Write-Enable, Strobe für einen Schreibzugriff (aktiv low). Daten-, Adress- und Chip-Enable Leitungen sind stabil wenn WE* aktiv ist. 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 der IRQ* Pin des MC68HC11 benutzt. D0... D7: Die Datenleitungen. A0... A3: Die Adressleitungen. CS0*... CS3*: Chip-Enable Signale, hierüber lassen sich verschiedene Baugruppen selektieren. ![]()
2.5 Stecker für alphanumerische Displays ST6
Auf dem Stecker für alphanumerische Displays lässt sich eine LC-Anzeige oder ein Peripheriebaustein mit Motorola 68xx konformem Businterface anschliessen. Die grafik LCD- und Alpha-LCD-Interfaces lassen sich parallel verwenden, wobei CS1* generell als Chip-Select für die alphanumerische Anzeige reserviert ist.
Folgende Tabelle zeigt die Zuordnung der Pins, der Namen und der Ports des MC68HC11:
Pin Signal MC68HC11 1
2
3
4
5
6
7
8
9
10
11
12
13
14GND
VCC
VO
RS
R/W*
E
D0
D1
D2
D3
D4
D5
D6
D7
PB0
PB4
PB7
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
GND: Referenz. VCC: +5V ±5% Stromversorgung für die Peripherieschaltung. VO: Kontrastspannung für LCDs. Auf dem ZWERG11A ist zur Einstellung das Potentiometer R3 vorgesehen. RS: Mit RS sind 2 Register selektierbar. Die Funktion entspricht einer Adressleitung. R/W*: Read/Write-Enable. Mit R/W* wird der Peripherie die Datenrichtung signalisiert. High zeigt eine Lesezugriff an (Daten gehen in Richtung der MC68HC11). Low zeigt einen Schreibzugriff an. E: Enable. Dieses Signal hat dieselbe Funktion wie ein high-aktiver Chip-Select. D0... D7: Die Datenleitungen. ![]()
2.6 Erweiterungsstecker ST3
Pinbelegung von ST3:
Pin Signal Pin Signal 1
3
5
7
9
11
13
15
17
19
21
23
25VRH
GND / VRL
E
GND
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
GND2
4
6
8
10
12
14
16
18
20
22
24
26PE0
PE1
PE2
PE3
PE4
PE5
PE6
PE7
PD2
PD3
PD4
PD5
VCC
VCC: +5V ±5% Stromversorgung für die Peripherieschaltung GND/VRL: Negative Referenzspannung = Ground VRH: Positive Referenzspannung für den ADC. Hardwaremässig auf 5V eingestellt. GND: Referenz. E: E Takt des Prozessors. Beachten Sie bitte, dass der Pin 6 von der Steckerleiste ST6 mit der gleichen Bezeichnung "E" nichts mit diesem Signal zu tun hat. PE[0 . . 7 ]: Port E. ADC oder TTL-Input PA[0 . . 7 ]: Port A. Timersystem oder TTL-I/O PD[2 . . 5 ]: Port D. SPI oder TTL-I/O ![]()
2.7 SCI - Serial Communications Interface ST2
Das SCI des MC68HC11 ist auf einen 10pol. zweireihigen Pfostenstecker gelegt. Über diesen Stecker können standardisierte Treiber Module für verschiedene Protokoll-Standards wie z.B. RS232, RS422, RS485, 20mA Schleife, Lichtleiter, ... angeschlossen werden.
Pin Signal Pin Signal 1
3
5
7
9VCC
RI*
TxD
RTS*
DCD*2
4
6
8
10DSR*
RxD
DTR*
CTS*
GND
VCC: +5V ±5% Stromversorgung für die Peripherieschaltung GND: Referenz DSR*: Data Set Ready Eingang. Auf dieser Leitung teilen Modems ihre generelle Bereitschaft an. Dieses Signal ist auf dem ZWERG11A nicht benutzt. RI*: Ring Indikator Eingang. Dieses Signal ist nicht benutzt. RxD: Receive Data Eingang. TxD: Transmit Data Ausgang. DTR*: Data Terminal Ready Ausgang. DTR* kann von PA3 gesteuert werden. Meist wird DTR* zur Steuerung von Treibermodulen - z.B. zum Abschalten von RS485 Treibern - verwendet. RTS*: Request To Send Ausgang. RTS* ist fest auf aktiv Potential gelegt. CTS*: Clear To Send Eingang. CTS* ist nicht benutzt. DCD*: Data Carrier Detect Eingang. DCD* ist auf dem ZWERG11A nicht benutzt. ![]()
2.8 Stromversorgung
Der ZWERG11A wird über einen 4pol. Floppysteckverbinder mit Spannung versorgt. Die Belegung dieses Steckers entspricht im wesentlichen einem normalen 3.5" Floppylaufwerk. Nach Entfernen der Kabel an Pin 3 und 4 kann z.B. die Floppy Versorgung eines normalen PC-Netzteils verwendet werden.
Die Stromaufnahme liegt auch bei angeschlossenem IF232LP-Modul unter 50mA, so dass kein besonderer Aufwand nötig ist. Wenn VCC unter 4.6V fällt wird durch einen Spannungskomparator ein Reset ausgelöst.
Pin Name 1
2
3
4VCC
GND
PWRFAIL*
PWROFF
VCC: +5V ±5% Stromversorgung GND: Referenz PWRFAIL*: Dieser Eingang ist direkt mit dem XIRQ* Pin des MC68HC11 verbunden. Negative Flanken an PWRFAIL* lösen einen NMI aus. Ein Pullup-Widerstand hält den Eingang auf High solange kein externer Treiber Low liefert. PWROFF: Reserviert für Erweiterungen. Notstromversorgung (Optional)
Die Notstromversorgung der RTC ist mit einer Lithiumzelle mit 3V realisiert. Die Lebensdauer der Zelle beträgt ca. 6 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.
RESET
Der RESET wird onboard mit einem Spannungskomparator generiert. Die minimale Versorgungsspannung für das Auslösen des Resets beträgt 4.5... 4.7V. Um eine korrekte Start- und Stopsequenz für den Datenerhalt in RTC und EEPROM zu garantieren, muss eine minimale Anstiegs- und Abfallzeit an VCC von 10ms eingehalten werden. Diese Zeit wird von praktisch allen üblichen Netzteilen ohne Zusatzmassnahmen garantiert. Bei Verwendung von Schaltern im Stromversorgungszweig (z.B. Zeitschaltrelais) sollte in Problemfällen ein 500uF Kondensator direkt am ZWERG11A zwischen GND und VCC geschaltet werden. Ausserdem ist es in diesen Fällen besser, eine knapp dimensionierte Stromversorgung zu verwenden (ca. 250mA Maximalstrom), um den Ladestrom des Kondensators zu begrenzen.
![]()
3 ZWERG11A Programmierung
Der ZWERG11A verfügt im stand-alone Betrieb über keinerlei externe Speicher (RAM, EPROM). Programme können nur im RAM (256 Byte) oder EEPROM (512 Byte, 2KB bei MC68HC811E2) des Prozessors ablaufen, man muss also mit Speicherplatz sparsam umgehen.
Mit den Jumpern J3 ,J4 und J5 wird die Betriebsart des ZWERG11A beim RESET festgelegt. Von den 8 Möglichkeiten sind nur 3 sinnvoll.
![]()
3.1 ROM-Mode
MODA auf J4 GND, MODB auf J5 VCC, J3 gesteckt.
Wenn J5 (MOD-B) VCC ist, startet RESET das Programm im internen ROM des MC68HC11. Bei einigen MC68HC11 Typen ist hier ein Monitor (BUFFALO) von Motorola maskenprogrammiert. Das ist ganz nützlich, weil man sich auf diese Weise die Hardware ohne grossen Aufwand "ansehen" kann.
Normalerweise ist aber diese Betriebsart uninteressant, J5 sollte daher immer GND sein. In diesem Fall wird mit RESET eine spezielle, MC68HC11-interne Bootstrap Firmware gestartet, deren Verhalten sich nach J3 richtet.
![]()
3.2 EEPROM-Mode
MODA auf J4 GND, MODB auf J5 GND, J3 offen.
Bei offenem J3 springt die Firmware unmittelbar zum Anfang des EEPROM, d.h. ein dort gespeichertes Programm wird sofort nach dem RESET ausgeführt (der ZWERG11A wird serienmässig mit einem Minimal-Monitor im EEPROM geliefert, um die erste Inbetriebnahme des Boards zu erleichtern).
Damit der ZWERG11A selbständig eine Aufgabe erledigen kann - also ohne PC-"Nabelschnur" - muss er im EEPROM-Mode betrieben werden. Wenn erst einmal ein Programm im EEPROM des MC68HC11 gespeichert ist, wird dieses im EEPROM-Mode immer - per RESET - zur Ausführung gebracht.
![]()
3.3 RAM-Mode
MODA auf J4 GND, MODB auf J5 GND, J3 gesteckt.
Ist J3 gesteckt, wartet die Firmware auf ein Zeichen von der seriellen Schnittstelle. Dabei gibt es mehrere Möglichkeiten (s. MC68HC11 Ref. Manual) von denen hier nur eine interessiert: Vom PC werden - via V.24 - ein FFh und danach (genau!) 256 Byte zum ZWERG11A geschickt (1200 oder 7812Baud, 8 databits, no Parity, 1 stopbit). Alle Zeichen bis auf das initiale FFh werden vom ZWERG11A "ge-echot". Die Firmware legt die nach dem FFh gesendeten 256 Byte im RAM des MC68HC11 ab und springt nach Empfang des 256. Zeichens zum RAM Anfang (Adresse 0000h). Mit diesem Feature des MC68HC11 können also (kleine) Programme down "geloaded" und im RAM ausgeführt werden.
![]()
3.4 Programmierung des EEPROMs
Der Bootvorgang bei Rechnern, die das Betriebssystem nicht in einem Festwertspeicher haben läuft ähnlich ab: Es gibt einen sog. "Urlader", ein kurzes Programm in einem kleinen Festwertspeicher, das beim Einschalten gestartet wird und dann den eigentlichen "Lader" ins RAM einliest. Erst dieser Lader, der im RAM abläuft, ist dann in der Lage, die komplizierteren Funktionen auszuführen, die notwendig sind, das Betriebssystem von der Platte ins RAM zu laden.
Das im MC68HC11 als Firmware vorhandene Bootstrap-Programm (daher der Name) entspricht dem Urlader. Es ist möglichst einfach, beansprucht wenig Platz in der Memory-Map des MC68HC11 und kann nur Programme im RAM ablegen und anschliessend ausführen. Da die Firmware selbst nicht in der Lage ist das EEPROM zu programmieren, lässt man stattdessen ein dafür geeignetes Programm von ihr ins RAM lesen und anschliessend ausführen. Dieses Programm entspricht obigem Lader, welches die von der seriellen Schnittstelle empfangenen Zeichen in das EEPROM schreibt.
Bei der Bewältigung dieser Aufgaben hilft die mitgelieferte Software:
EEPROG.BAT: zum Programmieren des MC68HC11 EEPROM (läuft auf dem PC) EEPROG.BIN: muss zuerst geladen werden (läuft im RAM des MC68HC11, der Lader) ![]()
3.5 EEPROG.BAT
Aufruf:
eeprog file
Damit wird 'file' im EEPROM dauerhaft gespeichert. Die default Schnittstelle ist COM1.
![]()
3.6 EEPROG.BIN
Im RAM des MC68HC11 ab Adresse 0 ausführbares Programm, das seriell empfangene Zeichen im EEPROM nichtflüchtig ablegt. Nachdem EEPROG.BIN übertragen und gestartet ist, verhält es sich nach aussen genauso wie das Bootstrap Programm. Es empfängt Zeichen vom seriellen Eingang, die aber statt im RAM, im EEPROM abgelegt werden. Das tatsächlich im EEPROM gespeicherte Zeichen wird zurückgesendet, so dass man eine eventuell fehlerhafte Programmierung sowie die Bereichsüberschreitung des EEPROM erkennen kann.
Anwendungsprogramme, die im EEPROM gespeichert werden sollen, müssen für die Anfangsadresse des EEPROM übersetzt sein.
![]()
3.7 Besonderheiten
Bei der Entwicklung von Programmen, die im EEPROM laufen sollen, müssen ein paar Dinge beachtet werden.
Wenn J3 offen ist, ist der Ausgang der seriellen Schnittstelle des MC68HC11 mit dem Eingang logisch verbunden, d.h. alle Zeichen, die der MC68HC11 ausgibt werden auch auf den Eingang gegeben (s. Schaltbild, 74HCT00 und J3). Das hat folgenden Grund:
Wie bereits beschrieben, wartet die Bootstrap Firmware nach dem RESET in MODE 3 auf ein FFh, was den download Vorgang einleitet. Wird stattdessen ein "break" Zeichen geschickt, erfolgt kein Download, sondern ein Sprung zum Anfang des EEPROM. Die Bootstrap Firmware sendet selbst als erstes nach dem RESET ein "break" Zeichen; ist der serielle Ausgang mit dem Eingang verbunden, kann der ZWERG11A quasi autonom das Startsignal für den EEPROM-Betrieb erzeugen.
Dieser "Kurzschluss" verhindert natürlich die einwandfreie Funktion der seriellen Schnittstelle in beide Richtungen. Man kann ihn durch Stecken von J3 aufheben, aber dann kann das Programm im EEPROM nicht mehr automatisch mit RESET gestartet werden. Deshalb wurde die Möglichkeit vorgesehen, diese Verbindung - bei nicht gestecktem J3 - per Software zu steuern. Bit 5 von Port D übernimmt diese Funktion:
PD5 Funktion High
LowEin- und Ausgang verbunden
keine VerbindungProgramme die von der seriellen Schnittstelle Gebrauch machen, müssen dieses Bit - wie auch die Schnittstellen Parameter (Baudrate etc.) - entsprechend setzen.
Zu beachten ist ausserdem, dass bestimmte MC68HC11-interne Register beim RESET in den genannten Modi besondere Zustände einnehmen (z.B. DWOM gesetzt in SPCR). Hier sollte man sich unbedingt im MC68HC11 Ref. Manual von Motorola schlau machen, bevor man unnötig viel Zeit mit der Fehlersuche vertut.
![]()
4 Bei Problemen
- Der Einplatinenrechner ist am Netzteil und PC angeschlossen, meldet sich aber nicht oder nicht korrekt.
Checken Sie:
- Die Stromversorgung auf dem Rechner (direkt z.B. an einem der ICs auf der Platine messen). Bei weniger als 4,75V könnte bereits der Resetgenerator ansprechen. Die korrekte Spannung beträgt +5V ±5%, wobei die Spannung nicht unbedingt an der Untergrenze sein sollte.
- Das V.24-Kabel inklusive Handshakeleitungen.
- Ist der Terminalemulator korrekt konfiguriert?
- Kann die Software auf dem Einplatinenrechner überhaupt mit einem Terminalemulator kommunizieren?
- Die RTC liefert seltsame Werte
Die RTC muss wenigstens einmal korrekt gesetzt werden. Das Entwicklungspaket enthält ein Beispielprogramm, das die RTC von der Uhrzeit des PC aus lädt.
- Beim Versuch das EEPROM von der Applikation aus zu programmieren stürzt der ZWERG11A sofort ab
Möglicherweise läuft die Programmierroutine selbst im EEPROM. Im Kapitel EEPROM steht wie's richtig geht.
- Der Port Pin PA3 ist defekt
Beim MC68HC11A1 und MC68HC11A8 ist der PA3 ein dedizierter Ausgang. Das korrespondierende Bit im PACTL ist funktionslos.
Beim MC68HC11E2 kann PA3 in der Datenrichtung umgeschaltet werden. Das DDRA3 Bit im PACTL auf der Adresse 0x1026 muss gesetzt werden, wenn PA3 als Ausgang benutzt werden soll.
Nach dem Reset ist PA3 beim MC68HC11E2 als Input konfiguriert.
- Der ZWERG11A lässt sich nicht programmieren
Das kann mehrere Ursachen haben. Wenn sicher ist, dass die Stromversorgung, Kommunikation und Konfiguration hardwareseitig in Ordnung ist, bleiben folgende bekannte Möglichkeiten:
- Bei der Installation der Entwicklungssoftware ist etwas schiefgegangen. Versuchen Sie eine erneute Installation und achten Sie auf Fehlermeldungen. Installationsprobleme lassen sich praktich immer durch eine Änderung der Bootkonfiguration in 'AUTOEXEC.BAT' oder 'CONFIG.SYS' beheben.
- Nach korrekt erfolgter Installation des Entwicklungspakets lässt sich keines der Programme aus dem Paket ausführen
Häufig treten Probleme mit einer zu langen PATH-Variablen auf. Das E11 Paket hängt an PATH den Namen der Binär-Directory an, wobei es durch die Längenlimitierung von Umgebungsvariablen zu einem Überlauf kommen kann.
Kürzen Sie die PATH-Variable. Alternativ können auch alle Files aus der 'bin'-Directory des E11 Pakets in eine der bereits vorhandenen Bin-Directories kopiert werden.
![]()
1 Die normalen Defaults sind 19200Baud, no Parity, 8 Datenbits und 1 Stopbit. Bei der Installation der ZWERG11A-Entwicklungssoftware werden die erforderlichen Defaultwerte über das Environment in 'setenv.bat' eingestellt.
2 Diese Konvention stammt aus der Sprache C. Sie wird in diesem Handbuch verwendet, auch wenn die Assemblerkonvention mit vorangestelltem '$' oder angehängten 'h' verbreiteter ist.
![]()
Anhang A Entwicklungspaket 11 (auch für ZWERG11plus und IC11B)
- Lieferumfang
- Unterverzeichnisse
- Vorbereitungen
- ZWERG11A Reset
- Hilfsprogramme
- EPROM-Simulator (nur IC11B)
- in praxi...
- Wenn's nicht funktioniert
- Tips
![]()
A1 Lieferumfang
- Cross-Assembler für MC68HC11, Preprozessor mit Makro-Fähigkeit und verschiedene Utilities.
- Hilfsprogramme zum einfachen Umgang mit der Hardware
- EEPROMmer
- Setzen der RTC
- Lesen/ Schreiben des RTC RAM
- Download von S-Records (ZWERG11plus, IC11B)
- Quellcode-Bibliothek
- SCI.INC - SCI Treiber
- SPI.INC - SPI Treiber
- RTC.INC - RTC Treiber
- EEP.INC - EEPROM Schreib-Routine
- LCD1/2.INC - LCD Treiber (alphanumerisch/ grafisch)
- OUTPUT.INC - Ausgabe-Routinen
- INPUT.INC - Eingabe-Routinen
- Quellcodes der Monitorprogramme
- MINI11A.A
- MONI11A.A (ZWERG11plus, IC11B)
- Beispielprogramme für
- SCI
- LCDs (ZWERG11A, ZWERG11plus)
- RTC
- ADC
- Timer-Interrupt
- Watchdog
![]()
A2 Unterverzeichnisse
BIN Ausführbare Programme LIB.BIN Objektcodes der Bibliotheken LIB.A Quellcodes der Bibliotheken EXAMPLE Beispielprogramme MONI Monitorprogramme BOOT Bootprogramme für HC11 MAN Manuals ASXX Zubehör für Assembler ![]()
A3 Vorbereitungen
Bevor die Software mit der angeschlossenen Hardware kommunizieren kann, muss ihr mitgeteilt werden, um welche Hardware es sich handelt. Dies geschieht mittels Umgebungsvariablen. Sie brauchen sich aber um Details nicht zu kümmern, dafür gibt es die Datei 'TARGET.BAT', die zwei Argumente erwartet: target <Hardware> <CPU-Typ>
Hardware:
[zwerg] für ZWERG11A [zplus] für ZWERG11plus [ic] für IC11B CPU-Typ:
[a1] für Prozessor MC68HC11A1 [e2] für Prozessor MC68HC11E2 (Kleinschreibung beachten).
TARGET allein, ohne Argument, zeigt die aktuelle Einstellung. TARGET muss jedesmal nach dem Einschalten des PC aufgerufen werden. Am besten schreiben Sie daher diesen Aufruf in die Datei 'AUTOEXEC.BAT'.
Beispiel:
Sie benutzen einen ZWERG11A mit dem Chip MC68HC11E2. Fügen Sie am Ende von 'AUTOEXEC.BAT' die Zeile 'call target zwerg e2' ein.![]()
A4 ZWERG11A Reset
Sie können das lästige "resetten" für den Bootvorgang vermeiden, wenn Sie eine Verbindung zwischen Pin 2 von ST2 und Pin 10 von ST1 herstellen. Der ZWERG11A kann dann (wie ZWERG11plus und IC11B) per Software resettet werden, was sich bei der Programmentwicklung enorm zeitsparend auswirkt.
In der Datei 'BOOT.BAT' im Verzeichnis 'BIN' ist dann die Zeile, die auf eine Bestätigung des RESET wartet (mit REM kommentiert) überflüssig und sollte gelöscht werden.
![]()
A5 Hilfsprogramme
Im 'BIN' Verzeichnis befinden sich einige '*.BAT' Dateien, deren Zweck im folgenden erklärt wird:
ASM11 Übersetzt ein Assemblerprogramm, erzeugt 'A.OUT'. Das Quellprogramm muss die Extension '.A' haben. Beim Aufruf wird nur der Name ohne Extension angegeben. Alles was nach dem Namen kommt, wird dem Assembler weitergegeben ("switches", siehe AS11-Manual). Beispiel:
'TEST.A'soll übersetzt werden [mit Listing]. Dann geben Sie 'asm11 test [-p]' ein.ZWERG11plus und IC11B:
Die Beispielprogramme werden standardmässig für die Adresse 2000h übersetzt. Wenn die Umgebungsvariable START.11 gesetzt ist, wird deren Wert als Startadresse genommen.Beispiel:
Sie wollen für Startadresse 8000h übersetzen. Geben Sie einfach 'set start.11=8000' ein.LOAD Download von S-Records (ZWERG11plus, IC11B). Die S-Record Datei muss die Extension '.SR' haben. Beim Aufruf wird nur der Name ohne Extension angegeben. Beispiel:
'TEST.SR' soll übertragen werden. Dann geben Sie 'load test' ein.EEPROG Programmieren des HC11-EEPROM. Die zu programmierende Datei muss mit dem vollen Namen angegeben werden. Beispiel:
'TEST.BIN' soll im EEPROM gespeichert werden. Dann geben Sie 'eeprog test.bin' ein.BOOT Booten des HC11 im Special Bootstrap Mode. Diese Datei sollte nicht direkt aufgerufen werden. Sie wird von verschiedenen Hilfsprogrammen benutzt. MAKE11 Führt nacheinander die o.g. Einzelschritte aus, d.h. übersetzt, bootet den HC11 und programmiert das EEPROM bzw. schreibt in das RAM (ZWERG11plus, IC11B). Aufruf wie 'ASM11.BAT. Beispiel:
'TEST.A' soll übersetzt und programmiert werden. Dann geben Sie 'make11 test' ein.START Nachdem ein Programm im EEPROM gespeichert ist, kann man durch "umjumpern" des Modes dafür sorgen, dass das Programm automatisch beim RESET gestartet wird. Das ist auch sinnvoll, wenn das Programm einmal fertig ist, und der "Kleine" standalone arbeiten soll. Während der Programmentwicklung kann man sich die Jumper-Prozedur sparen und das Programm stattdessen mit diesem Hilfsprogramm starten. ZWERG11plus und IC11B:
Der START-Befehl benutzt standardmässig die Adresse 2000h. Wenn die Umgebungsvariable 'START.11' gesetzt ist, wird deren Wert als Startadresse genommen (s.o.).Diese Utility startet die Hardware im "special bootstrap mode". Beim ZWERG11A, der keinen anderen Modus kennt, ist das bedeutungslos. Für ZWERG11plus und IC11B schaltet diese Utility NACH dem Booten in den "normal expanded mode". Programme, die innerhalb der ersten 64 Zyklen auf bestimmte Register zugreifen müssen, oder Programme die den Watchdog aktivieren, MÜSSEN beim ZWERG11plus und IC11B unter "echten" Bedingungen, d.h. mit umjumpern, (bzw. 'XSTART', s.u.) gestartet werden.
XMAKE11 Nur für ZWERG11plus.
XMAKE11 funktioniert fast wie 'MAKE11', programmiert aber das externe EEPROM des ZWERG11plus (d.h. für Programme ab Adresse 8000h). Aufruf wie 'MAKE11.BAT'. (alle Beispielprogramme die auf "X" enden müssen für den ZWERG11plus mit 'XMAKE11' übersetzt werden.)Beispiel:
'TEST.A' soll übersetzt und ins externe EEPROM programmiert werden. Dann geben Sie 'xmake11 test' ein.XVER11 Nur für ZWERG11plus.
XVER11 vergleicht ein Programm im externen EEPROM des ZWERG11plus mit einer S-Record Datei. Beim Aufruf wird nur der Name ohne Extension angegeben.Beispiel:
'TEST.SR' soll verifiziert werden (diese Datei ist automatisch beim übersetzen von 'TEST.A' entstanden). Dann geben Sie 'xver11 test' ein.XSTART Nur für ZWERG11plus.
Damit lässt sich der ZWERG11plus bei gesteckten Jumpern J1 und J3 per Software im "normal expanded" mode starten. Im Gegensatz zur o.g. START Utility gibt es hier keinen Unterschied zum "echten", per Jumper aktivierten "stand alone" mode.CONFIG Damit kann der Wert des Config-Registers des HC11 angezeigt und geändert werden (z.B. um den Watchdog zu aktivieren). Aufruf:
'config [2 Hex-Ziffern]' (setzt den Wert neu) 'config' (zeigt den Wert an) RTCSET Setzt die RTC auf Datum/Uhrzeit des Host-PC. Aufruf: 'rtcset'
RTCRAMR Liest das RAM der RTC. Aufruf: 'rtcramr [file]'
RTCRAMW Schreibt ins RAM der RTC. Aufruf: 'rtcramw [file]'
MAN Zeigt Manual. Geben Sie "man" und den Programm-Namen ohne Extension ein. Beispiel:
Das Manual des Assemblers soll angezeigt werden. Dann geben Sie 'man as11' ein (Verlassen mit 'q').![]()
A6 EPROM-Simulator (nur IC11B)
Das IC11B lässt sich ab Adresse 0x8000 wahlweise mit EPROM oder RAM betreiben. Im zweiten Fall hat man praktisch einen "build in" EPROM Simulator. Programme können für den EPROM-Betrieb übersetzt, und im RAM unter echten Bedingungen getestet werden, Interrupt- und Resetvektoren liegen an der richtigen Stelle. Während der Programmentwicklung ist es nicht sinnvoll, mit J4 und J5 den "normal expanded" mode einzustellen, um ein geladenes Programm neu zu starten. Legen Sie mit 'START.11' (s.o.) einmal die Adresse fest, für die das Programm übersetzt werden soll und benutzen Sie stattdessen START im Bootstrap Mode. Ist die Programm-Entwicklung abgeschlossen, kann das Programm im "normal expanded" mode per Reset im RAM gestartet, oder ohne Änderung mit Hilfe eines Programmiergerätes in ein EPROM "gebrannt" werden. Ein Beispiel ist 'IRQDEMOX.A'.
![]()
A7 in praxi...
Sie benutzen einen ZWERG11A mit dem Prozessor MC68HC11A1. Die Software wurde in 'C:\ZWERG' installiert. In 'AUTOEXEC.BAT' haben Sie am Ende die beiden Zeilen
call c:zwergsetenveingefügt.
call target zwerg a1
- Schalten Sie den PC aus.
- Schliessen Sie den ZWERG11A an die Stromversorgung und die serielle Schnittstelle COM1 des PC an (Achten Sie darauf, dass Jumper 3 gesteckt ist).
- Schalten Sie den PC an.
- Wechseln Sie in das Verzeichnis C:\ZWERG\EXAMPLE' und geben Sie 'make11 scidemo' ein.
Die einzelnen Schritte werden am Bildschirm angezeigt. Nachdem die Programmierung beendet ist, wird das Programm gestartet. Es wird eine Text-Zeile ausgegeben und bei jedem Tastendruck wiederholt. Mit <ALT> X beenden Sie die Kommunikation.- Geben Sie 'make11 rtcdemo' ein.
Dieselbe Prozedur läuft ab. Das Programm zeigt Datum und Uhrzeit der RTC an. Sie können die Uhr mit den Zifferntasten verstellen. Drücken Sie <ALT> X, um ins DOS zurückzukehren.- Geben Sie 'rtcset' und dann 'start' ein.
Das Programm RTCDEMO wird wieder gestartet. Das angezeigte Datum und die Uhrzeit sollten jetzt mit Datum und Uhrzeit Ihres PC übereinstimmen.Drücken Sie <ALT> X. Das Programm im ZWERG11A läuft immer noch, Sie haben nur das Kommunikations-Programm beendet. Solange Sie die ZWERG11A Stromversorgung nicht abschalten oder ein anderes Programm speichern, können Sie die Kommunikation durch Eingabe von 'tm' wieder aufnehmen.
- Zum Schluss wechseln Sie in das Verzeichnis '..\MONI' und geben 'make11 mini11' ein.
Damit wird der Minimonitor ins EEPROM gebracht, mit dem Sie sich die Hardware genauer anschauen können. Viel Erfolg...![]()
A8 Wenn's nicht funktioniert
- Haben Sie bei der Installation den vollständigen Pfadnamen des Ziel-Verzeichnisses angegeben?
- Wurden die Befehle SETENV und TARGET in der Datei 'AUTOEXEC.BAT' korrekt (d.h. ohne Fehlermeldung) ausgeführt?
- Ist genügend Platz im Umgebungsbereich?
- Haben Sie die Hardware an COM1 angeschlossen?
- Ist auf der Hardware der richtige Mode "gejumpert"?
- Ist das Config-Register richtig gesetzt? (vielleicht ist das ROM eingeblendet oder COP enabled)
- Kann das Programm an die Stelle geladen bzw. programmiert werden für die es übersetzt ist?
![]()
A9 Tips
Beispielprogramme
Bevor Sie ein Beispiel übersetzen sollten Sie in der Quellcodedatei nachsehen, ob es für Ihre Hardware verwendbar ist (steht gleich am Anfang).
COM-Schnittstelle
Möglicherweise möchten Sie für den Anschluss der Hardware nicht COM1, sondern eine andere COM-Schnittstelle verwenden. Die TM Utility, die die Kommunikation bewerkstelligt, kann mit einem Kommandozeilenparameter auf die gewünschte COM-Schnittstelle eingestellt werden. Dazu müssen Sie aber nicht die zahlreichen Stellen ändern, an denen TM benutzt wird. Mit der Umgebungsvariablen TM.OPT geben Sie einfach die Schnittstelle für alle Aufrufe von TM an (siehe TM-Manual).
Beispiel:
Sie haben die Hardware an COM2 angeschlossen. Geben Sie 'set tm.opt=-b9600 -d2' ein.Eigene Programme
Wenn Sie wenig Erfahrung mit dem MC68HC11 haben, nehmen Sie für eigene Programme das passendste Beispielprogramm als Grundlage und modifizieren es Schritt für Schritt nach Ihren Anforderungen. Benutzen Sie - sofern es der Platz erlaubt - nach Möglichkeit die Treiber aus der Quellcode-Bibliothek, bevor Sie das Rad noch einmal erfinden. Beachten Sie, dass im Bootstrap Mode bestimmte Resetbedingungen gelten (siehe MOTOROLA HC11 Reference Manual). Z.B. ist DWOM gesetzt (d.h. Port D ist im "wired or" Mode). Wenn Sie also beispielsweise ein Bit von Port D als Ausgang verwenden, dann ist dies ein "open collector" Ausgang, wenn Sie DWOM nicht zurücksetzen. Beim ZWERG11plus und IC11B wird nach dem Boot-Vorgang vom "special bootstrap" in den "normal expanded" Mode umgeschaltet. Beim ZWERG11A muss ein EEPROM-Programm die logische Verbindung zwischen RxD und TxD auftrennen, da sonst das SCI nicht benutzbar ist. Dafür gibt es den Makro-Befehl 'LOOPOFF' (siehe Beispielprogramme).
Vektoren, Interrupts
Im "special bootstrap mode" des 68HC11 liegen die Interruptvektoren im Boot-ROM (der ZWERG11A läuft immer in diesem Modus). Diese Vektoren zeigen auf das interne RAM ab Adresse 0x00c4. Die Anordnung dieser RAM-Adressen ist analog zur Reihenfolge der Vektoren. Der Offset zwischen zwei aufeinanderfolgenden Vektortabelleneinträgen beträgt drei Bytes. Damit ist es möglich, für jeden Interrupt einen absoluten Sprung ("jmp"-Anweisung und die 16Bit Zieladresse) in die eigentliche Interruptroutine auszuführen.
Beim ZWERG11plus und IC11B wird externer Speicher - und damit der "normal expanded mode" - benutzt. Die meisten Beispielprogramme sind für den Betrieb im RAM ausgelegt, werden gleich nach dem Download gestartet und enthalten keinen Resetvektor. Um so ein Programm "stand alone" lauffähig zu machen, muss nicht nur die Startadresse geändert, sondern mindestens der Resetvektor und eventuell Interruptvektoren hinzugefügt werden (ein Beispiel für umgelenkte Vektoren ist 'IRQDEMO.A', für "richtige" 'IRQDEMOX.A').
Config-Register, Watchdog
Das Config-Register des HC11 sollten Sie eigentlich nur in zwei Fällen ändern:
- um den Watchdog aktivieren, und/oder
- um das interne EEPROM des HC11 aus der Addressmap auszublenden.
(letzteres natürlich nicht beim ZWERG11A...) Wenn der Watchdog (COP) beim ZWERG11plus oder IC11B einmal aktiviert ist (Flag in config), können keine Programme mehr ins RAM oder ins externe EEPROM geladen werden. Der COP wird sofort aktiv, sobald vom Bootstrap in den normal expanded Mode umgeschaltet wird, was einen "boot error" nach sich zieht. Einzige Abhilfe: mit der 'CONFIG' Utility den COP abschalten. Im "special bootstrap" Mode ist der COP abgeschaltet, selbst wenn das COP-Flag im Config-Register das Gegenteil behauptet. Sehen Sie sich zu diesem Thema die Beispiele in 'COPDEMO\X.A' an, lesen Sie die Datei 'CONFIG.A' im Verzeichnis 'BOOT' und vor allem das Motorola HC11 Reference Manual.
Platzprobleme
Bei Programm-Speicherplatz-Mangel - vor allem beim ZWERG11A mit MC68HC11A1 - können Sie durch Anwendung des "direct addressing mode" ('<') evtl. ein paar Bytes sparen, und zwar ohne an der Programmstruktur etwas zu ändern. Beispiele dafür finden Sie in 'ASXX.\DEMO.A' (siehe auch AS11-Manual).
Assembler
Für den Einstieg in das Arbeiten mit dem Assembler und den Utilities lesen Sie die 'README'-Datei im Verzeichnis 'ASXX'.
www.mct.de: Produkte: Einplatinencomputer: ZWERG11A