Transcript
Page 1: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

222

13 Mikrocontroller

13.1 Allgemeines

Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem auf einem Chip integriert. Ein Mikrocontroller kann also mitsehr wenigen externen Bausteinen betrieben werden, man nennt sie daher auch Single-Chip-Computer oder Einchip-Computer. Im Gegensatz zum Mikroprozessor steht beim Mikrocon-troller nicht die hohe Verarbeitungsleistung im Vordergrund, sondern eine hohe funktionelleIntegration: Je mehr Funktionen schon auf dem Mikrocontroller-Chip sind, um so wenigerZusatzbausteine braucht man. Dies hat viele Vorteile fur die Herstellung vollstandiger Syste-me:

• Der Schaltungsentwurf wird einfacher,

• das vollstandige System wird kompakter,

• die Verlustleistung ist geringer,

• durch die geringere Anzahl von Leitungen, Sockeln und Steckern verringert sich auchdas Risiko von mechanischen Verbindungsstorungen,

• die Fertigung und das Testen der Schaltungen kostet weniger.

Das Haupteinsatzgebiet der Mikrocontroller ist die Steuerung in eingebetteten Systemen (Em-bedded Systems). Darunter versteht man Systeme, die von einen Computer gesteuert werden,ohne dass dieser nach aussen in Erscheinung tritt. Durch die Fortschritte in der Integrationund die sinkenden Preise konnten Mikrocontroller in immer mehr Applikationen als Steue-rungszentrale eingesetzt werden (Embedded Control, to control = steuern). In vielen Fallenhaben sie Steuerungen aus digitalen Bausteinen oder speicherprogrammierbare Steuerungenabgelost. Mikrocontroller bieten hier den Vorteil großerer Flexibilitat, denn die Funktion kannauf der Softwareebene geandert oder erweitert werden. Besonders augenfallig ist dieser Vor-teil bei feldprogrammierbaren Mikrocontrollern, das sind Controller die neu programmiertwerden konnen, ohne dass man sie aus ihrer Schaltung entnehmen muss. Wir finden Mi-krocontroller z.B. in Digitaluhren, Taschenrechnern, Haushaltsgeraten, KFZ, Mobiltelefonen,Kommunikationseinrichtungen aller Art, Medizingeraten und vielen anderen eingebettetenSystemen. Der Markt fur Mikrocontroller wachst standig.

Standardmikrocontroller sind universell gehalten und kommen in unterschiedlichen Applika-tionen zum Einsatz, sie werden frei verkauft. Kundenspezifische Mikrocontroller dagegen sind

Page 2: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.2 Typische Baugruppen von Mikrocontrollern 223

im Kundenauftrag fur einen ganz spezifischen Einsatz entworfen, werden in hohen Stuckzahlengefertigt und als Teil eines fertigen Produktes an den Endkunden verkauft.

Ein Mikrocontroller enthalt einen Kern (Core), der mit den Bestandteilen Rechenwerk, Steu-erwerk, Registersatz und Busschnittstelle ungefahr einer ublichen CPU entspricht. Dazu kom-men mehr oder weniger viele Peripheriekomponenten, die der Controller fur seine Steuerungs-und Kommunikationsaufgaben im eingebetteten System braucht, z.B.:

• Verschiedene Arten von Speicher

• Kommunikationsschnittstellen (UART, I2C, SPI, CAN,...)

• Ein konfigurierbares Interruptsystem mit externen Interrupts

• Eine Oszillatorschaltung

• Ein- und Ausgabeports (IO-Ports)

• Zahler/Zeitgeber-Bausteine

• Analog-Digital-Wandler

• Digital-Analog-Wandler

• Echtzeituhr (RTC)

• Watchdog Timer (WDT)

• Ansteuerung von LCD- und LED-Anzeigeelementen

Mikrocontroller, die den gleichen Kern haben und sich in den Peripheriekomponenten unter-scheiden, nennt man Derivate. Von manchen Mikrocontrollern existieren sehr viele Derivate.Da es außerdem relativ viele Hersteller gibt, stellen die verfugbaren Mikrocontroller eine großeund bunte Palette dar - die Auswahl des richtigen Controllers ist nicht immer leicht.

13.2 Typische Baugruppen von Mikrocontrollern

13.2.1 Mikrocontrollerkern (Core)

Die Kerne der Mikrocontroller entsprechen dem Mikroprozessor eines Rechners. Sie bestim-men daher die Datenverarbeitungsbreite, den Befehlssatz, den Registersatz, die Adressie-rungsarten, die Große des adressierbaren Speichers, RISC/CISC-Architektur u.a.m. WelcheKerne sind nun in der Mikrocontrollerwelt sinnvoll und verbreitet? Da in vielen Anwendun-gen keine hohe Rechenleistung gebraucht wird, haben die meisten Mikrocontroller noch einen8-Bit-Kern, sogar 4-Bit-Kerne werden noch haufig eingesetzt. Bei der Arbeitsfrequenz gibtman sich haufig mit bescheidenen Taktfrequenzen zufrieden, z.B. 12 MHz oder weniger. DieAnzahl der rechenintensiven Controlleranwendungen wachst aber – ein Beispiel ist die Steue-rung von KFZ-Motoren – und der Trend geht daher zu schnelleren 16- und 32-Bit-Kernen.Wie bei den Prozessoren findet man bei Mikrocontrollern CISC- und RISC-Kerne.

Die Kerne der Mikrocontroller werden auf ihre spezielle Aufgabe angepasst. So werden z.B.Befehle oder Register erganzt um die spezielle On-Chip-Peripherie anzusprechen. Um eine

Page 3: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

224 13 Mikrocontroller

gute Speicherausnutzung zu erreichen, haben viele Controller Bitbefehle, mit denen einzelneBits direkt gespeichert und manipuliert werden konnen.

Oft wurden die Mikrocontrollerkerne aus vorhandenen Mikroprozessoren abgeleitet. Dies hatverschiedene Vorteile: Es spart fur den Hersteller Entwicklungs-und Testzeit, vielen Benutzernist der Befehlssatz schon bekannt und zum Teil konnen vorhandene Entwicklungswerkzeugebenutzt werden.

Neuere Entwicklungen haben zu leistungsfahigen Mikrocontrollern gefuhrt, die z.B. hardwa-remaßige Unterstutzung fur Fuzzy-Logik oder digitale Signalverarbeitung anbieten.

13.2.2 Busschnittstelle

Da in vielen Fallen letzlich doch weitere externe Bausteine, meist Speicher, gebraucht werden,haben die meisten Mikrocontroller auch eine Busschnittstelle. Bei manchen Mikrocontrollernwird die Busschnittstelle einfach realisiert, indem die Anschlussstifte bestimmter IO-Ports dieSignale fur Datenbus und Adressbus fuhren. Erganzend gibt der Mikrocontroller Steuersignalenach aussen, auch ein Daten/Adress-Multiplexing ist moglich. Ist kein Anschluss von externenSpeicherbausteinen notig, so konnen diese Anschlusse als ganz normale IO-Ports benutztwerden.

Fur anspruchsvollere Schaltungen gibt es bei manchen Mikrocontrollern ein programmierba-res Businterface, das flexibel auf den angeschlossenen Speicher eingestellt werden kann undso z.B. Banke aus mehreren Speicherchips ansprechen kann.

13.2.3 Programmspeicher

Ein Mikrocontroller, der ohne externen Programmspeicher in einem Embedded System arbei-ten soll, muss sein ubersetztes Anwendungsprogramm in einem On-Chip-Programmspeicherhaben. Dieser Speicher muss auch ohne Versorgungsspannung seine Daten halten, kann al-so kein DRAM oder SRAM sein. Die Große der Speicher reicht von wenigen Byte bis zumehreren Mbyte. Folgende Programmspeicher werden eingesetzt:

EPROM und EEPROM Der Mikrocontroller kann beim Kunden programmiert werden,das Programm bleibt anderbar; geeignet fur Entwicklung und Test der Programme.

OTP-ROM Der Mikrocontroller kann einmal beim Kunden programmiert werden; geeignetfur Kleinserien.

Flash-EEPROM Der Mikrocontroller verwaltet den Flash-Speicher selbst und kann uberKommandosequenzen programmiert werden, auch dann wenn er sich schon im fertigenSystem befindet: Feldprogrammierbarer Mikrocontroller oder auch In System Program-ming-Mikrocontroller (ISP-MC).

Masken-ROM Programmcode wird bei der Herstellung des Mikrocontroller eingearbeitet(Maske), und ist nicht mehr anderbar; geeignet fur Großserien.

Nicht-fluchtiges RAM (nonvolatile RAM, NV-RAM) Der Inhalt der Speicherzellen wirdvor dem Ausschalten in EEPROM-Zellen ubertragen.

Page 4: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.2 Typische Baugruppen von Mikrocontrollern 225

Es gibt auch Mikrocontroller, die im Festwertspeicher eine Boot- und Kommunikationsrouti-ne haben (Controller-BIOS) und weiteren Programmcode uber eine Kommunikationsschnitt-stelle in ein internes oder externes RAM laden. Mikrocontroller, die ausschließlich mit einemexternen Programmspeicher arbeiten sollen, werden als ROM-lose Controller auch ganz ohneinternes ROM gefertigt.

13.2.4 Datenspeicher

Um das System einfach zu halten, wird als On-Chip-Datenspeicher meist SRAM verwendet,das ja ohne Refresh auskommt. Fur Daten, die ohne Spannungsversorgung erhalten bleibensollen, besitzen manche Controller einen EEPROM oder NVRAM-Bereich. Die Datenbereicheeines MC werden nach Funktion unterschieden:

Allgemeiner Datenbereich Zwischenspeicherung von Programmdaten,

Special Function Register Zur Konfiguration und Ansteuerung der Peripheriebereichedes Mikrocontrollers,

Registerbanke Fur Zeiger und evtl. auch arithmetisch/logische Operanden,

Stack Fur kurzzeitige Zwischenspeicherung von Daten, in der Große begrenzt,

Bitadressierbarer Bereich Ein Bereich, in dem ohne Verwendung von Masken auf einzelneBits zugegriffen werden kann.

Die Große der On-Chip-Datenspeicher ist sehr unterschiedlich, von wenigen Bytes bis zueinigen Kbyte, in der Regel aber deutlich kleiner als der Programmspeicher. Bei der Adres-sierung von Daten muss zwischen internem und externem Speicher unterschieden werden,die internen und externen Adressbereiche konnen sogar uberlappen. Register und RAM sindnicht unbedingt streng getrennt, bei manchen Mikrocontrollern ist das On-Chip-RAM mitden Registern zu einem großen Register-File zusammengefasst.

13.2.5 Ein-/Ausgabeschnittstellen (Input/Output-Ports)

Input/Output-Ports, kurz IO-Ports, sind fur Mikrocontroller besonders wichtig, sie erlaubenden Austausch digitaler Signale mit dem umgebenden System. Ein Beispiel: Ein Mikrocon-troller, der eine Infrarotfernbedienung steuert, kann uber einen digitalen Eingang feststellen,ob gerade eine Taste gedruckt wird. Uber einen digitalen Ausgang kann er die Sendediode ein-und ausschalten. Uber IO-Ports werden also binare Signale verarbeitet, die mit TTL-Pegelndargestellt werden. Alle Mikrocontroller verfugen daher uber eigene IO-Ports, diese sind mei-stens in Gruppen zu 8 Bit organisiert. Typischerweise gehort zu jedem Port ein Datenregisterund ein Richtungsregister, das die Richtung des Datenaustausches (Ein- oder Ausgabe) fest-legt. Die Portausgange sind in ihrer Schaltungstechnik einfach gehalten: Die Ausgangsstufensind Open-Collector-, Open-Drain- oder Gegentakt-Endstufen. Ports werden auch benutzt,um externe Busbausteine anzusteuern; in diesem Fall findet man auch Tristate-Ausgange.Mikrocontroller-Ports sind oft rucklesbar, d.h. im Ausgabebetrieb kann der anliegende Wert

Page 5: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

226 13 Mikrocontroller

vom Controllerkern wieder eingelesen werden. Dies erspart die zusatzliche Abspeicherung desPortzustands in RAM-Zellen.

Um einen vielseitigen Mikrocontroller zu erhalten, der aber nicht all zu viele Anschlussstiftehat, werden uber die Portanschlussstifte oft alternativ andere Funktionen abgewickelt, z.B.Analogeingang, Zahlereingang oder serielle Datenubertragung. Uber Konfigurationsregisterkann dann per Software die Arbeitsweise dieser Anschlussstifte festgelegt werden.

13.2.6 Zahler/Zeitgeber (Counter/Timer)

Zahler/Zeitgeber-Bausteine sind typische und sehr wichtige Peripheriegruppen, die fast je-der Mikrocontroller besitzt. Schon bei einer einfachen Impulszahlung wird der Nutzen dieserBaugruppe offensichtlich: Ohne den Zahler/Zeitgeberbaustein musste ein Mikrocontroller denbetreffenden Eingang in einer Programmschleife standig abfragen (pollen) und bei jeder zwei-ten Flanke den Wert einer Speichervariablen inkrementieren. Der Zahlerbaustein befreit dieCPU von dieser zeitraubenden Aufgabe.

Das Kernstuck des Zahler/Zeitgeberbausteins ist ein Zahler, der durch eingehende Impulseinkrementiert oder dekrementiert wird (Abb. 13.1). Im Zahlerbetrieb (Counter) kommen die-se Impulse uber einen Anschlussstift von aussen in den Mikrocontroller und werden einfachgezahlt. Im Zeitgeberbetrieb (Timer) werden die Impulse durch das Herunterteilen des internen

Abbildung 13.1: Eine Zahler/Zeitgeber-Einheit. Die Aktivierung des Toreinganges,die Umschaltung zwischen Zahler- und Zeitgeberfunktion und der Teiler werden je-weils durch Konfigurations-Register gesteuert.

Oszillatortaktes gewonnen. Da der Oszillatortakt bekannt ist, sind damit exakte Zeitmessun-gen moglich. Die Umschaltung erfolgt durch einen Multiplexer. Eine Torsteuerung bewirkt,dass nur Impulse auf den Zahler gelangen, wenn der Eingang durch den Toreingang frei-gegeben ist (Gated Timer). Damit kann z.B. festgestellt werden, uber welchen Anteil einerbestimmten Zeitspanne ein Signal HIGH war. Die Umschaltung zwischen Zahler und Zeit-geberfunktion, der Toreingang und der Teilerfaktor werden uber ein Konfigurationsregister(z.B. Special Function Register) programmiert. Die Zahler konnen aufwarts oder abwartslaufen, ihre Zahlregister haben eine Breite von 8 bis 24 Bit. Jeder eintreffende Impuls erhohtbzw. erniedrigt das Zahlerregister um eins. Der Maximalwert fur einen Zahler mit N Bit liegtbei 2N − 1, das nachste Inkrement fuhrt zum Zahleruberlauf (Abb. 13.2).

Page 6: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.2 Typische Baugruppen von Mikrocontrollern 227

Abbildung 13.2: Ein aufwartslaufender Zahler mit Uberlaufund Reload-Wert 0

