Haberler

Raspberry Pi Pico ile Programlanabilir G/Ç

Raspberry Pi Vakfı, programlanabilir I/O özelliklerinden biriyle birlikte tamamen yeni Raspberry Pi Pico mikrodenetleyici kartını duyurdu. Raspberry Pi Pico’nun çıkışıyla ilgili tam kapsamımızı Raspberry Pi Pico, Raspberry Pi Vakfı tarafından piyasaya sürülen ilk mikrodenetleyici, yeni RP2040 MCU’ya dayanmaktadır adresinden okuyabilirsiniz.

Bu yazıda, Raspberry Pi Pico üzerindeki programlanabilir I/O özelliğine odaklanacağız. Bunun ne olduğunu, nasıl çalıştığını ve ne için kullanılabileceğini ele alacağız.

Raspberry Pi Pico ve Programlanabilir I/O

Programlanabilir I/O veya PIO, “programlanabilir giriş-çıkış” anlamına gelir. Programlanabilir I/O, verileri işleyebilen giriş-çıkış pinlerini ifade eder ve bu işlem için bir CPU gerektirmez.

Raspberry Pi Pico, 8 adet Raspberry Pi Programlanabilir I/O (PIO) durum makinesi içerir. Durum makineleri, verileri ayrı bir şekilde işlemek için özel bir montaj dili ile programlanabilen basit işlemciler gibidir.

Programlanabilir I/O ne için kullanılabilir?

Raspberry Pi Pico gibi mikrodenetleyici birimleri (MCU’lar) küçük ve birçok gömülü elektronik amacı için mükemmeldir. Ancak, küçük oldukları için sınırlı işlem gücüne ve belleğe sahiptirler. Bu nedenle, kaynak yönetimi mikrodenetleyiciler için çok önemlidir.

Herhangi bir MCU üzerindeki programlanabilir I/O, sürekli talimat gerektiren bir işlem olduğunda son derece faydalı hale gelir. Örneğin, bir LED’in solması, basit bir görev olmasına rağmen, PWM (darbe genişliği modülasyonu) görev döngüsünü kademeli olarak değiştirmek için sürekli girdi gerektirir. Ancak, bu işlem bir durum makinesi ile de kolayca yapılabilir!

Bu nedenle, programlanabilir I/O, basit ama kaynak yoğun görevlerin yükünü CPU’dan durum makinesine aktarabilir. Bu şekilde, mikrodenetleyicimizin ana işlem gücünü ve kaynaklarını daha iyi kullanarak cihazlarımızı geliştirebiliriz!

Durum Makinesi Altyapısı

Raspberry Pi Pico üzerindeki her durum makinesi, gelen veriler için bir tane ve giden veriler için bir tane olmak üzere 2 İlk Gelen İlk Çıkar (FIFO) yapısına sahiptir. FIFO yapılarında, ilk yazılan veri, ilk okunan veri olur. FIFO yapıları, insanların sıraya girmesi gibi çalıştıkları için kuyruk olarak da bilinir.

Giriş FIFO, durum makinesi tarafından okunacak verileri aldığı için RX FIFO olarak da bilinir. Diğer yandan, çıkış FIFO, dışarı iletilecek verileri tuttuğu için TX FIFO olarak da bilinir.

Programlanabilir I/O Avantajları

Bir pin’e veri göndermek istediğimizde, önce veriyi FIFO girişine göndeririz. Durum makinesi veriyi işlemek için hazır olduğunda, veriyi kuyruktan alır ve talimatı yerine getirir.

Buradaki ana avantaj, talimatın yürütülmesi için merkezi CPU’nun gereksinimini ayırabilmemizdir, çünkü bu işlem PIO’nun durum makinesine “devredilmiştir”.

Her FIFO yalnızca dört kelime (her biri 32 bit) veri tutabileceğinden, daha büyük miktarlarda veri iletmek için doğrudan bellek erişimi (DMA) ile bağlayabiliriz. Bu şekilde, CPU’yu işlemi “bebek gibi bakmaktan” kurtarabiliriz.

Kaydırma & Geçici Kayıtlar

FIFO’lar, giriş ve çıkış kaydırma kayıtları (ISR / OSR) aracılığıyla durum makinesine bağlıdır.

