Grundlagen und Architektur der PIC-Mikrocontroller

Gesendet von Javi und eingeordnet in Elektronik

Geschrieben am in Deutsch mit einer Größe von 152,19 KB

Betriebsarten des PIC

Es gibt vier Möglichkeiten, je nach verwendetem externen Oszillator:

  • RC: Kostengünstig. Geringe Stabilität, besteht aus einem Widerstand und einem Kondensator. Abhängig von den Werten von R und C.
  • HS: High-Speed (4 bis 10 MHz). Basis ist ein Quarz oder Keramik-Resonator.
  • XT: Bereich niedrigerer Frequenzen als HS (beide nutzen die gleiche Resonanz), bietet eine größere Genauigkeit in der Zeitdauer.
  • LP: Besteht aus Quarz oder Keramik, bietet geringen Stromverbrauch, arbeitet aber bei tiefen Frequenzen (35–200 kHz).

Multiplexer-Funktion der PIC-Pins

Die Pins RA4 und RB0 besitzen Multiplexer-Funktionen:

  • RA4: Multiplex mit einer Funktion, die eine externe Frequenz empfängt, um den Timer TMR0 zu speisen.
  • RB0: Multiplex mit der Eingabefunktion des externen Interrupts.

9k =

Open-Drain-Modus

Dies bedeutet, dass kein Polarisationswiderstand verwendet wird (RA4 ist Open-Drain), wodurch der hochohmige Zustand erreicht wird.

Betriebsfrequenz

Ein wichtiger Parameter für die Ausführungsgeschwindigkeit und den Stromverbrauch. Läuft ein PIC beispielsweise bei 10 MHz, entspricht dies einem Zyklus von 400 Nanosekunden, da jede Anweisung bis zu 4 Taktperioden benötigt. Alle Anweisungen werden in einem Zyklus (4 Perioden) ausgeführt, außer Sprungbefehle, die zwei Zyklen (8 Perioden) benötigen.

Pipe-Line oder Segmentierung

Parallele Realisierung von zwei Phasen einer Anweisung: Suchen und Ausführung.

  • Q1: Erhöhung des Programmzählers.
  • Q2-Q3: Decodierung und Ausführung.
  • Q4: Suche nach dem nächsten Befehl und Laden in das Anweisungsregister.

Harvard-Architektur

  • Unabhängiger und gleichzeitiger Zugriff auf Daten- und Programmspeicher.
  • Wortlänge und Größe sind an die Busse angepasst.
  • Intensive Bewirtschaftung der Bankregister.

Orthogonalität

Jede Anweisung kann jedes Element der Architektur als Quelle oder Ziel verwenden.

Programmspeicher

Organisiert in 14-Bit-Worten (Flash beim 16F84) mit einer Größe von 1 KByte. Nur lesbar zur Codeausführung. Der RESET-Vektor liegt bei 0000h, der Interrupt-Vektor bei 0004h; der Benutzerspeicher beginnt ab Adresse 0005h.

PCLATH

Register, das den indirekten Zugriff auf den oberen Teil des Programmzählers ermöglicht.

Was ist ein Stack?

Ein isolierter Bestandteil des Programm- und Datenspeichers. Es ist ein LIFO-Speicher (Last-In-First-Out), 8 Ebenen tief, und ermöglicht 8 verschachtelte Unterprogramme.

RAM-Datenspeicher (Adressierung)

Der RAM besteht aus Special Purpose Registern (SFR) und General Purpose Registern (GPR). Physikalisch in zwei eigenständige Bänke (0 und 1) zu je 128 Bytes unterteilt. Beim PIC 16F84 sind nur die ersten 80 Positionen jeder Bank implementiert; die ersten 12 sind für spezielle Zwecke reserviert. Nach einem RESET wird automatisch auf Bank 0 (RP = 0) zugegriffen.

Adressierungsmodi

  • Sofort: Die Anweisung verwendet sofortige Daten, die im Op-Code enthalten sind und in das W-Register geladen werden.
  • Direkt: Der Operand wird durch seine Adresse referenziert, die in den 7 niederwertigen Bits des Op-Codes enthalten ist.
  • Indirekt: Wird verwendet, wenn das Register INDF als Operand genutzt wird oder beim Lesen/Schreiben des EEPROM.

Status-Register

Das Register 03H (Status) ist in beiden RAM-Bänken (03h und 83h) vorhanden. Es dient dazu:

  • Die Auswirkungen von ALU-Operationen zu speichern.
  • Den Reset-Zustand und den Schlafmodus anzuzeigen.
  • Die RAM-Bank auszuwählen.