Beim Uberlauf kann der Zahlerbaustein einen Interrupt auslosen oder einen Pegelwechsel aneinem Anschlussstift bewirken. Nach dem Uberlauf muss die Zahlung nicht unbedingt beiNull beginnen, der Interrupt-Handler kann auch einen anderen Wert ins Zahlerregister laden(Software-Reload). Manche Zahler verfugen uber einen Auto-Reload-Betrieb, auch Hardware-Reload genannt. Dabei wird beim Uberlauf ein Wert aus dem Autoreload-Register ins Zahl-register ubertragen. Der Zahler beginnt danach also nicht beim Startwert Null, sondern beimReload-Wert und entsprechend schneller kommt es zum nachsten Zahleruberlauf. Uber denReloadwert lasst sich im Zeitgeberbetrieb bequem die Zykluszeit des Zahleruberlaufs einstel-len. Die Zeit von einem Zahleruberlauf zum nachsten ist bei einem Zahlregister mit N Bitund einer Zahlerinkrementzeit TI

T = (2N − Startwert) · TI

Die Verwertung des Inhalts eines Zahlerregisters kann auf zwei Arten erfolgen: Durch Captureund durch Compare.

Capture-Modus

Durch ein Capture (Auffangen) wird der momentane Inhalt des Zahlerregisters in ein Capture-Register ubertragen, ohne den Zahler anzuhalten. Das Capture-Register kann von der CPUgelesen werden. Ein Capture kann durch einen Programmbefehl oder ein externes Ereignis,wie z.B. eine Pegelanderung an einem digitalen Eingang, ausgelost werden.

Compare-Modus

Hier wird der Inhalt des Zahlerregisters nach jeder Anderung mit dem Wert in einem Ver-gleichsregister verglichen. Wenn beide Werte gleich sind, tritt ein Compare-Ereignis ein. Die-ses lost, je nach Betriebsart, z.B. einen Pegelwechsel an einem Ausgabestift oder einen Inter-rupt aus. Typische Verwendungen eines Zahlers sind:

• Zahlung von Impulsen,

• Messen von Zeiten,

• Erzeugung von Impulsen,

• Erzeugung von pulsweitenmodulierten Signalen.

Page 7: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

228 13 Mikrocontroller

Wegen der großen Praxisrelevanz dieser Anwendungen haben praktisch alle Mikrocontrollereine mehr oder weniger leistungsfahige Zahler/Zeitgeber-Einheit. Im Folgenden sind dahereinige Anwendungsbeispiele geschildert. Wir gehen in diesen Beispielen davon aus, dass ein16-Bit-Zahler/Zeitgeber zur Verfugung steht, der mit 1 MHz betrieben wird und aufwartszahlt. Ein Zahlerinkrement dauert also 1 μs und der Zahler hat nach 65536 · 1 μs = 65.536 mseinen Uberlauf.

Impulsabstandsmessung, Frequenzmessung

Es gibt Sensoren, die eine Impulsfolge aussenden und ihr Messergebnis durch den Abstandder Impulse ausdrucken. Dies stellt eine sehr robuste und storungssichere Ubertragung darund befreit von allen Problemen, die mit der Ubertragung analoger Messsignale verbundensind. Gerade im industriellen Umfeld ist dies ein großer Vorteil. Der Impulsabstand kann nurmit ausreichender Genauigkeit gemessen werden, wenn die zu messende Impulslange deutlichgroßer ist als die Dauer des Zahlerinkrements. Um den Abstand zweier Impulse zu messen,wurde man den Zahler/Zeitgeber als Zeitgeber betreiben, mit der ersten ansteigenden Signal-flanke ein Capture durchfuhren (oder den Zahler auf Null setzen), mit der zweiten ansteigen-den Flanke wieder ein Capture durchfuhren und die Differenz der beiden Zahlwerte bilden(Abb. 13.3). Die abschließende Multiplikation dieser Differenz mit der Zahlerinkrementzeitvon 1 μs ergibt den gesuchten Impulsabstand. Ein evtl. Zahleruberlauf muss softwaremaßigbehandelt werden.

Abbildung 13.3: Ermittlung des zeitlichen Abstands zweier Impulse durch zweiCapture-Befehle

Beispiel Das erste Capture ergibt 5800, das zweite 7450, es fand kein Zahleruberlauf statt.Der Impulsabstand ist (7450 − 5800) · 1 μs = 1.65 ms.

Als Kehrwert des gemessenen Impulsabstandes ergibt sich sofort die Impulsfrequenz. EineImpulslangenmessung kann ebenso erfolgen, nur muss das zweite Capture nach der fallendenFlanke des Impulses durchgefuhrt werden.

Zyklische Interrupts

Um z.B. ein Anzeigeelement regelmaßig durch den Mikrocontroller zu aktualisieren, kannein zyklischer Interrupt benutzt werden, der regelmaßig durch den Uberlauf eines Zeitgebers

Page 8: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.2 Typische Baugruppen von Mikrocontrollern 229

ausgelost wird. Der Interrupthandler wurde die gewunschte Aktualisierung der Anzeige vor-nehmen. Bei einem 16-Bit-Zahler und einer Zahlerinkrementzeit von 1μs wurde also zyklischnach 65.536 ms eine Aktualisierung der Anzeige vorgenommen. Ist diese Zykluszeit zu groß,so betreibt man den Zeitgeber im Reload-Modus mit einem geeigneten Reload-Wert (Abb.13.4). So wird z.B. ein Reload-Wert von 55536 (der -10000 entspricht) dazu fuhren, dass schonnach 10000 Schritten, also 10 ms, ein Zahleruberlauf stattfindet.

Abbildung 13.4:Der Uberlauf einesZeitgebers kannbenutzt werden umzyklische Interruptsauszulosen.

Ist dagegen die Zykluszeit auch mit Reload-Wert 0 noch zu groß, kann man den Interrupt-handler so programmieren, dass erst nach mehreren Zahleruberlaufen die Aktualisierung er-folgt. Wartet man z.B. vor jeder Aktualisierung 16 mal den Uberlauf ab, so erhalt man eineZykluszeit von 65.536 ms · 16 = 1.0486 s. Eine andere Moglichkeit ist die Aktivierung einesTeilers, falls vorhanden (Abb. 13.1).

Impulszahlung, Impulsdifferenzen

Bewegliche Teile in Maschinen, wie z.B. Robotern, werden haufig mit so genannten Encodernausgestattet. Diese geben bei Bewegung eine bestimmte Anzahl von Impulsen pro mm oderWinkelgrad ab. Um diese Impulse zu erfassen, kann man den Baustein auf Zahlerbetrieb ein-stellen und den Zahlerstand mehrfach durch Capture erfassen (Abb. 13.5). Wenn der letzte

Abbildung 13.5: Impulszahlung miteinem Zahlerbaustein. Jeder einlaufen-de Impuls erhoht den Zahlwert um eins,mit dem Capture-Befehl kann das Zahl-register jederzeit ausgelesen werden.

eingelesene Zahlerstand gespeichert wird, kann aus der Differenz der Zahlerstande der zwi-schenzeitlich zuruckgelegte Weg bzw. Winkel berechnet werden. Fur eine echte Geschwindig-keits- bzw. Winkelgeschwindigkeitsmessung kann ein zweiter Baustein als Zeitgeber betriebenwerden und zyklisch einen Interrupt erzeugen. Man muss dann nur den ermittelten Weg bzw.Winkel durch die verstrichene Zeit dividieren, um die Geschwindigkeit bzw. Winkelgeschwin-digkeit zu erhalten.

Page 9: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

230 13 Mikrocontroller

Pulsweitenmodulation

Es ergibt sich manchmal die Aufgabe, durch einen Mikrocontroller einen angeschlossenenBaustein in Teilleistung zu betreiben. So mochte man z.B. einen Motor nicht immer mit vollerLeistung laufen lassen. Eine Losung mit einem Digital-Analog-Wandler und einem Verstarkerist aufwandig und teuer. Einfacher ist es, ein pulsweitenmoduliertes Signal (PWM-Signal) zubenutzen. Dabei wird die Versorgungsspannung zyklisch fur kurze Zeit abgeschaltet. Das gehtso schnell, dass der Motor nicht ruckelt.1 Durch die zeitweilige Abschaltung wird aber wenigerLeistung ubertragen. Bleibt z.B. der Motor zyklisch fur 3 ms eingeschaltet und danach fur1ms ausgeschaltet, so fehlen 25 % der Leistung, der Motor lauft also noch mit 75 % Leistung.Allgemein ergibt sich das Tastverhaltnis V zu

V =TH

T

wobei TH die Zeitspanne ist in der das PWM-Signal HIGH ist und T die Zykluszeit desPWM-Signals ist. Das Tastverhaltnis liegt zwischen 0 und 1 und gibt den Anteil der aktuellubertragenen Leistung an. Mußte der Mikrocontroller das PWM-Signal softwaremaßig erzeu-gen, so wurde sehr viel Rechenzeit verbraucht. Zum Gluck bietet aber die Zahler/Zeitgeber-Einheit die Moglichkeit, das PWM-Signal selbststandig zu erzeugen. Dazu wird durch denZahleruberlauf ein zyklischer Interrupt erzeugt, der das PWM-Signal auf LOW schaltet. DerReload-Wert bestimmt wieder die Zykluszeit. Das Schalten des PWM-Signals auf HIGH er-folgt durch ein Compare-Ereignis, wobei der Compare-Wert eine Zahl zwischen dem Relaod-Wert und dem Zahlermaximalwert ist (Abb. 13.6).

Abbildung 13.6: Erzeugung eines PWM-Signals: Der Reload-Wert bestimmt die Zy-kluszeit T , der Compare-Wert das Tastverhaltnis V .

Beispiel Der Reload-Wert sei 65036 (-500), das ergibt eine Zykluszeit von 500 μs, also einSignal von 2 kHz. Der Comparewert sei 65236, dann wird immer 200 μs nach dem Reloaddas Signal von LOW auf HIGH geschaltet und bleibt dann weitere 300 μs auf HIGH bis zum

1Falls erforderlich, kann das Signal noch durch ein nachgeschaltetes Integrationsglied bzw. Tiefpassfiltergeglattet werden.

Page 10: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.2 Typische Baugruppen von Mikrocontrollern 231

nachsten Zahleruberlauf mit Reload. Von insgesamt 500 μs ist das Signal also 300 μs HIGH,d.h. das Tastverhaltnis ist

TV =300 μs500 μs

= 0.6

Das PWM-Signal stellt also hier 60% Leistung zur Verfugung.

13.2.7 Analoge Signale

In Embedded Sytems ist es oft erforderlich, mit analogen Signalen zu arbeiten. Solche Signalekennen nicht nur die beiden Bereiche HIGH und LOW, sondern konnen kontinuierlich alleSpannungswerte zwischen 0 Volt und einer maximalen Spannung annehmen. Analoge Sig-nale werden z.B. von Messfuhlern geliefert und reprasentieren dann gemessene physikalischeGroßen. Ein Beispiel dafur ware das Signal eines Temperatursensors. Solche Signale konnenvon Mikrocontrollern mit einem Analogeingang verarbeitet werden. In anderen Fallen er-zeugt der Mikrocontroller mit einem Analogausgang analoge Signale, die dann zur Peripherieubertragen werden, beispielsweise zu einem spannungsgesteuerten externen Oszillator.

Analoge Signale konnen nicht uber IO-Ports ein- und ausgegeben werden, diese verarbeitenja digitale Spannungspegel. Es gibt zwei Moglichkeiten, analoge Signale einzulesen: Analog-Digital-Umsetzer und analoge Komparatoren. Fur die Ausgabe von analogen Signalen gibt esdie Moglichkeit, einen Digital-Analog-Umsetzer zu benutzen oder mit dem schon besprochenenPWM-Verfahren zu arbeiten.

Analog-Digital-Umsetzer

Analog-Digital-Umsetzer, abgekurzt ADU, (engl. Analog/Digital-Converter, ADC) sind Bau-steine, die einen analogen Eingang haben und N digitale Ausgangsleitungen. Ein am Einganganliegendes analoges Signal wird in eine ganze Zahl umgerechnet und in binarer Darstellungan den N digitalen Ausgangsleitungen ausgegeben (Abb. 13.7).

Abbildung 13.7:Ein Analog-Digital-Umsetzer

Die Analog-Digital-Umsetzung hat dann eine Auflosung von N Bit. Das analoge Eingangs-signal Ue muss im Bereich von Umin . . . Umax liegen, die erzeugte digitale Zahl Z liegt fureinen Umsetzer mit N Bit im Bereich 0 . . . 2N − 1. Ein 8-Bit-Umsetzer erzeugt beispielsweiseZahlen im Bereich 0 . . . 255. Die Umsetzung ist eine lineare Abbildung nach der Formel:

Z =Ue − Umin

Umax − Umin(2N − 1)

Page 11: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

232 13 Mikrocontroller

Die Hohe der Quantisierungsstufen ULSB hangt von der Auflosung des Analog-Digital-Wand-lers ab:

ULSB =Umax − Umin

2N − 1

Beispiel An einem ADU mit 10 Bit Auflosung und einem Eingangsbereich von 0..5V liegtein analoges Signal von 3.5V an. Die Umsetzung ergibt einen Digitalwert von Z = 3.5V/5V ·1024 = 717. Die Hohe der Quantisierungsstufen ist 5V/1023 = 0.00489V

Alle Analog-Digital-Umsetzer sind mit Fehlern behaftet. Prinzipiell unvermeidbar ist derQuantisierungsfehler, der durch die Rundung auf eine ganze Zahl entsteht. Der Quantisie-rungsfehler betragt auch bei einem idealen ADU bis zu 0.5ULSB. Dazu kommen Fehler durchFertigungstoleranzen, wie z.B. der Linearitatsfehler. Jeder ADU braucht eine gewisse Zeit furden Wandlungsvorgang. Diese Wandlungszeit begrenzt auch die maximal mogliche AnzahlWandlungen pro Sekunde, die Abtastfrequenz. Die Wandlungszeit hangt stark von der Bauartdes Wandlers ab. Alle ADU brauchen eine externe Referenzspannung und bestimmen dasWandlungsergebnis durch Vergleich mit dieser Referenzspannung.

Viele Mikrocontroller haben einen ADU On-Chip, in der Regel mit einer Auflosung zwischen8 und 12 Bit. Sie wandeln meist nach dem Verfahren der sukzessiven Approximation. Beieinigen Controllern lassen sich Umin und Umax in Schritten programmieren. Damit kann derEingangsbereich aufgespreizt und an das analoge Signal angepasst werden. Das ebenfallserforderliche Abtast-Halte-Glied ist meist auch On-Chip; es sorgt dafur, dass das Signal furden Zeitraum der Wandlung zwischengespeichert wird und konstant bleibt.

Wenn der On-Chip-ADU nicht ausreicht oder keiner vorhanden ist, kann ein externer ADUbetrieben und das Ergebnis uber die IO-Ports des Mikrocontrollers eingelesen werden.

Analoge Komparatoren

