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, és0(alacsony) vagy1(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:
Pin.PULL_UP– gyenge húzás a tápsínre.Pin.PULL_DOWN– gyenge húzás a földre.
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:
Digitális be- vagy kimenet (
machine.Pin).ADC-bemenet, amely feszültséget mér (
machine.ADC).PWM-kimenet, amely négyszögjelet bocsát ki (
machine.PWM).Egy UART TX vagy RX vonala (
machine.UART).
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()mindig0..65535értéket ad vissza, de hogy a65535milyen 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.