Pin osztály – I/O lábak vezérlése

A pin objektum az I/O lábak (más néven GPIO - általános célú be-/kimenet) vezérlésére szolgál. A pin objektumok általában egy fizikai lábhoz kapcsolódnak, amely kimeneti feszültséget tud meghajtani és bemeneti feszültségeket tud beolvasni. A pin osztály rendelkezik metódusokkal a láb módjának (IN, OUT stb.) beállítására, valamint metódusokkal a digitális logikai szint lekérdezésére és beállítására. A láb analóg vezérléséhez lásd az ADC osztályt.

A pin objektum egy azonosító segítségével hozható létre, amely egyértelműen megad egy bizonyos I/O lábat. Az azonosító megengedett formái és az a fizikai láb, amelyre az azonosító leképeződik, port-specifikusak. Az azonosító lehet egész szám, karakterlánc vagy egy port- és lábszámot tartalmazó kettős (tuple).

Használati modell:

from machine import Pin

# create an output pin on header pin P0
p0 = Pin("P0", Pin.OUT)

# set the value low then high
p0.value(0)
p0.value(1)

# create an input pin on header pin P2, with a pull-up resistor
p2 = Pin("P2", Pin.IN, Pin.PULL_UP)

# read and print the pin value
print(p2.value())

# reconfigure P0 in input mode with a pull-down resistor
p0.init(p0.IN, p0.PULL_DOWN)

# install an IRQ callback
p0.irq(lambda p: print(p))

Konstruktorok

class machine.Pin(id: int | str, mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1)

Az adott id azonosítóhoz tartozó láb-periféria (GPIO láb) elérése. Ha a konstruktorban további argumentumokat adunk meg, akkor azokat a láb inicializálására használja. Minden olyan beállítás, amely nincs megadva, az előző állapotában marad.

Az argumentumok a következők:

  • Az id kötelező, és tetszőleges objektum lehet. A lehetséges értéktípusok közé tartozik: int (belső Pin azonosító), str (Pin név) és tuple ([port, pin] pár).

  • A mode adja meg a láb módját, amely az alábbiak egyike lehet:

    • Pin.IN - A láb bemenetre van konfigurálva. Kimenetként tekintve a láb nagy impedanciájú állapotban van.

    • Pin.OUT - A láb (normál) kimenetre van konfigurálva.

    • Pin.OPEN_DRAIN - A láb nyitott nyelős (open-drain) kimenetre van konfigurálva. A nyitott nyelős kimenet a következőképpen működik: ha a kimeneti érték 0, a láb alacsony szinten aktív; ha a kimeneti érték 1, a láb nagy impedanciájú állapotban van. Nem minden port valósítja meg ezt a módot, vagy egyesek csak bizonyos lábakon.

    • Pin.ALT - A láb egy alternatív funkció ellátására van konfigurálva, amely port-specifikus. Az így konfigurált láb esetén semmilyen más Pin metódus (kivéve a Pin.init()) nem alkalmazható (hívásuk meghatározatlan vagy hardver-specifikus eredményhez vezet). Nem minden port valósítja meg ezt a módot.

    • Pin.ALT_OPEN_DRAIN - Ugyanaz, mint a Pin.ALT, de a láb nyitott nyelősként van konfigurálva. Nem minden port valósítja meg ezt a módot.

    • Pin.ANALOG - A láb analóg bemenetre van konfigurálva, lásd az ADC osztályt.

  • A pull azt adja meg, hogy a lábhoz csatlakozik-e (gyenge) felhúzó-/lehúzó ellenállás, és az alábbiak egyike lehet:

    • None - Nincs felhúzó vagy lehúzó ellenállás.

    • Pin.PULL_UP - Felhúzó ellenállás engedélyezve.

    • Pin.PULL_DOWN - Lehúzó ellenállás engedélyezve.

  • A value csak a Pin.OUT és Pin.OPEN_DRAIN módokban érvényes, és a kezdeti kimeneti lábértéket adja meg, ha meg van adva; egyébként a láb-periféria állapota változatlan marad.

  • A drive a láb kimeneti teljesítményét adja meg, és az alábbiak egyike lehet: Pin.DRIVE_0, Pin.DRIVE_1 stb., a meghajtási erősség növekvő sorrendjében. A tényleges áram-meghajtási képességek port-függőek. Nem minden port valósítja meg ezt az argumentumot.

  • Az alt egy alternatív funkciót ad meg a lábhoz, és az értékei port-függőek. Ez az argumentum csak a Pin.ALT és Pin.ALT_OPEN_DRAIN módokban érvényes. Akkor használható, ha egy láb több alternatív funkciót is támogat. Ha csak egy láb-alternatív funkció van támogatva, akkor ez az argumentum nem szükséges. Nem minden port valósítja meg ezt az argumentumot.

