sayfa başı

3 Mart 2015 Salı

Linux GPIO Kontrolü Uygulaması

    İlk olarak bloguma uğrayarak bu yazıyı okuyan herkese merhaba. Konumuz geçen yazımda belirttiğim üzere uygulama seviyesinde GPIO kontrolünü bir C uygulaması ile yapmak olacak. Gerekli malzemeler üzerinde çalıştığınız bir linux bord ve bu borda bulunan işlemciye ait compiler. (Eğer bu yazıyı okumaya devam edecekseniz zaten daha öncesinde cross compiler kurup çalışır hale getirmişsinizdir demektir) Kod geliştirme ortamını da unutmamak gerek, Eclipse vazgeçilmezler arasında.
   Gpio kontrol eden kodları yazmaya başlamadan önce eğer okumadıysanız bu yazımı okuyun derim. Çünkü yazacağımız kod bunların C ile run time (çalışma zamanı) yapılması. Kısaca kodumuzda yapacaklarımızı özetler isek;
  1. GPIO dosyasını açmak ve kapamak.
  2. GPIO rezerve eden fonksiyonu yazmak
  3. GPIO geri veren fonksiyonu yazmak
  4. GPIO giriş ya da çıkış olarak yönlendiren fonksiyonu yazmak
  5. GPIO değer yazan fonksiyonu yazmak
  6. GPIO o anki değerini okuyan fonksiyonu yazmak
    Yazacağımız kod topu topu bu kadar işlem yapacak. Birde bu fonksiyonları test etmek için main için de bunları çağırarak nasıl kullanılacağına bakacağız. Linux yeni başlayanlar için gayet kolay ve zevkli bir çalışma olacağını düşünüyorum. Zaten kodu başarılı bir şekilde derleyip bord yükledikten sonra ilgili GPIO bir led bağlayıp GPIO gerçekten de kontrol edilip edilmediğini görebilirsiniz. 

    İlk olarak başlık dosyasını(.h dosyası) oluşturalım. Hem bu sayede kaynak dosyasında (.c dosyası) ne yapacağımızın özetini görmüş oluruz. Başlık dosyası için driver.h

     Başlık dosyasını oluşturduktan sonra gelelim kaynak dosyasına. Kodları inceleyerek hatta baka baka tekrar kendiniz yazarak çalışmanızı tavsiye ederim. Zaten yazılım çalışmanın en iyi yolu kod yazmak kod yazmak kod yazmak tekrar yazmak yazmak yazmak. driver.c


drvGpio test uygulaması
#include <stdio.h>
#include <unistd.h>

#include "drvGpio.h"

int main(int argc, char *argv[])
{
 int retVal;

 retVal = drvGpioInit(11);
 if (SUCCESS == retVal)
 {
  retVal = drvGpioSetDirection(11, EN_GPIO_DIR_OUTPUT);

  if (SUCCESS == retVal)
  {
   drvGpioSetHigh(11);
   sleep(1);
   drvGpioSetLow(11);
   sleep(1);
   drvGpioSetHigh(11);
   sleep(1);
   drvGpioSetLow(11);
   sleep(1);
   drvGpioSetHigh(11);

   printf("---- %d \n", drvGpioGetValue(11));
   drvGpioUninit(11);
  }
 }

 return 0;
} 
drvGpio test uygulaması ile kodlar test edilmiştir. Umarım faydalı bir yazı olmuştur..
Herkese iyi çalışmalar

Hiç yorum yok:

Yorum Gönder

Son Ütücü