Microcontroller

Werbung
Microcontroller
Seminararbeit zum Thema
Microcontroller
bei Prof. Dr. K.O. Linn
von Benjamin Zanke
1/12
Inhaltsverzeichnis
1 Einleitung.............................................................................................................................................................3
2 Geschichte............................................................................................................................................................4
3 Aufbau / Funktion................................................................................................................................................4
3.1 CPU / Interruptcontroller..............................................................................................................................5
3.1.1 CPU.......................................................................................................................................................5
3.1.2 Interruptcontroller.................................................................................................................................5
3.1.3 RISC / CISC..........................................................................................................................................5
3.2 Speicher........................................................................................................................................................6
3.2.1 Flash Speicher.......................................................................................................................................6
3.2.2 SRAM...................................................................................................................................................6
3.2.3 EEPROM..............................................................................................................................................6
3.3 Ein- und Ausgänge.......................................................................................................................................6
3.3.1 SPI Serial Peripheral Interface..............................................................................................................6
3.3.2 CAN Controller Area Network.............................................................................................................7
3.3.3 AD Wandler..........................................................................................................................................7
3.3.4 PWM Pulsweitenmodulation / DA Wandler.........................................................................................7
3.4 Watchdog......................................................................................................................................................8
3.5 Brown Out Detection....................................................................................................................................8
3.6 Beispiel eines Attiny13.................................................................................................................................8
4 Programmierung...................................................................................................................................................9
4.1 Beispielschaltung..........................................................................................................................................9
4.2 Beispielprogramm.........................................................................................................................................9
4.3 Programmiermöglichkeiten........................................................................................................................10
4.3.1 ISP In System Programmable.............................................................................................................10
4.3.2 Software..............................................................................................................................................10
4.3.3 Evaluations boards..............................................................................................................................10
4.3.4 Programmieradapter............................................................................................................................10
4.4 Übertragung des Beispielprogramms.........................................................................................................10
5 Anwendungsbeispiel..........................................................................................................................................11
6 Quellen...............................................................................................................................................................12
2/12
1 Einleitung
Microcontroller kann man sich als Computer in einem Chip vorstellen. Im Gegensatz zur normalen CPU
werden in einem Microcontroller möglichst viele, für den jeweiligen Einsatzzweck notwendige, Komponenten
integriert. Meist befindet sich der Programmspeicher auch ganz oder teilweise im Chip. Oft werden auch die
nötigen Schnittstellen, wie CAN oder SPI direkt auf dem Chip implementiert.
Durch die hohe Integration werden Microcontroller meist für einen speziellen Anwendungsfall entwickelt.
Dadurch gibt es eine Vielzahl verschiedener Typen. Es gibt auch allgemeinere Typen, die einfach möglichst
viele Funktionen bieten. Die nicht benötigten Funktionen lassen sich dann einfach abschalten.
In der heutigen Zeit sind uC nicht mehr wegzudenken. Sie befinden sich in fast jedem Elektronischen Gerät. In
jeder Uhr, ausgenommen mechanische Uhren, wird die Zeit von einem Microcontroller gezählt und angezeigt.
In der Unterhaltungselektronik befinden sich mittlerweile mehrere Controller in jedem Gerät. Die größte
Ansammlung von Microcontrollern dürfte allerdings in modernen Autos zu finden sein. Dort ist jedes Gerät mit
mindestens einem Controller ausgestattet. Alle Controller kommunizieren dabei über den CAN Bus.
3/12
2 Geschichte
Erste Microcontroller kamen Anfang der 70er Jahre auf den Markt. Grundlage hierfür waren meist etablierte
Prozessoren z.b. der 8086 von Intel. Er wurde um einen Interrupt- und einen Speichercontroller
erweitert und dann als 80186 Microcontroller verkauft. Es war der erste Microcontroller, der so
hoch integriert war, daß er zum Betrieb extern nur noch den Speicher und den Takt benötigte.
Man konnte hier auf vorhandene, bewährte Plattformen aufsetzen und diese entsprechend des
geplanten Einsatzbereichs erweitern bzw. spezialisieren.
1874 bringt Intel den 8080, dessen Nachfolger bzw Weiterentwicklung in der Firma Zilog Z80 (1976) einer der
erfolgreichsten Microcontrollern wurde. Er wurde unter Anderem im Commodore C128, in Taschenrechnern
und in Gameboys eingesetzt. Der Z80 ist wegen der großen Anzahl aktiver Exemplare heute noch Lieferbar.
1976 kommt der wohl erfolgreichste Microcontroller aller Zeiten, der Intel 8085. Er war der Nachfolger des
8080 und wurde bis 2002 öfter verkauft, als alle Nachfolger zusammen. Eingesetzt wurde
er unter Anderem beim Militär und der Nasa. So findet er auch Anwendung im Mars
Rover Pathfinder. Teilweise gab es von den Prozessoren auch extra Militärvarianten mit
erweitertem Temperaturbereich und / oder besonderem Strahlenschutz.
Anfangs wurden Microcontroller fast ausschließlich in der CISC Technik gebaut. Zu der Anfangszeit der
Microcontroller wurden Ihre Vorbilder wegen des teuren und knappen Speichers als CISC Prozessoren
ausgeführt. (CISC Programme sind kleiner). Deshalb waren die Microcontroller am Anfang auch in dieser
Architektur gefertigt. Ab der 80er Jahre ging man hier wieder in Richtung RISC Architektur und baute
Prozessoren wie den ARM (acom), MIPS (stanford) später den PPC (Apple, Ibm, Motorola). Wegen der großen
Vorteile der RISC Architektur gerade bei Microcontrollern und deren Einsatzgebiete werden heute meist RISC
Controller gefertigt.
3 Aufbau / Funktion
Ein Microcontroller vereint in einem einzigen Chip die
meisten zum Betrieb notwendigen Bausteine. Neben der
CPU enthält ein Standartcontroller noch einen oder
mehrere eigene Speicher, den Interruptcontroller, einen
Watchdog und verschiedene Ein- und Ausgänge. Bei
höherer Integration können auch noch Komponenten wie
Taktgeber, Timer, PWM (Pulsweitenmodulation), Serielle
Schnittstelle (RS485), SPI (Serial Peripheral Interface),
CAN (Controller Area Network), USB integriert sein.
Durch die hohe Integration lassen sich Microcontroller mit
einer minimalen externen Beschaltung betreiben. Im
Extremfall benötigt man nur eine Spannungsversorgung.
4/12
3.1 CPU / Interruptcontroller
3.1.1 CPU
Für die CPU Komponente wurden meist etablierte
Standarttypen verwendet. Die Bitbreite reicht je nach
Anwendungsfall von 4Bit bei einfachen Uhrencontrollern
bis zu 32Bit bei meist durch Hochsprachen bzw
Interpretersprachen programmierten Controllern. Als
Architektur kamen sowohl RISC als auch CISC
Prozessoren mit Trennung von Programm und
Datenspeicher nach Harvard. Es gibt Microcontroller mit
Taktfrequenzen bis 700Mhz. Üblich sind aber 10-20MHz.
3.1.2 Interruptcontroller
Der Interruptcontroller reagiert auf externe und interne
Ereignisse und meldet diese unverzüglich bzw. so schnell
wie möglich an das Programm, welches dann auf die
entsprechenden Ereignisse reagieren kann.
Interne Ereignisse sind z.B.
●
Timer Interrupt, wenn der Timer einen bestimmten Wert erreicht hat oder übergelaufen ist.
●
Zeichen über Serielle Schnittstelle empfangen oder gesendet.
●
AD Wandlung abgeschlossen
Externe Ereignisse sind z.B.
●
Reset ausgelöst
●
Externer Interrupt
3.1.3 RISC / CISC
Grundsätzlich unterscheidet man bei Prozessoren zwischen zwei Architekturen:
RISC
CISC
Wenige, einfache Befehle
Viele, aufwändige Befehle
Meist ein Takt pro Befehl
Meist zwei oder mehr Takte pro Befehl
Hohe Effizienz
Geringe Effizienz
Aufwändige Softwareentwicklung Einfachere Softwareentwicklung
Für beide Architekturen gibt es die Bitbreiten 4Bit - 32 Bit. Günstige 4Bit Prozessoren werden z.B. in Uhren
verwendet. Am weitesten sind 8Bit Microcontroller verbreitet. Hier ist das Verhältnis von Kosten zu Nutzen am
besten. Bei komplexeren Aufgaben kommen meist 32Bit Microcontroller zum Einsatz. Die Einsparung eines
16Bit Controllers steht mittlerweile in keinem Verhältnis zum Leistungsvorteil des 32Bitters.
5/12
3.2 Speicher
Der Speicher der Microcontroller ist nach der
Harvardarchitektur organisiert. Es gibt also getrennte
Speicherbereiche für Daten- und Programmcode.
Bei größeren Stückzahlen bzw bis Ende der 90er Jahre
wurden statt Flash Speicher ROM Speicher genommen.
Das ist bei größeren Stückzahlen günstiger herzustellen,
lässt sich aber einmal programmiert nicht mehr ändern.
Statt der EEPROM Speicher wurden früher EPROMS
eingesetzt, welche nur mithilfe von UV Licht gelöscht
werden konnten.
3.2.1 Flash Speicher
Der Flashspeicher enthält das Programm und
Datenkonstanten. Er ist nur von Außen beschreibbar, also
nicht vom Programm selbst änderbar. Die Lebensdauer
beträgt mehr als 10000 Schreibzyklen. Die Daten bleiben
bei Spannungsverlust, wie für Flash Speicher üblich, weiterhin erhalten. Er ist also nicht flüchtig.
3.2.2 SRAM
Der SRAM Speicher enthält den Stack und die Variablen während dem Programmablauf. Die Daten sind vom
Programm direkt änderbar. Die Anzahl möglicher Schreibzyklen ist fast unbegrenzt. Daten in diesem Speicher
sind nach Spannungsverlust verloren. Er ist also flüchtig.
3.2.3 EEPROM
Der EEPROM Speicher enthält Daten vom Programm, welche sich nicht sehr häufig ändern und über einen
längeren Zeitraum archiviert werden sollen. Er ist vom Programm schreib- und lesbar. Es kann allerdings nicht
beliebig gelesen und geschrieben werden, sondern es muß bei Änderung von Daten erst der alte Wert gelöscht
und mit dem neuen Wert beschrieben werden. Die Anzahl möglicher Schreib- und Lesezyklen wird mit
>100000 angegeben. Der Speicher ist auch nicht flüchtig.
3.3 Ein- und Ausgänge
Die Ein- und Ausgänge ermöglichen die Kommunikation des Controllers mit der Außenwelt. Beispiele hierfür
sind:
●
Anbinden von externem Speicher
●
Anschluß von Peripherie wie Display, andere Controller usw
●
Steuern von Verbrauchern
●
Einlesen von Tastern
●
Einlesen von Analogen Meßwerten
3.3.1 SPI Serial Peripheral Interface
Über das SPI werden hauptsächlich einfache Sensoren angeschlossen. Die SPI Schnittstelle besteht aus 2
Leitungen und Chipselect. Pro Bus gibt es einen Master und mehrere Slaves. Die Übertragungsgeschwindigkeit
erreicht je nach Länge der Leitung und angeschlossener Peripherie bis zu 1 MHz.
6/12
3.3.2 CAN Controller Area Network
Über den CAN Bus werden verschiedene Controller zu einem Netzwerk zusammengeschaltet. Die CAN
Schnittstelle besteht dabei aus zwei Leitungen. Es kann im Prinzip jedes Gerät Master oder Slave sein. Die
Übertragungsgeschwindigkeit erreicht je nach Länge der Leitung und angeschlossener Peripherie bis zu 1 MHz.
3.3.3 AD Wandler
Um Analoge Meßgrößen zu erfassen, haben viele
Microcontroller einen eingebauten Analog Digital
Wandler. Mit Ihm kann man den Analogen Eingangswert
in einen digitalen Zahlenwert wandeln. Bei einem 10Bit
AD Wandler kann man also 1023 verschiedene Werte
zwischen 0V und der Referenzspannung bestimmen. Das
funktioniert meist nach dem Verfahren der Successiven
Approximation. Nach dem Start der Wandlung wird ein
Zähler bis 1023 hochgezählt. Der Zählerstand wird
gleichzeitig über ein Widerstandsnetzwerk in ein
Analoges Signal gewandelt und mit dem zu messenden
Signal verglichen. Sobald die hochgezählte Spannung größer als die zu messende Spannung ist, stoppt der
Zähler und man kann den aktuellen Meßwert auslesen.
3.3.4 PWM Pulsweitenmodulation / DA Wandler
Viele Microcontroller bringen auf Ihrem Chip schon einen oder mehrere PWM Kanäle mit, welche völlig
unabhängig von der Software laufen können. Mit der Pulsweitenmodulation lassen sich z.B. Verbraucher in
Ihrer zugeführten Leistung regeln oder ein Analoges Ausgangssignal erzeugen. Dafür konfiguriert man einen
Timer als pwm Kanal. Der Takt kommt dabei vom Chiptakt und kann durch einen Teiler eingestellt werden.
Über die untere Grenze stellt man den Einschaltzeitpunkt des Ausgangssignals ein. Bei erreichen der oberen
Grenze wird der Ausgang wieder auf Null geschaltet, der Zähler zurückgesetzt und der Vorgang beginnt von
Neuem. Je länger das Ausgangssignal eingeschaltet ist, um so mehr Energie wird dem Verbraucher zugeführt.
Verbraucher mit relativ trägem Verhalten, wie Motoren, Glühlampen können direkt über einen
Leistungsschalter (FET) angesteuert werden. Bei schnelleren Verbrauchern z.B. bei der Erzeugung einer
Referenzspannung oder Anschluß eines Lautsprechers muß man die Wechselspannung vorher durch ein
Integrationsglied bzw Tiefpaßfilter Gleichrichten.
7/12
3.4 Watchdog
Die meisten Microcontroller haben eine sogenannte
Watchdog Logik integriert. Das funktioniert ähnlich der
Tote Mann Sicherung der Bahn. Es läuft permanent ein
Zähler, welcher in bestimmten Abständen vom Programm
zurückgesetzt werden muß. Bei erreichen einer Obergrenze
erfolgt ein Reset, um den Controller wieder in einen
definierten Ausgangszustand zu bringen.
3.5 Brown Out Detection
Bei Microcontrollern für Batteriebetrieb gibt es zusätzlich
noch die Brown Out Detection. Sie überwacht die
Betriebsspannung und führt einen Reset durch, falls eine
untere Grenze unterschritten wird. Dadurch soll ein
sicherer Programmablauf gewährleistet werden.
3.6 Beispiel eines Attiny13
Am Beispiel des Attiny 13 kann man die Größenentwicklung gut sehen. Trotz der kleinen Bauform des
Attiny13 enthält er viele Features:
●
6 Ein- / Ausgänge
●
4 Kanal 10 Bit AD Wandler
●
Bis 20Mhz möglich
●
ein Timer mit zwei PWM
●
8Bit
●
1kByte Flash, 64Byte EEPROM, 64Bytes SRAM
8/12
4 Programmierung
4.1 Beispielschaltung
Die Versorgungsspannung von 2,5-5,5V wird an die Pins 8 (+) und 4 (-) angeschlossen, wobei Pin8 noch über
einen 100nF Kondensator vor unsauberer Eingangsspannung abgeschirmt wird. Pin 1 (reset) wird über einen
Pullup Widerstand auf logisch eins gesetzt, was durch den invertierten Eingang eine Null ergibt. Reset soll ja
nicht auslösen. An Pin 3 (IO PB4) schließen wir die Anode der LED an, Die Kathode schließen wir über einen
geeigneten Vorwiderstand an Masse.
4.2 Beispielprogramm
Unser „Hello World“ Programm in c:
int main (void) {
DDRB
= 0x1F; // alle ios als output außer RESET (PB5)
PORTB
= 0x00; // alle ios auf low.
while(1) {
PORTB ^= 0x01 << PB4; // PB4 umschalten
delay();
}
return 0;
}
void delay (void){
unsigned int counter = 10000;
while (counter--);
}
Der Erste Befehl schaltet alle Ausgänge des PortB außer Reset (PB5) als Eingang. Reset darf nicht auf Einoder Ausgang geschaltet werden, denn sonst kann man den Controller nicht mehr Programmieren. Mit dem
zweiten Befehl werden alle Ausgänge auf Null gesetzt. Die Pause "delay" ist einfach eine Schleife, welche
10000 mal durchläuft. Mit dem Befehl in der Endlosschleife wird nun eine 1 mit der 4. Stelle des PORTB
Registers XOR gerechnet. Damit wird bei jedem Durchlauf der Zustand von PB4, also unserer LED, geändert
und wir haben somit einen Blinker.
9/12
4.3 Programmiermöglichkeiten
4.3.1 ISP In System Programmable
Der Controller kann in der bestehenden Schaltung programmiert werden und muß dazu nicht ausgebaut werden.
Hierbei kann Er sogar in einen speziellen Debugmodus gebracht werden, in dem man mit der speziellen
Software fast wie in einer IDE debuggen kann. Man kann also sein Programm Schrittweise abarbeiten,
Brakepoints setzen, Variablen zur Laufzeit auswerten usw.
4.3.2 Software
Zur Programmierung der Controller gibt es verschiedene freie und kostenpflichtige Software, die den Umgang
mit Microcontrollern erheblich vereinfacht. Manche enthalten sogar einen Emulator, mit dem sich der
Controller komplett emulieren lässt. So kann man die Programme außerhalb des Controllers schon testen und
optimieren.
4.3.3 Evaluations boards
Mit evaluations boards lassen sich recht schnell Anwendungen entwickeln, ohne dafür eine Schaltung aufbauen
zu müssen. Man kommt so recht schnell zu einem funktionierenden Prototypen. Sie enthalten verschiedene
Sensoren, Aktoren und Schnittstellen, die konfigurierbar mit den Ein- und Ausgängen des Controllers
verbunden werden können.
4.3.4 Programmieradapter
Als Schnittstelle zwischen Pc und Controller benötigt man zur Programmierung einen Programmieradapter.
Hier gibt es verschiedene Ausführungen für USB, Seriell oder Parallel. Meist hat ein Adapter verschiedene
Sockel, um mit einem Gerät verschiedene Controller Programmieren zu können. Ein günstiger Adapter lässt
sich aus einem alten Druckerkabel und ein paar Widerständen herstellen.
4.4 Übertragung des Beispielprogramms
Die hier vorgestellte Schaltung ist die günstigste Möglichkeit, die ISP Schnittstelle eines Controllers zu nutzen.
Die Benötigten Ports werden einfach über einen Schutzwiderstand mit der Parallelen Schnittstelle des Pcs
verbunden. Die meisten Programmierprogramme unterstützen diese Art Programmieradapter.
10/12
5 Anwendungsbeispiel
Ein schönes Beispiel für die Anwendung eines Microcontrollers im Privatbereich ist der hier vorgestellte
selbstbau MP3 Player. Bei der Entwicklung des Players wurde großes Augenmerk auf einfachen Nachbau und
gute Beschaffbarkeit der Teile. Die Platine gibt es als Image zum herunterladen. Mit der Direkt Toner Methode
lässt Sie sich relativ einfach herstellen. Hat man zufällig ein altes Handy zum Ausschlachten des Displays und
des Akkus, hält sich der Materialaufwand mit ca 30Eur in Grenzen. Als Speicher kann man entweder eine cf
oder sd Karte nehmen.
11/12
6 Quellen
●
●
●
●
●
●
●
●
●
●
●
●
●
http://www.david-schleicher.de
http://www.avrbeginners.net
http://www.habmigern2003.info/future_trends/greenhouse/CO2Supplementation/Projektdokumentation_V1.htm
http://de.wikipedia.org/wiki/RCA1802
http://de.wikipedia.org/wiki/Intel_8085
http://de.wikipedia.org/wiki/Microcontroller
http://www.atmel.com
http://avrmicrocontrollers.com
http://www.mikrocontroller.net/articles/AVR-Tutorial
http://www.myplace.nu/mp3/
NEWNES – PIC Microcontrollers – Di Jasio
VIEWEG – Mikroprozessortechnik – Klaus Wüst
TEWI – Microcontroller – Dieter Schossig
12/12
Herunterladen