Mint fentebb szerepelt, a Pin osztály lehetővé teszi egy alternatív funkció beállítását egy adott lábhoz, de nem ad meg további műveleteket egy ilyen lábon. Az alternatív-funkció módban konfigurált lábakat általában nem GPIO-ként használják, hanem más hardver-perifériák hajtják meg őket. Az egyetlen művelet, amelyet egy ilyen láb támogat, az újrainicializálás a konstruktor vagy a Pin.init() metódus meghívásával. Ha egy alternatív-funkció módban konfigurált lábat Pin.IN, Pin.OUT vagy Pin.OPEN_DRAIN móddal újrainicializálunk, az alternatív funkció eltávolításra kerül a lábról.

Metódusok

init(mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1) None

A láb újrainicializálása a megadott paraméterekkel. Csak a megadott argumentumok kerülnek beállításra. A láb-periféria többi állapota változatlan marad. Az argumentumok részleteit lásd a konstruktor dokumentációjában.

Visszaadott érték: None.

value(x: Any = None, /) int | None

Ez a metódus lehetővé teszi a láb értékének beállítását és lekérdezését, attól függően, hogy az x argumentum meg van-e adva vagy sem.

Ha az argumentum hiányzik, akkor ez a metódus lekérdezi a láb digitális logikai szintjét, és 0-t vagy 1-et ad vissza, amelyek rendre alacsony és magas feszültségű jeleknek felelnek meg. A metódus viselkedése a láb módjától függ:

  • Pin.IN - A metódus a lábon jelenleg jelen lévő tényleges bemeneti értéket adja vissza.

  • Pin.OUT - A metódus viselkedése és visszatérési értéke meghatározatlan.

  • Pin.OPEN_DRAIN - Ha a láb «0» állapotban van, akkor a metódus viselkedése és visszatérési értéke meghatározatlan. Egyébként, ha a láb «1» állapotban van, a metódus a lábon jelenleg jelen lévő tényleges bemeneti értéket adja vissza.

Ha az argumentum meg van adva, akkor ez a metódus beállítja a láb digitális logikai szintjét. Az x argumentum bármi lehet, ami logikai értékké alakítható. Ha True értékké alakul, a láb «1» állapotba kerül, egyébként «0» állapotba. A metódus viselkedése a láb módjától függ:

  • Pin.IN - Az érték a láb kimeneti pufferében tárolódik. A láb állapota nem változik, nagy impedanciájú állapotban marad. A tárolt érték azonnal aktívvá válik a lábon, amint Pin.OUT vagy Pin.OPEN_DRAIN módba kerül.

  • Pin.OUT - A kimeneti puffer azonnal a megadott értékre áll be.

  • Pin.OPEN_DRAIN - Ha az érték «0», a láb alacsony feszültségű állapotba kerül. Egyébként a láb nagy impedanciájú állapotba kerül.

Az érték beállításakor ez a metódus None értéket ad vissza.

__call__(x: Any = None, /) int | None

A Pin objektumok hívhatók. A hívás metódus (gyors) rövidítést biztosít a láb értékének beállításához és lekérdezéséhez. Ez egyenértékű a Pin.value([x]) hívással. További részletekért lásd a Pin.value() metódust.

on() None

A láb „1” kimeneti szintre állítása.

off() None

A láb „0” kimeneti szintre állítása.

irq(handler: Callable[[Pin], None] | None = None, trigger: int = Pin.IRQ_FALLING | Pin.IRQ_RISING, *, priority: int = 1, wake: int | None = None, hard: bool = False) None

Megszakításkezelő konfigurálása, amely akkor hívódik meg, amikor a láb kiváltó forrása aktív. Ha a láb módja Pin.IN, akkor a kiváltó forrás a lábon lévő külső érték. Ha a láb módja Pin.OUT, akkor a kiváltó forrás a láb kimeneti puffere. Egyébként, ha a láb módja Pin.OPEN_DRAIN, akkor a kiváltó forrás a kimeneti puffer a «0» állapotnál és a külső lábérték az «1» állapotnál.

Az argumentumok a következők:

  • A handler egy opcionális függvény, amely a megszakítás kiváltásakor hívódik meg. A kezelőnek pontosan egy argumentumot kell fogadnia, amely a Pin példány.

  • A trigger azt az eseményt konfigurálja, amely megszakítást generálhat. A lehetséges értékek:

    • Pin.IRQ_FALLING megszakítás lefutó élnél.

    • Pin.IRQ_RISING megszakítás felfutó élnél.

    Ezek az értékek OR művelettel összekapcsolhatók, hogy több eseményre is kiváltsanak.

  • A priority a megszakítás prioritási szintjét állítja be. Az értékei port-specifikusak, de a magasabb értékek mindig magasabb prioritást jelentenek.

  • A wake azt az energiagazdálkodási módot választja ki, amelyben ez a megszakítás felébresztheti a rendszert. Egyetlen OpenMV porton sem támogatott; hagyja az alapértelmezett értéken.

  • A hard ha igaz, hardveres megszakítás kerül használatra. Ez csökkenti a láb változása és a kezelő meghívása közötti késleltetést. A hardveres megszakításkezelők nem foglalhatnak memóriát; lásd: Megszakításkezelők írása. Nem minden port támogatja ezt az argumentumot.

