Archive for the ‘Haberleşme’ Category

Haberleşme Protokollerinde String Veri Gönderme

Merhaba arkadaşlar;

Bugün sizlere haberleşme protokollerinin genelinde karşılaşılan bir problemin çözümünden bahsedeceğim. Mikroişlemci ile çalışan arkadaşlar bilir, bir mikrodenetleyiciden herhangi bir protokol ( uart,spi,I2c vs. ) ile bilgi göndermek istersek göndereceğimiz bilginin char tipinde bir karakter olması gerekir. Bilgisayar programlamada printf(” “) fonksiyonuna alışmış arkadaşlar için char tipinde bir veriyle başka bir mikro denetleyiciye veya çevresel bir birime bilgi iletmek sıkıntılı bir iştir.

C gibi makineye yakın dillerde string veri tipi tanımlı değildir. Bunun yerine string ifadeler karakter dizileri içerisinde saklanır. Bu karakter dizileri kısaca char karakter[]="Bilgi" şeklindedir.

String ifadeleri haberleşme protokolleri ile gönderebilmek için her bir karakteri tek tek göndermemiz gerekir.  Bu gönderme işlemini yerine getirecek bir fonksiyon yazarak, göndermek istediğimiz string ifadeleri rahatlıkla gönderebiliriz.

Bunun mantığını anlayabilmeniz için Dev C++’da bir küçük bir kod parçası yazdım. Bu kod parçasını kendi sisteminize uyarlayarak string gönderme probleminin üstesinden gelmiş olursunuz.

Eğer kullandığınız derleyici gerek duymuyorsa include dosyalarını eklemeden de bilgiyi gönderebilirsiniz.

Dev C++ Kodları

Dev C++ Kodları

kodlarda geçen strlen(yazi) ifadesi yazi adındaki karakter dizisinin uzunluğunu veren bir fonksiyondur ve string.h başlık dosyasının içerisinde tanımlıdır.

yukarıdaki kodları derleyip çalıştırdığımızda karşımıza gelen ekran aşağıdaki şekildedir.

Ekran Görüntüsü

Ekran Görüntüsü

Selametle …

Reklamlar

Spi ile PIC’ler Arası Haberleşme

Merhaba arkadaşlar;
Bu yazımda Spi Haberleşme Protokolü ile ilgili edindiğim tecrübeleri paylaşacağım.
Haberleşme protokollerinde amaç, bilginin bir birimden, mikro denetleyiciden veya cihazdan başka bir birime, mikro denetleyiciye veya cihaza iletilmesini sağlamaktır.
Haberleşme protokolleri ile ilgili daha detaylı bilgiye buradan ulaşabilirsiniz.

Öncelikle “Spi nedir ?” sorusundan başlamak gerektiğini düşünüyorum.
Spi ( Serial Peripheral Interface), dilimize  “Seri Çevresel Arayüz” olarak çevrilmektedir. İsminden de anlaşıldığı üzere Spi bir seri haberleşme protokolüdür. Spi haberleşme protokolünü, Motorola firması kendi mikro denetleyicileri için geliştirmiş, sonrasında ise bir standart olarak benimsenerek diğer mikro denetleyici üreten firmalar tarafından da kullanılmaya başlanmıştır.

Spi haberleşme protokolünde cihazlar arasında Master-Slave ilişkisi vardır. Master cihaz Slave cihazları yönetmek ve onlara işlemler yaptırmak ile yükümlüdür. Slave cihaz ise Master cihazdan gelen bilgilere göre işlem yapmak ile yükümlüdür. Bir master cihaza birden çok slave cihaz bağlanabilir. Ama aynı anda Slave cihazlardan sadece bir tanesi aktif olarak Master cihaz ile bilgi alışverişi gerçekleştirir.

Aynı anda veri alıp gönderebilen ( senkron haberleşme ) sistemlere full duplex sistemler denir. Spi protokolü de full duplex bir haberleşme protokolüdür.Yani Master mikro denetleyici spi haberleşmesini başlattığı anda hem bilgi gönderir, hem de bilgi alır. Aynı durum Slave mikro denetleyici için de geçerlidir.

Tek Slave Spi Haberleşmesi

Tek Slave Spi Haberleşmesi

Yukarıdaki resimde Tek Slave Spi Haberleşmesinin kullanıldığı bir sistem verilmiştir. Bu sistemin davranışını belirleyen pinlere ait lojik diyagram ise aşağıda verilmiştir.

Spi Haberleşmesinin Lojik Diyagramı

Spi Haberleşmesinin Lojik Yapısı

SS/CS: Slave Slect/Chip Slect
Spi’da Master cihazdan Slave cihaza bilgi aktarabilmek için Slave cihazın yetkilendirilmesi gerekmektedir. Slave cihazın yetkilendirilmesi için SS pininin lojik sıfır seviyesine çekilmesi gerekir. Master mikro denetleyicideki Slave Slect pinin sayısı Slave cihaz sayısına eşittir. Birden fazla Slave cihaz varsa, bilgi gönderilmek istenen Slave cihaz kendine bağlı olan SS pini ile seçilir ve haberleşme yapılır. Böylelikle gönderilen bilgiler sadece haberleşmek istenen cihaza iletilir.

SCLK: Serial Clock
Saat darbesi verilerin lojik olarak iletilmesini sağlar.
Slave cihaz yektilendirildikten sonra haberleşmenin başlayabilmesi için saat darbesine ihtiyaç vardır. Saat darbesi Master mikro denetleyici tarafından sağlanır ve SCLK üzerinden Slave mikro denetleyiciye aktarılır.

MOSI: Master Output Slave Input
Master cihazdan Slave cihaza MOSI pini üzerinden bilgiler aktarılır. Bu bilgilerin aktarılması için Master mikro dentleyici SS pinini lojik sıfır seviyesine çekmeli ve SCLK üzerinden saat darbesi üretmelidir.

MISO: Master Input Slave Output
Slave cihazdan Master cihaza MISO pini üzerinden bilgiler gönderilir. Bu bilgilerin aktarılması için Master mikro dentleyici SS pinini lojik sıfır seviyesine çekmeli ve SCLK üzerinden saat darbesi üretmelidir.

Çoklu Slave Spi Haberleşmesi

Çoklu Slave Spi Haberleşmesi

Yukarıdaki resimde ise Çoklu Slave Spi Haberleşmesi gösterilmektedir. Daha önce söylendiği üzere hangi mikro denetleyici ile haberleşileceği master cihaz tarafından belirlenir.

Şimdi ise Spi Protokolünün mantığını anlamak için yaptığım basit bir uygulamayı paylaşacağım. Burada iki mikro denetleyici üzerinde haberleşme yapılacağı için Slave Select pinine ihtiyaç yoktur. Yalnız uygulamanın simülasyon ortamında çalışması için bir SS pini tanımlanıp, Spi Debugger’a bağlanmıştır.
Şekilde görüldüğü gibi Master mikro denetleyiciye bağlı 7 tane butonun Spi haberleşme protokolü ile Slave mikro denetleyicide ki 7 ledi yakması sağlanmıştır.

Master Mikro Denetleyici

Master Mikro Denetleyici

Master Mİkro Denetleyici Butonları

Master Mİkro Denetleyici Butonları

Slave Mikro Denetleyici

Slave Mikro Denetleyici


Kodlar ve Benzetim Dosyası

Selametle …

Kaynaklar:
1-Wikipedia
2-Pic Proje
3-Ramazan Sural
4-İstanbul Teknik Üniversitesi

Haberleşme Protokolleri Neden Kullanılır ?

Merhaba arkadaşlar;

Bu yazımda sizlere haberleşme protokollerinden bahsedeceğim.

