mikrocontroller:mikrocontroller [PIC Mikrocontroller WIKI]
Mittwoch, 23. Mai 2012
 
 

Definition und modularer Aufbau eines Mikrocontrollers

Den Grundstein für einen Mikrocontroller bildet der Mikrocomputer.
Er besteht aus drei Baugruppen der Zentraleinheit, die unter dem Namen CPU (Central Processing Unit) bekannt ist, dem Zentralspeicher, der in ROM (Read Only Memory) und RAM (Random Access Memory) unterteilt ist, und der Ein- /Ausgabe-Einheiten, den sogenannten Inputs und Outputs (I/O).

Verbunden sind diese drei Bausteine durch die drei Bussysteme Datenbus, Adressbus und Steuerbus.

Der Datenbus ist 8-Bit breit und transportiert reine Informationsdaten zwischen den Einheiten hin und her.
Der Adressbus ist meistens 16-Bit breit, über ihn gelangen die Speicherplatzadressen zu den Speicher-Bausteinen.
Die Breite des Steuerbusses ist je nach CPU verschieden und liegt zwischen vier und zehn Leitungen, er sorgt dafür, dass die einzelnen Bausteine getrennt voneinander gesteuert werden können.

Die Zentraleinheit setzt sich zusammen aus dem Befehlswerk und dem Rechenwerk.

Im Befehlswerk, der sogenannten Control Unit (CU), befindet sich das Befehlsregister, das alle Befehle enthält, die die Zentraleinheit ausführen kann. Auch die Steuerung der Ein- und Ausgabe-Einheiten und des Steuerbusses gehört zu den Aufgaben des Befehlswerkes.

Das Rechenwerk, die Arithmetic Logic Unit (ALU), führt alle logischen und mathematischen Operationen durch. Für diese Berechnungen sind die Operationen Addition und Subtraktion zuständig. Hinzu kommen noch die Operationen Multiplikation und Division, die zwar früher in Co-Prozessoren integriert waren, heutzutage aber in fast allen Zentraleinheiten zu finden sind. Das Rechenwerk bearbeitet zusätzlich die Flags (Ereignisspeicher) sowie unterschiedliche Registersätze, die nach einem bestimmten Zustand einer Funktion oder einer Berechnung gesetzt oder zurückgesetzt werden.

Die komplette Zentraleinheit wird in der Fachsprache als Mikroprozessor bezeichnet.

Jeder Mikroprozessor hat einen Eingang für ein rechteckförmiges Taktsignal, das in der Regel von einem Quarz erzeugt wird. Mit diesem Taktsignal werden alle Abläufe der Zentraleinheit und des gesamten Mikrocomputer gesteuert.

Wenn nun alle drei Baugruppen, die Zentraleinheit, Zentralspeicher und einige Peripheriebausteine in einem Gehäuse integriert sind, spricht man von einem Mikrocontroller, Single Chip Computer oder Embedded Computer.

Die Idee von dem beschriebenen Aufbau des klassischen Universalrechners wurde im Jahre 1946 von John von Neumann entwickelt. Die meisten gängigen Mikroprozessoren und Mikrocontroller entsprechen dem Von-Neumann-Prinzip. Der Von-Neumann-Rechner arbeitet sequentiell, Befehl für Befehl wird vom Speicher abgeholt, interpretiert, ausgeführt und anschließend wird das Resultat abgespeichert.

Mit Hilfe der drei oben beschriebenen Bausteine wird ein sogenanntes Minimal-System aufgebaut, durch das der Mikrocontroller in der Lage ist Programme abzuarbeiten, Daten zu verarbeiten, Daten auszulesen und Daten abzuspeichern. Allerdings arbeitet der Mikrocontroller im derzeit beschriebenen Zustand noch für sich alleine, so dass man seine Aktivitäten nicht bemerkt. Daher müssen noch Hardware-Bausteine hinzugefügt werden, um mit ihm richtig arbeiten zu können.

Bausteine eines Mikrocontrollers

