class Pin – I/O-nastojen ohjaus

Pin-oliota käytetään I/O-nastojen (tunnetaan myös nimellä GPIO - general-purpose input/output) ohjaamiseen. Pin-oliot liittyvät tavallisesti fyysiseen nastaan, joka voi ohjata lähtöjännitettä ja lukea tulojännitteitä. Pin-luokassa on metodit nastan tilan (IN, OUT jne.) asettamiseen sekä metodit digitaalisen logiikkatason hakemiseen ja asettamiseen. Nastan analogiseen ohjaukseen katso ADC -luokka.

Pin-olio muodostetaan käyttämällä tunnistetta, joka määrittää yksiselitteisesti tietyn I/O-nastan. Tunnisteen sallitut muodot ja fyysinen nasta, johon tunniste viittaa, ovat porttikohtaisia. Tunniste voi olla kokonaisluku, merkkijono tai monikko, jossa on portti ja nastan numero.

Käyttömalli:

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))

Muodostimet

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

Käytä annettuun id -tunnisteeseen liittyvää nastaoheislaitetta (GPIO-nasta). Jos muodostimelle annetaan lisäargumentteja, niitä käytetään nastan alustamiseen. Kaikki asetukset, joita ei määritetä, säilyvät aiemmassa tilassaan.

Argumentit ovat:

  • id on pakollinen ja voi olla mielivaltainen olio. Mahdollisia arvotyyppejä ovat: int (sisäinen Pin-tunniste), str (Pin-nimi) ja tuple ([portti, nasta] -pari).

  • mode määrittää nastan tilan, joka voi olla jokin seuraavista:

    • Pin.IN - Nasta on määritetty tuloksi. Lähtönä tarkasteltuna nasta on suuri-impedanssitilassa.

    • Pin.OUT - Nasta on määritetty (normaaliksi) lähdöksi.

    • Pin.OPEN_DRAIN - Nasta on määritetty avo-drain-lähdöksi. Avo-drain-lähtö toimii seuraavasti: jos lähtöarvoksi asetetaan 0, nasta on aktiivinen matalalla tasolla; jos lähtöarvo on 1, nasta on suuri-impedanssitilassa. Kaikki portit eivät toteuta tätä tilaa, tai jotkin saattavat toteuttaa sen vain tietyissä nastoissa.

    • Pin.ALT - Nasta on määritetty suorittamaan vaihtoehtoista toimintoa, joka on porttikohtainen. Näin määritetylle nastalle mitkään muut Pin-metodit (paitsi Pin.init()) eivät ole sovellettavissa (niiden kutsuminen johtaa määrittelemättömään tai laitteistokohtaiseen tulokseen). Kaikki portit eivät toteuta tätä tilaa.

    • Pin.ALT_OPEN_DRAIN - Sama kuin Pin.ALT, mutta nasta on määritetty avo-drain-tyyppiseksi. Kaikki portit eivät toteuta tätä tilaa.

    • Pin.ANALOG - Nasta on määritetty analogiatuloksi, katso ADC -luokka.

  • pull määrittää, onko nastaan kytketty (heikko) ylös- tai alasvetovastus, ja voi olla jokin seuraavista:

    • None - Ei ylös- tai alasvetovastusta.

    • Pin.PULL_UP - Ylösvetovastus käytössä.

    • Pin.PULL_DOWN - Alasvetovastus käytössä.

  • value on voimassa vain Pin.OUT- ja Pin.OPEN_DRAIN-tiloissa ja määrittää annettaessa nastan alkuperäisen lähtöarvon, muutoin nastaoheislaitteen tila säilyy ennallaan.

  • drive määrittää nastan lähtötehon ja voi olla jokin seuraavista: Pin.DRIVE_0, Pin.DRIVE_1 jne., kasvavan ajovoiman mukaan. Todelliset virranajokyvyt ovat porttikohtaisia. Kaikki portit eivät toteuta tätä argumenttia.

  • alt määrittää nastan vaihtoehtoisen toiminnon ja sen sallimat arvot ovat porttikohtaisia. Tämä argumentti on voimassa vain Pin.ALT- ja Pin.ALT_OPEN_DRAIN-tiloissa. Sitä voidaan käyttää, kun nasta tukee useampaa kuin yhtä vaihtoehtoista toimintoa. Jos vain yhtä nastan vaihtoehtoista toimintoa tuetaan, tätä argumenttia ei tarvita. Kaikki portit eivät toteuta tätä argumenttia.

