3.4. Pins und Peripheriegeräte

Ein Pin ist das einfachste Peripheriegerät der MCU: eine einzelne Leitung, die den Chip mit der Außenwelt verbindet. Jede Interaktion mit realer Hardware – eine LED ansteuern, einen Schalter auslesen, eine Spannung messen, Bytes über eine serielle Leitung senden – läuft letztlich über einen oder mehrere Pins.

3.4.1. Pin-Modi

Ein Pin wird in einen von wenigen Modi konfiguriert, bevor er etwas Nützliches tut:

  • Pin.IN – Eingang. Der Pin beobachtet die von außen an ihn angelegte Spannung und meldet sie als 0 (Low) oder 1 (High).

  • Pin.OUT – Ausgang. Der Pin treibt sich selbst entweder auf die Versorgungsspannung (1) oder auf Masse (0), sodass externe Komponenten diese Spannung sehen.

  • Pin.OPEN_DRAIN – Ausgang, der die Leitung nur auf Low ziehen kann. Um auf High zu gehen, gibt der Pin frei (floatet) und ein externer Pull-up-Widerstand hebt die Leitung an. Wird für gemeinsam genutzte Busse verwendet, bei denen mehrere Geräte dieselbe Leitung treiben können.

Eingänge können optional einen internen Pull-Widerstand aktivieren, der einen definierten Pegel garantiert, wenn nichts Externes den Pin treibt:

Der Konstruktor nimmt id, mode und pull als Positionsargumente entgegen:

from machine import Pin

led    = Pin("P0", Pin.OUT)
button = Pin("P1", Pin.IN, Pin.PULL_UP)

3.4.2. Alternativfunktionen

Die meisten Pins haben zusätzlich zu ihrer GPIO-Rolle eine Alternativfunktion. Ein einzelnes physisches Pad auf dem Chip kann sein:

Andere Peripheriegeräte (weitere serielle Busse, Timer und so weiter) beanspruchen ebenfalls bestimmte Pins; der Chip-Entwickler verdrahtet jeden Hardwareblock mit einem festen Satz von Pads. Der ADC tastet nur Pins ab, die zu seinem Multiplexer geführt werden; ein UART sendet auf dem einen Pin, mit dem sein TX-Signal verdrahtet ist.

Bemerkung

OpenMV Cams beschriften die Pins des externen Steckverbinders mit P0 bis P9 (variiert leicht je nach Board). Welcher Pin welche Alternativfunktion trägt, ist board-spezifisch; siehe die OpenMV Cam Kurzreferenz für die Tabelle.

3.4.3. Board-Varianten

Einige Details variieren je nach Board und sollten immer anhand der Kurzreferenz überprüft und nicht von einem anderen Board angenommen werden:

  • Spannungstoleranz. Manche Cams haben 5-V-tolerante E/A-Pins (ein 5-V-Signal kann direkt ohne Schaden angelegt werden); andere betreiben ihre E/A mit 3,3 V oder 1,8 V und benötigen einen Pegelwandler für jedes Signal darüber. Das Anschließen einer 5-V-Quelle an einen nicht toleranten Pin kann den Chip beschädigen.

  • ADC-Referenz. Die Spannung, die der ADC als Vollausschlag behandelt, hängt von der E/A-Versorgung des Boards ab. read_u16() gibt immer 0..65535 zurück, aber die Spannung, die 65535 repräsentiert, ist die jeweilige Referenz des Boards.

  • Treiberstärke. Ein GPIO-Pin kann nur einen begrenzten Strom liefern oder aufnehmen – typischerweise einige zehn Milliampere. Genug für eine kleine LED über einen Widerstand; nicht genug für einen Motor, einen Summer oder eine induktive Last. Greifen Sie für alles Größere zu einem externen Treiber (Transistor, MOSFET, H-Brücke).

Die OpenMV Cam Kurzreferenz gibt die genauen Zahlen pro Board an.