Ein-/Ausgabe-Baustein

Zuerst ist ein digitaler Ein-/Ausgabe-Baustein notwendig, damit digitale Signale eingelesen bzw. ausgegeben werden können. Bei 8-Bit Controllern gibt es dementsprechend 8-Bit-Ports mit jeweils acht Ein-/Ausgängen. Jedem Port ist ein Datenregister und oft noch ein oder mehrere Steuerregister zugeordnet. Die Anzahl der Steuerregister, die mit dem Port verbunden sind, ist abhängig von den Funktionen des Ports. Zu diesen Funktionen gehören z.B. die reine digitale Ein-/Ausgabe-Funktion oder Funktionen, die mit internen Peripheriemodulen, wie Ein-/Ausgängen von Timern, seriellen Schnittstellen, Analog-/Digitalwandlern usw. verbunden sind. Somit kann jeder Port durch sein Steuerregister und sein Datenregister in folgenden Varianten programmiert werden:

· Open-Drain-Ausgang · Eingangsfunktion ohne Pull-Up und ohne Interruptfunktion · Eingangsfunktion mit Pull-Up und Interruptfunktion · Eingangsfunktion mit Pull-Up und ohne Interruptfunktion · Analoger Eingang

Ein Open-Drain-Ausgang wird benötigt, wenn ein Ausgang mehrfach belegt werden soll. Dieses Verfahren wird meistens bei Bussystemen verwendet. Damit das Eingangssignal eines Portpins nicht verfälscht wird, werden sogenannte Pull-up-Widerstände angeschlossen. Diese Pull-up-Widerstände können durch Hardware an jeden verwendeten Pin angeschlossen werden. Da im Mikrocontroller an jedem Pin intern ein Pull-up-Widerstand angeschlossen ist, können sie über die Software aktiviert werden.

Interruptcontroller-Baustein

Um eine schnelle Reaktion des Mikrocontrollers bei Veränderungen in Ein-/Ausgängen oder Modulen zu erhalten, gibt es ein Interruptcontroller-Modul, das ständig alle Interruptquellen überwacht. Die CPU unterbricht sofort den aktuellen Befehl des Programms, wenn von irgendeiner Quelle ein Interrupt ausgelöst wird, und startet die zugehörige Interruptserviceroutine. Ist die Abarbeitung dieser Routine beendet, kehrt die CPU wieder zum ursprünglichen Programm zurück. Diese Interrupts dienen in jedem Mikrocontroller-System dazu, die Leistungsfähigkeit der Mikrocontroller zu erhöhen.

A/D-Wandler-Baustein

Um analoge Messwerte erfassen zu können, muss ein Analog-Digital-Wandler (A/D-Wandler) hinzugefügt werden, der analoge Eingangsspannungen in digitale Datenworte umwandelt, die anschließend vom Mikrocontroller verarbeitet werden können.

D/A-Wandler-Baustein

Wenn aber analoge Spannungen ausgegeben werden sollen, ist zusätzlich ein Digital-Analog-Wandler (D/A-Wandler) erforderlich, der aus dem digitalen Datenwort des Mikrocontrollers eine entsprechende Ausgangsspannung erzeugt.

Timer-Baustein

Wenn man im System mit bestimmten Steuerzeiten arbeiten will oder wenn umfangreiche Zählvorgänge durchgeführt werden sollen, ist die Integration eines Timer/Counter-Bausteins sinnvoll. Für die Messung von Uhrzeit, Tagesdatum, etc. empfiehlt sich der Einbau eines Uhren-Chips (Real Time Clock).

Schnittstellen-Baustein

Zur Datenübertragung muss ein Schnittstellenbaustein eingesetzt werden, da die Daten bitweise seriell an ein übergeordnetes System übertragen werden müssen. Dies ist z.B. häufig in der Automobilindustrie oder in der Unterhaltungselektronik der Fall. Aufgrund dieser beiden unterschiedlichen Einsatzmöglichkeiten ergibt sich die Notwendigkeit zweier unterschiedlicher Schnittstellenarten. Die eine (z.B. SCI, UART und USART), dient der Kommunikation zwischen Geräten unterschiedlichster Art und verschiedenster Hersteller, während die andere (z.B. SPI, I2C-Bus) für die Kommunikation zwischen aufeinander abgestimmten Bauteilen zuständig ist.

