Die Komponenten eines ComputersDie Komponenten, die für die Funktion eines Computers wesentlich sind, lassen sich in mehrere Grundelemente aufteilen, die bestimmte Aufgaben erfüllen.
Die Eingabe und Ausgabe von Daten (Input/Output oder I/O) zum oder vom Computer wird durch unterschiedliche Peripheriegeräte bewerkstelligt. Die externen Daten müssen in computerlesbare Daten übersetzt werden. Die Daten, die der Computer generiert müssen in eine passende Form übersetzt werden. In vielen Fällen müssen Daten generiert werden, die für den Menschen lesbar sind (human readable Data). Im Laufe der Zeit wurden hierfür die unterschiedlichsten technischen Lösungen entwickelt. Die Daten, mit denen der Computer arbeitet und die er während seiner Berechnungen generiert, müssen irgendwo gespeichert werden. Dazu besitzt der Computer einen Speicher (Memory), der aus mehreren Komponenten bestehen kann. Daten, mit denen der Computer direkt arbeitet, werden normalerweise im Binärformat gespeichert, da auch der Speicher üblicherweise nur zwei Zustände kennt. Das Steuerwerk (Control-Unit) steuert den Programmablauf und sorgt dafür, dass alle Komponenten des Computers zur rechten Zeit mit den nötigen Daten versorgt werden. Die ALUDas Rechenwerk (Aritmetic-Logic-Unit oder ALU) ist die Komponente eines Computers, in der die Berechnungen stattfinden. Die ALU beherrscht einige Grundfunktionen, mit denen sie die notwendigen Berechnungen durchführt. Der Knackpunkt ist, dass komplexere Funktionen durch schnelle wiederholte Anwendung dieser Grundfunktionen der ALU generiert werden können. In ihrer einfachsten Form beherrscht eine ALU nur eine einzige mathematische Operation, nämlich die Addition. Außerdem beherrscht sie die logischen Grundoperationen UND, ODER, NICHT und das Bit-Shifting (Bitweise Verschieben einer Bitfolge). Aus diesen Grundoperationen können die Subtraktion, Multiplikation und Division durch geeignete Algorithmen abgeleitet werden. Der scheinbare "Mangel an Grundrechenarten", die eine ALU beherrscht, liegt darin begründet, dass anfangs die elektronischen Komponenten, aus denen eine ALU bestand, groß, sperrig und vor allem teuer waren. Eine Minimalkonfiguration musste genügen. In modernen ALUs sind auch Multiplikation und Fließkommaoperationen direkt integriert, was die Rechengeschwindigkeit vervielfacht. Durch die heutige hohe Integrationsdichte von Bauteilen auf einem Mikrochip fällt der zusätzliche Bauteileaufwand praktisch nicht ins Gewicht. Moderne Computer und MikroprozessorenHeutige Computerprozessoren nennt man CPU (Central-Processing-Unit). Auf einer CPU sind die Funktionen von CU und ALU vereinigt. Die fortschreitende Miniaturisierung macht es möglich, auch weitere Grundkomponenten auf einem Halbleiterchip zu vereinigen. Das Ganze nennt man dann SoC (System on a Chip). Man sollte sich vor Augen führen, dass die Steuerung von modernen Haushaltsgeräten auf SoCs basiert, die ein Vielfaches an Rechenpower im Vergleich zu den ersten Computern (die ganze Turnhallen gefüllt haben) besitzen. Interner Aufbau eines Mikrocontrollers
Anschlüsse eines MikrocontrollersFür den Betrieb eines Mikrocontrollers genügen wenige externe Bauteile. Die Pins ("Anschluss-Beinchen") sorgen für den elektrischen Anschluss an die Außenwelt. An den Pins werden externe Ein- und Ausgangssignale, aber auch die Versorgungsspannung für den µC angeschlossen. Die Pins werden nach unterschiedlichen Kriterien unterschieden:
Häufig haben die Pins eines Mikrocontrollers mehrere Funktionen. Die konkrete Funktion solcher GPIO-Pins ("General Purpose Input Output"-Pins) kann durch die Programmierung des Mikrocontrollers frei definiert werden. Häufig werden mehrere Pins zu Ports zusammengefasst. Dies liegt in der internen Bus-Struktur des Mikrocontrollers begründet. Mehrere Pins des gleichen Ports lassen sich gleichzeitig programmieren. Bei der Programmierung von Pins unterschiedlicher Ports muss eine zeitliche Abweichung einkalkuliert werden (auch wenn diese nur sehr kurz ist). Jeder Mikrocontroller besitzt seine eigene, spezielle Pinbelegung (Pinout). Die Programmierung eines MikrocontrollersEin Mikrocontroller kann in Assembler (Maschinensprache) oder in einer Hochsprache wie C oder Basic programmiert werden.
Zum komfortablen Programmieren und Testen nutzt man eine IDE (Integrated Development Environment), die die meisten Hardware Hersteller oft umsonst für ihre Controller anbieten. Man kann jedoch viele Mikrocontroller auch ohne umfangreiche IDE programmieren, indem man den Code auf einem beliebigen Texteditor entwirft und diesen schrittweise compiliert, assembliert, linkt und auf den Controller überträgt. Die Hilfsprogramme, die dafür benötigt werden, bezeichnet man auch als Toolchain. Für die Programmierung von AVR Mikrocontrollern existiert die quelloffene avr-gcc-Toolchain. Die Nutzung dieser Toolchain wird hier beschrieben. Programmentwurf für einen MikrocontrollerUm ein Programm für eine Steuerung mit Hilfe eines Mikrocontrollers zu entwickeln, muss das Problem zunächst genau analysiert werden. Die Problemanalyse liefert wichtige Eckdaten für die Umsetzung auf dem Mikrocontroller.
Nach diesen Kriterien kann man dann den passenden Mikrocontroller auswählen. Inzwischen gibt es zahlreiche billige Mikrocontroller, die sich auch für umfangreichere Steuerungsaufgaben eignen. Bei der Entwicklung eines Programms hilft ein Programmablaufplan. Dieser kann unabhängig von der Programmiersprache und vom verwendeten Mikrocontroller entworfen werden. Er hilft zusätzlich bei der Analyse des Problems. Häufig trägt ein PAP auch zum Verständnis des Problems bei. |