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 jako0(nízká úroveň) nebo1(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:
Pin.PULL_UP– slabé vytažení na napájecí větev.Pin.PULL_DOWN– slabé vytažení na zem.
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:
Digitální vstup nebo výstup (
machine.Pin).Vstup ADC, který měří napětí (
machine.ADC).Výstup PWM, který vysílá obdélníkový průběh (
machine.PWM).Linka TX nebo RX rozhraní UART (
machine.UART).
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 P0 až P9 (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é65535př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.