3.4. Piny a periferie

Pin je nejjednodušší periferií na MCU: jediný vodič, který spojuje čip s okolním světem. Každá interakce se skutečným hardwarem – rozsvícení LED, čtení spínače, měření napětí, odesílání bajtů po sériové lince – nakonec prochází jedním nebo více piny.

3.4.1. Režimy pinu

Pin je před jakýmkoli užitečným použitím nakonfigurován do jednoho z několika režimů:

  • Pin.IN – vstup. Pin sleduje napětí přivedené na něj zvenčí a hlásí jej jako 0 (nízká úroveň) nebo 1 (vysoká úroveň).

  • Pin.OUT – výstup. Pin se sám řídí buď na napájecí napětí (1), nebo na zem (0), takže externí součástky toto napětí vidí.

  • Pin.OPEN_DRAIN – výstup, který může vodič pouze stáhnout do nízké úrovně. Aby se dostal do vysoké úrovně, pin se uvolní (přejde do plovoucího stavu) a externí zvedací (pull-up) rezistor vodič vyzvedne. Používá se pro sdílené sběrnice, kde stejný vodič může řídit více zařízení.

Vstupy mohou volitelně povolit interní pull rezistor, který zaručuje definovanou úroveň, když pin neřídí nic externího:

Konstruktor přijímá id, režim a pull jako poziční argumenty:

from machine import Pin

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

3.4.2. Alternativní funkce

Většina pinů má kromě své role GPIO i alternativní funkci. Jediná fyzická plocha na čipu může být:

Specifické piny si nárokují i další periferie (další sériové sběrnice, časovače a podobně); návrhář čipu propojuje každý hardwarový blok s pevnou sadou ploch. ADC vzorkuje pouze piny vedené na svůj multiplexer; UART vysílá na tom jediném pinu, na který je připojen jeho signál TX.

Poznámka

Kamery OpenMV označují piny externího konektoru P0P9 (mírně se liší podle desky). To, který pin nese kterou alternativní funkci, závisí na desce; tabulku najdete v rychlé referenci OpenMV Cam.

3.4.3. Varianty desek

Několik detailů se liší podle desky a měly by se vždy ověřit oproti rychlé referenci, nikoli předpokládat podle jiné desky:

  • Napěťová tolerance. Některé kamery mají I/O piny tolerantní k 5 V (signál 5 V lze přivést přímo bez poškození); jiné provozují své I/O na 3,3 V nebo 1,8 V a pro jakýkoli signál nad tuto úroveň vyžadují převodník úrovní. Připojení zdroje 5 V k netolerujícímu pinu může čip poškodit.

  • Reference ADC. Napětí, které ADC považuje za plný rozsah, závisí na I/O napájení desky. read_u16() vždy vrací 0..65535, ale napětí, které 65535 představuje, je dáno referencí dané desky.

  • Budicí proud. GPIO pin může dodávat nebo pohlcovat omezený proud – typicky desítky miliampér. Dostatek pro malou LED přes rezistor; nedostatek pro motor, bzučák nebo jakoukoli indukční zátěž. Pro cokoli náročnějšího sáhněte po externím budiči (tranzistor, MOSFET, H-můstek).

Rychlá reference OpenMV Cam uvádí přesná čísla pro každou desku.