Ez a metódus egy visszahívás objektumot ad vissza.

A következő metódusok az alapvető Pin API kiterjesztései. A portonkénti elérhetőség szerint vannak csoportosítva.

Az összes OpenMV porton elérhető metódusok

low() None

A láb „0” kimeneti szintre állítása. Az off() aliasa.

high() None

A láb „1” kimeneti szintre állítása. Az on() aliasa.

csak mimxrt + alif

toggle() None

A kimeneti láb átváltása – a „0”-t „1”-re fordítja, vagy fordítva. STM32-n nincs elérhetővé téve (használja a value(not value()) kifejezést, ha erre STM32-n van szüksége).

csak STM32

mode(mode: int | None = None, /) int
mode(mode: int, /) None

A láb módjának lekérdezése vagy beállítása. A mode argumentum részleteit lásd a konstruktor dokumentációjában.

pull(pull: int | None = None, /) int
pull(pull: int, /) None

A láb felhúzó-/lehúzó állapotának lekérdezése vagy beállítása. A pull argumentum részleteit lásd a konstruktor dokumentációjában.

Konstansok

Az alábbi konstansok a Pin objektumok konfigurálására szolgálnak a konstruktoron, az init() és az irq() metóduson keresztül. A portonkénti elérhetőség szerint vannak csoportosítva.

Az összes OpenMV porton elérhető konstansok

IN: int

Láb mód: nagy impedanciájú digitális bemenet.

OUT: int

Láb mód: push-pull digitális kimenet. Az OUT_PP aliasa STM32-n.

OPEN_DRAIN: int

Láb mód: nyitott nyelős (open-drain) kimenet. A 0 meghajtása alacsony szintre húzza a vezetéket; az 1 meghajtása nagy impedanciájúra engedi.

PULL_UP: int

A láb belső felhúzó ellenállásának engedélyezése.

PULL_DOWN: int

A láb belső lehúzó ellenállásának engedélyezése.

IRQ_FALLING: int

Adja át az irq() metódusnak a lefutó élre való kiváltáshoz.

IRQ_RISING: int

Adja át az irq() metódusnak a felfutó élre való kiváltáshoz.

csak STM32

ALT: int

Láb mód: alternatív funkció (push-pull). Használja az alt= argumentummal annak kiválasztásához, hogy a láb melyik periféria-funkcióhoz legyen irányítva. Az AF_PP aliasa.

ALT_OPEN_DRAIN: int

Láb mód: alternatív funkció (open-drain). Az AF_OD aliasa.

ANALOG: int

Láb mód: analóg bemenet – a digitális be-/kimeneti puffer le van választva, így a láb egy ADC csatornával hajtható meg.

AF_PP: int

Alternatív-funkció push-pull mód (ugyanaz az érték, mint az ALT).

AF_OD: int

Alternatív-funkció open-drain mód (ugyanaz az érték, mint az ALT_OPEN_DRAIN).

OUT_PP: int

Push-pull kimeneti mód (ugyanaz az érték, mint az OUT).

OUT_OD: int

Nyitott nyelős (open-drain) kimeneti mód (ugyanaz az érték, mint az OPEN_DRAIN).

PULL_NONE: int

A láb belső felhúzó / lehúzó ellenállásának letiltása.

csak mimxrt

PULL_UP_47K: int

Egy ~47 kΩ-os belső felhúzó ellenállás engedélyezése.

PULL_UP_22K: int

Egy ~22 kΩ-os belső felhúzó ellenállás engedélyezése.

PULL_HOLD: int

A pad busz-tartó / hold funkciójának engedélyezése – a láb a pillanatnyi logikai szintjét tartja, ahelyett, hogy lebegne.

DRIVE_OFF: int

A láb kimeneti meghajtójának letiltása.

DRIVE_0: int

Legalacsonyabb meghajtási-erősség beállítás (legmagasabb soros impedancia) – az R0 referencia (~150 Ω 3,3 V-on / 260 Ω 1,8 V-on).

DRIVE_1: int

Egy lépéssel a DRIVE_0 feletti meghajtási erősség.

DRIVE_2: int

Két lépéssel a DRIVE_0 feletti meghajtási erősség.

DRIVE_3: int

Három lépéssel a DRIVE_0 feletti meghajtási erősség (alapértelmezett a kimeneti lábaknál).

DRIVE_4: int

Négy lépéssel a DRIVE_0 feletti meghajtási erősség.

DRIVE_5: int

Öt lépéssel a DRIVE_0 feletti meghajtási erősség.

DRIVE_6: int

Legerősebb meghajtási-erősség beállítás.