Watchdogtimer-Baustein

Der Watchdogtimer ist ein interner Zähler der an einem bestimmten Punkt im Programm auf das maximale Zeitintervall zurückgesetzt wird um das Programm komplett durchlaufen zu können. Wenn jetzt das Programm einen Fehler hat und den Watchdogtimer nicht mehr zurücksetzen kann, wird er automatisch vom Mikrocontroller zurückgesetzt, das heißt das Programm wird noch mal neu gestartet.

Capture/Compare-Baustein

Mit dem Capture-Baustein können Impuls- und Verarbeitungszeiten gemessen oder bestimmt werden. Das Compare-Modul hat die Aufgabe, Impulse oder Zeitintervalle zu erzeugen. Dies geschieht in dem ein Vorgabewert mit einem zweiten Wert verglichen wird.

Die Reihe der möglichen Ergänzungsbausteine lässt sich nun beliebig fortsetzen. Auf diese Weise kann man das Mikrocontroller-Minimal-System entsprechend den Bedürfnissen und Anforderungen eines Projektes vollständig modular erweitern und so ein optimal gestaltetes System entwickeln.

Speicherarten und Speicherarchitektur

In einem Mikrocontroller-System gibt es verschiedene Arten von Speichereinheiten.
Mit dem EPROM-Speicher (Erasable Programmable Read Only Memory) ist der Anwender in der Lage, durch ein geeignetes Programmiergerät ein Programm in diesen Speicherbaustein zu schreiben. Bei solchen Bausteinen können die Programme durch Bestrahlung mit UV-Licht wieder gelöscht werden, so dass sie sehr gut für die Programmentwicklung geeignet sind.

RAM-Speicher (Random Access Memory), können vom Prozessor beschrieben, wieder gelesen und gelöscht werden, daher sind sie als Datenspeicher in einem Mikrocontroller-System geeignet. Jedoch verlieren die RAM-Bausteine ihren Inhalt, wenn die Betriebsspannung abgeschaltet wird.

Die EEPROM-Speicher (Electrically Erasable Programmable Read Only Memory) beinhalten sowohl Eigenschaften der EPROM- als auch RAM-Bausteine. Sie können direkt vom Prozessor beliebig beschrieben, gelesen und gelöscht werden. Sie verlieren jedoch nicht ihren Inhalt, wenn die Betriebsspannung ausgeschaltet wird. Deshalb sind sie besonders gut zur Ablage von Daten des Mikrocontroller-Systems geeignet, die bei Störung der Betriebsspannungsversorgung nicht verloren gehen dürfen.

In die ROM-Bausteine (Read Only Memory) können die gewünschten Speicherinhalte fest eingebrannt werden. War das Programm fehlerhaft, kann man diesen Baustein jedoch nicht mehr verwenden, da seine Informationen nicht mehr gelöscht werden können.

FLASH-Bausteine stehen für blitzschnelle Umprogrammierung. Mit diesem Speicher ist eine im-System durchgeführte Programmierung möglich, der Mikrocontroller kann im fertigen System eingebaut werden und über ein einfaches serielles Interface mit der Betriebssoftware versehen werden. Darüber hinaus kann sich der Mikrocontroller selbst programmieren. Es existieren Befehle, mit denen der Programmspeicher bei laufendem Betrieb manipuliert werden kann. Dadurch werden völlig neue Möglichkeiten erschlossen. Zum Beispiel kann der Mikrocontroller über ein sogenanntes Monitor-Programm über Modem neu programmiert werden. Geräte werden nur noch kurz vor der Auslieferung an den Kunden mit ihrer Software versehen, oder im Nachhinein beim Kunden per Notebook neu programmiert. Sogar eine Selbstprogrammierung über das Internet ist heutzutage kein Problem mehr.

