3.4. Lábak és perifériák

A láb a legegyszerűbb periféria az MCU-n: egyetlen vezeték, amely a chipet a külvilághoz köti. A valódi hardverrel való minden kapcsolat – egy LED meghajtása, egy kapcsoló beolvasása, egy feszültség mérése, bájtok küldése egy soros vonalon – végső soron egy vagy több lábon keresztül halad.

3.4.1. Láb-üzemmódok

Egy lábat néhány üzemmód egyikébe kell konfigurálni, mielőtt bármi hasznosat tenne:

  • Pin.IN – bemenet. A láb megfigyeli a kívülről rákapcsolt feszültséget, és 0 (alacsony) vagy 1 (magas) értékként jelenti azt.

  • Pin.OUT – kimenet. A láb önmagát hajtja vagy a tápfeszültségre (1), vagy a földre (0), így a külső alkatrészek ezt a feszültséget látják.

  • Pin.OPEN_DRAIN – olyan kimenet, amely a vonalat csak alacsonyra tudja húzni. A magas szinthez a láb elenged (lebeg), és egy külső felhúzó ellenállás emeli meg a vonalat. Olyan megosztott buszoknál használatos, ahol több eszköz is meghajthatja ugyanazt a vonalat.

A bemenetek opcionálisan engedélyezhetnek egy belső húzó ellenállást, amely meghatározott szintet garantál, amikor semmilyen külső eszköz nem hajtja a lábat:

A konstruktor az id, a mode és a pull paramétereket pozicionális argumentumként veszi át:

from machine import Pin

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

3.4.2. Alternatív funkciók

A legtöbb lábnak a GPIO-szerepe mellett alternatív funkciója is van. A chip egyetlen fizikai érintkezője lehet:

Más perifériák (további soros buszok, időzítők és így tovább) szintén lefoglalnak bizonyos lábakat; a chiptervező minden hardveres blokkot egy rögzített érintkezőkészlethez köt. Az ADC csak a multiplexeréhez vezetett lábakat mintavételezi; egy UART azon az egyetlen lábon ad, amelyhez a TX jele be van kötve.

Megjegyzés

Az OpenMV kamerák a külső csatlakozó lábait P0 és P9 között címkézik (kártyánként kissé eltérhet). Hogy melyik láb melyik alternatív funkciót hordozza, az kártyafüggő; a táblázatért lásd az OpenMV Cam gyors referenciát.

3.4.3. Kártyák közötti eltérések

Néhány részlet kártyánként eltér, és ezeket mindig a gyors referenciához kell ellenőrizni, nem pedig egy másik kártya alapján feltételezni:

  • Feszültségtűrés. Egyes kamerák 5 V-tűrő I/O lábakkal rendelkeznek (egy 5 V-os jel közvetlenül rákapcsolható károsodás nélkül); mások az I/O-jukat 3,3 V-on vagy 1,8 V-on működtetik, és minden ennél magasabb jelhez szintillesztőt igényelnek. Egy 5 V-os forrás csatlakoztatása egy nem tűrő lábhoz tönkreteheti a chipet.

  • ADC-referencia. Az a feszültség, amelyet az ADC teljes skálaként kezel, a kártya I/O-tápjától függ. A read_u16() mindig 0..65535 értéket ad vissza, de hogy a 65535 milyen feszültséget jelent, az a kártya referenciájától függ.

  • Meghajtási erő. Egy GPIO-láb csak korlátozott áramot tud forrásként szolgáltatni vagy elnyelni – jellemzően néhány tíz milliampert. Ez elegendő egy kis LED-hez ellenálláson keresztül; de nem elegendő egy motorhoz, egy hangjelzőhöz vagy bármilyen induktív terheléshez. Bármi nehezebbhez nyúlj külső meghajtóhoz (tranzisztor, MOSFET, H-híd).

Az OpenMV Cam gyors referencia megadja a pontos számokat kártyánként.