Analoge Komparatoren sind einfacher als Analog-Digital-Umsetzer: Sie haben eine digitaleAusgangsleitung und bestimmen nur, ob die anliegende Signalspannung großer oder kleiner alseine Vergleichsspannung ist. Kommt diese Vergleichsspannung von einem programmierbarenDigital/Analog-Umsetzer, so ist mit entsprechenden Algorithmen auch die Bestimmung desunbekannten analogen Signals moglich.

Digital-Analog-Umsetzer

Digital-Analog-Umsetzer, abgekurzt DAU, (engl. Digital/Analog-Converter, DAC) arbeitengenau umgekehrt wie ADUs: Sie erhalten an ihren digitalen Eingangsleitungen eine Ganzzahlin binarer Darstellung und erzeugen am Ausgang die entsprechende analoge Spannung. Dieseergibt sich gemaß:

Ua =Z

2N − 1(Umax − Umin) + Umin

Es sind nur wenige Mikrocontroller mit On-Chip-DAU ausgerustet, es bleiben aber die Al-ternativen eines externen DAU oder des PWM-Verfahrens.

Page 12: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.2 Typische Baugruppen von Mikrocontrollern 233

13.2.8 Interrupt-System

Ein Mikrocontroller verfugt schon auf seinem Chip uber verschiedene vielseitige Peripherie-komponenten. Uber die I/O-Ports konnen weitere, externe Komponenten angeschlossen wer-den. Der Mikrocontrollerkern muss also eine Vielzahl von Subsystemen ansteuern und bedie-nen. Ohne das Interruptkonzept musste die CPU in vielen Abfrageschleifen die Zustandsflagsder Peripheriekomponenten abfragen, wertvolle Zeit ginge verloren (s. auch Kap. 8.1.2). Vieleffizienter ist es, wenn z.B. der Analog-Digital-Umsetzer durch einen Interrupt signalisiert,dass die Wandlung beendet ist und ein Ergebnis vorliegt. Ebenso kann eine Zahler/Zeitgeber-Einheit mit einem Interrupt ein Compare-Ereignis signalisieren. Durch den Interrupt-Betriebwird die Effizienz enorm gesteigert und wegen der vielfaltigen Peripherie spricht hier nochmehr fur das Interrupt-Konzept als bei den Mikroprozessoren. Ein zusatzlicher Aspekt istdie oft geforderte Echtzeitfahigkeit, eine garantierte und sichere Reaktion des Mikrocontrol-lers auf ein Ereignis innerhalb einer definierten maximalen Reaktionszeit. Meldet z.B. derEndschalter eines motorgetriebenen Rolltores, dass das Tor nun (fast) seine Endposition er-reicht hat, muss der Mikrocontroller in der Steuerung innerhalb sehr kurzer Zeit den Motorausschalten.

Wegen der genannten Grunde verfugen fast alle Mikrocontroller uber die Moglichkeit derInterrupt-Verarbeitung. Das Interrupt-System erlaubt es, auf ein Peripherieereignis sofortzu reagieren, ohne die entsprechende Komponente standig abzufragen. Nach der Interrupt-Anforderung wird in der Regel der laufende Befehl noch beendet und danach ein Interrupt-Handler aktiviert, der die Serviceanforderung der Interrupt-Quelle bearbeitet. Die maximaleReaktionszeit lasst sich also uberblicken und bei bekannter Taktfrequenz ausrechnen. EinProblem konnen hier Multiplikations- und Divisionsbefehle darstellen, die oft viele Takte furdie Ausfuhrung brauchen. Manche Mikrocontroller erlauben hier sogar die Unterbrechungdieser Befehle, um die Interrupt-Reaktionszeit klein zu halten. Neben den Peripheriekom-ponenten kann auch die CPU, d.h. der Controllerkern, in bestimmten Situationen, z.B. beieinem Divisionsfehler, eine Ausnahme auslosen. Ausnahmen werden meist etwas anders be-handelt und haben hochste Prioritat. Einen Uberblick uber typische Interruptquellen und dieauslosenden Ereignisse gibt Tabelle 13.1.

Tabelle 13.1: Interrupt- und Ausnahmequellen bei Mikrocontrollern

Quelle EreignisseZahler/Zeitgeber Compare-Ereignis, ZahleruberlaufSerielle Schnittstelle Zeichen empfangen, Empfangspuffer voll,

Sendepuffer leer, UbertragungsfehlerAnalog-Digital-Umsetzer Umsetzung beendetI/O Pin (externes Signal) steigende oder fallende Flanke, HIGH-SignalCPU Divisionsfehler, unbekannter Opcode

Daten-Ausrichtungsfehler

Wegen der vielen moglichen Quellen muss der Controller also mit vielen und evtl. auchgleichzeitigen Interruptanforderungen umgehen. Wie bei den Prozessoren muss also die Mas-kierung, Priorisierung und Vektorisierung der Interruptquellen bewerkstelligt werden. Manfuhrt hier aber keinen externen Interrupt-Controller ein, sondern integriert diesen auf dem

Page 13: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

234 13 Mikrocontroller

Chip. Damit entfallt die Ubertragung der Interruptquellen-Nr. via Datenbus. Die meisten mo-dernen Mikrocontroller haben ein ausgefeiltes und flexibel konfigurierbares Interrupt-Systemmit beispielsweise den folgenden Eigenschaften:

• Jede Interruptquelle kann einzeln aktiviert und deaktiviert (maskiert) werden.

• Fur kritische Phasen konnen zentral alle Interrupts deaktiviert werden.

• Fur jede Interruptquelle kann ein eigener Interrupt-Handler geschrieben werden, Großeund Position im Speicher kann durch das Programm festgelegt werden.

• Fur jede Interruptquelle kann eine Prioritat festgelegt werden, um auch geschachtelteInterrupts zu ermoglichen.

• Das Interrupt-System kann auch im laufenden Betrieb umkonfiguriert werden.

Das Abschalten aller Interrupts ist z.B. wahrend der Konfigurierung des Interrupt-Systemsangebracht. Wie erfolgt der Aufruf des Interrupt-Handlers? Es gibt auch hier mehrere Mog-lichkeiten, z.B.:

Sprungtabelle Fur jede vorhandene Interruptquelle wird zu einer bestimmten, festen Adres-se im Code verzweigt. Dort kann dann ein ganz kurzer Interrupt-Handler oder einSprungbefehl zu einem langeren Interrupt-Handler stehen.

Vektorentabelle In der Interrupt-Vektorentabelle wird fur jeden Interrupt die Einsprung-adresse eines Interrupt-Handlers hinterlegt. Bei Auslosung eines Interrupts wird dorthinverzweigt.

Die Interrupt-Behandlungsruotine muss vor dem Rucksprung in das unterbrochene Programmalle Register und Flags wiederherstellen. Die meisten Mikrocontroller unterstutzen den Pro-grammierer und speichern bei der Auslosung des Interrupts nicht nur die Rucksprungadresse,sondern auch die Flags auf dem Stack. Die Registerinhalte mussen dann mit Transportbe-fehlen in den allgemeinen Speicher oder den Stack gesichert werden. Manche Mikrocontrollerbieten die Moglichkeit, zwischen mehreren Register- Speicherbanken umzuschalten. Der Inter-rupthandler kann dann z.B. zu Beginn der Interruptbehandlung auf eine andere Registerbankschalten und am Ende wieder auf die ursprungliche Bank zuruckschalten. Das Sichern vonRegistern ist dann uberflussig. Mit dieser zeitsparenden Technik sind moderne Controllervielen Mikroprozessoren weit voraus!

13.2.9 Komponenten zur Datenubertragung

Die Moglichkeit des Datenaustauschs mit anderen Bausteinen oder Systemen ist fur Mikro-controller sehr nutzlich, Beispiele sind der Datenaustausch mit PCs, mit anderen Mikrocon-trollern, mit intelligenten Displays, Kartenlesegeraten oder Speichern mit Kommunikations-interface. Der Datenaustausch wird fast immer seriell aufgebaut um mit wenigen Leitungenauszukommen. Fast alle Mikrocontroller sind daher mit irgendeiner Art von serieller Schnitt-stelle ausgestattet. Es sind asynchrone und synchrone Schnittstellen verbreitet, manche Mi-krocontroller haben auch mehrere Schnittstellen. Die Schnittstellen tragen Bezeichnungen

Page 14: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.2 Typische Baugruppen von Mikrocontrollern 235

wie Serial Communication Interface (SCI) oder Universal Synchronous/Asynchronous Recei-ver/Transmitter (USART) oder Asynchronous/Synchronous Channel(ASC). Im Folgendensind die wichtigsten seriellen Schnittstellen kurz beschrieben.

Asynchrones serielles Interface

Jedes Zeichen wird in einem Rahmen ubertragen, der aus einem Startbit, 5 bis 8 Datenbit,einem optionalen Paritatsbit und 1 bis 2 Stoppbits besteht. Das Startbit startet den internenBaudratengenerator, der dann die Abtastung der ubrigen Bits des Datenrahmens synchroni-siert. Das Stoppbit bzw. die Stoppbits grenzen den Datenrahmen gegen den nachst folgendenDatenrahmen ab. Eine Taktleitung wird also nicht gebraucht. Wenn der Baudratengenera-tor programmierbar ist, kann die Baudrate flexibel eingestellt werden, typisch sind Wertezwischen 1200 Baud und 115200 Baud. Wenn man zusatzlich Bausteine zur Pegelanpassungeinsetzt, kann das asynchrone serielle Interface mit RS232-Schnittstellen kommunizieren, z.B.der eines anderen Computers. Dies erklart die Beliebtheit dieser Schnittstelle. Viele Entwick-lungsumgebungen benutzen eine solche Verbindung wahrend der Programmentwicklung: Einso genanntes Monitorprogramm auf dem Controller empfangt das auszufuhrende Programmvom Entwicklungsrechner (meist ein PC), speichert es und bringt es zur Ausfuhrung. Dabeikonnen auch Informationen zuruck zum Entwicklungsrechner ubertragen werden, um z.B.eine evtl. Fehlersuche (Debugging) zu erleichtern.

Inter Integrated Circuit Bus, I2C

Dieser Bus wird meist kurz als I2C-Bus bezeichnet. Er wurde von der Fa. Philips fur dieKommunikation zwischen digitalen Bausteinen auf einer Leiterplatte oder zwischen Bau-gruppen in einem System entwickelt. Er kann nur auf wenige Meter Lange ausgedehnt werdenund ist besonders in der Video- und Audiotechnik verbreitet. Der I2C-Bus ist ein synchro-ner Bus, er benotigt drei Leitungen: Bezugspotenzial (Masse), Serial-Data-Line (SDA) undSerial-Clock-Line (SCL). SCL ist die Taktleitung, sie synchronisiert die Abtastzeitpunktefur gultige Datenbits auf der Datenleitung SDA. Anfang und Ende der Ubertragung werdendurch festgelegte Signalformen auf SCL und SDA gemeinsam synchronisiert. Man erreichtDatenubertragungsraten von maximal 100 kbit/s. Die I2C-Bus-Schnittstellen konnen wech-selnd als Sender (Master) oder Empfanger (Slave) arbeiten, ein Arbitrierungsprotokoll sorgtdafur, dass es immer nur einen Master gibt. Jeder Teilnehmer am I2C-Bus hat eine Adresseund jeder Datensatz beginnt immer mit der Adresse des Empfangers. So konnen leicht vieleI2C-Bausteine verknupft werden. Mittlerweile existiert einige Auswahl an I2C-Komponenten,z.B. Uhren, verschiedene Speicher, Anzeigebausteine, Tastatur-Scanner, ADC, DAC sowieviele spezielle Video- und Audiobausteine.

Synchronous Serial Peripheral Interface, SPI-Bus

Dieser von der Fa. Freescale entwickelte Bus ist fur einen ahnlichen Einsatzbereich gedacht,auch er kann nur wenige Meter uberbrucken. Hier gibt es allerdings fur die beiden Ubertra-gungsrichtungen separate Leitungen: MISO (Master In, Slave Out) und MOSI (Master Out,Slave In). Die Bitsynchronisierung erfolgt uber SCK (Serial Clock). Alle SPI-Komponenten

Page 15: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

236 13 Mikrocontroller

werden uber ein Freigabesignal (Slave Select, SS) aktiviert, so dass ganze Bussysteme auf-gebaut werden konnen. Es werden Datenraten bis zu 1 Mbit/s erreicht, ahnlich wie beimI2C-Bus sind zahlreiche Bausteine mit der SPI-Schnittstelle im Handel.

CAN-Bus

Der CAN-Bus (Controller Area Network) wurde von den Firmen Intel und Bosch ursprunglichfur den Kraftfahrzeugbereich entworfen, wird aber mittlerweile auch in ganz anderen Berei-chen eingesetzt, z.B. zur Steuerung großer Gebaudeheizungssysteme. Meist wird differen-tiell uber die Leitungen CAN-L und CAN-H ubertragen, zusatzlich ist eine Masseleitungvorgeschrieben. Die Ubertragung ist asynchron, es werden Datenubertragungsraten bis zu1 Mbit/s erreicht, wenn die Ubertragungsstrecke nicht großer als 40m ist. Auch fur denCAN-Bus gibt es einen Arbitrierungsprozess, so dass mit mehreren Busmastern gearbeitetwerden kann. Bezuglich der Verarbeitung und Verwaltung der empfangenen Nachrichten un-terscheidet man zwischen BasicCAN und FullCAN. Bei der CAN-Kommunikation werdennicht einzelne Stationen adressiert, sondern es werden priorisierte Nachrichten verschickt.Die Empfanger entscheiden dann anhand von Masken und Identifizierungsbits, ob sie dieNachrichten empfangen und weiterverarbeiten. Fur den Fall, dass mehrere Stationen gleich-zeitig beginnen zu senden, findet ein Arbitrierungsprozess statt. Dabei pruft jeder Sender, obdie von ihm gesendeten Daten korrekt auf dem Bus erscheinen. Falls ja, betrachtet er sich alsBus-Master, falls nein, geht er in den Empfangsmodus und versucht spater, erneut zu senden.Der CAN-Bus hat mittlerweile große Verbreitung gefunden und viele Mikrocontroller bieteneine CAN-Bus-Schnittstelle an.

Weitere Datenubertragungskomponenten

Aus dem PC-Bereich kommt der USB-Bus (Universal Serial Bus). Der USB ist ein bidirektio-naler Bus mit differentiellen Pegeln, bei dem das Taktsignal aus den Datenbits gewonnen wird.Ein USB-Gerat kann einen USB-Hub enthalten, an den dann weitere USB-Gerate angeschlos-sen werden konnen. So lassen sich mit dem USB ganze Baume von USB-Komponenten aufbau-en. Beim USB gibt es mehrere Arten von Kanalen, die verschiedene Datenubertragungsratenanbieten: Low Speed USB mit 1.5 Mbit/s, Medium Speed mit 12 Mbit/s und High SpeedUSB mit 500 Mbit/s. Einige Mikrocontroller konnen als USB-Endgerat arbeiten, andere auchals USB-Hub.

Manche Mikrocontroller besitzen eine IrDA-Schnittstelle fur die drahtlose Ubertragung vonDaten mit Infrarotlicht nach IrDA 1.0 (bis 115,2kbit/s) oder IrDA 1.1 (bis 4 Mbit/s). IrDAarbeitet mit Infrarotlicht von 850 . . . 900 nm.

13.2.10 Bausteine fur die Betriebssicherheit

Da Mikrocontroller auch in Steuerungen eingesetzt werden, deren Fehlfunktion gravierendeFolgen haben kann – denken wir nur an große Maschinen – sind sie zum Teil mit speziellenBausteinen zur Verbesserung der Betriebssicherheit ausgerustet.

Page 16: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.2 Typische Baugruppen von Mikrocontrollern 237

Watchdog-Timer

Ein Mikrocontroller konnte durch einen versteckten Programmfehler oder durch umgebungs-bedingte Veranderungen von Speicher- oder Registerinhalten, z.B. Storsignale, in eine Endlos-schleife geraten. Damit fallt er praktisch aus und die Steuerung ist blockiert. Diese gefahrlicheSituation soll ein Watchdog-Timer (WDT) vermeiden.

Ein Watchdog-Timer ist ein freilaufender Zahler, der bei Uberlauf einen Reset des Mikro-controllers auslost. Im normalen Programmablauf muss daher der WDT regelmaßig durchdas Programm zuruckgesetzt werden um den WDT-Reset zu vermeiden. Dies kann manz.B. in der Hauptprogrammschleife machen, die standig durchlaufen wird. Gerat das Pro-gramm des Controllers dann durch eine Storung ungewollt in eine Endlosschleife, so findetdas Zurucksetzen des Watchdog-Timer nicht mehr statt (es sei denn der Rucksetzbefehl desWDT liegt innerhalb dieser Endlosschleife) und dieser lost nach einer gewissen Zeit ein Resetaus (Abb. 13.8). Nun wird das System neu hochgefahren und initialisiert und kann wiederkorrekt arbeiten.

Abbildung 13.8: Ein Watchdog-Timer muss regelmaßig vom Programm zuruckge-setzt werden, sonst lost er ein Reset aus.

Kritisch ist auch der Ausfall des Oszillatortaktes. Ein Oscillator-Watchdog hat eine eigeneOszillatorschaltung. Er vergleicht standig den Oszillatortakt mit einer eigenen Oszillatorfre-quenz und reagiert bei gravierenden Abweichungen, indem er auf den eigenen Oszillatortaktumschaltet und außerdem ein Reset auslost.

Brown-Out-Protection

Unter ”Brown-Out“ versteht man einen kurzzeitigen Einbruch der Versorgungsspannung un-ter den erlaubten Minimalwert, der aber nicht ausreicht um ein Power-on-Reset auszulosen.Das ist ein kritischer Zustand, da sich z.B. der Inhalt von Speicherzellen verandert habenkonnte. Es ist daher sicherer, nach einem Brown-Out ein Reset auszulosen, um den Mikro-controller neu zu initialisieren. Genau dies tut eine Brown-Out-Protection. Die Schaltschwelleist entweder fest vorgegeben, z.B. bei 3.8V, oder programmierbar.

Uberprufung der Versorgungsspannung

Speziell fur batteriebetriebene Gerate ist ein Baustein zur Uberprufung der Versorgungsspan-nung (Low-Voltage-Detect, LVD) gedacht. Dieser soll ein Absinken der Versorgungsspannung

Page 17: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

238 13 Mikrocontroller

schon dann feststellen, wenn die Spannung noch im zulassigen Bereich ist. Das Absinken kanndann durch den noch einwandfrei funktionierenden Mikrocontroller angezeigt werden, so dassnoch Zeit bleibt, z.B. den Akku zu wechseln.

13.2.11 Stromspar-Betriebsarten

Gerade bei batteriebetriebenen Geraten ist eine niedrige Stromaufnahme sehr wichtig. Hierkommen meist Mikrocontroller in CMOS-Technologie zum Einsatz. Fast alle Mikrocontrollerbieten aber weitere Moglichkeiten an, um die Stromaufnahme zu reduzieren. Man macht sichdabei zunutze, dass die Stromaufnahme von CMOS-Bausteinen in einem weiten Bereich linearmit dem Oszillatortakt ansteigt. Im statischen Betrieb wird dagegen nur ganz wenig Stromverbraucht.2 Man kann also die Stromaufnahme drastisch reduzieren indem man Teile desControllers einfach ”anhalt“. Man findet folgende Maßnahmen:

• Taktabschaltung fur den Kern (CPU),

• Taktabschaltung von On-Chip-Peripherie,

• Oszillatorabschaltung,

• Taktverringerung,

• Gezielte Abschaltung von unbenutzten Komponenten.

Die Bezeichnungen fur diese Stromsparbetriebsarten sind vielfaltig: Idle-Mode, Sleep-Mode,Standby-Mode, Power-Down-Mode u.a.m. Die Aktivierung erfolgt softwaremaßig uber spezi-elle Befehle oder Konfigurationsregister, das Verlassen des Stromsparbetriebes erfolgt durchSoftware-Befehl, falls der Kern noch lauft und sonst durch Interrupt oder Reset. Der Strom-verbrauch kann dadurch zuruckgehen bis auf 1/100000 !

13.3 Softwarentwicklung

Wenn ein Programm fur einen PC entwickelt wird, ist es selbstverstandlich, dass auch dieProgrammentwicklung auf einem PC stattfindet. Der PC hat Bildschirm, Tastatur, Maus,Laufwerke usw. und wird zum Editieren, Testen, Debuggen und Speichern des Programmsbenutzt. Entwicklungssystem und Zielsystem sind also identisch, der erzeugte Maschinencodekann direkt auf dem Entwicklungsrechner ausgefuhrt werden. Besondere Beachtung erfordernnur Befehle, die spezielle Prozessor-Einheiten wie MMX, SSE oder 3DNow! ansprechen.

Bei einer Mikrocontroller-Entwicklung ist die Situation ganz anders: Der Mikrocontrollerkann nicht als Entwicklungssystem benutzt werden, weil er in der Regel weder Bildschirmnoch Tastatur hat. Außerdem wird ein Mikrocontroller nicht großer als notig ausgewahlt,auf dem fertigen System ist also kein Platz fur platzraubende Entwicklungswerkzeuge. Manbraucht also einen separaten Entwicklungsrechner, z.B. einen PC. Das Zielsystem ist aber

2Der Grund dafur liegt in der Bauweise der Feldeffekt-Transistoren, deren Gate nichtleitend ist, so dassder Strom hauptsachlich durch das Umladen der Kapazitaten entsteht.

Page 18: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.3 Softwarentwicklung 239

hinsichtlich Prozessor, Befehlssatz und Peripherie vollig verschieden vom Entwicklungssy-stem. Der Maschinencode wird durch einen Ubersetzer auf dem Entwicklungssystem erzeugt,kann aber nicht mehr auf dem Entwicklungssystem ausgefuhrt werden, man betreibt cross-platform-Entwicklung. Aus diesem Grund braucht man fur Mikrocontroller-Entwicklungenspezielle Werkzeuge und die Hersteller bieten eine ganze Palette davon an. Besonders wichtigsind dabei die Moglichkeiten zur Fehlersuche. Kaum ein Programm lauft gleich fehlerfrei,meistens ist eine langere Phase des Testens und Fehlersuchens notig.

Die Softwareentwicklung fur Mikrocontroller und Embedded Systems erfolgte fruher uberwie-gend in Assembler. Assemblersprache bietet den Vorteil absoluter Transparenz und maximalerKontrolle uber das Programm. Ein gut geschriebener Assemblercode ist meistens auch kurzerund effizienter als der von einem Hochsprachen-Compiler erzeugte. Ein Beispiel dafur ist dieParameterubergabe uber Register, die wir in den Code-Beispielen zu unseren Beispielarchi-tekturen diskutiert haben. (Abschnitt 9.1.8) Ein Assembler und Linker wird meistens vomHersteller des Mikrocontrollers mitgeliefert.

Bei großeren Programmen wird die Programmierung in Assembler muhsam und unubersicht-lich. Fehler sind jetzt schwerer zu finden. Fur mathematische Operationen, wie beispielsweisedas Wurzelziehen, braucht man außerdem Bibliotheken, wenn man nicht gerade ein ganzhartgesottener Programmierer ist. Deshalb kommen heute meistens Hochsprachen-Compilerzum Einsatz. Die meist benutzte Programmiersprache ist C, es wird aber auch Basic, Java,Pascal und zunehmend C++ benutzt. Eine haufige Vorgehensweise ist, das Programm in Czu schreiben und anschließend einzelne zeitkritische Abschnitte durch Assembler zu ersetzen.Nach der Ubersetzung fugt dann der Linker die Codeabschnitte zusammen. Compiler sindbeim Hersteller des Mikrocontrollers oder bei Drittanbietern erhaltlich. Es gibt fur vieleController auch kostenlose Compiler, wie zum Beispiel den GNU-Compiler GCC.

13.3.1 Das Einspielen des Programmes auf das Zielsystem

Controller mit internem Programmspeicher

Fur Mikrocontroller mit internem Programmspeicher stehen verschiedene Varianten zur Ver-fugung. Ist der Programmspeicher ein maskenprogrammiertes ROM, kann das bei der Her-stellung eingegebene Programm nicht mehr geandert werden. Ist es dagegen ein EPROM(s. Kap. 4), so kann es im Entwicklungslabor mit UV-Licht geloscht und neu beschriebenwerden. Noch praktischer sind die heute ublichen Mikrocontroller mit internem EEPROM-oder Flash-Programmspeicher: Sie konnen einfach und schnell elektrisch geloscht und neubeschrieben werden. Die Hersteller bieten dazu passende Programmiergerate an. Bei den sogenannten Piggyback-Gehausen sind die Leitungen, die sonst zum internen ROM fuhren andie Gehauseoberseite zu zwei Reihen von Anschlussstiften gefuhrt. In diese kann dann einStandard-EPROM oder EEPROM eingesetzt werden. In allen Fallen kann das Programm sooft wie notig geandert und in den Programmspeicher ubertragen werden. Man kann Testlaufein Echtzeit und mit echter Peripherie machen. Der Nachteil liegt darin, dass man keine wei-tere Kontrolle uber das einmal gestartete System hat. Einzelschrittbetrieb, Breakpoints, dieAusgabe von Register- oder Speicherinhalt sind nicht moglich, die Fehlersuche ist also sehrmuhsam. Weiterhin gibt es einige Mikrocontroller als OTP-Versionen (One Time Program-mable). Sie sind fur die ersten Praxistests und fur Kleinserien gedacht.

Page 19: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

240 13 Mikrocontroller

Bootstrap

Den Bootstrap-Mode bieten nur einige Mikrocontroller an. Diese haben in einem internenROM einen so genannten Bootloader gespeichert, ein kleines Programm, das nach dem Ein-schalten zunachst uber eine serielle Schnittstelle das auszufuhrende Programm ladt und iminternen Programmspeicher ablegt. Der Programmspeicher ist hier aus RAM-Bausteinen auf-gebaut, so dass man ganz ohne Programmiergerat auskommt. Fur den Betrieb dieser Mikro-controller reicht tatsachlich ein Entwicklungsrechner mit seriellem Kabel und entsprechenderSoftware aus, was sie fur manche Zwecke sehr interessant macht.

Controller mit externem Programmspeicher

Hier bieten sich fur die Entwicklungsphase weitere Moglichkeiten. Naturlich kann man im-mer wieder das Programm nach einer Anderung in einen EPROM oder EEPROM-Bausteinubertragen, diesen in den externen Speichersockel stecken und das Programm testen. Beque-mer ist es aber, einen EPROM-Simulator oder einen RAM-Simulator zu verwenden. Diesebesitzen einen Speicher fur das Mikrocontroller-Programm, der vom Mikrocontroller gelesenund vom Entwicklungsrechner beschrieben werden kann. Der externe Programmspeicher wirdaus dem Sockel entnommen und stattdessen wird der Stecker des EPROM-Simulators dortaufgesteckt. Der EPROM-Simulator liefert nun das Programm fur den Mikrocontroller (Abb.13.9). Nach einer Anderung kann das Programm schnell und ohne mechanischen Eingriff vomEntwicklungsrechner in den EPROM-Simulator geladen und wieder ausgefuhrt werden.

Abbildung 13.9: Ein EPROM-Simulator ersetzt in der Testphase den externen Spei-cher.

13.3.2 Einschub: Die JTAG-Schnittstelle

Digitalbausteine werden immer komplexer und haben auch immer mehr Anschlussleitun-gen. Die Gehause fuhren die Anschlussleitungen mit immer kleineren Abstanden nach außen,wobei auch die Gehauseunterseiten mit Leitungen bestuckt sind. Einen gefertigten Chip inklassischer Art mit einem Nadelbettadapter zu testen, wird also immer schwieriger. Nochkomplexer wird die Situation auf den modernen Platinen. Mehrere Chips sitzen dichtge-drangt auf mehrlagigen Platinen und von den zahlreichen Verbindungsleitungen verlaufen

Page 20: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.3 Softwarentwicklung 241

viele im Inneren zwischen den Platinen. Unter diesen Umstanden ist es kaum noch moglich,die gewunschten Leitungen fur einen Test zu kontaktieren.

Seit Mitte der 80er Jahre entwickelte eine Gruppe von Firmen, die Joint Test Action Group,kurz JTAG, an einem neuen Verfahren: Die Idee war, die Ausgangsleitungen schon im Innerender Chips abzufragen und die Information seriell nach außen zu leiten. Umgekehrt solltees auch moglich sein, die Eingangsleitungen mit seriell eingespeisten Signalen (Stimuli) zuversorgen und die Reaktion des Chips zu testen. Dazu werden chiptintern in alle Ein- undAusgangsleitungen so genannte Boundary-Scan-Cells, kurz BSC, eingeschleift. Die Boundary-Scan-Zellen sind durch eine serielle Datenleitung verbunden. Diese Datenleitung geht durchden TDI-Eingang (Test Data In) in die Zelle hinein, durch den TDO-Ausgang (Test DataOut) wieder hinaus und weiter zur nachsten Zelle. So werden alle relevanten Ein-/Ausgange ineine große Schleife gelegt, den Boundary Scan Path, und konnen uber die serielle Datenleitungerreicht werden.[2] Uber den so genannten Test Access Port, kurz TAP spricht ein Testgerat

Abbildung 13.10: Digitalbaustein mit JTAG-Schnittstelle. Die Ein- und Ausgangs-leitungen sind durch den Boundary Scan Path verbunden (TDI/TDO).

(haufig ein PC) die JTAG-Schnittstelle des Bausteines an. (Bild 13.10) Die Funktion der funfTAP-Leitungen ist:

TDI Test Data in

TDO Test Data out

Page 21: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

242 13 Mikrocontroller

TCK Test Clock, Arbietstakt der JTAG-Schnittstelle

TMS Test Mode Select, unterscheidet Befehl einlesen / Befehl ausfuhren

TRST Test Reset, optionales Signal, versetzt die Schnittstelle in den Anfangszustand

Die Boundary-Scan-Zelle enthalt zwei interne Flipflops um Systemzustande zu speichern, dasScan-Flipflop und das Test-Flipflop. Die Zelle hat folgende Funktionalitaten:

NormalbetriebKein Testbetrieb, die Signale des Chips werden von DI nach DO durchgeleitet.