2Q ==

  • C: Carry (1 = Übertrag, 0 = keiner).
  • DC: Digit Carry (1 = Übertrag auf das 4. Bit, 0 = keiner).
  • Z: Zero (1 = Ergebnis ist 0, 0 = ungleich 0).
  • PD: Power-Down (1 = aktiv, 0 = Schlafmodus).
  • TO: Time-out (1 = nach Power-up/Reset, 0 = WDT-Überlauf).
  • RP1, RP0: Bank-Auswahl (00 = Bank 0, 01 = Bank 1).
  • IRP: Indirekte Bank-Auswahl (nicht benutzt).

TMR0

8-Bit Timer/Counter:

  • Counter: Zählt externe Ereignisse über Impulse am Pin RA4/TOCK1.
  • Timer: Zählt interne Anweisungszyklen.

Die Funktion wird über das OPTION-REG gesteuert. Der Übergang im TMR0 dient als Pre-Teiler.

Watchdog (WDT)

Ein Timer, der das Programm überwacht. Läuft er ab, ohne dass er zurückgesetzt wurde, startet das System neu.

Register OPTION-REG

Steuert TMR0 und externe Interrupts (Adresse 81h).
2Q ==

  • RBPU: Pull-up Widerstände (1 = deaktiviert, 0 = aktiviert).
  • INTEDG: Interrupt-Flanke (1 = steigend, 0 = fallend).
  • TOCS: Taktquelle (1 = RA4/TOCK1, 0 = interner Takt).
  • TOSE: Flankenauswahl für TMR0 (1 = fallend, 0 = steigend).
  • PSA: Prescaler-Zuweisung (1 = WDT, 0 = TMR0).
  • PS2, PS1, PS0: Auswahl des Prescaler-Verhältnisses.

Pull-up-Widerstand

Widerstand, der die Leitungen von Port B auf ein hohes Potenzial zieht. Aktivierung durch OPTION_REG, RBPU = 0.

Port A

RA3-RA0 unterstützen TTL- und CMOS-Pegel. RA4/TOCK1 besitzt einen Schmitt-Trigger und einen Open-Drain-Ausgang.

Port B (RB7-RB4)

Können so programmiert werden, dass sie bei einer Zustandsänderung einen Interrupt auslösen.

Konfigurationswort

Reservierte Position im Programmspeicher bei 2007h.
Z

  • CP: Code Protection (1 = aus, 0 = an).
  • PWRTE: Power-up Timer (1 = aus, 0 = an).
  • WDTE: Watchdog Timer (1 = an, 0 = aus).
  • FOSC1-FOSC0: Oszillator-Auswahl (11=RC, 10=HS, 01=XT, 00=LP).

EEPROM-Daten

64 Bytes Speicher. Zugriff über spezielle Register:
9k =

  • EEDATA: Datenregister.
  • EEADR: Adressregister.
  • EECON1/EECON2: Kontrollregister.

Z

Interrupts

Asynchrone Unterbrechung des Programmablaufs. Quellen: RB0/INT-Pin, TMR0-Überlauf, Änderung an RB1-RB7, Abschluss des EEPROM-Schreibvorgangs.

Interrupt Control Register (INTCON)

9k =

  • GIE: Global Interrupt Enable.
  • EEIE: EEPROM Write Complete Interrupt Enable.
  • T0IE: TMR0 Overflow Interrupt Enable.
  • INTF: RB0/INT Interrupt Flag.
  • INTE: RB0/INT Interrupt Enable.
  • RBIE: RB Port Change Interrupt Enable.
  • T0IF: TMR0 Overflow Interrupt Flag.
  • RBIF: RB Port Change Interrupt Flag.

Reset-Ursachen

  • Power-On Reset (Einschalten).
  • MCLR-Pin (externer Reset).
  • WDT-Überlauf.
  • Brown-Out (Spannungsabfall).

Sleep-Modus

Wird durch die SLEEP-Anweisung aktiviert, um Strom zu sparen. Der Oszillator stoppt, die I/O-Pins behalten ihren Zustand.

CCP-Modul

Capture/Compare/PWM-Modul. Funktionen: 16-Bit-Capture von TMR1, Vergleich von TMR1-Werten, PWM-Signalerzeugung.

9k =

2Q ==

2Q ==

Verwandte Einträge: