Freitag, 26. Juni 2009

PIC Microcontroller Teil 1

Da ich nach dem Lesen der PIC-Microcontroller Literatur jetzt etwas schlauer bin möchte ich hier nun meine Erkenntnisse zusammenfassen. Dieser Text soll alle denen, die sich ebenfalls mit PIC-Controllern beschäftigen einen schnellen überblick liefern, was Sie mit diesen Controllern anfangen können.

Ein Mirocontroller enthält einen kleinen Computer in einem IC. Sein Einsatzgebiet ist in elektronischen Schaltungen, wo er eine Aufgabe erledigen soll, die mit herkömmlichen ICs nur sehr Aufwendig und sehr unflexiebel zu realisieren wäre. Ein Beispiel wäre ein Sensorgesteuerte Ampelsteuerung, eine Waschmaschinensteuerung oder ein Schnittstellen-Konverter. Diese Aufgaben kann ein Microcontroller in einem IC erledigen und es besteht die Möglichkeit evtl. Ablaufänderungen nachträglich durch eine Änderung der Software vorzunehmen.

Damit ein Microcontroller funktionieren kann, benötigte er:
  • einen Programmspeicher (ROM) der das Programm enthält,
  • einen Datenspeicher (RAM) in dem er Variablen ablegen kann,
  • eine Verarbeitungseinheit (CPU) die ein Programm ausführen kann und Daten verarbeiten kann,
  • einen Taktgenerator (Timer/Clock) der die CPU antreibt und mit dem man Zählen bzw. die Zeit messen kann,
  • Schnittstellen (I/O) über die man Signale einlesen und ausgeben kann.
Abhängig von gewählten Controller-Typ enthält ein Microcontroller meist noch verschiedenen serielle Schnittstellen, Analog/Digitalwandler, einen Watchdog-Timer und eine Reset-Logik.

PIC Micro-Controller
Diese Controller arbeiten nach dem RISC Prinzip, das heist, dass sie über nur wenige einfache Maschinenbefehle verfügen, diese Befehle aber in einem Maschinen-Zyklus ausführen können. Das Gegenteil wäre das CISC Prinzip, wo wesentlich mehr und vor allem komplexere Maschinen-Befehle gibt, die mehr Maschinen-Zyklen benötigen um ihre Aufgabe zu erfüllen.

Es mag Anwendungen geben, wo es von großem Vorteil sein kann, dass ein Maschinenbefehl nur ein Maschinenzyklus benötigt. Entscheidend für die Wahl des RISC-Prinzips beim PIC war wohl aber, dass die Komplexität des Controllers, und damit die Anzahl der benötigten Transistoren, deutlich reduziert werden konnte, was sich auf den Preis des ICs auswirkt. Kleiner Chip bedeutet mehr Prozessoren pro Wafer und somit geringere Herstellungskosten.

Um eine Verarbeitung von einem Maschinenbefehl pro Maschinenzyklus zu erreichen wurde außerdem beim Design des Controllers auf die Harward-Architektur zurückgegriffen. Im Gegensatz zur Von-Neumann-Architektur sind hierbei der Programm-Speicher und der Datenspeicher physikalisch voneinander getrennt. Durch die Trennung ist ein gleichzeitiger
Zugriff auf beide Speicher möglich, der Aufbau der CPU ist einfacher, benötigt weniger Transistoren und ist schneller.

Dieses Chip-Design hat jedoch auch Nachteile. Dadurch dass ein RISC-Befehlssatz weniger Funktionalität enthält wie ein CISC-Befehlssatz werden die RISC-Programme länger als CISC-Programm um die gleiche Funktion zu erfüllen. Die Harward-Architektur erlaubt es nicht Daten im Programmspeicher (Konstanten) anzusprechen. Darum müssen Konstanten in den Datenspeicher kopiert werden um auf diese zuzugreifen. Beide Nachteile fallen aber beim PIC-Controller meist wenig ins Gewicht, weil die Anwendungsprogramme meist einfach aufgebaut sind und die Größe des ROMs in den wenigsten Fällen ausgeschöpft wird.

Der innere Aufbau des ROMs eines PIC-Controllers ist weder 8- noch 16-Bit breit. Eine Zelle eines Low-End PIC-Controllers ist 12 Bit-Breit, die eines Mid-Range PIC-Controllers 14 Bit-Breit. Diese merkwürdige Anzahl hat drei Gründe:
  • Da in der Harward-Architektur keine Daten im ROM abgelegt werden können, ist es nicht erforderlich den Speicher zu vielfachen von 8 Bit zu organisieren.
  • Jede Zelle enthält genau einen Maschinen-Befehl für den PIC-Controller. Da der Low-End Controller weniger Befehle und einen sehr kleineren Adressierbaren Speicher hat, kommt man mit 12 Bit pro Befehl gut aus. Die Mid-Range Controller haben 2 Bit mehr da Sie mehr Befehle und mehr Speicher haben.
  • Der Programmspeicher ist auf dem Chip integriert und nicht extern erweiterbar. Es werden nur soviel Bits genutzt wie sinnvoll ist, was wieder Transistoren auf dem Chip spart.
Leider habe die Ingenieure es beim Transistor-Sparen etwas übertrieben. Um bei Mid-Range PICs auf alle I/O-Register, den RAM und den Programmspeicher zugreifen zu können, mussten die Speicher in Bank (RAM/Register) und Pages (ROM) zulegt werden. D.h. die Maschinenbefehle können nicht auf den gesamten Speicher zugreifen, weil man an ein paar Bits gespart hat. Dies erschwert und verkompliziert die Programmierung.

Keine Kommentare:

Kommentar veröffentlichen