Auffangen (Capture)Der Zustand des DI-Signals wird im Scan-Flipflop gespeichert. Damit kann bei den Eingangendas extern anliegende Signal und bei Ausgangen das von der Chiplogik kommende Signal zurUberprufung gespeichert werden.

Scan-FunktionDer Zustand der Datenleitung TDI wird in das Scan-Flipflop gespeichert. Da außerdem derAusgang des Scan-Flipflops mit TDO verbunden ist, werden bei dieser Operation alle Da-tenbits in die nachste BSC ubertragen. Der ganze Boundary Scan Path arbeitet dabei wieein großes Schieberegister. Wird dies mehrfach wiederholt, konnen ganze Bitketten in dieBoundary Scan Cells hinein geschrieben oder heraus gelesen werden.

AuffrischenDer Zustand des Scan-Flipflops wird an das Test-Flipflop weitergegeben. Vorbereitung desTestbetriebs nachdem mit der Scan-Funktion die Bitmuster in die BSCs gelangt sind.

TestbetriebDer Zustand des Test-Flipflops wird auf den Ausgang DO gegeben. Damit wird ein Stimulusan das System gegeben. Bei Eingangen gelangt der Stimulus an die Chiplogik, bei Ausgangenauf die Leitung.

Mit diesen funf Funktionen konnen nun die Funktionen der gefertigten Chips getestet wer-den. Dazu werden nach Vorgabe der Konstrukteure in langen Sequenzen Signale an die Ein-gange der Schaltung gebracht (Stimuli) und die Reaktion der Schaltung an den Ausgangenwieder abgegriffen. Die Ergebnisse werden dann mit vorgegebenen Tabellen verglichen. Esist auch moglich eine Testsequenz in der Chip-Logik zu verankern, die beim Power-on-Resetselbststandig durchlaufen wird, der so genannte Build-In Selftest (BIST). Moglich ist es auch,mehrere Bausteine mit TAP gemeinsam zu testen. Die TDI/TDO-Leitung wird dann in ei-ner Schleife durch die TAPs aller Bausteine gefuhrt. Dadurch wird es zum Beispiel moglich,auf einer Platine mehrere Chips und die Verbindungsleitungen der Platine zu prufen. Manerhalt also hervorragende Testmoglichkeiten und braucht dazu nicht mehr als die 5 seriellenLeitungen zum TAP. Zusatzlich gibt es eine Reihe von Befehlen, die ein JTAG-Controllerausfuhren kann.[2] Damit kann dann zum Beispiel ein bestimmter TAP vom aktuellen Testausgenommen werden.

Die JTAG-Schnittstelle hat sich bei Mikroprozessoren und Mikrocontrollern weitgehend durch-gesetzt. Man hat daher bald die Funktionalitat uber die ursprungliche Aufgabe des Chiptestshinaus erweitert. Speziell fur Mikrocontroller wurden via JTAG ganz neue Moglichkeiteneroffnet:

Page 22: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.3 Softwarentwicklung 243

• Programme in den Flash-Speicher zu ubertragen

• Die Abarbeitung des Programmes zu verfolgen (Trace Mode)

• Breakpoints zu setzen und das Programm im Einzelschritt auszufuhren

Das ist ein großer Vorteil, den viele integrierte Entwicklungsumgebungen fur Mikrocontrollerausnutzen. Damit lassen sich komfortable Debugger anbieten, die das Austesten der Program-me auf dem Zielsystem ermoglichen, ein In-System-Debugging. Die Software-Entwicklungwird damit wesentlich erleichtert.

13.3.3 Programmtest

Simulation

Ein sehr preiswertes Hilfsmittel ist der Simulator. Er ist ein reines Software-Werkzeug furden Entwicklungsrechner. Man kann damit alle Codesequenzen testen, die sich im Kern desMikrocontrollers abspielen. Echtzeitverhalten laßt sich nicht testen, ebensowenig Programm-befehle, die Peripheriekomponenten ansprechen. Der Simulator ist also ein Werkzeug mit engbegrenzten Verwendungsmoglichkeiten.

Wenn man mit seiner Entwicklung etwas weiter ist, muss man den Mikrocontroller auch inseiner Systemeinbettung testen. Das Vorgehen hangt nun davon ab, ob das Programm iminternen oder externen Programmspeicher liegt. Ein kompaktes Programm kann vollstandigim internen Programmspeicher des Mikrocontrollers liegen, ein umfangreiches Programmmuss dagegen in einem externen Programmspeicher untergebracht werden. Fur diese beidenFalle stehen unterschiedliche Entwicklungswerkzeuge zur Verfugung.

Evaluation-Board

In Evaluation-Boards sind die Mikrocontroller in eine vollstandige und funktionierende Schal-tung integriert. Alle Ein- und Ausgange des Mikrocontrollers sind nach aussen gefuhrt, sodass eine vollstandige Verbindung zum Zielsystem hergestellt werden kann. Das Evaluation-Board besitzt eine serielle Schnittstelle fur die Verbindung zum Entwicklungsrechner undeinen erweiterten Programmspeicher, auf dem ein Monitor-Programm residiert. Das Monitor-Programm empfangt das auszufuhrende Mikrocontroller-Programm vom Entwicklungsrech-ner, speichert es und startet auf Kommando dessen Ausfuhrung. Die Ausfuhrung kann vomMonitor-Programm uberwacht werden. Durch die Ruckubermittlung von Daten zum Ent-wicklungsrechner bieten Monitor-Programme z.T. komfortable Unterstutzung, wie z.B.

• Anzeige und Anderung von Register- und Speicherinhalten,

• Einzelschrittbetrieb,

• Setzen und Loschen von Breakpoints,

• Assemblieren und Disassemblieren einzelner Zeilen,

• Direkter Zugriff auf Peripherie.

Page 23: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

244 13 Mikrocontroller

Evaluation-Boards sind recht beliebte und nicht allzu teure Hilfsmittel, die z.T. auf sehrkleinen Platinen aufgebaut sind und komplett in ein Zielsystem eingesteckt werden. Sie sindfur die meisten Tests geeignet, Einschrankungen kommen allerdings zustande, wenn nichtwirklich alle Leitungen des Mikrocontrollers herausgefuhrt sind.

In-Circuit-Emulatoren

In-Circuit-Emulatoren, kurz ICE, sind die teuersten und leistungsfahigsten Entwicklungs-werkzeuge fur Microcontroller. Ein In-Circuit-Emulator hilft auch bei schwer zu findendenFehlern, die z.B. nur gelegentlich auftreten. Der ICE emuliert einen Mikrocontroller wirk-lich vollstandig, d.h. mit allen Signalen und mit echtem Zeitverhalten. Beim Betrieb wirdder echte Mikrocontroller aus dem Sockel des Zielsystems gezogen und stattdessen der An-schlussstecker des ICE eingesteckt (Abb. 13.11). Man kann also mit dem fertigen Zielsystem,einschließlich aller Peripheriesignale, testen, und das ist ein großer Vorteil.

Abbildung 13.11: Ein In-Circuit-Emulator ersetzt in der Testphase den komplettenMikrocontroller und bietet weitgehende Debug-Moglichkeiten.

Der In-Circuit-Emulator ist ein eigener Computer, oft enthalt er einen Controller aus derFamilie des emulierten Controllers, der das Programm ausfuhrt. Der In-Circuit-Emulator istso schnell, dass er in Echtzeit das Programm abarbeitet und gleichzeitig komfortable Mog-lichkeiten des Debuggens bietet. So kann man komplexe Haltebedingungen formulieren, diesich nicht nur auf Register- oder Speicherinhalte beziehen, sondern z.B. auch auf IO-Portsoder Zahlerstande. Ebenfalls sehr nutzlich ist eine Trace-Funktion, die ein Protokoll allerAktivitaten, wie z.B. Speicherzugriffe, Interrupts, Portzugriffe u.a.m. erstellt. Dieses Protokollergibt z.B. auch die Laufzeit von Programmabschnitten.

13.3.4 Integrierte Entwicklungsumgebungen

Eine Softwarentwicklung fur einen Mikrocontroller erfordert viele Schritte. Zunachst muss einProgrammentwurf gemacht werden, spater werden erste Teile des Codes editiert, ubersetztund getestet. Am Ende steht die Freigabe (Release) und die Dokumentation. Haufig gibt esverschiedene Varianten, die verwaltetet werden mussen und bei einem langeren Lebenszyklus

Page 24: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.3 Softwarentwicklung 245

braucht man eine Versionsverwaltung. Wenn mehrere Entwickler an dem Projekt arbeiten,mussen deren Beitrage zusammengefuhrt (integriert) werden.

Integrierte Entwicklungsumgebungen, auch IDE (Integrated Development Environment) ge-nannt, bieten alle diese Funktionen in einem System. Zum Editieren steht zunachst ein kom-fortabler Editor zur Verfugung, in dem mehrere Quelltexte gleichzeitig geoffnet gehalten wer-den konnen. Fur sein Entwicklungsvorhaben definiert man ein so genanntes Projekt. Darinwird festgelegt, welche Hochsprachen- und Assembler-Dateien bei der Code-Erzeugung einge-schlossen werden sollen. In den Projekteinstellungen gibt man genau den Typ des benutztenMikrocontrollers an. Die IDE bietet Bibliotheksfunktionen an, die ebenfalls zum Projekt hin-zugefugt werden. Sehr nutzlich sind auch die Header-Dateien, in denen die Adressen dertypspezifischen Peripherie-Register auf entsprechende Namen zugewiesen werden. Der Pro-grammierer kann dann mit diesen Namen arbeiten und muss nicht die Hardwareadresseneintragen. Zum Beispiel wurde man das Richtungsregister von IO-Port2 am MSP430 nichtunter 0x002A ansprechen sondern mit dem Symbol P2DIR. Die IDE fugt exakt die passendeHeader-Datei ins Projekt ein.

Abbildung 13.12: Oberflache der IAR Embedded Workbench IDE. Die IDE befindetsich gerade im Debug-Modus, zu sehen sind die Register und ein Ausschnitt aus demSpeicher des angeschlossenen Systems.

Bei der Ubersetzung kann man einzelne Dateien oder aber das ganze Projekt ubersetzen. Im

Page 25: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

246 13 Mikrocontroller

zweiten Fall werden alle Quelldateien assembliert bzw. compiliert und anschließend gelinkt(zusammengefugt). Wenn ein Mikrocontrollerboard angeschlossen ist, gibt man der IDE dieArt der Verbindung an: Seriell, parallel, JTAG usw. Die IDE ladt dann auf Klick das Pro-gramm in den Controller und fuhrt es aus. Besonders gut ist es, wenn auch ein echtes Debug-ging im Controller unterstutzt wird, z. B. via JTAG-Schnittstelle. In diesem Fall kann mansogar auf der Zielhardware Breakpoints setzen und im Einzelschritt-Modus das Programmdurchgehen. Wahrenddessen kann man die Register und den Speicher betrachten. Das istbei der Fehlersuche eine große Hilfe. Abbildung 13.12 zeigt das Arbeitsfenster der IAR Em-bedded Workbench IDE des Herstellers IAR Systems, mit der die MSP430-Codebeispielefur dieses Buch entwickelt und getestet wurden. Manche Entwicklungsumgebungen, wie zumBeispiel das Codewarrior Development Studio von Freescale Semiconductor, enthalten aucheinen Simulator. Dann kann auch ohne echtes Zielsystem schon ein Teil des Codes getestetwerden.

Eine IDE ubernimmt weitere Aufgaben, zum Beispiel das Abzahlen von Arbeitstakten furbestimmte Codeabschnitte. Sie kann auch hilfreich sein, wenn bei der Mikrocontrollerhardwa-re ein Typwechsel stattfindet. Dann konnen die Hochsprachenanteile vielleicht ubernommenwerden, wenn die Header-Dateien ausgetauscht werden. Manche IDEs unterstutzen auch Ar-beitsraume (Workspaces), die dann wiederum mehrere Projekte enthalten konnen. Damitkann man gut Entwicklungsarbeiten verwalten, bei denen mehrere Versionen einer Softwareerzeugt werden, die aber auch gemeinsame Dateien benutzen.

13.4 Fallbeispiel: Infineon C167

Zu Beginn der 90er Jahre hatte ein typischer Mikrocontroller einen 8-Bit-CISC-Kern, derz.B. mit 1 Mhz getaktet wurde. Moderne Mikrocontroller sind wesentlich leistungsfahiger:Wir finden 16- und 32-Bit-Kerne, die deutlich hoher getaktet werden. Außerdem ist in vielenmodernen Mikrocontrollern echte RISC-Technologie zu finden, so dass die Rechenleistung umFaktor 10 bis 100 angewachsen ist. Dazu kommen Verbesserungen in der Peripherie.

Als Beispiel fur einen leistungsfahigen universellen 16-Bit-Mikrocontroller soll hier der C167des Herstellers Infineon Technologies betrachtet werden. Er gehort zur C166-Familie, derenerster Typ der 80C166 war. Die Familie umfasst weiterhin die Mikrocontroller C165, C161,C163 und C164, die sich in Art und Große der internen Speicher, der Peripherieausstat-tung, der Betriebsspannung und der Taktfrequenz unterscheiden. Die Bezeichnungen sind alsSammelbezeichnungen zu verstehen, denn alle Mikrocontroller der Familie sind wiederum inmehreren Modellvarianten lieferbar. Die jungsten Mitglieder der Familie sind die Mikrocon-troller XC161, XC164 und XC167, sie sind vielen Bereichen stark verbessert (s. S. 260).

Der C167 ist ein 16-Bit-Mikrocontroller der neueren Generation und in seinem Kern sindschon viele RISC-Technologien zu finden. Dieser schnelle RISC-Kern macht ihn sehr per-formant, so dass er in Echtzeitanwendungen, z.B. Motorsteuerungen und Mobiltelefonen,verwendet werden kann. Das Blockdiagramm in Abb. 13.13 gibt einen Uberblick uber dieBaugruppen des C167. In dem C166-Kern gibt es einen integrierten Interrupt-Controller undeinen so genannte Peripheral Event Controller. Separate Busse binden Programmspeicher,internes RAM und den sehr flexiblen externen Buscontroller an den Kern an. Die reichhalti-ge Peripherie enthalt einen Analog-Digital-Umsetzer mit 10 Bit Auflosung und 16 Kanalen,

Page 26: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.4 Fallbeispiel: Infineon C167 247

Abbildung 13.13: Blockdiagramm des C167 CR. Abbildung mit freundlicher Geneh-migung des Herstellers Infineon Technologies AG.

acht E/A-Ports, acht Zahler/Zeitgeber-Einheiten und eine PWM-Einheit mit vier Kanalen.Zur Kommunikation ist eine asynchrone und eine synchrone Schnittstelle sowie eine CAN-Busschnittstelle vorhanden. Die Oszillator-Einheit enthalt eine Phase-Locked-Loop-Schaltung(PLL), die Betriebssicherheit wird durch einen Watchdog-Timer erhoht [18], [33]. Der C167soll nun im Einzelnen vorgestellt werden.

13.4.1 Kern