Haberleşme protokollerinde amaç, bilginin bir birimden, mikro denetleyiciden veya cihazdan başka bir birime, mikro denetleyiciye veya cihaza iletilmesini sağlamaktır. Bilginin aktarım amacına göre alıcı cihaz tarafından çok çeşitli işlemler yapılabilir.Örneğin evlerimizde bulunan klimaları uzaktan kumanda ile yöneterek, klimanın odayı bizim istediğimiz oda sıcaklığında tutmasını sağlarız. Burada bilgiyi gönderen cihaz kumanda, alan cihaz ise klimadır. Klima aldığı bilgiye göre bir kontrol işarati üreterek odanın belirlenen bir sıcaklıkta tutulmasını sağlar. Bu işlemin arka planında da haberleşme protokolleri vardır.

Klima

Haberleşme protokolleri fiziksel yapısına göre ikiye ayrılır. Bunlar paralel haberleşme protokolleri ve seri haberleşme protokolleridir.

Paralel haberleşme protokollerinde bilgiler alıcıya paralel data hatları üzerinden gönderilir.

Paralel iletisim

Paralel haberleşme protokollerinde gönderilen bilgiler alıcı birime seri haberleşme protokollerinden daha hızlı iletilir.Bu nedenle hız gerektiren uygulamalarda tercih edilir. Bunun en güzel örneği mikro denetleyicilerin iç mimarisidir. Mikro denetleyicilerin 8 bitlik, 16 bitlik vs. olduğunu duymuşsunuzdur. Bu, mikro denetleyicinin iç yapısında bulunan çekirdeğin ve data iletim hatlarının şeklini ifade etmektedir.

Data BusYukarda Microchip firmasına ait bir mikro denetleyicinin iç mimarisini görmektesiniz. Burada görüldüğü gibi 8 bitlik çekirdek çevresel birimlerle paralel veri hattı üzerinden haberleşir.

Paralel haberleşmenin dezavantajı ise, bilgiler paralel olarak gönderildiği için gönderilen bilginin bit uzunluğu kadar fiziksel data hattı kullanılması gerekir. Bu haberleşme türü mikro kontrolörün harici çevresel birimlerle haberleşmesinde tercih edilmek istenmez.Mikro denetleyicinin pin sayısı en önemli kısıtlarındandır. Paralel haberleşme ile çok fazla pin kullanılır.

Bu iletişim harici hafızadan veri okumak için, lcd’ye bilgi yazmak için vb. uygulamalarda kullanılır.  Eğer haberleşmenin seri iletişim ile yapılma imkanı varsa seri iletişim tercih edilir. Bunun için ise yapılacak uygulamada kullanılan harici çevresel birimlerin seri haberleşmeyi destekleyenleri tercih edilmelidir.

Seri haberleşme protokollerinde bilgiler tek bir data hattı üzerinden gönderilir.

Seri iletisim

Yukarıda 2 tane mikro kontrolörün birbiri ile seri iletişim üzerinden haberleşmesi gösterilmiştir. Burada önemli nokta paralel iletime göre mikro kontrolörlerin daha az fiziksel pini kullanılarak iletişim sağlanmıştır.

Seri iletişimde kullanılan standartlaşmış birçok protokol vardır. Can-Bus, Spi, I2C, RS 232, Usb, Uart bunlardan birkaçıdır. Geliştirilecek projelere göre kullanılan protokollerde değişmektedir. Örneğin geliştirilen projede sistemin hataya toleransı yok ise hata oluşma ihtimali en düşük olan protokol tercih edilmelidir.

Burada değinilmesi gereken bir konuda seri iletişimde verilerin nasıl gönderildiğidir. Bu kullanılan protokole göre değişmekle beraber en basit mantığı ile veri, saat darbelerinde gönderilir. Mikro denetleyicinin seri iletişim için ürettiği her saat darbesinde 1 bit gönderilir.

seri data transferi

Selametle …