Kuten edellä määritettiin, Pin-luokka mahdollistaa vaihtoehtoisen toiminnon asettamisen tietylle nastalle, mutta se ei määritä mitään muita operaatioita tällaiselle nastalle. Vaihtoehtoistoimintotilassa määritettyjä nastoja ei yleensä käytetä GPIO:na, vaan niitä ohjaavat muut laitteisto-oheislaitteet. Ainoa tällaiselle nastalle tuettu operaatio on uudelleenalustus kutsumalla muodostinta tai Pin.init() -metodia. Jos vaihtoehtoistoimintotilassa määritetty nasta alustetaan uudelleen tilaan Pin.IN, Pin.OUT tai Pin.OPEN_DRAIN, vaihtoehtoinen toiminto poistetaan nastalta.

Metodit

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

Alusta nasta uudelleen annetuilla parametreilla. Vain määritetyt argumentit asetetaan. Loput nastaoheislaitteen tilasta säilyy ennallaan. Katso muodostimen dokumentaatiosta tarkemmat tiedot argumenteista.

Palauttaa None.

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

Tämä metodi mahdollistaa nastan arvon asettamisen ja hakemisen sen mukaan, annetaanko argumentti x vai ei.

Jos argumentti jätetään pois, tämä metodi hakee nastan digitaalisen logiikkatason ja palauttaa 0 tai 1 vastaten matalaa ja korkeaa jännitesignaalia. Tämän metodin käyttäytyminen riippuu nastan tilasta:

  • Pin.IN - Metodi palauttaa nastassa parhaillaan olevan todellisen tuloarvon.

  • Pin.OUT - Metodin käyttäytyminen ja paluuarvo ovat määrittelemättömiä.

  • Pin.OPEN_DRAIN - Jos nasta on tilassa ’0’, metodin käyttäytyminen ja paluuarvo ovat määrittelemättömiä. Muutoin, jos nasta on tilassa ’1’, metodi palauttaa nastassa parhaillaan olevan todellisen tuloarvon.

Jos argumentti annetaan, tämä metodi asettaa nastan digitaalisen logiikkatason. Argumentti x voi olla mikä tahansa, joka muuntuu totuusarvoksi. Jos se muuntuu arvoksi True, nasta asetetaan tilaan ’1’, muutoin se asetetaan tilaan ’0’. Tämän metodin käyttäytyminen riippuu nastan tilasta:

  • Pin.IN - Arvo tallennetaan nastan lähtöpuskuriin. Nastan tila ei muutu, se pysyy suuri-impedanssitilassa. Tallennettu arvo aktivoituu nastassa heti, kun se vaihdetaan Pin.OUT- tai Pin.OPEN_DRAIN-tilaan.

  • Pin.OUT - Lähtöpuskuri asetetaan annettuun arvoon välittömästi.

  • Pin.OPEN_DRAIN - Jos arvo on ’0’, nasta asetetaan matalaan jännitetilaan. Muutoin nasta asetetaan suuri-impedanssitilaan.

Arvoa asetettaessa tämä metodi palauttaa None.

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

Pin-oliot ovat kutsuttavia. Kutsumetodi tarjoaa (nopean) pikatien nastan arvon asettamiseen ja hakemiseen. Se vastaa kutsua Pin.value([x]). Katso lisätietoja kohdasta Pin.value().

on() None

Aseta nasta lähtötasoon ”1”.

off() None

Aseta nasta lähtötasoon ”0”.

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

Määritä keskeytyskäsittelijä, joka kutsutaan, kun nastan laukaisulähde on aktiivinen. Jos nastan tila on Pin.IN, laukaisulähde on nastan ulkoinen arvo. Jos nastan tila on Pin.OUT, laukaisulähde on nastan lähtöpuskuri. Muutoin, jos nastan tila on Pin.OPEN_DRAIN, laukaisulähde on lähtöpuskuri tilassa ’0’ ja ulkoinen nastan arvo tilassa ’1’.

Argumentit ovat:

  • handler on valinnainen funktio, joka kutsutaan keskeytyksen laukaistessa. Käsittelijän on otettava täsmälleen yksi argumentti, joka on Pin -instanssi.

  • trigger määrittää tapahtuman, joka voi tuottaa keskeytyksen. Mahdolliset arvot ovat:

    • Pin.IRQ_FALLING keskeytys laskevalla reunalla.

    • Pin.IRQ_RISING keskeytys nousevalla reunalla.

    Nämä arvot voidaan yhdistää OR-operaatiolla, jolloin laukaisu tapahtuu useista tapahtumista.

  • priority asettaa keskeytyksen prioriteettitason. Sen sallimat arvot ovat porttikohtaisia, mutta suuremmat arvot vastaavat aina korkeampia prioriteetteja.

  • wake valitsee virrankäyttötilan, jossa tämä keskeytys voi herättää järjestelmän. Ei tuettu missään OpenMV-portissa; jätä oletusarvoonsa.

  • hard jos tosi, käytetään laitteistokeskeytystä. Tämä vähentää viivettä nastan muutoksen ja käsittelijän kutsumisen välillä. Laitteistokeskeytyskäsittelijät eivät saa varata muistia; katso Keskeytyskäsittelijöiden kirjoittaminen. Kaikki portit eivät tue tätä argumenttia.