Ayrıca, her durum makinesinin X ve Y adında iki geçici kaydı vardır. Geçici kayıtlar, geçici verileri depolamak için kullanılır. Bunları, PIO’muzu programlarken kullanmak için değişkenler olarak düşünebilirsiniz.

Önceki şemamızı ayarlayarak, tam yapı şu şekilde olur. Harika!

Programlanabilir I/O’yu MicroPython ile Kullanma

Raspberry Pi Pico, resmi MicroPython portu ile birlikte gelir, böylece Raspberry Pi Pico’nun durum makinelerini programlamak için başlangıç dostu Python programlama dilini kullanabiliriz.

Aşağıdaki bölüm, Ben Everad’ın MicroPython ve Programlanabilir I/O ile Işıkları Yanıp Sönme 1. Bölüm Eğitimi üzerine kuruludur. Bunu, MicroPython ile bir durum makinesini bir LED’i solmak için nasıl programlayabileceğimizi göstermek için kullanacağız – tüm bunları CPU’muzun yardımı olmadan yapacağız!

Durum Makinesi Talimatları

Durum makinelerine dokuz farklı talimat verebiliriz:

  • IN – Başka bir yerden ISR’ye 1 kelime (32 bit) kaydırır
  • OUT – OSR’den başka bir yere 1 kelime (32 bit) kaydırır
  • PUSH – Veriyi RX (giriş) FIFO’ya gönderir
  • PULL – TX (çıkış) FIFO’dan veri alır
  • MOV – Veriyi bir yerden başka bir yere taşır
  • IRQ – Kesme bayrağını ayarlar veya temizler
  • SET – Veriyi hedefe yazar
  • WAIT – Tanımlı bir eylem gerçekleşene kadar duraklar
  • JMP – Kodun farklı bir noktasına atlar

MicroPython Kodu

Öncelikle, MicroPython koduna bakalım:

from rp2 import PIO, StateMachine, asm_pio
from machine import Pin
import time

@asm_pio(set_init=PIO.OUT_LOW)
def led_off():
    set(pins, 0)

@asm_pio(set_init=PIO.OUT_LOW)
def led_on():
    set(pins, 1)

sm1 = StateMachine(1, led_off, freq=20000, set_base=Pin(25))
sm2 = StateMachine(2, led_on, freq=20002, set_base=Pin(25))

sm1.active(1)
sm2.active(1)

@asm_pio dekoratörü, MicroPython derleyicisinin takip eden fonksiyonu PIO montaj dili ile yazılmış olarak tanımasını sağlar. Ayrıca, dekoratörü pinin başlangıç durumunu tanımlamak için de kullanabiliriz. Bu durumda, düşük olarak ayarlanmıştır.

Her durum makinesi, bir dizi girdi ile başlatılan bir StateMachine() nesnesi ile tanımlanır. Bu durumda, yalnızca aşağıdakileri tanımladık:

  • durum makinesi numarası,
  • çalıştırılacak program,
  • programın çalıştırılacağı frekans,
  • ve program için hedef pin.

Bu kod ile bir durum makinesi sürekli olarak LED Pin’inin durumunu 1 (Pin 25) olarak ayarlarken, diğeri sürekli olarak 0 olarak ayarlar. Ancak, biraz farklı frekanslarda çalıştıkları için, açık durumda geçirilen zaman ile kapalı durumda geçirilen zaman oranı değişecektir. Sonuç, solan bir desen olacaktır.

Son iki satır, her bir durum makinesini etkinleştirir, böylece programımız çalışmaya devam eder. Hepsi bu!

Raspberry Pi Pico’nuzu Ön Sipariş Verin

Raspberry Pi Pico, yalnızca 4 $ gibi son derece uygun bir fiyatla satışa sunulmakta ve Seeed çevrimiçi mağazasından ön sipariş verilebilir.

Şimdi ön sipariş verin!

Özet

Programlanabilir I/O’nun temellerini ve bunu yeni Raspberry Pi Pico’da nasıl kullanabileceğimizi inceledik. Programlanabilir I/O hakkında daha fazla bilgi edinmek için aşağıdaki makaleleri öneriyoruz:

Raspberry Pi Pico’nun tam belgeleri ve bu esnek mikrodenetleyici kartıyla neler yapılabileceği hakkında daha fazla bilgi için lütfen resmi belgeleri ziyaret edin.

Leave a Reply

Your email address will not be published. Required fields are marked *