Mikrocomputertechnik


Prof. Jürgen Plate

4. Der Mikrocontroller M68HC11

4.1 Hardwarestruktur der 68HC11-CPU

Der Prozessor

Beim 68HC11 gibt es diverse Varianten, die sich hauptsächlich im integrierten Speicher unterscheiden. Zusammenfassend ergeben sich folgende Eigenschaften:

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:

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

Der Speicher

Der Speicher nimmt Instruktionen und Daten auf (wie beim klassischen von-Neuman Rechner). Speicherarten: 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:

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:

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

BezeichnungBauteilWert
IC1MikrocontrollerMC 68HC811 E2 FN
IC2ICMAX 232
IC3Regler-IC7805
Q1Quarz8 MHz
RN1 - RN5Widerstandsnetzwerk 8 x 10 KOhm
R1Widerstand10 MOhm
R2Widerstand1 KOhm
R3, R4Widerstand10 KOhm
R5Widerstand4,7 KOhm
C1, C12Kondensator100 nF keramik
C3, C4Kondensator22 pF keramik
C2, C5Tantalelko1 Mikrofarad / 35 V
C6, C7, C8, C9Tantalelko10 Mikrofarad / 16 V
C10Elko100 Mikrofarad / 16 V
C11Elko100 Mikrofarad / 16 V
ST1 - ST5Steckerleiste2 x 8-polig
Bu1 - Bu5Buchsenleiste8-polig
Fassung für IC1IC-FassungPLCC 52
Fassung für IC2IC-Fassung16-polig
13 StückLötstifte1 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:

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:

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

Zum vorhergehenden Abschnitt Zum Inhaltsverzeichnis Zum nächsten Abschnitt


Copyright © FH München, FB 04, Prof. Jürgen Plate