Die ALU kennt neben den ublichen Operationen eine große Palette von Bitbefehlen, die gera-de bei Steuerungsaufgaben haufig eingesetzt werden konnen. Dadurch kann z.B. ein Steuerbitfur einen Peripheriebaustein in einem Befehl modifiziert werden, ohne dass Masken gebildetwerden mussen. Ein Barrel-Shifter ermoglicht die Ausfuhrung von Schiebe und Rotations-befehlen auch uber mehrere Bits in einem Takt. Erganzt wird die ALU durch eine spezi-elle Multiplikations-/Divisionshardware. Die C167-CPU kennt keine festen Allzweckregister!Stattdessen wird die Technik der Registerfenster benutzt (s. Abschn. 7.4): Der CPU wirdein Ausschnitt aus dem internen RAM als Registerstapel verfugbar gemacht. Dieses Regis-terfenster umfasst 16 Register zu je 16 Bit, die byte- oder wortweise angesprochen werdenkonnen (Abb. 13.14). Man spricht hier auch von einer Speicher-Speicher-Architektur. Das Re-gisterfenster kann uber das Register CP (Context Pointer) flexibel im internen RAM plaziert

Page 27: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

248 13 Mikrocontroller

Abbildung 13.14: Die Allzweck-register des C167 werden alsAusschnitt (Registerfenster) desinternen RAMs realisiert.

werden. Damit kann bei einem Kontextwechsel ein Satz von Variablen aufbewahrt werden.Durch Uberlappung der Registerfenster kann eine schnelle Parameterubergabe bei einem Un-terprogrammaufruf erreicht werden. Diese Technik wurde fur ursprunglich RISC-Prozessorenentwickelt (s. Abschn. 7.4 ).

Der C167 kennt eine große Zahl von Special Function Registern (SFR) uber die der Controllerkonfiguriert und gesteuert wird. Die SFR werden z.B. benutzt, um die zahlreichen Periphe-rieblocke auf bestimmte Betriebs-Parameter einzustellen. Dies gilt fur die Baudraten derSchnittstellen, die Vorteiler der Zahler/Zeitgeber, die Steuerregister der A/D-Wandler u.a.m.Die SFR sind der Schlussel zur Bedienung des C167 und ihre Bedienung ist das tagliche Brotdes Entwicklers. Einige SFR gehoren nicht zur Peripherie, sondern steuern den Kern des C167(s. Tab. 13.2).

Tabelle 13.2: Special Function Register des C167-Kerns

IP Instruction Pointer, Zeiger auf nachsten BefehlCSP Code Segment Pointer, Zeiger auf aktuelles CodesegmentCP Context Pointer, Zeiger auf aktuelles RegisterfensterDPP Data Page Pointer, Zeiger auf aktuelle Datenseite (Page)SP, STKOV, STKUN Stackpointer, Stackoverflowpointer, StackunderflowpointerPSW Program Status Word, FlagregisterSYSCON Systemkonfiguration der CPUMDL, MDH, MDC Daten und Steuerregister fur Multiplik.-/DivisionshardwareBUSCON0..BUSCON4, Parameter Buskonfiguration AdressbereicheADDRSEL1..ADDRSEL4 Definition externe Adressbereiche

Der Kern des C167 ist eine RISC-CPU mit 16 Bit Verarbeitungsbreite und einer vierstufigenBefehlspipeline. Diese besteht aus den Verarbeitungsstufen:

Page 28: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.4 Fallbeispiel: Infineon C167 249

1. Befehl holen (Instruction Fetch) Ein Befehl wird aus dem Programmspeicher (internesRAM / internes ROM oder externer Speicher) eingelesen, Adressierung uber die Regis-ter IP und CSP (s. Tab. 13.2).

2. Dekodieren (Decode) Identifizieren des Befehls, und gegebenenfalls weitere Aktivitatenwie z.B. Operanden lesen, Stackpointer andern, Sprungadressen laden.

3. Ausfuhren (Execute) Ausfuhrung des Befehles.

4. Zuruckschreiben (Write Back) Ergebnisse in Zielregistern abgelegen bzw. Befehl ab-schließen.

Die Funktion einer Pipeline ist in Kap. 11.1 erklart, hier soll nur auf einige Besonderheitender Pipeline in der C166-Familie hingewiesen werden. So werden die so genannten injizier-ten Befehle intern generiert und direkt in die Dekodierungsstufe eingeschrieben. Es wirdbeispielsweise ein Transportbefehl injiziert, wenn durch einen Interrupt der PEC-Service aus-gelost wird. Ein NOP (Leerbefehl) wird injiziert, wenn wegen eines Sprungbefehles ein schoneingelesener Befehl unwirksam gemacht werden muss. Bei Wiederholungsschleifen kann dasallerdings meistens vermieden werden: Ein Sprungziel-Cache speichert namlich den Befehl,der am zuletzt benutzten Sprungziel steht. Wird erneut zu diesem Sprungziel verzweigt, sowird der dort stehende Befehl aus dem Cache geholt und injiziert, der Fetch-Zyklus entfallt.

Die Pipeline des C167 kann allerdings in die gleichen Schwierigkeiten geraten wie jede anderePipeline, z.B. durch Datenabhangigkeiten (s. S. 185). Ein Problem durch eine Datenabhangig-keit entsteht z.B., wenn durch einen Befehl ein Zeigerregister verandert wird, dessen Inhaltim unmittelbar folgenden Befehl verwendet wird. Das Zuruckschreiben des neuen Wertesin das Register erfolgt ja erst in der letzten Stufe der Pipeline, gleichzeitig ist aber derFolgebefehl schon in der Ausfuhrungsstufe. Bei seiner Ausfuhrung wurde dann ein veralteterWert benutzt, das Ergebnis ware fehlerhaft. Dies betrifft den Stackpointer (SP), den ContextPointer (CP) und die Data Page Pointer (DPP) [21]. Wird eines dieser Register beschrieben,so muss der nachfolgende Befehl unabhangig von diesem Register sein; ist er das nicht, somuss auf Assemblerebene ein anderer Befehl eingefugt werden. Die Compiler fur die C166-Familie erledigen das selbststandig, bei Assemblerprogrammierung ist hier allerdings Vorsichtgeboten. Weitere Architekturmerkmale, die die Ausfuhrungsgeschwindigkeit verbessern, sindein flexibler Vergleichs-Sprungbefehl, eine optimierte Erkennung von Schleifenenden und einschnell dekodierbares Maschinencode-Format.

Der CPU-Takt wird aus einem Oszillatortakt flexibel erzeugt betragt bis zu 33 MHz. Bei33 MHz CPU-Takt dauert ein CPU-Zyklus 30 ns. Ein Maschinenzyklus entspricht zwei CPU-Takten. Der C167 kann die meisten Befehle in einem Maschinenzyklus, also 60 ns, ausfuhren.Zum Vergleich: Ein SAB80515-Microcontroller (8051-Familie) braucht bei 12 Mhz fur eineBefehlsausfuhrung im Regelfall 1000 ns! Die sehr viel kurzere Ausfuhrungszeit des C167entsteht nicht nur durch seine hohere Taktfrequenz, sondern vor allem durch seine RISC-Architektur. Einige Befehle brauchen trotzdem etwas mehr Zeit, eine 32-Bit/16-Bit-Divisionbraucht zehn Maschinenzyklen, eine 16-Bit x 16-Bit-Multiplikation funf. Beim XC-167 ist dieAusfuhrungsgeschwindigkeit weiter verbessert (s. S. 260). Der Befehlssatz des C167 kann infolgende Gruppen eingeteilt werden:

Arithmetische Befehle Addition, Subtraktion, Multiplikation, Division, Negieren in 8/16-Bit-Breite

Page 29: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

250 13 Mikrocontroller

Bitweise logische Befehle UND-, ODER-, Exclusiv-ODER-Verknupfung, 1er-Komplement

Vergleiche und Schleifensteuerung Vergleich, Vergleich mit Inkrement, Vergleich mitDekrement

Boolesche Bitverarbeitungsbefehle Setzen, Loschen, Verschieben, Vergleichen und Ver-knupfen von einzelnen Bits, bitweiser Speicherzugriff

Schiebe- und Rotationsbefehle Schieben, Rotieren, arithmetische Schieben

Transportbefehle Transport, Transport mit Vorzeichen oder Nullbyteerweiterung

Stackbefehle Push, Pop, Kontext-Umschaltung

Sprungbefehle Bedingter Sprung, unbedingter Sprung

Aufrufbefehle, Rucksprungbefehle Unterprogrammaufruf, Trap, Return, Return fromInterrupt

Systemsteuerung Software-Reset, Idle-Modus, Power-Down, WDT-Wartung, WDT-Ab-schaltung, Initialisierung beenden

Verschiedenes Unteilbare Befehlssequenzen definieren, Operandennormalisierung, Adres-sierungsarten umschalten, No Operation

13.4.2 Speicherorganisation und Busschnittstelle

Beim C167 werden alle Speicherbereiche in einem durchgehenden Adressraum abgebildet.Ob man also internes RAM, externes RAM, Allzweck-Register, SFR, Programm- oder Da-tenspeicher anspricht, hangt allein von der Adresse ab.3 Das interne RAM beherbergt nebendem erwahnten Bereich fur die Registerfenster der CPU den System-Stack und Benutzerda-ten. Beim Stackzugriff wird im Hintergrund automatisch gepruft, ob ein Stackuberlauf oder-unterlauf vorliegt. Einige Teile des internen RAM sind bitadressierbar, z.B. die Registerfens-ter.

Vorhandensein, Große und Art eines internen ROM hangen ganz von dem gewahlten Con-trollerderivat ab. Eine typische Große sind 32 KByte internes ROM als Programmspeicher.Da ja auch ein internes RAM von z.B. 4 KByte zur Verfugung steht, kann der C167 ohneexterne Speicherbausteine betrieben werden.

Wird mehr Speicher gebraucht oder hat der ausgewahlte Mikrocontroller kein internes ROMmuss externer Speicher angeschlossen werden. Dazu stellt der C167 eine sehr flexible Bus-schnittstelle zur Verfugung. Man kann uber die ADDRSEL/BUSCON-SFR bis zu funf ver-schiedene Speicherbereiche konfigurieren. Fur jeden Speicherbereich lasst sich z.B. die Breitedes Datenbusses auf 8 oder 16 Bit einstellen. Es lasst sich außerdem einstellen, ob die Adress-und Datensignale auf getrennten Leitungen (Demultiplex-Betrieb) oder auf den selben Leitun-gen gefuhrt werden sollen (Multiplex-Betrieb). Im Multiplex-Betrieb werden Address-Latchesgebraucht und der C167 erzeugt dann auch das notwendige Address-Latch-Enable-Signal

3Das ist z.B. bei der 8051-Familie ganz anders.

Page 30: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.4 Fallbeispiel: Infineon C167 251

(ALE). Weitere Parameter wie Waitstates und Signalverzogerungen sind ebenfalls bereichs-weise einstellbar. Fur den Betrieb an der externen Busschnittstelle eignen sich daher sehrviele marktubliche Bausteine. Durch die bereichsweise Konfiguration konnen sogar verschie-denartige Speicherbausteine gleichzeitig betrieben werden.

Abbildung 13.15: In einer 16-Bit-Datenadresse geben die beiden hochstwertigen Bitdie Nummer des DPP an, dieser verweist auf die aktuelle Datenseite (Page). Dieniederwertigen 14 Bit sind die Adresse innerhalb der Page.

Der Adressbus kann in verschiedener Breite aktiviert werden: 16, 18, 20 oder 24 Bit. Ent-sprechend ist der gesamte Adressraum 64 KByte, 256 KByte, 1 Mbyte oder 16 Mbyte. ZurVerwaltung dieses relativ großen Adressraumes teilt der C167 die Datenbereiche in Daten-seiten, die Pages zu je 16 KByte ein (Abb. 13.15). Die Pages werden uber vier Register, dieData Page Pointer DPP0..DPP3 verwaltet. Darin liegt ein 10-Bit-Verweis auf eine der biszu 1024 Pages. Eine 16-Bit-Adresse wird nun so interpretiert: Bit 0..Bit 13 gibt den Offset(relative Adresse) innerhalb der Page und Bit 15, Bit 14 wahlen eines der vier DPP-Registeraus, das wiederum auf die aktuelle Page verweist.

Die Codebereiche werden in Segmenten von 64 KByte verwaltet. Jede 24-Bit Adresse wirdintern in zwei Anteilen interpretiert: Ein 16 Bit-Offset im IP-Register gibt die Adresse inner-halb des Segments an und ein 8-Bit-Wert im CSP-Register (Code Segment Pointer) wahlteines von 256 Codesegmenten aus (Abb. 13.16). Glucklicherweise ubernimmt der Chip selbstdie Arbeit, die mit der Codesegmentierung verbunden ist. Ein Sprungbefehl beispielsweisewird ausgefuhrt, indem die Register IP und CSP verandert werden.

13.4.3 Kommunikationsschnittstellen

Der C167 verfugt uber eine asynchrone/synchrone serielle Schnittstelle, den Asynchronous/Synchronous Serial Channel, abgekurzt ASC0. Der ASC0 lasst sich sehr flexibel konfigurieren.Er hat einen internen Baudratengenerator und erlaubt eine asynchrone Kommunikation mitbis zu 1.03 MBit/s voll-duplex und bis zu 4.1 MBit/s halbduplex, abhangig vom CPU-Takt.

Page 31: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

252 13 Mikrocontroller

Abbildung 13.16: Eine 16-Bit-Code-Adresse gibt nur den Offset innerhalb des Seg-ments an. Erst mit der im CSP eingetragenen Segmentnummer ergibt sich die 24-Bit-Adresse im Speicher.

Die 8- oder 9-Bit-Datenpakete sind eingerahmt von einem Startbit und ein oder zwei Stopp-bits, und beginnen mit LSB; zur Absicherung kann ein Paritatsbit erzeugt bzw. ausgewertetwerden. Mit geeigneten Pegelwandlern kann also eine Ubertragung nach dem Standard RS-232C erfolgen. Die Schnittstelle entdeckt verschiedene Fehler selbststandig: Paritatsfehler,Rahmenfehler, uberschriebener Empfangspuffer (Overrun). Um Pollingschleifen zu vermei-den, unterstutzt die ASC0-Schnittstelle vier verschiedene Interrupts fur Empfang, Sendenund Fehlerbehandlung. Fur Testzwecke kann ein Prufschleifenbit (Loop-Back-Testbit) akti-viert werden: Uber ein internes Gatter werden dann die gesendeten Datenpakete direkt wiederauf die Empfangsschnittstelle geleitet. Im synchronen Betrieb erzeugt ASC0 ein Taktsignal.

Weiterhin verfugt der C167 uber eine synchrone serielle Schnittstelle, Synchronous SerialChannel, SSC, uber die mit bis zu 8.25 MBit/s voll-duplex kommuniziert werden kann. DerTakt wird im Masterbetrieb uber die Leitung SCLK gesendet, wahrend die Daten taktsyn-chron ubertragen werden. Im Slave-Betrieb wird der Takt von einer anderen Schnittstelleerzeugt und uber SCLK empfangen. Die Datenpakete umfassen hier 2..16 Bit und begin-nen wahlweise mit LSB oder MSB. Auch SSC ist in der Lage Fehler zu erkennen, u.a. auchPhasen- und Baudratenfehler.

