Port Çoğullama
Seriport’u Buffer Metodu ile Çoğaltmak
Haberleşme için kullanılan ünitelerin artması ile birlikte mikrokontrolürlerde bulunan usart seri modülüne olan ihtiyaçda artmaktadır. Artan ihtiyaç için son dönem mikrokontrolürlerde 2 adet usart ve diğer haberleşme standartları kullanılmaktadır. Lakin birçok uygulamada 2’den fazla seriporta ihtiyaç duyulmaktadır.
Bu yazımızda ise bir önceki yazımızın devamı niteliğinde olarak seriport çoğaltma konusununa değineceğiz…
Bilindiği üzere yaygın olarak kullanılan pic16F877 üzerinde 1 adet usart bulunmaktadır. Bunun artırılabilmesi 2 şekilde mümkündür. Birincisi yazılımsal olarak sanal bir port oluşturulması, ikincisi ise mevcut usart port üzerinde bir takım işlemler yaparak portun çoğaltılmasını sağlamak…
İlk kısma değinecek olursak;
Mikrokontrolür üzerindeki usart modulu olmayan herhangi 8 bitlik bir port üzerinde programsal olarak port tanımlanabilir. Bunun yapılabilmesi için usart işleyişini ve haberleşme protokolünü iyi bilmek gerekmektedir. Seriport için gereken protokol ile ilgili işlemleri uart modulu yerine giriş-çıkış portları ile yazılımsal olarak yapılır… Uyulması gereken kuralların başında bit gönderme süresi ve bekleme süreleri gelir. Bu konu ile ilgili detayları eski sayılardan bulabilirsiniz…
Şema 1: Sistemin Genel Yapısı (Blok Diagram)
Programsal olarak hazırlanmış Pic16F84A için hex usart dosyasına seriportbuffer-hex ulaşabilirsiniz…
Şema 2 : Buffer Seri Port
Burada pic16F84A nın portB nin 7 numaralı pini Rx, 6 numaralı pini Tx olarak ayarlanmıştır. Tabii istenilen numaralı pini Rx, istediğinizi Tx olarak ayarlayabilirsiniz. Diğer ayarları; standart haline gelmiş 9600 bps, 1 start biti, 1 stop biti, parity none olarak ayarlıdır … portA nın 0. pini buffer içinde data bulunduğunu gösterir, 1. pini ise datanın gönderilmesini sağlayan pindir. PortA1 pinini lojik 1 yaptığınızda üzerinde tuttuğu bilgiyi tx ucundan gönderir. Gönderim işleminden sonra PortA0 pinini lojik 0 ‘a çeker. Yeni bir bilgi alındığında ise alınan bilgiyi buffer’a yazar (buffer’ın boyutu 20 Byte kadardır. Buffer uzunluğunu kullanılan mikrokontrolürün yapısına göre değiştirilebilirsiniz…) ve işleyiş tekrar eder…
Şema 3 : Genel Şema
Şema 3 de gösterilen devre, sadece giriş için çoğaltma ve saklama yapmaktadır. Aynı bufferlar kullanılarak mikrokontrolürün çıkış (tx) portuda çoğaltılabilir.
Şema 4: Hem çıkış hemde giriş yöninde buffer kullanımı
Fakat gönderimde buffer yapısını kullanmanın pek bir anlamı yoktur. Ancak özel bir gereklilik varsa kullanılması fayda sağlıyacaktır. Mecburen çıkış yönündede seriport ayrımı yapılmak isteniyor ise bir önceki yazıda anlatılan port çoklama yapısı ile mikrokontrolürdeki usart portu çoğaltılır… Bu çoğaltma mikrokontrolürden veri çıkışı için en iyi çözümlerden biridir.
Burada kullanılan yapı itibariyle küçük bir gecikme sözkonusu olmaktadır. Merkezi mikrokontrolürün portları tarama süresi ve kendi iç işlemleri için ayıracağı süre kadar bir gecikme olur. Bu gecikme uygulanacak sistemde dikkate alınmalıdır. Örneğin proximity kart okuyucular ile bir çalışma yapılacaksa, aynı portu kullanan okuyuculardaki kart okutma zaman aralığı ile merkezi mikrokontrolur’ün buffer portlarını sorgulama ve veriyi alma zamanları için periyotları iyi belirlemek gerekir.
(Not : Bu buffer metodu ile 3 adet comport pic16F877A ile başarıyla kullanılmış, 1 PC, 2 Adet Proximity okuyucu ile haberleşilmiştir.)
Emrah ÖZMEN
emrahozmen@yahoo.com