Mikrocontroller

Mikrocontroller sind Prozessoren mit bereits integrierten Schnittstellen/ Hardwarekomponenten, wie z.B.:

  • Analog-Digital-Wandler
  • PMW Module
  • I2C Schnittstelle
  • UART Schnittstelle
  • SPI Schnittstelle
  • Interruptfähige Pins
  • Interface für Externen Speicher
  • etc...

Als CPU in den Mikrocontrollern gibt es zur Zeit Varianten mit 8, 16 und 32 Bit Verarbeitungsbreite. Für die Applikationen werden 8-Bit-Mikrocontroller eingesetzt. Die Entscheidung welcher Microcontroller eingesetzt wird häng von vielen Faktoren ab.

  • Welche Schnittstellen werden gebraucht?
  • Wieviel Rechenkapazität wird benötigt?
  • Sind Hardwareinterrupts notwendig?
  • Ist Echtzeitverhalten notwendig?
  • Was darf das System kosten?
  • Wird externer Speicher benötigt?
  • etc...

Vergleich "Harvard"- und "von-Neumann"- Architektur bei µC

Die zwei wichtigsten Faktoren für die CPU in einem Mikrocontroller sind die Architektur und die Taktfrequenz. Als Architektur stehen die „von-Neumann“ (z.B. Motorola/Freescale) oder „Harvard“ (z.B. Atmel).

Die Harvard-Architektur hat den Vorteil, dass die meisten Befehle innerhalb von einem oder zwei Taktzyklen abgearbeitet werden. Nur einige wenige Befehle, wie z.B. spezielle Hardwarefunktionen, benötigen mehr als zwei Takte. CPU und Bus arbeiten mit der selben Taktfrequenz. Daten und Adressbereich haben einen getrennten Speicher.

Bei der von-Neumann-Architektur, wie z.B. bei der CPU-08 von Freescale, gibt es für die CPU einen doppelt so hohen Takt wie für den Bus. Die meisten Befehle benötigen vier Bus-Takte. Für Daten und Programm wird der gleiche Speicher benutzt. Bedingt durch die Technologie ist der untere Speicherbereich ein RAM und der obere Speicherbereich ein FLASH, so dass die Daten hier wieder getrennt sind.

Einschätzung der Leistungsfähigkeit von Mikrocontrollern

Zur Beschreibung der Leistungsfähigkeit ist die Angabe der Taktfrequenz nicht ausreichend. So ist z.B. ein Atmel (Harvard) mit 16MHz Prozessortakt(ca. 12MIPS) immer noch leistungsfähiger als ein Freescale HSC08 mit 40MHz Prozessortakt (ca. 8MIPS).

In diesem Zusammenhang sind auch die zur Verfügung stehenden Befehle wichtig. Die Freescale-Controller haben z.B. eine CISC-CPU und die AVRs eine RISC-CPU. Die AVRs haben demnach weniger Befehle als die Freescale-Controller (etwas mehr als die Hälfte - 131 zu 250). Bei der Betrachtung der Leistungsfähigkeit der Controller müssen die zur Verfügung stehenden Befehle daher mit berücksichtigt werden, da die Programmperformance davon abhängt.

Bei der Leistungsfähigkeit der CPU spielt natürlich auch noch die Anzahl der Datenregister eine große Rolle. Atmel hat den Controllern 32 gleichwertige Register implementiert sowie einen Akkumulator. Bei der CPU-08 von Freescale gibt es nur einen Akkumulator und ein Indexregister. Eine Abarbeitung einer 16-Bit Multiplikation oder der Vergleich zweier 16 Bit Zahlen ist mit mehreren Registern schneller abzuarbeiten als nur mittels eines Akkumulators. Jeder der beiden CPUs kann nur 8-Bit breite Zahlen verarbeiten und muss solche Aktivitäten dann aufteilen. Während Atmel die Daten direkt in vier der 32 Register behält, müssen bei der CPU-08 von Freescale die vier 8-Bit Zahlen erst aus dem Speicher in den Akkumulator geladen und zwischendurch wieder in den Speicher zurückgeschrieben oder auf den Stack geschoben werden. Wie solche Operationen genau ausgeführt werden, hängt natürlich vom Compiler oder vom Programmierer (wenn direkt in Assembler programmiert wird) ab.