Der C167 besitzt ein CAN-Modul fur die vollautomatische Ubertragung gemaß CAN-Spezi-fikation V2.0 Teil B. Damit wird volle CAN-Funktionalitat (FullCAN) fur bis zu 15 Nach-richtenobjekte garantiert, Nachrichtenobjekt 15 kann nach BasicCAN behandelt werden (s.auch Abschn. 13.2.9). Bei anderen Mikrocontrollern aus der C166-Familie findet man weitereTypen von Kommunikationsmodulen: I2C-Module, SSP- oder HDLC-Kanale.

13.4.4 Zeitgeber/Zahler-, Capture/Compare- und PWM-Einheiten

Der C167 ist in dieser Hinsicht reichhaltig ausgestattet, er hat On-Chip funf Allzweck-Zahler-/Zeitgeberbausteine, vier Capture/Compare-Einheiten und vier PWM-Kanale. Diese sind inGruppen zusammengefasst und alle etwas unterschiedlich beschaltet, wodurch sich eine Fullevon Verwendungsmoglichkeiten ergibt.

Page 32: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.4 Fallbeispiel: Infineon C167 253

General Purpose Timer 1 (GPT1)

Der GPT1 (Allzweck-Zahler 1) umfasst die Timer 2, Timer 3 und Timer 4. Jeder dieser Timerkann uber die zum Timer gehorenden SFR auf eine von vier Betriebsarten eingestellt werden:

Zahler (Counter) Jeder Timer hat einen zugehorigen Impulseingang, die Impulse an diesemEingang werden gezahlt. Die Zahlrichtung kann per SFR eingestellt werden (Up/Down-Bit in Timer-Steuerregister) oder uber den Eingang TxEUD (Timer external Up/Down)durch die Peripherie gesteuert werden.

Zeitgeber (Timer) Der Eingang des Timers wird durch den vorgeteilten CPU-Takt ange-steuert, das Teilerverhaltnis ist in Grenzen frei programmierbar: 2n : 1.

Torgesteuerter Zeitgeber (Gated Timer) Der Baustein lauft als Zeitgeber, wobei der Im-pulseingang des Timers als Toreingang (Gate) benutzt wird: Es werden nur Impulsegezahlt, wahrend der Zahler uber den Toreingang freigeschaltet ist.

Inkrementeller Schnittstellenmodus Hier kann ein inkrementeller Positionsgeber mitseinen A- und B-Signalen direkt an den Timer angeschlossen werden. Der Timer ermit-telt daraus Richtungs- und Zahlsignal und halt damit immer einen aktuellen Lagewertin seinem Zahlregister.

Alle drei Timer konnen so eingestellt werden, dass sie bei Uberlauf bzw. Unterlauf einenInterrupt auslosen. Außerdem gibt es mehrere Querverbindungen zwischen den Zahlern: Ti-mer 3 hat ein Ausgangs-Umschalt-Flipflop (Output-Toggle-Latch), das bei jedem Uberlaufinvertiert wird. Es kann entweder an einen Anschlussstift geleitet werden oder aber an denEingang von Timer 2 oder Timer 4 geschaltet werden. Im letzten Fall sind zwei 16-Bit-Zahlerkaskadiert zu einem 32-Bit-Zahler, mit dem man auch große Zeiten genau messen kann. Ti-mer 2 und Timer 4 konnen angehalten werden und als Capture oder Reload-Register furTimer 3 benutzt werden.

General Purpose Timer 2 (GPT2)

Die Gruppe GPT2 umfasst die Timer 5 und Timer 6 sowie ein Capture/Reload-Register.Die Timer 5 und Timer 6 konnen ahnlich wie die oben beschriebenen Timer 2 bis Timer 4betrieben werden, auch sie konnen kaskadiert werden. Besondere Moglichkeiten bietet dasCapture/Reload-Register, das mit beiden Timern verschaltet ist: Es kann fur Timer 5 alsCapture-Register und fur Timer 6 als Reload-Register arbeiten, auf ein Ereignis hin kann auchbeides geschehen. Der Capture-Wert von Timer 5 ist dann der Reload-Wert, also Startwert,fur Timer 5. Außerdem kann das Capture mit einem Zurucksetzen des Zahlregisters verbundenwerden. Durch diese Beschaltung ergeben sich pfiffige Moglichkeiten, fur die ich hier zweiBeispiele geben will:

Beispiel: Messung der Differenz von ZeitabstandenNehmen wir Folgendes an: Ein Peripherieereignis startet im Zeitpunkt T1 den Timer 5,ein zweites Peripherieereignis lost im Zeitpunkt T2 ein Capture und Zurucksetzen von Ti-mer 5 aus. Aus dem Capture-Register wird der Wert gleich weitergegeben an Timer 6,der mit gleichem Takt abwarts zahlt. Bei einem dritten Peripherieereignis im Zeitpunkt T3

Page 33: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

254 13 Mikrocontroller

wird Timer 6 uber ein SFR ausgelesen und enthalt die Differenz der beiden Zeitabstande:(T2 − T1) − (T3 − T2).

Beispiel: Digitale FrequenzvervielfachungNehmen wir wieder an, Timer 5 wird als aufwarts laufender Zahler betrieben und Timer 6 alsabwarts laufender Zeitgeber. Diesmal soll aber der Takt von Timer 6 hoher eingestellt sein(kleinerer Teilerfaktor) als der von Teiler 5. Nehmen wir an, er ist viermal so groß. Am Eingangvon Timer 5 liegt ein symmetrisches Rechtecksignal an. Jeder Pegelwechsel lost an Timer 5ein Capture aus, der Capture-Wert wird von Timer 6 als Reload-Wert benutzt. Durch denhoheren Takt ist aber in Timer 6 in einem Viertel der Zeit schon der Unterlauf und damit einPegelwechsel am Ausgang erreicht. Der Wert wird immer wieder geladen und heruntergezahlt,es ergibt sich am Ausgang viermal so oft ein Pegelwechsel, wie am Eingang. Der Eingangstaktan Timer 5 ist also vervierfacht. Die Taktvervielfachung folgt der Eingangstaktfrequenz miteiner gewissen Verzogerung, halt aber stets den Faktor ein, der durch die unterschiedlichenZahlertaktfrequenzen gegeben ist [21].

Capture/Compare-Einheit

Es gibt zwei gleichartige Capture/Compare-Einheiten, die eine umfasst Timer 0 und Ti-mer 1, die andere Timer 7 und Timer 8. Die Capture/Compare-Einheiten sind gedacht fur dieschnelle Verarbeitung von I/O-Signalen wie Impulserzeugung, Wellenformen und Pulsweiten-modulierte Signale (PWM). Der C167 hat eine besonders leistungsfahige Capture/Compare-Einheit: Hier sind gleich zwei Timer am Werk und jeder davon kann in einer Zahlperiodemehrere Capture- oder Compare-Ereignisse verarbeiten. Dazu sind in jeder Einheit die beidenTimer mit einem gemeinsamen Stapel von 16 Capture/Compare-Registern verbunden. Zu je-dem Register gehort ein Anschlussstift (CCxIO), der im Capture-Betrieb der Eingang fur dasereignisauslosende Signal ist. Im Compare-Betrieb dagegen ist er ein Ausgang und wird nachdem Compare-Ereignis geschaltet oder invertiert. Jedes Capture/Compare-Register kann ei-nem der beiden Timer zugewiesen werden. Mit den beiden Capture/Compare-Einheiten desC167 lassen sich also gleichzeitig immerhin bis zu 32 externe Signale verfolgen bzw. erzeugen.Fur die Timereingange sind verschiedene Impulsquellen wahlbar: Ein vorgeteilter CPU-Takt,ein externes Signal (nur Timer 0 und Timer 7) oder der Ausgang von Timer 6. Damit lassensich also Zeitintervalle oder eine bestimmte Zahl von Peripherieereignissen abmessen.

Im Capture-Betrieb muss zunachst festgelegt werden, welches Ereignis das Compare auslosensoll: Eine negative, positive oder beliebige Signalflanke an einem festgelegten Eingang. BeiEintreten des festgelegten Capture-Ereignisses wird der aktuelle Zahlwert des spezifiziertenTimers in dem zu diesem Eingang gehorenden Capture/Compare-Register abgelegt. Außer-dem kann durch dieses Ereignis ein Interrupt ausgelost werden.

Im Compare-Betrieb wird zunachst eine von funf Compare-Betriebsarten gewahlt. So ist esz.B. moglich pro Timer-Periode einen oder mehrere Interrupts erzeugen zu lassen. Dannmussen Compare-Werte in die zugehorigen Capture/Compare-Register eingeschrieben wer-den. Danach werden alle aktivierten Compare-Werte standig mit dem aktuellen Inhalt deszugewiesenen Timers verglichen. Wenn eine Gleichheit eintritt, wird der zugehorige Ausgangbedient und ein Interrupt erzeugt.

Page 34: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.4 Fallbeispiel: Infineon C167 255

PWM-Einheit

Fur die Pulsweitenmodulation stellt der C167 eine eigene Einheit zur Verfugung, obwohl auchdie Capture/Compare-Einheit PWM-Signale erzeugen kann. Die PWM-Einheit kann bis zuvier PWM-Signale gleichzeitig und unabhangig erzeugen. Jeder PWM-Kanal wird uber einCompare- und ein Reload-Register gesteuert. Am Ausgangstreiber kann die Polaritat gewahltwerden, auch verschiedene Flankenausrichtungen sind einstellbar. Eine Besonderheit ist, dassauch zwei Kanale uberlagert werden konnen.

13.4.5 Input/Output-Ports und Analog-Digital-Wandler

Fur den Austausch digitaler Information mit der Peripherie besitzt der C167 bis zu 111I/O-Leitungen (Ein-/Ausgabe-Leitungen), die in Gruppen als Ports organisiert werden. Aufdiesen Leitungen werden die digitalen Pegel HIGH und LOW ausgegeben oder eingelesen. DiePorts konnen uber Steuerregister (SFR) bitweise als Eingang oder Ausgang geschaltet wer-den. Ausgangsports sind rucklesbar. Bei einigen der Ausgabeports ist sogar wahlbar, ob sie alsGegentaktausgang oder als Open-Drain-Ausgang arbeiten. Da sich TTL- und CMOS-Pegelunterscheiden, lasst sich fur einige Eingange wahlen, ob sie zur HIGH/LOW-Erkennung dieTTL- oder CMOS-Pegel zugrunde legen. Alle I/O-Port-Leitungen haben alternative Funk-tionen wie z.B. die Funktion als externe Busschnittstelle, Analogeingabe, GPT, Kommunika-tionsschnittstelle u.a.m.

Fur die Erfassung analoger Signale besitzt der C167 einen 10-Bit-Analog-Digital-Umsetzermit einem 16-Kanal-Eingangsmultiplexer. Daruber lasst sich also einer der 16-Kanale aufden Wandler durchschalten. Zwischen dem Multiplexer und dem Wandler ist ein Abtast-Halte-Glied eingefugt, das das externe Analogsignal uber eine gewisse Zeit erfasst und dannals konstanten Pegel dem A/D-Wandler anbietet. So kann auch eine schnell veranderlicheSpannung ohne externes Abtast-Halte-Glied gewandelt werden. Es gibt vier Betriebsarten:Die Einzelwandlung an einem Kanal, die Dauerwandlung an einem Kanal, die Einzelwandlungeiner Gruppe von Kanalen (Auto-Scan) und die Dauerwandlung einer Gruppe von Kanalen.

Der A/D-Wandler wird uber zugehorige SFR gesteuert: Der Start der Wandlung wird uberein Bit im SFR ADCON ausgelost und in diesem Register wird auch angezeigt, ob die Wand-lung schon beendet ist. Dann kann aus einem anderen SFR das 10-Bit-Ergebnis entnommenwerden. Die Wandlung geschieht in zwei Abschnitten: Offnung des Abtast-Halte-Gliedes furdas externe Signal (Sampling) und die eigentliche Analog-Digital-Wandlung des Pegels aufdem Abtast-Halte-Glied (Conversion). Auf dem C167 kann die Sampling-Zeit und der Taktfur den A/D-Wandler programmiert werden. Die erreichbare Wandlungszeit hangt naturlichvon dieser Einstellung ab und betragt uber 50 CPU-Takte, je nach Einstellung noch weitmehr. Meist will man diese Zeit nicht mit nutzlosen Warteschleifen verbringen. Der A/D-Wandler des C167 ist daher fahig, einen Interrupt auszulosen, wenn die Wandlung beendetist und das Ergebnis vorliegt.

13.4.6 Interruptsystem und PEC

Das Interruptsystem (s. auch Kap. 8.1.2) des C167 ist auf eine schnelle Bedienung vonService-Anforderungen der Peripherie ausgelegt. Es kann (bei Programmausfuhrung aus dem

Page 35: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

256 13 Mikrocontroller

internen ROM) innerhalb von 5-12 CPU-Takten auf eine Interrupt-Anforderung reagieren.Damit braucht es großenordnungsmaßig nur noch ein Zehntel der Zeit, die typischerweisebei alteren 8-Bit–Mikrocontrollern gebraucht wurde. Um diese guten Reaktionszeiten zu er-reichen, wurden sogar der Multiplikations- und der Divisionsbefehl unterbrechbar gemacht.Die Multiplikations-/Divisionshardware speichert in diesem Fall den momentanen Stand undnimmt die Berechnung nach dem Interrupt wieder auf. Da in vielen Fallen die Interrupt-Service-Routine nur einen einzigen Datentransfer durchfuhrt, wurde zusatzlich ein speziellerController auf dem Chip integriert, der genau darauf spezialisiert ist: Der Peripheral EventController, PEC. Der PEC braucht im gunstigsten Fall fur eine Reaktion nur drei CPU-Zyklen, bei 33 MHz CPU-Takt also nur 90 ns.

Neben den normalen Interrupts und den PEC-Transfers gibt es die Traps, mit denen CPU-generierte Interrupts und Software-Interrupts durchgefuhrt werden. Die Verzweigung in dieInterrupt-Service-Routinen erfolgt uber eine Sprungtabelle, die bei Adresse 000000h beginnt.

Peripherie-Interrupts

Beim C167 ist praktisch die gesamte Peripherie interruptfahig, so dass sich insgesamt 56 In-terruptquellen ergeben. Ein On-Chip-Interruptcontroller verwaltet die Interrupts. Uber einglobales Flag konnen alle Interrupts abgeschaltet werden, aber jede Interruptquelle kann uberein eigenes Interrupt-Enable-Flag auch einzeln aktiviert oder deaktiviert werden. Außerdemwird fur jede Quelle eine von 16 Prioritatsebenen gewahlt. Der Interruptcontroller fuhrtauch gestufte Interrupts aus, eine Service-Routine kann also von einer Interrupt-Anforderunghoherer Prioritat unterbrochen werden. Da bei 56 Interruptquellen mehrere Quellen auf einerEbene liegen mussen, kann fur diese Interruptquellen eine Rangfolge fur den Fall der gleich-zeitigen Anforderung angegeben werden. Jede Interrupt-Quelle hat ein eigenes Interrupt-Steuerregister das wie folgt aufgebaut ist:

