 |
Mikrocomputertechnik
Prof. Jürgen Plate |
4. Bausteine des Systems M68HC11
4.1 Mikroprozessor 68HC11
Der Prozessor
- ist zuständig für die sequentielle Instruktionsausführung
(Instruktion entspricht einer Zustandsänderug im Speicher oder in einem
Register).
- Ausführung synchron durch internen Taktgenerator (dieser wird beim
68HC11 durch einen externen Quarz-Oszillator gesteuert).
- Systemtakt des 68HC11: 2 MHz
(entsprach zur Entwicklungszeit der maximalen Taktfrequenz eines externen EPROMs)
- Systemtakt wird für externe Zwecke (an Pin E) zur Verfügung gestellt.
- eine Instruktion benötigt beim 68HC11 mindestens 2 Takte = 1 Mikrosekunde
- längste Operation: Division (FDIV) mindestens 41 Takte = 20,5 Mikrosekunden
Beim 68HC11 gibt es diverse Varianten, die sich hauptsächlich im integrierten
Speicher unterscheiden. Zusammenfassend ergeben sich folgende Eigenschaften:
- CPU mit 8 Bit Daten und 16 Bit Adressen
- 256 Byte RAM
- 2 - 8 KByte ROM
- 515 - 2048 Byte EEPROM
- Asynchrone serielle Kommunikationsschnittstelle
- Echtzeit-Interrupts
- 38 digitale Ein- und Ausgänge, teils mit Handshake-Funktion
- 2 Hardware-Interrupts
- Impulszähler
- 16-Bit-Timer-System mit 3 Zeitmeß-Eingängen und 4 PWM-Ausgängen
- Analog-Digital-Wandler mit 8 gemultiplexten Eingängen
- Synchrone serielle Schnittstelle
Der Prozessor arbeitet mit einer Taktfrequenz von 2 MHz, die von einem 8-MHz-Quarz
abgeleitet wird. Die Betriebsspannung beträgt 5 V, die Stromaufnahme etwa 15 mA,
wobei jedoch bei Batteriebetrieb der Mikrocontroller in Arbeitspausen durch
Software-Befehle in einen Stromsparzustand geschaltet werden kann.
Die wichtigsten Anschlußpins
| Name |
Anzahl |
Art |
Bedeutung |
| Vss (GND) |
1 |
E |
Versorgungsspannung 0V |
| VDD |
1 |
E |
Versorgungsspannung 5V |
| EXTAL |
1 |
E |
Quarz (oder externer, CMOS-kompatiblerTaktgenerator) |
| XTAL |
1 |
A |
Quarz |
| E |
1 |
A |
Bus-Takt L: interne Aktivität
H: externe Aktivität (Datenverkehr) |
| RESET |
1 |
E |
Rücksetzen des M68HC11 X-Bit und I-Bit = 1,
(FFFE,FFFF) Befehlszähler |
| MODA |
1 |
E |
L: single chip mode (nur interne Komponenten)
H: expanded mode (externe Komponenten möglich) |
| MODB |
1 |
E |
L: special variation (down load or test)
H: normal variation (applications) |
| XIRQ |
1 |
E |
unbedingte Unterbrechung (non maskable interrupt)
maskiert durch X-Bit im CCR |
| IRQ |
1 |
E |
bedingte Unterbrechung (interrupt request)
maskiert durch I-Bit im CCR |
| PAi |
3 4 1 |
E A E/A |
Port A: 3 Digitaleingänge,
4 Digitalausgänge,
1 Digitalein/ausgang oder Pulsakku-Eingang (unterbrechungsfähig) |
| PB A15-8 |
8 |
A |
Port B: 8 Digitalausgänge oder
8 Adressleitungen |
| PCAD7-0 |
8 |
E/A |
Port C: 8 Digitalein/ausgänge oder
8 Adress/Datenleitungen (gemultiplext) |
| STRA AS |
1 |
E/A |
Steuerleitung (Eingang, unterbrechungsfähig) oder
Adress/Datenleitungs-Steuerung |
| STRB R/W |
1 |
A |
Steuerleitung (Ausgang) oder Datenrichtung (read/write) |
| PD |
6 |
E/A |
Port D: 6 Digitalein/ausgänge oder 1 SCI und 1 SPI |
| PE |
8 |
E |
Port E: 8 Digitaleingänge oder
8 Analogeingänge für A/D-Wandler |
| Vrefh |
1 |
E |
Referenz-Spannung für A/D-Wandler |
| Vrefl |
1 |
E |
Referenz-Spannung für A/D-Wandler |
Reset
Der Reset-Eingang wird dazu benutzt, den Mikroprozessor in einen definierten Anfangszustand
zu bringen. Da für einige der intern ablaufenden Vorgänge zwingend ein
Oszillatortakt benötigt wird, sollte ein Reset-Signal erst nach Stabilisierung des
Oszillator-Kreises gegeben werden. Sobald der Prozessor die Reset-Bedingung gültig
erkennt, werden alle internen Schaltungsgruppen in einen definierten Anfangszustand versetzt:
- Nach dem Reset-Signal lädt die CPU den Reset-Vektor aus dem der gewählten
Betriebsart entsprechenden Adressbereich in den Programcounter. Dies ist ($FFFE, $FFFF)
im Normalbetrieb oder ($BFFE, $BFFF) in den Betriebsarten "Special Test" und "Bootstrap".
Der Stackpointer und die anderen Register der CPU sind nach dem Reset weiterhin
undefiniert, nur das X- und das I-Bit im CCR-Register werden gesetzt, um undefinierte
Interrupts zu verhindern.
- Das INIT-Register wird beim Reset auf $01 gesetzt. Damit liegt das interne Prozessor-RAM
im Adressbereich $0000 bis $OOFF, die Control-Register liegen auf den Adressen $1000 bis $103F.
Der Prozessor-Reset hat keinen Einfluß auf das Mapping der ROM- und EEPROM-Bereiche, da
die beiden Bits, die die Zugriffe auf diese Bereiche kontrollieren, EEPROM-Zellen des
Config-Registers sind.
- Durch das Reset-Signal wird das prozessorinterne Timer-System auf $0000 gesetzt, alle
Prescaler-Bits werden gelöscht und sämtliche Output-Compare-Register erhalten
den Wert $FFFF. Der Inhalt der Input-Capture-Register ist undefiniert. Damit keine
undefinierten Signale an den E/A-Pins des Prozessors durch das Timer-Systern ausgegeben
werden können, werden alle Output-Compare-Systeme so initialisiert, daß sie
keinen Einfluß auf die logischen Zustände der zugeordneten E/A-Pins haben.
Die Flankenerkennung der drei Input-Capture-Register wird durch das Reset-Signal
ausgeschaltet, alle dem Timer-System zugeordnete Interrupt-Flags werden gelöscht
und alle neun Timer-Interrupt-Quellen werden gesperrt.
- Die Behandlung der E/A-Ports bei einem Reset-Signal ist von der eingestellten
Betriebsart abhängig; in der Betriebsart "Extended" sind die 18 E/A-Pins des
68HC11 den verschiedenen Bussystemen zugeordnet. In der Betriebsart "Single-Chip",
werden alle Interrupt-Quellen, die mit den E/A-Ports in Verbindung stehen,
gelöscht. Dazu gehören die Bits STAF, STAI und HNDS im PIOC-Register. Die
Betriebsart der E/A-Ports wird durch das gelöschte HNDS-Bit auf "Simple
Strobed E/A" festgelegt.
Port C ist nach dem Reset als Eingang definiert, sein Datenrichtungsregister demnach
mit $00 besetzt. Port B ist als Ausgang mit auf Null gesetzten Ausgangssignalen
initialisiert. Der flankenempfindliche Eingang STRA reagiert auf die ansteigende
Flanke eines Signals.
- Nach einem Reset-Signal ist die Baud-Rate des seriellen Interfaces in
jedem Fall undefiniert und muß durch das Anwenderprogramm festgelegt werden.
Sämtliche Interrupt-Quellen der seriellen Schnittstelle sind deaktiviert und die
Zuordnung der Empfangs- und Sendeleitungen zu den entsprechenden E/A-Pins ist
aufgehoben, so daß diese Pins als normale E/A-Pins zur Verfügung stehen.
Das Übertragungsformat der seriellen Schnittstelle ist auf 8 Bit eingestellt. Im
Statusregister des seriellen Systems werden die TDRE- und TC-Bits gesetzt.
- Das Puls-Akkumulator-System des 68HC11 ist nach einem Reset ausgeschaltet, der
Eingang (PAI) ist als normaler E/A-Pin geschaltet.
- Die interne Prozessorüberwachung (COP) verhält sich entsprechend dem
NOCOP-Bit im Config-Register(NOCOP-Bit = 1: Überwachung aus, NOCOP-Bit = 0:
Überwachung ein). In diesem Fall wird das Time-Out-Intervall des COP-Systems
auf die kleinste verfügbare Zeit gesetzt.
- Das serielle Peripherie-Interface (SPI) wird durch ein Reset-Signal ausgeschaltet. Die
zugehörigen E/A-Leitungen stehen als normale E/A-Pins zur Verfügung.
- Die Definition des A/D-Wandler-Systems ist undefiniert. Nur das ADPU-Bit wird
gelöscht, so daß das A/D-System deaktiviert bleibt.
- Sämtliche EEPROM-Steuerbits, die zur Programmierung benötigt werden, sind nach
einem Reset gelöscht, so daß aus dem EEPROM nur gelesen werden kann.
- Der externe Interrupt bekommt die höchste Interrupt-Priorität zugewiesen,
das Interrupt-Signal wird auf pegelabhängig geschaltet, so daß ein
Standard-Interruptsystem mit mehreren Quellen möglich ist.
Als Reset-Quelle steht beim 68HC11 nicht nur der externe Reset-Eingang zur Verfügung.
Es gibt drei weitere interne Reset-Quellen: Power-On-Reset (POR), Watchdog-Timer
(COP), Taktüberwachung (CMR). Jeder dieser Reset-Quellen ist ein eigener Reset-Vektor
zugeordnet, der auf das zugehörige Interrupt-Programm zeigt.
Der Bus
- Verbindung zwischen den Komponenten (speziell: Verbindung der CPU mit dem
Speicher)
- Adreßbusbreite beim 68HC11: 16Bit = 216 = 65536 verschiedenen
Speicherplätze mit je 8-bit Datenwort (64 KByte)
- Bus im Multiplexbetrieb = Daten und Adressen über gleiche Leitungen
(Kontrolle über Steuerleitungen)
- Steuerleitungen geben den Bus-Zustand an (Daten/Adressen, schreiben/lesen)
- Zugriff auf E/A-Ports: speicherabbgebildet
Der Speicher
Der Speicher nimmt Instruktionen und Daten auf (wie beim klassischen von-Neuman
Rechner). Speicherarten:
- RAM: schreiben und lesen, sehr schnell, Speicherinhalt flüchtig (evtl.
mit Batterie puffern)
- ROM: nicht flüchtig, Inhalt nicht änderbar
- PROM: 1x änderbar, nicht flüchtig
- EPROM: löschen durch UV-Licht
- EEPROM: lesen und schreiben, langsam (ms, bei RAM ns), begrenzte Lebensdauer
Als Speicher hat der MC68HC811 ein ROM, ein EEPROM und ein RAM an Board. Programme
können in jeden dieser Speicherbereiche geladen und in jedem Bereich
ausgeführt werden. Das ROM kann allerdings nur während des
Herstellungsprozesses programmiert werden, so daß diese Variante erst bei
Abnahme von mehreren tausend Stück interessant wird. Ein Teil des ROM ist
jedoch stets vorhanden, da es das Bootloader-Programm enthält. Bei kleinen
Stückzahlen oder Einzelstücken ist das EEPROM der bevorzugte Programmspeicher.
Da Programme im RAM nicht dauerhaft gespeichert werden, dient dieses zur temporären
Speicherung von Rücksprungadressen im Stack-Bereich oder von Zwischenergebnissen
des Programmlaufs. Die folgende Liste zeigt eine Zusammenfassung der Prozessorvarianten:
Innerhalb der Familie gibt es nur geringe Unterschiede in Speicher (Art, Menge) und
Ports (Anzahl, Art). Bei allen Varianten ist der Befehlssatz gleich
gleiche (Assenbler-)Programme.
Belegung des Adressraums bei verschiedenen Prozessortypen
Asynchrone serielle Schnittstelle
Über die asynchrone serielle Schnittstelle (SCI) wird das Programm vom PC in
den Mikrocontroller geladen. Sie dient unter anderem auch dazu, beim Testen des
Programms Statuswerte oder Zwischenergebnisse am Bildschirm darzustellen.
Die Anschlüsse der seriellen Schnittstelle sind PD0 = RxD (Dateneingang)
und PD1 = TxD (Datenausgang).
Timer-System
Das Timer-System steuert solche Funktionen, die einen Bezug zur Realzeit benötigen,
also unabhängig von Befehlsausführungszeiten sein sollen. Intern werden
alle Funktionen von einem konstant durchlaufenden, nicht beeinflußbaren
16-Bit-Taktzähler abgeleitet:
- Der Real-Time-Interrupt (Echtzeitunterbrechung) dient dem Zweck,
in genau periodischen Zeitabständen einen bestimmten Vorgang auszulösen.
- Die 3 Input-Capture-Funktionen (Zeiterfassungsfunktionen) IC1 bis IC3
dienen zur Zeitmessung von Eingangssignalen an den Eingängen PA0 bis PA2.
- Mit den 4 Output-Compare-Funktionen (Zeitvergleichsfunktionen) OC1 bis
OC4 können bei bestimmten Timer-Zählerständen H-Pegel bzw. L-Pegel
an den Anschlüssen PA3 bis PA6 ausgegeben werden.
- Der COP-Watchdog-Timer sorgt dafür, daß die
Programmlaufüberwachung innerhalb einer überwachungsperiode rechtzeitig
zurückgesetzt wird. Im Fehlerfall wird ein Reset (Neustart) des Rechners
veranlaßt.
Digitale Ein- und Ausgänge
Je 8 Ein- bzw. Ausgänge sind in den Ports A, B, C und E zusammengefaßt.
Die meisten dieser Anschlüsse haben mehrere Funktionen, die softwaremäßig
festzulegen sind. Die jeweilige Pfeilrichtung im Blockschaltbild kennzeichnet den
Anschluß als Eingang oder Ausgang. Der Zugriff erfolgt wie auf den
Speicher. Eigenschaften der fünf Ports:
- Port A: (verbunden mit 16-bit Zähler)
3 Eingänge (sichern des aktuellen Zählerstandes in ein Register
durch ein Eingangssignal)
4 Ausgänge (Vergleichsausgänge des Zählers: sobald der
Zähler den im zugehörigen Register gespeicherten Wert erreicht
hat, wird hier eine 1-Signal erzeugt)
1 Ein- und Ausgang (Impulszähler)
- Port B und C: Funktion hängt von der Betriebsart der Microcontrollers
ab. Der 68HC11 kennt vier Betriebmodi (einstellbar an den Pins MODA, MODB):
| single chip Mode |
normal |
Nur der interne Speicher ist verfügbar, Port B: digitale Ausgabeschnittstelle,
Port C: digitale Eingabe- oder Ausgabe-Schnittstelle,
STRB,STRA beliebig verwendbar (digitale Ein- bzw. Ausgänge) |
| special |
special bootstrap mode:
In diesem Modus lädt die Firmware über die serielle Schnittstelle
(Port D) ein 255 Bytes großes Grundprogramm, welches anschliesend
ausgeführt wird. |
| expanded Mode |
normal |
Dieser Mode dient zum Anschließen externer Peripherie und
externer Speicher. Der 68HC11 stellt sich dann wie ein normaler
Mikroprozessor dar:
Port B: Buserweiterung
Port C: Buserweiterung
STRA, STR B: Steuerleitungen |
| special |
spezieller Testmodus |
- Port D:
zwei Ein- /Ausgänge (serielle Schnittstelle)
vier Ein- /Ausgänge (für synchronen Datenaustausch mit anderen
68HC11)
- Port E:
8-Kanal A/D-Wandler (Genauigkeit: 8-bit)
Impulszähler
Der Impulszähler dient je nach Software-Vorgabe zur Zählung von Pulsen oder
zur Bestimmung einer Pulsdauer, wobei er im letzteren Fall auf das Timer-System zugreift.
Analog-Digital-Wandler
Die 8 Anschlüsse des Ports E können je nach Bedarf im Multiplexbetrieb auf
einen Analog-Digital-Wandler geschaltet werden. Der Wandler arbeitet mit einer
Auflösung von 8 Bit und beinhaltet eine Sample-and-Hold-Funktion, so daß
auch zeitveränderliche Signale amplitudengetreu verarbeitet werden.
Synchrone serielle Peripherieschnittstelle
Die synchrone serielle Peripherieschnittstelle (SPI) dient zum Datenaustausch mit
einem anderen Mikrocontroller oder speziell dafür entwickelten
Peripheriebausteinen, die an PD2 bis PD5 angeschlossen werden.
Vereinfachtes Blockschaltbild des 68HC11
4.2 Typische Anwendungsschaltung
Wie aus dem Stromlaufplan ersichtlich ist, besteht die gesamte Schaltung des
Mikrocontrollers nur aus drei integrierten Bausteinen. Den Mittelpunkt bildet
der Mikrocontroller 68HC811 (IC1). Sämtliche Anschlüsse sind durch
Widerstandsnetzwerke abgeschlossen. Der Takterzeugung dient ein 8-MHz-Quarz (Q1),
der mit Hilfe der beiden Keramikkondensatoren C3, C4 und dem Parallelwiderstand
R1 auf der Grundwelle schwingt. Für das Laden der Programme und für den
Kontakt mit der Außenwelt wurde ein serieller Pegelwandler vom Typ MAX 232
verwendet. Seine externe Beschaltung beschränkt sich auf vier
Tantalkondensatoren (C6 bis C9) für die internen Spannungswandler (+12V/-12V).
Mit dem Schalter SW1 kann der Mikrocontroller in den Bootmodus geschaltet werden.
Nur in dieser Betriebsart ist es möglich, Programme zu laden und abzuspeichern.
Der Taster TA1 löst einen Reset aus und versetzt die gesamte Schaltung in
einen definierten Anfangszustand.
Die Spannungsversorgung erfolgt durch IC3, einen Festspannungsregler vom Typ 7805.
Die von einem externen Steckernetzteil zugeführte Gleichspannung von etwa 9 V
wird hier auf eine konstante Versorgungsspannung von 5 V geregelt.
Achtung: Diese Schaltung ist nicht mit der Schaltung des im Praktikum verwendeten
"Zwerg 11" identisch.
Stückliste für das Mikrocontroller-Board
| Bezeichnung | Bauteil | Wert |
| IC1 | Mikrocontroller | MC 68HC811 E2 FN |
| IC2 | IC | MAX 232 |
| IC3 | Regler-IC | 7805 |
| Q1 | Quarz | 8 MHz |
| RN1 - RN5 | Widerstandsnetzwerk | 8 x 10 KOhm |
| R1 | Widerstand | 10 MOhm |
| R2 | Widerstand | 1 KOhm |
| R3, R4 | Widerstand | 10 KOhm |
| R5 | Widerstand | 4,7 KOhm |
| C1, C12 | Kondensator | 100 nF keramik |
| C3, C4 | Kondensator | 22 pF keramik |
| C2, C5 | Tantalelko | 1 Mikrofarad / 35 V |
| C6, C7, C8, C9 | Tantalelko | 10 Mikrofarad / 16 V |
| C10 | Elko | 100 Mikrofarad / 16 V |
| C11 | Elko | 100 Mikrofarad / 16 V |
| ST1 - ST5 | Steckerleiste | 2 x 8-polig |
| Bu1 - Bu5 | Buchsenleiste | 8-polig |
| Fassung für IC1 | IC-Fassung | PLCC 52 |
| Fassung für IC2 | IC-Fassung | 16-polig |
| 13 Stück | Lötstifte | 1 mm |
4.3 Praktikumssystem PS11 mit M68HC11A0
Blockschaltung
(CONFIG = $0C)
Praktikumsrechner mit Experimetierboard
Der ZWERG11plus
Unter den ganz kleinen Karten ist der ZWERG11A von Elektronikladen Detmold ein ganz Großer. Mittlerweile vieltausendfach im Einsatz gab es aber immer wieder Applikationen, die das Speicherangebot des ZWERG11A überforderten.
So wurde als Ergänzung zum "kleinen ZWERG" ein "großer ZWERG" geschaffen: der ZWERG11plus. Die Schwierigkeit, auf einer Platinenfläche von nur 51mm x 54mm einen "großen" Rechner zu entwerfen, läßt sich sicherlich nachvollziehen. Die Lösung für dieses Problem hieß: 6-Lagen-Multilayer, mehr SMT-Bauteile und doppelseitige Bestückung.
Zum ZWERG11plus gibt es ein Entwicklungspaket. Es besteht aus folgenden Komponenten:
- ZWERG11plus Controllermodul
- Benutzerhandbuch mit Diskette
- RS232 Interface-Modul (IF-Modul)
- Flachbandkabel für IF-Modul und Sub-D9 Anschlußkabel für PC/AT
- Terminalprogramm zur Kommunikation zwischen PC und ZWERG11plus
- Programmier- und Download-Utilities
- Cross-Assembler AS11 und Hilfsprogramme
Zur Softwareentwicklung für den ZWERG11plus können Sie, neben dem Assembler im Entwicklungspaket, die Integrierte Entwicklungsumgebung IDE11 einsetzen.
Als C-Compiler stehen Produkte von Imagecraft (ICC11) und Cosmic zur Verfügung. Außerdem kann man das MOPS-Betriebssystem (Assembler/Basic/Pascal) mit dem ZWERG11plus verwenden.
Technische Daten:
- MC68HC11A1 8Bit Mikrocontroller Motorola
- Versorgungsspannung 5V, Stromaufnahme typ. 20-30mA
- Reset-Controller
- 32KByte RAM
- 32KByte EEPROM
- Uhrenbaustein RTC4553 mit Batterie (Option)
- Anschluß für serielle Interfacemodule (IF-Module)
- SPI: Interface für ser. Peripherie Bausteine (parallel I/O, AD/DA-Wandler usw.)
- Timersystem 16 Bit mit 5x Output-Compare, 3x Input-Capture
- 8 Bit AD-Wandler mit 8 Kanälen
- Port Replacement Unit (PRU) MC68HC24
- bis zu 40 digitale Ein-/Ausgänge (abzgl. genutzter Sonderfkt.)
- Steckverbinder für alphanumerische oder grafische LCDs
- steckerkompatibel zu ZWERG11A
Anschluß des "Zwerg 11" an den PC
Belegung des Schnittstellenkabels und des Experimentierboards
Bootloader Firmware for MC68HC11A8 (essentials)
pddr equ $08
baud equ $2B
sccr2 equ $2D
scsr equ $2E
scdr equ $2F
*
org $BF40
*
main ldx #$1000 init x for indexed access to hardware
ldaa #$A2
staa baud,x restart timer , set baudrate to 7812 Bd
ldaa #$0C
staa sccr2,x enable receiver and transmitter
bset sccr2,x $01 send break to signal start of download to master
wait brset pddr,x $01 wait wait for startbit from master
bclr sccr2,x $01 clear break
char brclr scsr,x $20 char wait for first character from master (RDRF)
ldaa scdr,x read character
bne goon
jmp $B600 start program in internal EEPROM
goon cmpa #$55 test mode ?
beq strt yes, skip download
cmpa #$FF baud rate ok ?
beq bdok yes, goon
bset baud,x $33 change to 1200 Bd
bdok ldy #$000 init pointer
loop brclr scsr,x $20 loop wait for RDRF
ldaa scdr,x get character
staa 0,y store character to RAM
staa scdr,x echo character to master
iny adjust pointer
cpy #$0000 end of area ?
bne loop no, next character
*
strt jmp $0000 start downloaded userprogram
*
org $BFFE
dc.w main start main on RESET (MODA = MODB = 0)
*
end
Copyright © FH München, FB 04, Prof. Jürgen Plate