In einem Speicherraum befinden sich Programm- und Datenspeicher.

Der Programmspeicher enthält die gesamten Befehle des selbstgeschriebenen Programmes.

Im Datenspeicher befinden sich Register, die sogenannten „File Register“. Ein Teil des Datenspeichers ist für spezielle File Register (Special-Function-Register) vorgesehen. Zu diesen speziellen Registern gehören Timer-Register, Port-Register, ein Statusregister und ein Zeigerregister.

Genauere Details zu diesen Registern werden später beschrieben. Die Register, die nicht als Special-Function-Register definiert sind, heißen Universalregister (General Purpose Register). Sie dienen dem Programmierer als Variablenbereich. Der Datenspeicher wird in sogenannte Bänke aufgeteilt, die sich je nach Mikrocontroller in der Größe unterscheiden. Sie werden durch die Software selektiert und dadurch aktiv bzw. passiv geschaltet.

Bei den heutigen Mikrocontollern und Mikroprozessoren findet man hauptsächlich zwei spezielle Speicherarchitekturen der Bauelemente, die Von-Neumann- und die Harvard-Architektur.

Bei der Von-Neumann-Architektur findet man einen Adressraum, den sich Daten und Befehle teilen müssen, so dass bei dieser linearen Adressierung nicht zwischen Daten-, Konstanten und Programmbereichen unterschieden werden kann.

Bei der Harvard-Architektur dagegen gibt es getrennte Adressräume für Daten und Befehle, dadurch kann gleichzeitig auf Daten- und Befehlsspeicher zugegriffen werden. Auf diese Weise erreicht man eine höhere Verarbeitungsgeschwindigkeit des Mikrocontrollers und eine Verdopplung des Speicherraumes.

RISC und CISC

In der Prozessortechnik gibt es zwei wichtige Prozessorarchitekturen, die CISC- und RISC-Technik.

Ein CISC-Prozessor (Complex Instruction Set Computer) verfügt über einen großen, komplexen Satz an Befehlen. Jeder Befehl ist ein eigenes Mikroprogramm, dass eine Reihe von Aktionen auslöst. Dadurch wird die Programmierung komfortabler.
Der größte Nachteil ist, dass die CISC-Prozessoren in der Regel vier bis zehn Takte benötigen, bis ein Befehl komplett ausgeführt ist.
Ende der siebziger Jahre stellten die US-Universitäten Berkeley und Stanford fest, dass in rund 80 Prozent aller Anwendungen lediglich 20 Prozent der möglichen Befehle verwendet werden. Dabei ist auffällig, das die einfachsten Befehle am häufigsten verwendet werden. Aus dieser Erkenntnis heraus wurden Prozessoren gebaut, die einen eingeschränkten Befehlssatz haben.

Dadurch waren die Prozessoren in der Lage relativ schnell zu arbeiten. Man bezeichnet diese Prozessoren als RISC-Prozessoren (Reduced Instruction Set Computer).
Diese erzielen vor allem dann beachtliche Leistungen bei den Anwendungen, wenn für die Rechnerarchitektur optimierte Übersetzer (Compiler) vorliegen. Ein optimierender Compiler versucht in mehreren Phasen den Maschinencode so umzustellen, dass seine Ausführungen auf der Architektur möglichst schnell erfolgen können. Durch den geringeren Befehlssatz der RISC-Prozessoren ist auch ihre Herstellung einfacher und günstiger als bei CISC-Prozessoren.
Diese Punkte führen dazu, das alle Befehle eines Programms in einem einzigen Maschinenzyklus abgearbeitet werden können.
Heutzutage gibt es kaum mehr Prozessoren die keine RISC-Elemente beinhalten.

 
mikrocontroller/mikrocontroller.txt · Zuletzt geändert: 2010/04/28 07:43 (Externe Bearbeitung)
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
 
Top! Top!