Tämä metodi palauttaa takaisinkutsuolion.

Seuraavat metodit ovat laajennuksia Pin-ydinrajapintaan. Ne on ryhmitelty porttisaatavuuden mukaan.

Kaikissa OpenMV-porteissa saatavilla olevat metodit

low() None

Aseta nasta lähtötasoon ”0”. Alias metodille off().

high() None

Aseta nasta lähtötasoon ”1”. Alias metodille on().

vain mimxrt + alif

toggle() None

Vaihda lähtönastan tilaa – kääntää ”0”:n arvoksi ”1” tai päinvastoin. Ei käytettävissä STM32:lla (käytä value(not value()), jos tarvitset tätä STM32:lla).

vain STM32

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

Hae tai aseta nastan tila. Katso muodostimen dokumentaatiosta tarkemmat tiedot mode -argumentista.

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

Hae tai aseta nastan vetotila. Katso muodostimen dokumentaatiosta tarkemmat tiedot pull -argumentista.

Vakiot

Alla olevia vakioita käytetään Pin -olioiden määrittämiseen muodostimen, init() -metodin ja irq() -metodin kautta. Ne on ryhmitelty porttisaatavuuden mukaan.

Kaikissa OpenMV-porteissa saatavilla olevat vakiot

IN: int

Nastan tila: suuri-impedanssinen digitaalinen tulo.

OUT: int

Nastan tila: push-pull-digitaalilähtö. Alias arvolle OUT_PP STM32:lla.

OPEN_DRAIN: int

Nastan tila: avo-drain-lähtö. Arvon 0 ajaminen vetää linjan matalaksi; arvon 1 ajaminen vapauttaa sen suuri-impedanssitilaan.

PULL_UP: int

Ota käyttöön nastan sisäinen ylösvetovastus.

PULL_DOWN: int

Ota käyttöön nastan sisäinen alasvetovastus.

IRQ_FALLING: int

Anna irq() -metodille, jotta laukaisu tapahtuu laskevalla reunalla.

IRQ_RISING: int

Anna irq() -metodille, jotta laukaisu tapahtuu nousevalla reunalla.

vain STM32

ALT: int

Nastan tila: vaihtoehtoinen toiminto (push-pull). Käytä alt= -argumentin kanssa valitaksesi, mihin oheislaitetoimintoon nasta ohjataan. Alias arvolle AF_PP.

ALT_OPEN_DRAIN: int

Nastan tila: vaihtoehtoinen toiminto (avo-drain). Alias arvolle AF_OD.

ANALOG: int

Nastan tila: analogiatulo – digitaalinen tulo-/lähtöpuskuri kytketään irti, jotta nastaa voidaan ohjata ADC -kanavalla.

AF_PP: int

Vaihtoehtoistoiminto-push-pull-tila (sama arvo kuin ALT).

AF_OD: int

Vaihtoehtoistoiminto-avo-drain-tila (sama arvo kuin ALT_OPEN_DRAIN).

OUT_PP: int

Push-pull-lähtötila (sama arvo kuin OUT).

OUT_OD: int

Avo-drain-lähtötila (sama arvo kuin OPEN_DRAIN).

PULL_NONE: int

Poista käytöstä nastan sisäinen ylös-/alasvetovastus.

vain mimxrt

PULL_UP_47K: int

Ota käyttöön noin 47 kΩ:n sisäinen ylösvetovastus.

PULL_UP_22K: int

Ota käyttöön noin 22 kΩ:n sisäinen ylösvetovastus.

PULL_HOLD: int

Ota käyttöön padin väyläpidätin-/pitotoiminto – nasta lukitsee nykyisen logiikkatasonsa kelluttamisen sijaan.

DRIVE_OFF: int

Poista käytöstä nastan lähtöajuri.

DRIVE_0: int

Matalin ajovoima-asetus (suurin sarjaimpedanssi) – R0 -referenssi (noin 150 Ω jännitteellä 3,3 V / 260 Ω jännitteellä 1,8 V).

DRIVE_1: int

Ajovoima yhden askeleen yli arvon DRIVE_0.

DRIVE_2: int

Ajovoima kaksi askelta yli arvon DRIVE_0.

DRIVE_3: int

Ajovoima kolme askelta yli arvon DRIVE_0 (oletus lähtönastoille).

DRIVE_4: int

Ajovoima neljä askelta yli arvon DRIVE_0.

DRIVE_5: int

Ajovoima viisi askelta yli arvon DRIVE_0.

DRIVE_6: int

Voimakkain ajovoima-asetus.