3.4. Nastat ja oheislaitteet

Nasta on yksinkertaisin oheislaite MCU:lla: yksittäinen johdin, joka yhdistää sirun ulkomaailmaan. Jokainen vuorovaikutus todellisen laitteiston kanssa – LEDin ohjaaminen, kytkimen lukeminen, jännitteen mittaaminen, tavujen lähettäminen sarjalinjalla – reitittyy lopulta yhden tai useamman nastan kautta.

3.4.1. Nastojen tilat

Nasta määritetään johonkin muutamista tiloista ennen kuin se tekee mitään hyödyllistä:

  • Pin.IN – tulo. Nasta havainnoi siihen ulkoa kohdistettua jännitettä ja raportoi sen arvona 0 (alhaalla) tai 1 (ylhäällä).

  • Pin.OUT – lähtö. Nasta ohjaa itsensä joko syöttöjännitteeseen (1) tai maahan (0), jotta ulkoiset komponentit näkevät kyseisen jännitteen.

  • Pin.OPEN_DRAIN – lähtö, joka voi vain vetää linjan alas. Mennäkseen ylös nasta vapautuu (kelluu) ja ulkoinen ylösvetovastus nostaa linjan. Käytetään jaetuissa väylissä, joissa useat laitteet voivat ohjata samaa linjaa.

Tuloissa voidaan valinnaisesti ottaa käyttöön sisäinen vetovastus, joka takaa määritellyn tason, kun mikään ulkoinen ei ohjaa nastaa:

Konstruktori ottaa id:n, tilan ja vedon positionaalisina argumentteina:

from machine import Pin

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

3.4.2. Vaihtoehtoiset toiminnot

Useimmilla nastoilla on GPIO-roolinsa lisäksi vaihtoehtoinen toiminto. Yksittäinen fyysinen kosketuspinta sirulla voi olla:

Myös muut oheislaitteet (lisää sarjaväyliä, ajastimia ja niin edelleen) varaavat tiettyjä nastoja; sirun suunnittelija johdottaa kunkin laitteistolohkon kiinteään joukkoon kosketuspintoja. ADC näytteistää vain nastat, jotka on reititetty sen multiplekseriin; UART lähettää sillä yhdellä nastalla, johon sen TX-signaali on johdotettu.

Muista

OpenMV-kamerat nimeävät ulkoisen liittimen nastat P0P9 (vaihtelee hieman korttikohtaisesti). Mikä nasta kantaa mitäkin vaihtoehtoista toimintoa on korttikohtaista; katso taulukko OpenMV Cam -pikaoppaasta.

3.4.3. Korttikohtaiset vaihtelut

Muutamat yksityiskohdat vaihtelevat korttikohtaisesti, ja ne tulisi aina tarkistaa pikaoppaasta sen sijaan, että ne oletettaisiin toisen kortin perusteella:

  • Jännitteensieto. Joillakin kameroilla on 5 V:n sietoiset I/O-nastat (5 V:n signaali voidaan kytkeä suoraan ilman vauriota); toiset ajavat I/O:taan 3,3 V:ssa tai 1,8 V:ssa ja vaativat tasonsiirtimen mille tahansa sen ylittävälle signaalille. 5 V:n lähteen kytkeminen sietämättömään nastaan voi vaurioittaa sirua.

  • ADC-referenssi. Jännite, jota ADC käsittelee täysasteikkona, riippuu kortin I/O-syötöstä. read_u16() palauttaa aina arvon 0..65535, mutta jännite, jota 65535 edustaa, on mikä tahansa kortin referenssi onkin.

  • Ohjausvoimakkuus. GPIO-nasta voi lähdettää tai nieluttaa rajallisen virran – tyypillisesti kymmeniä milliampeereja. Riittää pienelle LEDille vastuksen kautta; ei riitä moottorille, summerille tai millekään induktiiviselle kuormalle. Käytä ulkoista ohjainta (transistori, MOSFET, H-silta) mille tahansa raskaammalle.

OpenMV Cam -pikaopas antaa tarkat arvot korttikohtaisesti.