3.4. Pinler ve çevre birimleri

Pin, MCU üzerindeki en basit çevre birimidir: çipi dış dünyaya bağlayan tek bir tel. Gerçek donanımla yapılan her etkileşim – bir LED’i sürmek, bir anahtarı okumak, bir gerilimi ölçmek, bir seri hat üzerinden bayt göndermek – nihayetinde bir veya daha fazla pin üzerinden yönlendirilir.

3.4.1. Pin modları

Bir pin, yararlı bir şey yapmadan önce birkaç moddan birine yapılandırılır:

  • Pin.IN – giriş. Pin, dışarıdan kendisine uygulanan gerilimi gözlemler ve 0 (düşük) veya 1 (yüksek) olarak raporlar.

  • Pin.OUT – çıkış. Pin kendini ya besleme gerilimine (1) ya da toprağa (0) sürer, böylece harici bileşenler bu gerilimi görür.

  • Pin.OPEN_DRAIN – yalnızca hattı düşük seviyeye çekebilen çıkış. Yüksek seviyeye geçmek için pin serbest bırakır (yüzer hale gelir) ve harici bir pull-up direnci hattı kaldırır. Birden fazla cihazın aynı hattı sürebileceği paylaşımlı veri yolları için kullanılır.

Girişler, hiçbir harici kaynak pini sürmediğinde tanımlı bir seviye garanti eden dahili bir çekme direnci (pull) etkinleştirebilir:

Yapıcı; id, mode ve pull değerlerini konumsal argümanlar olarak alır:

from machine import Pin

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

3.4.2. Alternatif işlevler

Çoğu pinin, GPIO rolüne ek olarak bir alternatif işlevi vardır. Çip üzerindeki tek bir fiziksel ped şunlar olabilir:

Diğer çevre birimleri de (başka seri veri yolları, zamanlayıcılar vb.) belirli pinleri kullanır; çip tasarımcısı her donanım bloğunu sabit bir ped kümesine bağlar. ADC yalnızca kendi çoklayıcısına yönlendirilmiş pinleri örnekler; bir UART, TX sinyalinin bağlı olduğu tek pin üzerinden iletim yapar.

Not

OpenMV kameralar harici konnektör pinlerini P0 ile P9 arasında etiketler (karttan karta biraz değişir). Hangi pinin hangi alternatif işlevi taşıdığı karta özgüdür; tabloyu görmek için OpenMV Cam hızlı başvuru kılavuzuna bakın.

3.4.3. Kart farklılıkları

Birkaç ayrıntı karttan karta değişir ve başka bir karttan varsayılmak yerine her zaman hızlı başvuru kılavuzuna karşı kontrol edilmelidir:

  • Gerilim toleransı. Bazı kameraların 5 V toleranslı G/Ç pinleri vardır (5 V’luk bir sinyal zarar vermeden doğrudan uygulanabilir); diğerleri G/Ç’lerini 3.3 V veya 1.8 V’ta çalıştırır ve bunun üzerindeki herhangi bir sinyal için bir seviye dönüştürücü gerektirir. Toleranslı olmayan bir pine 5 V’luk bir kaynak bağlamak çipe zarar verebilir.

  • ADC referansı. ADC’nin tam ölçek olarak ele aldığı gerilim, kartın G/Ç beslemesine bağlıdır. read_u16() her zaman 0..65535 döndürür, ancak 65535 değerinin temsil ettiği gerilim, kartın referansı her ne ise odur.

  • Sürme gücü. Bir GPIO pini sınırlı bir akım kaynaklayabilir veya çekebilir – tipik olarak onlarca miliamper. Bir direnç üzerinden küçük bir LED için yeterli; bir motor, bir vızıltı (buzzer) ya da herhangi bir endüktif yük için yeterli değil. Daha ağır herhangi bir şey için harici bir sürücüye (transistör, MOSFET, H-köprüsü) başvurun.

OpenMV Cam hızlı başvuru kılavuzu kart başına tam sayıları verir.