XXIR XXIE ILVL GLVL7 6 5 4 3 2 1 0

Dabei steht XX fur die betreffende Interruptquelle, z.B. ADC bei dem A/D-Wandler. DasBit IE ist das Interrupt-Enable-Bit, mit dem der Interrupt freigegeben wird. Das IR-Bit zeigtden Interrupt-Request an. Eine Anforderung eines nicht freigegebenen Interrupts kann alsohier immer noch festgestellt werden. ILVL ist die Prioritatsebene und GLVL die Rangstufeinnerhalb dieser Prioritatsebene. Zu beachten ist, dass die beiden hochsten Prioritatsebenen14 und 15 fur PEC-Transfers reserviert sind (s. nachster Abschnitt).

Beim Start einer Interrupt-Service-Routine rettet der C167 zunachst das Prozessor-Status-Wort sowie CSP und IP (Rucksprungadresse) auf den Stack. Dann wird zu der entsprechendenPosition in der Interrupt-Sprungtabelle verzweigt. Dort ist die Adresse der Interrupt-Service-Routine hinterlegt, die nun gestartet wird. Sie endet mit einem Return-from-Interrupt-Befehl(RETI). Dieser holt dann die gesicherten Daten (PSW, CSP und IP) wieder vom Stack, sodass an der Unterbrechungsstelle fortgesetzt werden kann.

Page 36: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.4 Fallbeispiel: Infineon C167 257

Peripheral Event Controller

Der Peripheral Event Controller (PEC) wird ahnlich wie ein Interrupt aktiviert. Er lauftallerdings einfacher und schneller ab: Statt eine ganze Interrupt-Service-Routine samt Over-head aufzurufen, wird ein einzelner Transportbefehl (Move) direkt in die Pipeline injiziert.Der damit ausgeloste Datentransfer kann 8 oder 16 Bit umfassen. Um einen PEC zu aktivie-ren, wird in das Interrupt-Steuerregister ein entsprechender Eintrag geschrieben, der einenvon 8 unabhangigen PEC-Kanalen aktiviert. Um die Steuerungsmoglichkeiten des PEC besserzu verstehen, betrachten wir einige typische Anwendungsfalle:

1. Ein Datenblock soll uber eine Schnittstelle gesendet werden. Die Schnittstelle konntejedesmal wenn ein Zeichen gesendet ist, einen PEC auslosen um das nachste Zeichenanzufordern. Falls die gesendeten Datenpakete Bytes sind, musste die Quelladresse nachjedem Transfer um eins erhoht werden, bei 16-Bit-Datenpaketen musste sie jedesmalum zwei erhoht werden. Der Zielzeiger verweist auf die Adresse der Schnittstelle undbleibt konstant.

2. Nach Beendigung einer A/D-Wandlung muss der A/D-Wandler ausgelesen werden undder ermittelte Wert an eine bestimmte Stelle im Speicher ubertragen werden. Quell undZieladresse mussen konstant bleiben.

3. Der A/D-Wandler ist so eingestellt, dass automatisch sechs Kanale hintereinander ge-wandelt werden. Es mussen sechs Transfers hintereinander mit aufeinanderfolgendenZieladressen erfolgen, nach dem letzten der sechs Transfers mussen die Transfers ge-stoppt werden.

Der PEC lasst sich tatsachlich so einstellen, dass er genau dies alles leistet, und zwar ohne eineeinzige Zeile Software! Die evtl. Neueinstellung der Quell- oder Zieladressen erfordert dannallerdings doch Software, der PEC lost zu diesem Zweck einen normalen Interrupt aus. ZurVerwaltung dieser Aktivitaten gehoren zu jedem PEC-Kanal ein Quellzeiger, ein Zielzeiger,ein Zahlregister und ein Kontrollregister. Das Kontrollregister legt die Datenbreite, die Anzahlder Transfers und die Behandlung der beiden Zeiger fest. Es hat folgenden Aufbau:

reserviert INC BWT COUNT15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Die Felder in diesem Kontrollregister haben die folgende Bedeutung:

INC Steuert das Autoinkrement der Zeiger;00=kein Autoinkrement,01=Autoinkrement der Zieladresse,10=Autoinkrement der Quelladresse,11= reserviert.

BWT Byte/Word Transfer; BWT=0:Worttransfer, BWT=1: BytetransferCOUNT COUNT=FFh, PEC-Transfer, COUNT wird nicht dekrementiert,

COUNT=FEh – 01h, PEC-Transfer, COUNT wird dekrementiert,COUNT=00h es findet kein PEC-Transfer statt,ein normaler Interrupt wird ausgelost.

Page 37: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

258 13 Mikrocontroller

Traps

Traps unterscheiden sich von Peripherie-Interrupts und PEC-Transfers dadurch, dass siedurch die Aktivitat der CPU selbst ausgelost werden. Ahnlich dem System der Intel 80x86-Prozessoren gibt es Hardware-Traps und Software-Traps. Die Hardware-Traps dienen zurBearbeitung von unvorhergesehenen Fehlersituationen im Programmablauf. Bei anderen Pro-zessoren spricht man hier von Ausnahmen (Exceptions).

Reset-Funtionen Dieser Trap wird nach Hardware-, Software- oder Watchdog-Reset aus-gelost. Uber den entsprechenden Eintrag in der Sprungtabelle wird zur Bootroutineverzweigt.

Klasse A-Traps Stackfehler und NMI.

Klasse B-Traps Andere Fehlersituationen wie unbekannter Opcode, Datenausrichtungsfeh-ler, u.a.m.

Software-Traps sind softwaremaßig ausgeloste Interrupt-Service-Routinen. Uber den Ope-randen des Trap-Befehls kann ein Interruptvektor ausgewahlt werden, so dass alle Interrupt-Routinen zuganglich sind. Software-Traps werden allerdings nicht durch das Interrupt-Enable-Flag beeinflusst, nehmen nicht die im zugehorigen Steuerregister eingetragene Prioritat anund verandern auch das Interrupt-Request-Flag nicht.

13.4.7 Oszillator, Energie-Management und Sicherheitseinrichtungen

Auf dem C167 wird die CPU durch den CPU-Takt gesteuert; dieser steuert sowohl die internenVorgange, wie die Arbeit der Pipeline, als auch die Busleitungen. Zwei CPU-Takte ergebeneinen Maschinenzyklus. Der CPU-Takt wiederum wird aus dem Oszillatortakt erzeugt. DerC167 hat eine Oszillatorschaltung auf dem Chip, zur Stabilisierung muss nur ein externerResonator zwischen den Anschlussen XTAL1 und XTAL2 angeschlossen werden. Diese Be-triebsart unterliegt allerdings gewissen Einschrankungen. Alternativ kann daher auch eineexterne Oszillatorschaltung benutzt und das Taktsignal an XTAL1 eingespeist werden. DieAbleitung des CPU-Taktes aus dem Oszillatortakt war noch beim C166 sehr einfach gehalten:Der Oszillatortakt wurde durch zwei geteilt. Der C167 hat hier viel mehr zu bieten, es gibtdrei verschiedene Mechanismen, die uber Konfigurationsbits eingestellt werden. Rechnerischist der Zusammenhang zwischen Oszillatortakt und CPU-Takt

fCPU = F · fOsz

Der Faktor F hangt von der eingestellten Betriebsart ab:

Vorteilung (Prescaler Operation) F = 0.5, der CPU-Takt ist der durch zwei geteilte Oszil-latortakt.

Direct Drive (Direkttaktung) F = 1, CPU-Takt und Oszillatortakt sind gleich.

Page 38: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.4 Fallbeispiel: Infineon C167 259

Phase Locked Loop (PLL) F = 1.5/2/2.5/3/4/5, hier ist der CPU-Takt ein Mehrfachesdes Oszillatortaktes.4

Fur jede Betriebsart und jeden Faktor F ist ein bestimmter Frequenzbereich einzuhalten.Trotzdem geben die angebotenen Moglichkeiten dem Systementwickler sehr viele Moglich-keiten, z.B. kann mit einem Oszillatortakt von fOsz = 6 MHz ein CPU-Takt zwischen fCPU =3 MHz (Vorteilung) und fCPU = 30 MHz (PLL mit F=5) eingestellt werden (Abb. 13.17).

Abbildung 13.17: Aus einer Oszillatortaktfrequenz konnen im C167 verschiede-ne CPU-Taktfrequenzen erzeugt werden. Aus einem Oszillatortakt von z.B. 6 Mhzwurden mit den dargestellten Faktoren 3, 6, 12 und 30 MHz CPU-Takt erzeugt.

Warum aber sollte man einen Mikrocontroller mit 3 MHz betreiben, wenn 30 MHz moglichsind? Der Grund konnte in der Stromaufnahme liegen, die bei CMOS-Bausteinen linear mitder Frequenz ansteigt. Fur den C167 gibt der Hersteller folgende Formel an, die bei 5.5 VVersorgungsspannung und offenen Ausgangen gilt:

IDDnormal= 15 mA + 2.5 mA · 10−6s · fCPU

Beispiel Bei einer CPU-Taktfrequenz von 30 MHz ergibt sich eine Stromaufnahme von90 mA. Wenn man die Taktfrequenz auf 3 MHz verringert, sinkt die Stromaufnahme auf22.5 mA ab.

Wenn eine Anwendung keine hohe CPU-Leistung braucht, kann also durch eine niedrigereTaktfrequenz Strom gespart werden, gerade bei batteriebetriebenen Geraten eine wichtigeMoglichkeit. Der C167 bietet außerdem spezielle Betriebsarten um den Stromverbrauch ab-zusenken: Im Idle-Modus wird zwar die Peripherie weiter mit dem Takt versorgt, die CPUaber vom Takt abgetrennt. Die Stromaufnahme bleibt damit abhangig von der Taktfrequenz,ist aber nur noch:

IDDIdle= 10 mA + 1.0 mA · 10−6s · fCPU

Beispiel Im Idle-Modus nimmt ein C167 bei einer CPU-Taktfrequenz von 30 MHz nur noch40 mA Strom auf, bei 3 MHz sogar nur noch 13 mA.

4Ein Phase Locked Loop ist eine Schaltung, die bestimmte Schwingungsphasen wie z.B. 90o, 180o, 270o

eines Oszillatorsignals erkennt und synchronisiert. Damit ist es moglich, Frequenzen zu vervielfachen.

Page 39: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

260 13 Mikrocontroller

Der Idle-Modus wird durch einen Software-Befehl (IDLE) aktiviert. Die Ruckkehr aus demIDLE-Modus muss anders geschehen, da die CPU ja nicht mehr lauft; der C167 verlasstden Idle-Modus durch einen Interrupt. Der Idle-Modus kann z.B. benutzt werden, wennder Mikrocontroller auf irgendein Signal aus der Peripherie wartet. Das Signal ware danngleichzeitig der Interrupt, mit dem wieder Normalmodus erreicht wird.

Die radikalste Moglichkeit zum Stromsparen ist der Power-Down-Modus, dabei wird derOszillator abgeschaltet. Damit ist die CPU und die Peripherie stillgelegt, der Stromverbrauchwird unabhangig von der Taktfrequenz und sinkt ab auf:

IPowerdown = 50 μA

Das ist grob um den Faktor 1000 weniger als im Normalbetrieb! Da sowohl CPU als auchPeripherie stillstehen, erfolgt die Ruckkehr in den Normalmodus nur durch ein Hardware-Reset uber den Reset-Anschluss.

Der C167 hat einen klassischen Watchdog-Timer (WDT). Er ist aus einem 16-Bit-Zahler auf-gebaut, der bei Uberlauf einen Watchdog-Reset auslost. Der Eingangstakt des Timers ist derdurch 2 oder 128 geteilte CPU-Takt. Der Reload-Wert kann verandert werden um die Periodedes Watchdog-Timers passend zu wahlen. Der Watchdog-Timer muss regelmaßig durch denSoftwarebefehl SRVWDT (Serve Watchdog-Timer) zuruckgesetzt werden. Vor Abschluss derInitialisierungsroutine kann der Watchdog-Timer noch durch DISWDT abgeschaltet werden,danach ist das aus Sicherheitsgrunden nicht mehr moglich.

Um auch gegen einen Ausfall des Oszillators geschutzt zu sein, besitzt der C167 einenOscillator-Watchdog. Dieser uberwacht das Oszillator-Signal durch Vergleich mit einem Hilfs-takt, den die PLL zur Verfugung stellt. Bleiben die erwarteten Flankenubergange im Taktsi-gnal aus, z.B. durch einen Bausteindefekt, lost der Oscillator-Watchdog einen Interrupt ausund versorgt die CPU mit dem Hilfstakt.

13.4.8 XC167CI

Seit Anfang 2003 gibt es den XC167CI als stark leistungsverbesserten Abkommling der In-fineon C166-Familie. Eine 5-stufige Pipeline erlaubt bis zu 40 MHz Taktfrequenz und dieBefehlsausfuhrung in einem Tyktzyklus (Bei dem C167 entspricht ein Befehl zwei Taktzy-klen). Er ist speziell fur DSP-Operationen besser als der C167 ausgerustet, bewaltigt eineMultiplikation (16 mal 16 Bit) schon in 25 ns und besitzt einen MAC-Befehl. Auf dem Chipbefinden sich 128 KByte Flash-ROM und 8 KByte RAM. Erweitert wurden auch die Zahler-/Zeitgeber-Einheiten auf dem Chip. Man darf gespannt sein, wie der XC167CI sich auf demhart umkampften Mikrocontrollermarkt durchsetzt.

13.5 Aufgaben und Testfragen

1. Auf der Basis eines Mikrocontrollers soll ein Kleingerat entwickelt werden. Es ist ge-plant, spater pro Jahr 100000 Stuck zu fertigen. Welchen Typ Programmspeicher sehenSie fur die verschiedenen Entwicklungs- und Fertigungsphasen vor?

Page 40: 13 Mikrocontroller - telematika.kstu.kg · 13 Mikrocontroller 13.1 Allgemeines Bei einem Mikrocontroller (Abk. MC oder μC) sind die CPU, Speicher, Peripheriekompo-nenten und Interruptsystem

13.5 Aufgaben und Testfragen 261

2. In einem Waschetrockner, der mit dem Mikrocontroller C167 gesteuert wird, soll derFeuchtefuhler einmal pro Sekunde ausgelesen werden. Geben Sie an, welche Baugrup-pen des Mikrocontrollers man verwenden sollte und welche Programmierungsschrittenotwendig sind.

3. Ein analoges Signal im Spannungsbereich 0..5V soll mit einer Genauigkeit von 0.3%digitalisiert werden. Kann der On-Chip-ADU des C167 verwendet werden?

4. Warum ist bei Mikrocontrollern die Stromaufnahme besonders wichtig? Welche Mog-lichkeiten gibt es bei einem Mikrocontroller, um sie zu reduzieren?

5. Was ist ein Watchdog-Timer?

6. Wie kann man mit einem Mikrocontroller ohne Digital/Analog-Wandler einen elektri-schen Verbraucher kontinuierlich mit Teillast betreiben?

Losungen auf Seite 284.


Recommended