Hazırlayan: Onur Bilke PIC ile bilgisayar haberleşmesi hakkında detaylı bilgiler rs232 port rf alıcı ve bir koç konu hakkında bilgiler var Emeği geçen Kişilere Teşekkürler
Teknolojinin gelişmesiyle elektronik ürünler hayatımızın vazgeçilmezleri arasına girdi. Reklamlarımızı, duyurularımızı yaptığımız tabelalar, bez afişler yavaş yavaş yerlerini dijital ışıklı, ekranlı ürünlere bırakmaktadır.
Elektronik ürünlerin hayatımızı girmiş olmaların iyi yanlarının yanı sıra kablo kirliliği gibi insan gözüne pek hoş görünmeyen durumları da beraberinde getirdi.
Çünkü elektronik aletler beslenmeleri için, çevre cihazla iletişim için birçok kabloya ihtiyaç duyuyorlar. Her ne kadar günümüzde cihazların beslenmesi için gerekli olan enerji radyo frekans sinyalleri ile taşınamasa da, çevre cihazlarla olan bağlantıları radyo frekans sinyalleri üzerinden yapılabi- liyor.
Yaptığım uygulamada kablo görünümünü minimize edip, radyo frekans sinyalleriyle seri iletişimin nasıl yapıldığını ortaya koymaya çalıştım.
Seri İletişim
Paralel portta olduğu gibi, seri port üzerinden de bir çok uygulama gerçekleştirmek mümkündür. Fakat birçok uygulama, paralel iletişim ile daha kolay gerçekleştirilebilir. İşlemciniz bile aldığı seri veriyi paralel olarak işler. Seri veri ile paralel verinin iletim farkı ise temelde çok ufaktır. Paralel port üzerinde, bitler yani lojik 1 yada 0 değerleri 8 tane ayrı kablo ile aynı anda iletilir. Seri port üzerinde ise bu lojik değerler tek bir kablo aracılığı ile peşi sıra iletilir. Seri portun kullanımı ve programlaması, paralel porta nazaran daha karışıktır, fakat bunun yanında seri iletişimin de avantajları yok değildir.
Seri Portun Avantajları
1. Seri kablolar, paralel kablolara göre daha uzun olur. Seri port, lojik değerleri -3 volt ile +25 volt arasında iletebilir. Paralel portta ise “0”, 0 volt ile, “1” ise +5 Volt ile iletilir. Dolayısı ile, seri portun 50V maksimum voltaj değişim aralığına sahiptir. Paralel portta ise bu aralık 5 volttur. Bu nedenle kabloda oluşan kayıp, seri portlarda, paralel portlardaki gibi önemli değildir.
2. Seri iletişimde, paralel porta göre çok daha az tel kullanılır. Cihaz ile bilgisayar arasındaki 3 telli kablo seri iletişim için yeterlidir. 3 telli bir kablo, 25 telli bir kabloya göre daha ucuz olacaktır.
3. Seri haberleşmeyi kullanan kızıl ötesi (infra red), RF (Radyo Frekans) cihazlar veriyi ancak seri olarak iletebilirler. Böyle bir haberleşmenin paralel olması imkansızdır. Seri haberleşmede, gönderici kısmında 8-bit veri, paralelden seriye çevrilir ve daha sonra tek bir hattan karşıya gönderilir.
Alıcı, seri veriyi paralele çevirerek 8 bit veriyi oluşturur. Veri telefon hattı ile iletilecekse, bu lojik değerler ses sinyallerine dönüştürülür. Bu tür haberleşmede, göndericideki lojik değerler Modülatör ile ses sinyaline çevrilir. Ses sinyali karşı tarafa ulaştığında, Demodülatör ile tekrar lojik değerlere dönüştürülür. Modülatör ve demodülatör işlemlerini hepimizin bilgisayarında bulunan ve yakından tanıdığı MODEM (Modulator/Demodulator) adlı cihazlar gerçekleştirilir.
Seri Port İle Veri Aktarımı
Bir linkteki veri akışının kontrolü için, gerekli sinyallerden biri saat (clock) sinyalidir. Hem gönderici, hem de alıcı cihazda, bir bitin ne zaman gönderileceğine veya alınacağına karar verilirken bir saat sinyali kullanılır. Veri gönderen ve alan uçların belli kurallar çerçevesinde haberleşmesi gerekir. Verinin nasıl paketleneceği, bir karekterdeki bit sayısını, verinin ne zaman başlayıp biteceği gibi bilgileri bu kurallar belirler. Bu kurallar çerçevesine, Protokol adı verilir.
Eğer veri sadece bir yönde aktarılıyor ise, half duplex, aynı anda her iki yönde aktarılıyorsa, full duplex olarak adlandırılır. İki çeşit seri iletim formatı vardır. Senkron ve Asenkron. Herbiri saatleri farklı şekilde kullanırlar.
Şekil 2.1 ASCII “A” (41h) Karakterinin İletimi
Senkron gönderimde, her cihaz, kendisi yada dışarıdan bir cihaz tarafından üretilen aynı saat sinyali darbelerini kullanırlar. Saatin frekansı sabit yada düzensiz aralıklarda değişkende olabilir. İletilen her bit, bir saat darbesi geçişinden, yani şekildeki yükselen veya alçalan kenardan sonraki belirli bir zamanda geçerli olur. Senkron formatlar, iletimi başlatırken yada bitirirken, çok çeşitli formatlar kullanırlar. Bunlara start-stop bitleri denir. Fakat uzun mesafeli linklerde senkron format uygun değildir. Çünkü bahsettiğimiz saat sinyalinin iletimi, parazit nedeni ile, ek bir hat gerektirebilir. Bu durumda, Asenkron gönderim kullanılır.
Asenkron iletişimlerde, linkte saat hattı bulunmaz. Her uç kendi sinyalini sunmaktadır. Bu iletişimde de, uçların saat frekansında anlaşmaları gerekir. Bu nedenle iletilen her byte ‘ta saatleri eşlemek üzere bir start biti ve iletimin bittiğini bildirmek üzere bir stop biti bulunur.
Seri iletişimde veri aktarım hızı, saniyedeki bit sayısı (bps-bit per seccond) olarak belirtilir. Veri aktarım hızını belirlemede yaygın olarak kullanılan diğer terim ise baud rate tir.
UART Tümdevresi
Yazımızın başında, iletişim seri şekilde olsa bile, verinin işlenebilmesi için paralele çevrilmesi gerektiğinden bahsetmiştik. UART tümdevresi, seri ve paralel veriyi birbirine çevirmeye yarar. CPU ‘nun sistem bus ‘ında verinin okunabilmesi için, UART ile paralel dönüşüm yapılır. UART hem full duplex hemde half duplex veri iletişimini destekler. Veri hatları yanında UART, RS-232 el sıkışma sinyali ile RTS, CTS, DTR gibi kontrol sinyallerini de destekler. Orijinal PC lerde, seri porta kumanda eden UART, 57,600 bps maksimum hızı olan bir 8250 idi. Günümüzdeki PC lerde ise 115,200 bps hıza imkan veren 16550 yada eşleniği olan daha gelişkin devreler bulunur.
Şekil 2.2 UART Tümdevreleri
IRQ, kesmelerin kullanımı
Kesme, basit olarak, CPU ‘ya acil olarak yapılması gereken işleri bildirmeye yarayan bir sinyaldir. Normal bir PC, 16 kesme hattını destekler. Donanım kesmelerine başvuran bir programda kesme servis rutinleri (ISR) olmak durumundadır. Bu rutinler, bir kesme meydana geldiğinde gereken fonksiyonu yerine getirirler. Cihaz, kesme yapmak için, IRQ hattını bir darbe ile uyarır. Sistemin kesme kontrolü bu isteği algılar ve durumu CPU ya bildirir. CPU o anda yaptığı işi durdurarak ISR ‘yi devreye sokar. ISR ‘in devreye girişi ile birlikte CPU kaldığı yerden devam etmek üzere işine döner.
RS232 standartı
Değişik üreticiler tarafından yapılmış veri haberleşme cihazlarının uyumluluğunu sağlamak amacıyla, EIA (Electronics Industries Association) tarafından 1960 yılında, RS232 olarak adlandırılan standart belirlenmiştir. Günümüzde de RS232 en yaygın kullanılan seri I/O arabirim standartıdır.
Şekil 2.3 RS232 Konnektör Türleri
RS232 için, ,lk olarak DB-25 ile erişilen toplam 25 uç tanımlanmıştır. Modern bilgi-sayarlarda bu 25 uca gerek olmadığı için, IBM, DB-9 seri I/O standartını geliştirmiştir.
Tablo 2.1 9 ve 25 uçlu RS232 Sinyalleri
PC ile modem haberleşmesi bu uçlar ve sinyaller ile şu şekilde haberleşir; DTR ve DSR sinyalleri, PC ve modem tarafından hazır olma durumlarını belirlemede kullanılır. RTS ve CTS ile veri akışı kontrol edilir. PC, veri göndermek istediğinizde, RTS hattını aktif yapmakta, buna karşılık modem veri kabul etmeye hazır ise yani veri için yeri var ise, CTS sinyalini gönderir. Eğer yer yok ise modem CTS yi aktif yapmaz. Bu durumda PC nin tekrar aynı şekilde denemesi gerekir.
Boş (NULL) Modem Bağlantısı
Boş modem bağlantısı iki DTE cihazını bağlamakta kullanılır. Bu yöntemi Zmodem veya Xmodem protokolü gibi bir protokol kullanarak, ağ haberleşmeleri veya bilgisayarlar arası dosya aktarımında kullanmak oldukça ucuz bir yoldur. Şekilde de görüldüğü gibi, boş modem bağlantısında sadece 3 hat gereklidir. Bunlar TD,RD ve GND uçlarıdır. Bu bağlantı şekli ile amaçlanan, bilgisayarın, diğer bir bilgisayar ile değil sanki bir modem ile haberleşiyormuş gibi düşünmesini sağlamaktır. Kısacası, modülasyon ve demodulasyon işlemi yoktur. Dolayısı ile modeme de gerek yoktur.
Şekil 2.4 Boş (NULL) Modem Bağlantısı
Şekilde TD ve RD veri hatları karşılıklı çapraz şekilde bağlanmış ve topraklar ortaklanmıştır. Her iki portta da DTR sinyalleri, DSR ve DCD uçlarına bağlanmıştır. DTR sinyali aktif yapıldığında, DSR ve DCD hemen aktif olur. Bu sayede, bilgisayar bağlı olduğu sanal bir modemin hazır olduğunu ve bu modemin DCD sinyali aldığını düşünür. Her iki bilgisayar aynı hızda haberleştiği için, akış kontrolüne gerek yoktur.
Bu yüzden RTS ve CTS sinyalleri her iki portta birbirine bağlanmıştır. Bir bilgisayar verisini göndermek istediğinde, RTS sinyalini aktif yapar. Bu sinyal CTS ye geri bağlı olduğundan, gönderme için tamam cevabını hemen alır ve bu işlemi yerine getirir. RI sinyali ise her iki porttada bağlanmamıştır. Bu sinyal, telefon hattındaki çalma işlemini bilgisayara bildirir. Telefon hattına bağlı bir modem olmadığı için, bu hat bağlantısız bırakılmıştır.
Geri besleme (Loop-Back) bağlantısı
Şekil 2.5 Geri Besleme (Loop-Back) Bağlantısı
Şekilde gördüğünüz geri besleme bağlantısı, genelde seri RS232 haberleşme programları yazarken, geliştirme aşamasındaki testlerde kullanılır. Eğer evinizde ikinci bir PC yoksa, geri besleme bağlantısı ile seri port uygulaması geliştirebilirsiniz. Bu bağlantıda, alma (RD) gönderme (TD) hatları birbirlerine bağlanmıştır. Seri olarak dışarıya gönderilen veri, yine aynı porttan içeri alınır. Bu durumda bilgisayar kendi kendine bağlantı kurmuş olur.
DTE/DCE hızları ile veri akış kontrolü
DTE bir bilgisayar, DCE ise bir modem olarak tanıtılabilir. Bu ikisi arasındaki hız, bilgisayar ile modem arasındaki hızdır. DCE-DCE arasındaki hız ise modemler arasındaki hızdır. Günümüzde 56K modemler yaygın olarak kullanılır. Yukarıda bahsettiğimiz yaygın olarak kullanılan UART 16550A 115,200 BPS maksimum DTE-DCE bağlantısını destekler. Bunun yanında modemler, veri sıkıştırma ve açma fonksiyonlarına sahiptir.
Eğer bilgisayar ile modem yani DTE-DCE arasındaki hız, modemler arasındaki hızdan çok fazla ise, PC nin gönderdiği veri, modemin buffer alanını kısa zamanda doldurduğundan bir veri akış kontrolü gerekir. Akış kontrolü için yazılım ve donanım olmak üzere iki yöntem vardır.
Yazılım akış (Software Flow) kontrolünde, bazı yerlerde Xon/Xoff olarak belirtilen iki karekter kullanılır. Genelde Xon ASCII17, Xoff ise ASCII19 dur. Modemin bufferı dolduğun-da, modem Xoff karekteri göndererek, bilgisayara daha fazla veri göndermemesini bildirir.
Buffer boşaldığında ise Xon sinyali gönderilir. Donanım akışında ise (Hardware Flow) bilgisayar veri göndermek istediğinde RTS (Request to Send) hattını aktif yapar. Eğer modemde veri için yer var ise CTS (Clear to Send) hattını aktif yapar ve bilgisayar veri göndermeye başlar. Eğer modemde yer yoksa CTS sinyali gönderilmez. Dolayısı ile bu şekilde yapılan bir akış kontrolü iletişim hızını yavaşlatmaz.
Bilgisayarınız, COM olarak belirtilen 4 taneye kadar bahsettiğimiz bu seri portlara sahiptir. Bu portlar PC açıldığında, power on self test (POST) esnasında 4 COM portundan herbiri için, UART tümdevresi test edilir. Eğer COM port bulunur ise, I/O port, adresleri hafızada 0040:0000 ile 0040:0007 arasına yazılır.
Bu portlara, BIOS tabanlı INT 14H kesme komudu kullanılarak erişmekte mümkündür. INT 14 H komudunun çeşitli seçenekleri AH saklayıcısı ile belirlenir. Bu komut ile iki PC arasında karekter alışverişi çok kolaydır.
PIC16F84 Çekirdek ve Çevresel Özellikleri
Mikrokontrolcü : Bir yazılım olmadan hiçbir işe yaramayan bir plastik metal ve temizlenmiş kum yığını-dır. Mikrokontrolcüyü kontrol eden bir yazılım olduğundaysa neredeyse sınırsız bir uygula-maya sahiptir.
Mikrokontrolcünün avantajları : Mikrokontrolörler’ in mikroişlemcilere olan üstünlükleri oldukça fazladır. Örneğin mikroişlemcili bir sistem yapıldığında mikroişlemcinin yanısıra hafızalar (RAM, ROM veya EPROM) , I/O giriş çıkış birimi ve buna benzer birçok sistem kullanılmaktadır. Bu karışık sistemin hem tasarlanması ve yapımı zordur hem de maliyeti oldukça yüksektir. Mikrokont rolcüler de bir sistemin çalıştırılabilmesi için yalnızca bir mikrokontroller ve osilatör devresi kafi gelmektedir. Sistemde gerekli olan ön bellek ve I/O birimi mikrokontroller içinde bir yonga halindedir.
PIC Mikrokontrolörlerine Giriş
PIC’ in kelime anlamı PERIPHERAL INTERFACE CONTROLLER giriş-çıkış işlemci sidir. İlk olarak 1994 yılında 16 bitlik ve 32 bitlik büyük işlemcilerin, giriş ve çıkışlarındaki yükü azaltmak ve denetlemek amacıyla çok hızlı ve ucuz bir çözüme ihtiyaç duyulduğu için geliştirilmiştir.
PIC mikrokontrolörlerinin tercih sebepleri
- a) Lojik uygulamalarının hızlı olması
- b) Fiyatının oldukça ucuz olması
- c) 8 bitlik mikrokontroller olması ve bellek ve veri için ayrı yerleşik bus’ ların kullanılması
- d) Veri ve belleğe hızlı olarak erişimin sağlanması
- e) PIC’ e göre diğer mikrokontrolcülerde veri ve programı taşıyan bir tek bus bulunması, dolayısıyla PIC’ in bu özelliği ile diğer mikrokontrolörlerden iki kat daha hızlı olması.
- f) Herhangi bir ek bellek veya giriş/çıkış elemanı gerektirmeden sadece 2 kondansatör ve bir direnç ile çalışabilmeleri.
- g) Yüksek frekanslarda çalışabilme özelliği
- h) Standby durumunda çok düşük akım çekmesi.
- i) İntterrupt kapasitesi ve 14 bit komut işleme hafızası.
- j) Kod sıkıştırma özelliği ile aynı anda birçok işlem gerçekleştirebilmesi PIC mikro
kontrolörleri çeşitli özelliklerine göre PIC16C6X,16C7X, 16C5X gibi gruplara ayrılırlar.
PIC’in Kullanımı İçin Gerekli Aşamalar
I/O(Giriş / Çıkış): Mikrokontrolcünün dış dünya ile ilişkisini sağlayan, girdi ve çıktı şeklinde ayarla-nabilen bir bağlantı pinidir. I/O çoğunlukla mikrokontrolcünün iletişim kurmasına, kontrol etmesine veya bilgi okumasına izin verir.
Yazılım: Mikrokontrolcünün çalışmasını ve işletilmesini sağlayan bilgidir. Başarılı bir uygu-lama için yazılım hatasız (bug) olmalıdır. Yazılım BASIC, C, Pascal veya Assembler gibi çeşitli diller- de veya ikilik(binary) olarak yazılabilir.
Donanım: Mikrokontrolcü, bellek, arabirim bileşenleri, güç kaynakları, sinyal düzenleyici devre-ler ve bunları çalıştırmak ve arabirim görevini üstlenmek için bu cihazlara bağlanan tüm bile şenlerdir.
Simülatör: PC üzerinde çalışan ve mikrokontrolcünün içindeki işlemleri simüle eden MPSIM gibi bir yazılım paketidir. Hangi olayların ne zaman meydana geldiği biliniyorsa bir simülatör kul lanmak tasarımları test etmek için kolay bir yol olacaktır. Öte yandan simülatör, programları tümüyle veya adım adım izleyerek bug’lardan arındırma fırsatı sunar. Şu anda en gelişmiş simülatör programı Microchip firmasının geliştirdiği MPLAB programıdır.
ICE: PIC MASTER olarak da adlandırılır. (In- Circuit Emulator / İç devre takipçisi) PC ve Mikrokontrolcünün yer alacağı soket arasına bağlanmış yararlı bir gereçtir. Bu gereç yazılım, PC de çalışırken devre kartı üzerinde bir mikrokontrolcü gibi davranır. ICE, bir programa girilmesini, mikro içinde neler olduğunu ve dış dünyayla nasıl iletişim kurulduğunun izlenilmesini mümkün kılar.
Programlayıcı: Yazılımın mikrokontrolcü belleğinde programlamasını ve böylece ICE’ nin yardımı olmadan çalışmasını sağlayan bir birimdir. Çoğunlukla seri port ’a (örneğin PICSTART, PROMASTER) bağlanan bu birimler çok çeşitli biçim, ebat ve fiyatlara sahiptir.
Kaynak Dosyası: Hem asembler’ in hem de tasarımcının anlayabileceği dilde yazılmış bir programdır. Kaynak dosya mikrokontrolör’ ün anlayabilmesi için önceden assemble edilmiş olmalıdır.
Assembler: Kaynak dosyayı bir nesne dosyaya dönüştüren yazılım paketidir. Hata araştırma bu paketin yerleşik bir özelliğidir. Bu özellik assemble edilme sürecinde hatalar çıktıkça programı bug’lardan arındırırken kullanılır. MPASM, tüm PIC ailesini elinde tutan Microchip’ in son assemble edicisidir.
Nesne Dosyası: Assembler tarafından üretilen bu dosya; programcı, similatör veya ICE’ nin anlayabilecekleri ve böylelikle dosyanın işlevlerinin çalışmasını sağlayabilecekleri bir dosyadır. Dosya uzantısı assemble edicinin emirlerine bağlı olarak , .OBJ veya .HEX olur.
PIC Mikrokontrolörlerinin Özellikleri
Güvenilirlik: PIC komutları bellekte çok az yer kaplarlar.Dolayısıyla bu komutlar 12 veya 14 bitlik bir program bellek sözcüğüne sığarlar. Harward mimarisi teknolojisi kullanılmayan mikro kontrollörler de yazılım programının veri kısmına atlama yaparak bu verilerin komut gibi çalıştırılmasını sağlamaktadır. Bu da büyük hatalara yol açmaktadır. PIC’ ler de bu durum engellenmiştir.
Hız: PIC oldukça hızlı bir mikrokontrolör’ dür. Her bir komut döngüsü 1µsn’ dir. Örneğin 5 milyon komutluk bir programın 20Mhz’ lik bir kristalle işletilmesi yalnız 1sn sürer. Bu süre 386SX33 hızının yaklaşık 2 katıdır. Ayrıca RISC mimarisi işlemcisi olmasının hıza etkisi oldukça büyüktür.
Komut seti: PIC’ in 16C5X ailesinde bir yazılım yapmak için 33 komuta ihtiyaç duyarken 16CXX araçları için bu sayı 35’ tir. PIC tarafından kullanılan komutların hepsi yazmaç (register) te mellidir. Komutlar 16C5X ailesinde 12 bit, 16CXX ailesindeyse 14 bit uzunluğundadır. PIC’ te CALL, GOTO ve bit test eden BTFSS ve INCFSZ gibi komutlar dışında diğer komutlar 1 saykıl çeker. Belirtilen komutlar ise 2 saykıl çeker.
Statik işlem: PIC tamamıyla statik bir işlemcidir. Yani saat durdurulduğunda da tüm yazmaç içeriği korunur. Pratikte bunu tam olarak gerçekleştirebilmek mümkün değildir. PIC mikrosu prog- ramı işletilmediği zaman uyuma (sleep) moduna geçirilerek micronun çok düşük akım çekmesi sağlanır. PIC uyuma moduna geçirildiğinde , saat durur ve PIC uyuma işleminden önce hangi durumda olduğunu çeşitli bayraklarla ifade eder. (elde bayrağı, 0 (zero) bayrağı … vb.) PIC uyuma modunda 1µA’den küçük değerlerde akım çeker. (Standby akımı).
Sürme özelliği (Sürücü kapasitesi): PIC yüksek bir çıktı kapasitesine sahiptir. Tek bacaktan 40mA akım çekebilmekte ve entegre toplamı olarak 150mA akım akıtma kapasitesine sahiptir. Entegrenin 4mHz osilatör frekansında çektiği akım çalışırken 2mA, stand-by durumunda ise 2µA kadardır.
Seçenekler: PIC ailesinde her türlü ihtiyaçların karşılanacağı çeşitli hız, sıcaklık, kılıf, I/O hatları, zamanlama (Timer) fonksiyonları, seri iletişim portları, A/D ve bellek kapasite seçenekleri bulunur.
Çok yönlülük: PIC çok yönlü bir mikrodur ve ürünün içinde, yer darlığı durumunda birkaç mantık kapısının yerini değiştirmek için düşük maliyetli bir çözüm bulunur.
Güvenlik: PIC endüstride en üstünler arasında yer alan bir kod koruma özelliğine sahiptir. Koruma bitinin proglamlanmasından itibaren, program belleğinin içeriği, program kodunun yeniden yapılandırılmasına olanak verecek şekilde okunmaz.
Geliştirme: PIC program geliştirme amacıyla programlanabilip tekrar silinebilme özelliğine sahiptir. (EPROM, EEPROM) Aynı zamanda seri üretim amacıyla bir kere programlanabilir (OTP) özelliğine sahiptir.
Liste dosyası: Assembler tarafından yaratılan ve kaynak dosyadaki tüm komutları hexadecimal sistemdeki değerleri ve tasarımcının yazmış olduğu yorumlarıyla birlikte içeren bir dosyadır. Bir programı bug’lar dan arındırırken araştırılacak en yararlı dosya budur. Çünkü bu dosyayı izleyerek yazılımlarda neler olup bittiğini anlama şansı kaynak dosyasından daha fazladır. Dosya uzantısı .LST dir.
Diğer dosyalar: Hata dosyası ( Error file: uzantısı .ERR) hataların bir listesini içerir ancak bunların kaynağı hakkında hiç bir bilgi vermez. Uzantısı .COD olan dosyalar emülatör tarafından kullanılırlar.
BUG lar: Tasarımcının farkında olmadan yaptığı hatalardır. Bu hatalar, basit yazılım hataların- dan, yazılım dilinin yanlış kullanımına kadar uzanır. Hataların çoğu derleyici tarafın dan bu- lunur ve bir .LST dosyasında görüntülenir. Kalan hataları bulmak ve düzeltmek te geliştiriciye düşer.
Pic Mikrokontrolörlerinin Donanımsal İncelemesi
Pic mikrokontrolörlerinin iç yapısı: CPU bölgesinin kalbi ALU dur. (Aritmetic Logic Unit-Aritmetik mantık birimi) ALU, W (Working-Çalışan) adında bir yazmaç içerir. PIC, diğer mikroişlemcilerden, aritmetik ve mantık işlemleri için bir tek ana yazmaca sahip oluşuyla farklılaşır. W yazmacı 8 bit geniş-liğindedir ve CPU’da ki herhangi bir veriyi transfer etmek üzere kullanılır.
CPU alanında ayrıca iki katagoriye ayırabileceğimiz Veri Yazmaç dosyaları (Data Regıster Files) bulunur. Bu veri yazmaç dosyalarından biri, I/O ve kontrol işlemlerinde kulla nılırken, diğeri RAM olarak kullanılır.
PIC’ ler de Harward Mimarisi kullanılır. Harward mimarisi mikrokontrolcülerde veri akış miktarını hızlandırmak ve yazılım güvenliğini arttırmak amacıyla kullanılır.
Ayrı bus’ ların kullanımıyla veri ve program belleğinde hızlı bir şekilde erişim sağlanır.
Şekil 3.1 Temel PIC Blok Diyagramı
PIC mikrokontrolör’ lerini donanımsal olarak incelerken PIC 16C84 veya yeni adıyla PIC 16F84 üzerinde durarak bu PIC’ i temel alıp donanım incelenecektir. Bellek ve bazı küçük farklılıklar dışında burada anlatılanlar bütün PIC’ ler için geçerlidir.
Genel tanımlama
PIC 16C84 veya F84 düşük maliyetli, yüksek performanslı, CMOS,full-statik, 8 bit mikrodenetleyicidir. Tüm PIC 16/17 mikrodenetleyiciler RISC mimarisini kullanmaktadır.
PIC16CXX mikroları birçok esas özelliklere sahiptir. 8 seviyeli, derin küme ve çoklu iç ve dış kesme kaynaklarına sahiptir. Harward Mimarisinin ayrı komut ve veri taşıyıcısıyla ayrı 8 bit-lik geniş veri taşıyıcılı, 14 bitlik geniş komut kelimesine imkan vermektedir.
2 aşamalı komut hattı tüm komutların tek bir saykıl’ la (çevrimle) işlenmesini sağlamaktadır. Yalnızca bazı ö-zel komutlar 2 saykıl çekerler. Bu komutlar dallanma komutlarıdır.
PIC16CXX mikrodenetleyicileri tipik olarak 2:1 oranında kod sıkıştırmasına erişmek tedir ve sınıflarındaki 8 bit mikrodenetleyicilerden 2:1 oranında hız arttırılmasına olanak sağ-lanmaktadır. (10MHZ)
PIC16C84 microchip’ i 36 bitlik RAM belleğine, 64 bayt EEPROM belleğine ve 13 I/O pin’ ine sahiptir. Bunun yanı sıra, timer ve sayaç ta mevcuttur.
PIC16CXX ailesi dış elemanları azaltacak spesifik özelliklere sahiptir ve böylece ma-liyet minimuma inmekte, sistemin güvenirliği artmakta, enerji sarfiyatı azalmaktadır. Bunun yanı sıra tüm PIC ler de 4 adet osilatör seçeneği mevcuttur.
Bunlarda tek pin li RC osilatör, düşük maliyet çözümünü sağlamakta (4 MHZ) , LP osilatör (Kristal veya seramik rezonatör) , enerji sarfiyatını minimize etmekte (asgari akım) (40 KHZ), XT kristal veya seramik rezona-tör osilatörü standart hızlı ve HS kristal veya seramik rezonatörlü osilatör çok yüksek hıza sahiptir (20 MHZ).
PIC mikrokontrolörlerinin en büyüközelliği sleep modu özelliğidir. Bu mod ile PIC işlem ya-pılmadığı durumlarda uyuma moduna geçerek çok düşük akım çeker. (5m A). Kullanıcı bir kaç iç ve dış kesmelerle PIC’ i uyuma modundan çıkarabilmektedir. Yüksek güvenilirlikli Watchdog Timer kendi bünyesindeki chip üstü RC osilatörü ile yazılımı kilitlemeye karşı korumaktadır.
PIC16C84 (16F84) EEPROM program belleği, aynı aygıt paketinin orjinali ve üretimi için kullanılmasına olanak vermektedir. Yeniden programlanabilirliği mikroyu uygulamanın sonundan kaldırmadan kodu güncelleştirmeye izin vermektedir. Bu aygıtın kolayca erişileme diği, fakat prototipinin kod güncelleştirmesi gerekli olduğu durumlarda, bir çok uygulamanın geliştirilmesinde yararlıdır. Bunun yanı sıra bu kodun güncelleştirilmesi diğer ayrı uygulama larda da yararlıdır.
Tablo 3.1 PIC16C8X Ailesi Özellikleri
Şekil 3.2 PIC 16C84’ ün Basitleştirilmiş İç Yapısı
PIC’ ler özellikle de PIC16C84 yüksek hızlı otomobillerden, motor kontrolü uygula maları, düşük enerji sarfiyatlı uzaktan çalışan sensörler, elektronik kilitler, güvenlik aygıtları ve akıllı kartlara kadar bir çok uygulamalarda kullanılırlar. EEPROM teknolojisi uygulama programların (Transmitter kodları, motor hızları, alıcı frekansları, güvenlik kodları vb.) uygu lamasını son derece hızlı ve uygun hale getirmektedir.
Küçük boyutlarıyla bu mikrodenetleyi ciler alan sınırlaması bulunan uygulamalarda kusursuzdur. Düşük maliyet, düşük enerji sarfi yatı, yüksek performans, kullanım kolaylığı ve I/O esnekliği özellikle de PIC 16C84 mikrosu nun daha önce kullanılması hiç düşünülmeyen alanlarda kullanılmasını sağlamaktadır.
(Bunlar ; timer fonksiyonları, seri kominikasyon, PWM fonksiyonları ve birlikte işlemci uygulamala rı)
Seri sistem içi programlama özelliği (iki pinin üzerinden) ürünün tamamen toplanması ve test edilmesinden sonra ürünün alıştırılmasının esnekliğine olanak vermektedir. Bu özellik sayesinde ürün serileştirilebilmekte ve veriler saklanabilmektedir.
Gelişme desteği: PIC16CXX sınıfı tam özellikli mikrobirleştirici, yazılım simülatörü, devre içi emüla-tör, düşük maliyetli program geliştirme ve tam özellikli programlayıcı ile desteklenmiştir. PIC 16F84 PIC16C5X mikrokontrolerlerinin geliştirilmiş halidir. PIC16C5X için yapılan devreler de kolaylıkla PIC16C84 (16F84) kullanılabilir.
Elektrikle silinebilen mikrokontrolörler
Bu mikrolar, programının silinip yeniden yazılabilme özelliğine sahiptir ve oldukça düşük maliyetli plastik ambalajlar halinde bulunmaktadır. Aynı zamanda bu tip mikroların üretimi kadar prototipinin geliştirilmesi ve pilot programlar için kullanılmasına olanak sağlamaktadır. Bunun daha ötesindeki avantajlarından biri, bunların devre içi veya Micro chip’s PICSTARTÒ plus veya PROMATE II programlayıcıları tarafından silinebilmesi ve yeniden programlanabil mesidir.
Mimari olarak incelenmesi
PIC16CXX sınıfının üstün performansı genellikle RISC mikroçiplerinde bulunan bir-çok mimari özelliklere sahiptir. Başlangıç olarak PIC16CXX Harward mimarisini kullanmak-tadır. Bu mimari ayrı belleklerden erişilen program ve verilere sahiptir. Böylece PIC mikrosu program belleği ve veri belleği taşıyıcılarına sahipken programların ve verilerin aynı bellekten getirilen geleneksel Von Neuman mimarisi üzerinde bant genişliği iyileştirilmektedir.
Prog ramların ve veri belleklerinin ayrılması komutların 8 bitlik geniş veri kelimesinden farklı boyutlandırılmasına olanak vermektedir. PIC16CXX mikroları tekli kelimeye imkan veren 14 bit taşıyıcı üzerinden 14 bit komutu tek bir süreçte uygulamaktadır.
İki aşamalı hat komut sürecini ve yürütülmesini biraraya getirmektir. (örnek 3-1). Bunun sonucu olarak, program bölünmeleri dışında tüm komutlar tek bir süreçle yürütülmektedir (400ns @ 10 MHZ).
PIC 16CXX aygıtları,kayıt dosyalarına ve veri belleğine doğrudan veya dolaylı olarak yönlenebilmektedir. Program Sayacı dahil bütün özel fonksiyon kayıtları veri belleğine yerleş tirilmiştir. Adres modunu kullanarak herhangi bir kaydın üstüne herhangi bir işlemin gerçek leşmesini mümkün kılan Ortogonal (simetrik) komutlarda kurulmuştur. Simetrik özelliği ve “özel optimal durumların”eksikliği PIC 16CXX ile programlamayı daha da etkin kılmakta dır. İlaveten enformasyon eğrisi önemli ölçüde azaltılmıştır.
PIC16CXX mikroları 8 bitlik ALU ya ve W(working) registerine sahiptir. W re gisterindeki veri ile herhangi bir kayıt dosyası arasında aritmetik ve boolean fonksiyonları uygulanmaktadır. ALU 8 bit enindedir ve toplama, çıkarma , değiştirme ve çeşitli lojik işlemleri içerir.
İki bilgili komutlarda bir bilgi tipik olarak W registeridir diğer bilgi ise dosya kaydı veya ha zır sabit değerdir. Tekli komutlarda bilgi ya W kaydı ya da dosya kaydıdır.Yü- rütülen komutlara dayanarak ALU, STATUS kaydındaki Caryy(C), Digit Caryy(DC) ve Ze- ro(Z) bitlerini etkileyebilmektedir. C ve DC bitleri, çıkarmalarda, nispeten çıkarma işleminde ödünç alan ve sayısal ödünç alan bit olarak işlemektedir
Saat ölçüm şeması / komut süreci
Saat girişi (OSC1 den) içten dörde bölünmüştür ve Q1, Q2, Q3 ve Q4 olarak gelme- yen 4 kare dalga sinyali ortaya çıkar. İçten olarak, program sayacı (PC) her Q1 de bir arttırılmakta ve komutlar program belliğinde sürece sokularak Q4 sürecinde komut kaydına katılmaktadır. Komutlar Q1 ve Q4 aralığı boyunca decode edilir ve yürütülür. Saat palsi ve komut yürütme akımı şekil 2.3 de görülmektedir.
Şekil 3.3 Saat Palsi Ve Komut Yürütme Akımı
Komut akımı bilgi iletimi: ‘Komut süreci’ dört Q sürecinden oluşmaktadır. (Q1, Q2, Q3 ve Q4). Komut devri ve yürütül mesi şöyle iletilmektedir. Devir bir komut sürecini üstlenirken decode ve yürütme diğer ko- mut sürecini üstlenmektedir. Bununla birlikte bilgi iletim nedeniyle, her bir komut etkin olarak bir süreçte yürütülür.
Eğer komut program sayacının değişmesine neden olmuşsa ( örn. GOTO komutu) o zaman komutun tamamlanması için iki süreç gereklidir. Devir süreci her Q1 de değeri bir artan program sayacı (PC) ile başlar. Yürütme sürecinde işleyen komut Q1 sürecindeki ‘Komut kaydı’na gönderilir. Daha sonra bu komut Q2, Q3 ve Q4 süreçleri boyun-ca decode edilir ve yürütülür. Veri belleği Q2 boyunca okunur (Bilgi okunması) ve Q4 boyun-ca yazılır ( Yazım hedefi).
Bellek organizasyonu: PIC16C84` de 2 bellek bloğu mevcuttur. Bunlar program belleği ve veri belleğidir. Her bir bellek kendi taşıyıcısına sahiptir; böylece her bir bloğa erişim aynı osilatör süreci boyunca meydana gelebilmektedir. Bunun ötesinde, veri belleği genel amaçlı RAM ve özel fonksiyon kayıtları (SFRS) olmak üzere ikiye bölünür.
SFR`ler her bir bireysel özelleşmiş modülü ele alan bölümde açıklanan özel modülleri kontrol etmek için kullanılmaktadır. Veri belleği EEPROM veri belleğini de içermektedir. Bu bellek, direkt veri belleğine planlanmamış, fakat indirekt olarak planlanmıştır; ve indirekt ad- res göstergeleri okumak/yazmak için EEPROM belleğinin adresini belirlemektedir. EEPROM belleği 64 bayt ve 10h-3Fh. adres enine sahiptir.
Şekil 3.4 Program hafızası ve küme(Yığın)
Veri bellek organizasyonu: Veri belleği ikiye ayrılır. Birincisi özel fonksiyon kayıt alanı (SFR), diğeri ise genel amaçlı kayıt alanıdır. SFR’ ler aygıtın işlemini kontrol eder. Veri belleğinin bölümleri küme lenmiştir. Bu kümeler BANK adını alırlar. Bu hem SFR alanı hem de GPR alanı içinde ge- çerlidir. GPR alanı genel amaçlı RAM`in 16 bayt` ından daha fazlasına olanak sağlanabil- mesi için kümelenmiştir.
SFR` nin kümelenmiş alanı özel fonksiyonları kontrol eden kayıtlara aittir. Kümeleme küme seçimi için kontrol bitleri gerektirmektedir. Bu kontrol bitleri STA- TUS kaydında yer almaktadır. Şekil 2.4 veri belleği haritası organizasyonunu göstermek te- dir. Veri belleğin tümüne ya direkt her kayıt dosyasının mutlak adreslerini kullanarak, yada, dolaylı yoldan dosya seçim kaydı (FSR) üzerinden erişilebilir.
Dolaylı adresleme, veri belleğinin kümelenmiş alanına erişmek için RP1: RPO` un şimdiki değerlerini kullanmak- tadır. Veri belleği genel amaçlı kayıt ve özel fonksiyon kaydını içeren iki kümeye bölünmek- tedir. RPO bitinin (STATUS <5>) (Yani 5. Bit RPO bitidir.) silinmesiyle BANK 0 seçilir. RPO` in kurulması BANK 1`i seçer. Her bir BANK (küme) 7Fh (128 bytes) kadar uzanır (genişler).
Her bir kümenin ilk on iki yerleşimi özel fonksiyon kaydı için rezerve edilmiştir. Kalanı ise statik RAM olarak genel amaçlı kayıt yürütebilmektedir.
Genel amaçlı kayıt dosyası: Bütün aygıtlar belirli bir miktarda genel amaçlı kayıt (GPR) alanına sahiptir. Her bir GPR 8 bit enindedir ve dolaylı yada doğrudan FSR üzerinden erişilmektedir. BANK 1` deki GPR adresleri BANK 0`daki adreslere planlanır. Örnek olarak, 0Ch veya 8Ch adresleme yer leşimi aynı GPR` ye erişecektir.
Özel fonksiyon kayıtları: Özel fonksiyon (Şek 2.5 ve Tablo2.1) kayıtları, aygıtın işlemini kontrol etmek için CPU ve özel fonksiyonlar tarafından kullanılmaktadır. Bu kayıtlar statik RAM`lerdir.
Şekil 3.5 Kayıt Dosyası Haritası
PortB ve TrisB kayıtları: PortB 8 bit eninde iki yönlü porttur. Buna uygun veri yönlendirici kaydı TRISB`dir. TRISB kaydındaki herhangi bir bit “1” ise, buna uygun çıkış sürücüsü yüksek direnç moduna getirilecektir.TRISB kaydındaki herhangi bir bitin “0” olması, çıkış mandalının içeriğini seçi- len pinin üzerine getirir. Her bir PORTB pini iç direnç düşürücü engellere sahiptir.Tekli kont- rol biti tüm engelleri devreye sokabilir.
Bu RBPU (OPTION – REG<7) bitinin silinmesiyle ya pılır. Düşürücü engeller, port pini çıkış olarak konfigüre edildiği zaman otomatik olarak ka panmaktadır. Engeller güç reset üzerinde etkinsizleştirilmektedir. Dört PORTB pini, RB7: RB4 değişim özelliklerinde kesmelere sahiptir. Yalnızca giriş olarak konfigüre edilen pinler kesmenin meydana gelmesine sebep olabilirler. (yani, herhangi bir çıkış olarak şekillendirilen RB7:RB4 pini değişim ilişkisi üzerindeki kesmeden hariç tutulmuştur. )
Giriş modundaki pinlerin değeri PORTB` nin önceki okunmasındaki eski değeri ile karşılaştırılır. Pinlerin“uyuş mayan” kısımları RB port değişim kesmesini üretmek için birlikte OR’lanır.
Şekil 3.6 RB4-RB7 Pinlerinin Blok Diyagramı
Bu kesme aygıtı SLEEP` ten çıkarabilir. Kullanıcı, kesme servis programında, kesmeyi aşa ğıdaki metotlarla temizleyebilir.
- a-) PORTB`yi okuma (veya yazma). Bu uyuşmazlık durumuna son verir.
- b -)RBIF bayrak bitini temizler.
Uyuşmazlık durumu RBIF bitini kurmaya devam edecektir.PORTB’nin okunması bu uyuş- mazlık durumuna son verecek ve RBIF bitinin temizlenmesine olanak verecektir. Bu uyuş- mazlık özelliğindeki kesme bu pindeki şekillendirilebilir yazılı engelleri ile birlikte anahtar depresyonundan çıkmaya olanak sağlamaktadır.
Not 1: Eğer I/O pininde, PORT B` nin okuma işlemi yürütüldükten sonra (Q2 sürecinin başlaması ile) değişme meydana geliyorsa, RBIF kesme bayrak biti kurulmayabilir
Şekil 3.7 RB3-RB0 Pinlerinin Blok Diyagramı
Değişme özelliklerindeki kesmeler anahtar depresyon işlemlerinde kalkma ve PROTB` nin yalnızca değişim özelliklerinde kesmeler için kullanıldığında tavsiye edilme- tedir. Değişim özelliklerinde kesmeler kullanılırken, PORTB` nin ayrılması tavsiye edilmemektedir.
Tablo 3.2 PortB Kaydedicileri
I/O Programlama değerleri
Herhangi bir okuduğu gibi yazan ve içten çalışan komutun arkasından yazma işlemi gelmektedir. Örneğin BCF ve BSF komutları CPU için kayıtları okumakta, bit işlemini yürütmekte ve sonuçları tekrar kayda yazmaktadır. Bu önlem, komutların hem girişi hem de çıkışı tanımlanan portlara uygulandığından kullanılmalıdır. Örneğin, PORTB` nin 5. bitindeki BSF işlemi PORTB’nin tüm sekiz bitinin CPU içine yönelik okunmasına neden olur.
Daha sonra, BSF işlemi bit 5 üzerinde yer alır ve PORT B çıkış mandallarına yazılır. Eğer diğer bir PORT B` nin biti iki yönlü I/O pini olarak kullanıldıysa ve bu zamanda giriş olarak tanımlan dıysa, pindeki giriş sinyali CPU` yu okuyacaktır ve daha önceki içeriğin üzerine yazılmak suretiyle belirli pinlerin veri mandallarına yeniden yazacaktır. Pin, giriş modunda olduğu süre ce hiçbir problem çıkmayacaktır. Bununla birlikte eğer o pin çıkış modunda açıldıysa, veri- man dalının içeriği bilinmeyen olacaktır.
Port kaydının okunmasıyla port pinlerinin değerleri- de okunur. Port kaydına yazmada ise port mandalına yazılır. Eğer portla bu düzenle yaz komutu kullanıldıysa (yani BCF, BSF) port pinlerinin değerleri okunur, istenen işlem port pinlerinin değerine kadar yerine getirilecek ve ondan sonra bu değer port mandalına yazılacaktır.
Aktif olarak yüksek ve düşük çıkış yapılan pinler aynı zamanda dış aygıtlarından çı karılmamalıdır. Sonuçta yüksek çıkış akımı çipe zarar verebilir.
I/O Portundaki ardışıl işlemler
I/O portuna fiili yazımı, komut sürecinin sonunda geçerli olurken, okuma da komut sürecinin başında geçerli olması gerekmektedir. (şek 2.12) Böylelikle, okuma tarafından takip edilen yazma aynı I/O portunda yürütüldüyse, tedbirleri mutlaka alınmalıdır. Komutların ardışıklığı öyle olmalıdır ki, pin voltajları, sıradaki komuttan daha erken stabilize olmalı dır.(yükleme bağımlılığı) Bunun yanı sıra bu pinin daha önceki hali, yeni haline nispeten CPU’ya okunabilir.
Örnek 2.1 I/O portundaki iki ardışık oku-düzenle-yaz komutunun etkileri gösterilmektedir.
; Başlangıç Port Ayarları : PORT B<7:4> girişler
PORT B<3:0> çıkışlar
PORT<7;6> dış engellere sahiptir ve diğer devrelere bağlı değildir. Kullanıcı pin değerini 00pp ppp olarak da bekleyebilir. 2.nci BSF RB7` nin pin değeri (yük-sek) olarak gönderilmesine sebep olmaktadır.
Şekil 3.8 Ardışıl I/O İşlemleri
TIMER0 modülü ve TMR0 kaydı : Timer0 modül, timer/sayaç aşağıdaki özelliklere sahiptir.
- 8 bitlik timer/sayaç
- Okunabilir ve yazılabilir
- 8 bitlik programlanabilir prescaler.
- İçten veya dıştan saat ayarı
- FFh` tan 00h` ye taşma üzeri kesme
- Dış saatin sınır seçimi
Timer modu, TOCS bitinin (OPTION<5>) temizlenmesiyle seçilir.Timer modunda Timer0 modülü her bir komut sürecini uzatır.(Prescaler olmaksızın) (Şek 2.11) Eğer TMR0 kaydı yazılıysa,uzama takip eden 2 süreci engeller. (şek 2.12 ) Kullanıcı ayarlanan değeri TMR0 kaydına yazarak, bunun etrafından çalışabilir.
Sayaç modu TOCS bitinin (OPTION<5>) ayarlanmasıyla seçilir.Bu modda, TMR0, RA4/TOCK1 pininin sınırlarının herbir artışında ya da düşüşünde artacaktır. Genişleyen sınır, TO kaynak sınır seçim biti tarafından, TOSE (OPTION<4>) tarafından belirlenmektedir. TO- SE bitinin temizlenmesi artan sınırları seçecektir.
Prescaler, Timer0 modülü ile Watchdog Timer arasında paylaşmaktadır. Prescaler ataması, yazılımda PSA biti kontrolü tarafından denetlenmektedir. (OPTION<3>) PSA bitinin temiz-lenmesi, prescaler’ ı Timer0 modülüne atayacaktır. Prescaler okunabilir veya yazılabilir de- ğildir. Prescaler Timer0 modülüne atandığında prescaler değeri (1:2, 1:4 …; 1:256) yazılım tarafından seçilebilirdir.
TMR0 kesmesi
Şekil 3.9 TMR0 Blok Diyagramı
TMR0 kesmesi, TMR0 kaydı FFH`dan 00h`ye akışında üretilmektedir. Bu fazla akım TOIF bitini ( INTCON<2>) kurar (ayarlar). Kesme, aktif TOIE bitinin (INTCON<5>) temiz lenmesi ile gizlenebilir. (INTCON<5>) TOIF biti, Timer0 modülü tarafından, bu kesmenin yeniden aktifleştirilmesinden önce yazılımdan silinmelidir. TMR0 kesmesi (şek.2.13) işlemciyi SLEEP` ten çıkaramaz, çünkü, SLEEP boyunca timer kapalıdır.
Şekil 3.10 TMR0 Zamanlaması: Perscaler’siz içten clock
TMR0’ nun dıştan saat ile kullanımı: Dıştan saat girişleri TMR0 için kullanıldığında, bazı ön şartların gerçekleştirilmesi ge- rekir. Dıştan saat gereksinimi , içten faz saati senkronizasyonundan kaynaklanmaktadır. Bunun yanısıra, TMR0 kaydının senkronize edilmesinden sonra, fiili artmada gecikme mev-cuttur.
Dıştan saat senkronizasyonu : Hiç bir prescaler kullanılmadığı taktirde , dıştan saat girişi prescaler çıkışındaki gibi-dir. RA4/TOCKI pininin içten faz saati ile senkronize edilmesi iç faz saatlerinin Q2 ve Q4 süreçlerindeki prescaler çıkışını örneklemek yoluyla yerine getirilir. (Şekil 2.13) . Bunun için, TOCKI’ nin düşük değerinin en azından 2TOSC (artı ufak RC gecikmesi) olması gerekir.
Prescaler kullanıldığında, dış saat girişi asenkron sayıcı tipi prescaler’ a bölünür ve böylece prescaler çıkışı simetrik olur. Dış saatin örnekleme gereksinmelerini karşılamak için sayaç (counter) dikkate alınmalıdır. Böylece prescaler değerine bölünen en azından 4 TOSC peryot uzunluğuna sahip olmalıdır.
TMR0 gecikme uzatılması: Prescaler çıkışı , iç saat ile senkronize edildiği için, dış saat sınırlarının meydana gelmesindeki zamandan TMR0 modülünün fiili olarak uzatılması zamanına kadar küçük bir gecikme vardır. Şekil 3.11 dış saat sınırından Timer uzamasına kadar gecikmeyi göstermektedir.
Prescaler (Bölücü) : 8 Bitlik sayaç Timer0 modülünde veya Watchdog timer’ında bulunur. Prescaler dışarıdan verilen sinyali 256 ya kadar bölmeye yarar. Timer0 modülü ile Watchdog timer’ı arasında karşılıklı istisna tutulan yalnızca birtek prescaler mevcuttur. Böylece Timer0 mo-dülüne prescaler ataması, watchdog timer’ın prescaleri olmadığı anlamına gelmektedir. PSA ve PS2 : PSO bitleri (option <3:0>) prescaler atamasını ve prescaler oranını belirlemektedir.
Şekil 3.11 Dış Saatli TIMER0 Zamanlayıcısı
Timer0 modülüne yazılan bütün komutlar, timer0 modülüne atandığında prescaler’i ölçecektir. WDT ye atandığında , CLRWDT komutu Watchdog Timer boyunca prescaler’ i temizleyecektir. Prescaler yazılabilir veya okunabilir değildir.
Tablo 3.3 TIMER0 Ve Diğer Kaydediciler
EEPROM Veri belleği
EEPROM veri belleği normal işlem boyunca okunabilir ve yazılabilirdir. Bu bellek direkt olarak kayıt dosya boşluğuna planlanmamıştır. Bunun yerine bu bellek, özel fonksiyon kaydı üzerinden dolaylı olarak adreslenir. Burada bu belleği okuyan ve yazan 4 özel kaydedici (SFR) mevcuttur.
Bu kayıtlar : EECON1 EECON2 EEDATA EEADR
EEDATA : yazma/okuma için 8 bitlik veri tutar ve EEADR erişilen EEPROM adres-lerini saklar. PIC16C84 aygıtı 0H ile 3FH genişliğindeki adresli EEPROM belleğinin 64 bitine sahiptir. EEPROM veri belleği byte’ ları okuma ve yazmaya olanak verir.
Byte’lar otomatik olarak veri siler ve yeni veri yazar. (yazmadan önce siler). EEPROM veri belleği yüksek silme/yazma süreçlerine oranlanmıştır. Yazma zamanı chip üzeri timer tarafından denetlen-mektedir. Yazma zamanı chipten chipe göre değiştiği gibi, voltaj ve ısı değerlerine görede değişebilir.
Aygıt kod korumalı olduğu zaman , CPU EEPROM belleğini okumaya ve yazmaya devam edebilir. PIC programlayıcısı artık bu belleğe erişemeyebilir.
EEADR : kaydı EEPROM verisinin maximum 256 byte’ ını adresleyebilir. Üstteki iki bit adresi decode edilmiştir. Bu şu anlama gelmektedir ki , 64 bitin bellek boşluğunda oldu-ğundan emin olmak için bu iki bit her zaman 0 olmalıdır.
Şekil 3.12 EECON1 Registeri (88h adresleri)
- R = Okunabilir. W = Yazılabilir. S = Kurulabilir bit
- U = Kullanılmayan bit, ‘0’ olarak okunur. ^n = POR resetindeki değer.
- Bit 7 : 5 : Kullanılmayan : ‘0’ olarak okunur.
- Bit 4 EEIF : EEPROM Yazma işlemi kesme bayrak biti.
- 1 = Yazma işlemi tamamlanmıştır.
- 0 = Yazma işlemi tamamlanmamıştır veya başlamamıştır.
- Bit 3 WRERR : EEPROM hata bayrak biti
- 1 : Yazma işlemi erkenden sona ermiştir. (MCLR veya WDT normal işlem boyunca resetlenir.)
- 0 : Yazma işlemi tamamlanmıştır.
- Bit 2 WREN : EEPROM yazma aktifleştirme biti
- 1 : Yazma sürecine olanak verir.
- 0 : EEPROM verisine yazmayı engeller.
- Bit 1 WR : Yazım kontrol biti
- 1 : Yazım sürecini başlatır. (Yazım bitirildikten sonra bit donanım tarafından silinir. WR biti yalnızca yazılıma kurulabilir.(silinmez) )
- 0 : EEPROM a veri yazım süreci tamamlanmıştır.
- Bit 0 RD : Okuma kontrol biti.
- 1 : EEPROM’ un okunmasını başlatır. (okuma yalnızca bir devirde yer alır. RD donanımda silinir. RD biti yalnızca yazılıma kurulabilir. ( silinmez) )
- 0 : EEPROM okumasını başlatmaz.
EECON1 ve EECON2 kayıtları (registerleri): EECON1 , fiziksel olarak yerine getirilen 5 düşük sıralı bitli kontrol kaydıdır. Üst üç biti mevcut değildir ve ‘ 0 ‘ olarak okunur. RD ve WR kontrol bitleri okuma ve yazmayı başlatırlar. Bu bitler silinemezler, yalnızca yazılıma kurulabilirler. Bu bitler, okuma ve yazım işlemlerinin tamamlanması olarak donanımdan silinirler. WR’nin yazılımdan silinmesinin olanaksızlığı , yazım işleminin tesadüfi vaktinden evvel sona erdirilmesini önler.
WREN biti, kurulduğunda yazım işlemine başlamaya izin verilir. Yüksek güçte, WREN biti temizlenir. Yazım işlemi normal işlem süresinde MCLR, RESET veya WDT- zaman aralığı reset tarafından kesildiğinde WRERR biti kurulur. Bu durumlarda, resetin ardından kullanıcı WRERR bitini kontrol edebilir ve yerleşimi yeniden yazabilir. EEDATA ve EEADR kayıtlarındaki veri ve adresler değişmeyecektir. Yazım tamamlandığında EEIF bayrak biti kesmesi kurulur. Bu kesme yazılımdan silinmelidir.
EECON2 fiziksel kayıt değildir. EECON2 okuması tüm ‘0’ ları okuyacaktır.EECON2 kaydı harici olarak data EEPROM yaz serisinde kullanılır.
EEPROM veri belleğinin okunması: Veri bellek yerleşimini okumak için , kullanıcı, adresi EEADR kaydına yazmalıdır ve RD kontrol bitini kurmalıdır. (EECON1<0>). Veri sıradaki devirde, EEDATA kaydında mevcuttur , bunun için bu sıradaki komutta okunabilmektedir. EEDATA bu değerleri diğer-leri okununcaya kadar veya kullanıcı tarafından yazılıncaya kadar tutmaktadır. (yazım işlemi boyunca)
Örnek 2.2 :
EEPROM veri belleğine yazım
EEPROM veri yerleşimini yazmak için kullanıcı ilkin adresleri EEADR kaydına, verileri EEDATA kaydına yazmalıdır. Daha sonra kullanıcı her bit’ e yazımın başlatması için spesifik ardışıkları takip etmelidir.
Örnek 2.3 : EEPROM’ a veri yazımı
Yukarıdaki seri her bir bit için tam tamına takip edilmediği sürece (55h yi EECON2 ye yaz, Aah yi EECON2 ye yaz ve WR bitini kur) yazım başlatılmayacaktır. Bu kod segmenti boyunca kesmelerin etkinsizleştirilmesi yerinde olur.
İlaveten EECON1 deki WREN biti aktif yazıma kurulmalıdır. Bu mekanizma beklen-meyen kod yürütülmesinden kaynaklanan tesadüfi EEPROM verilerin üzerine yazımı önler. Kullanıcı, EEPROM un güncelleştirilmesi hariç her zaman WREN bitini temiz tutmalıdır. WREN biti donanım tarafından silinmektedir.
Yazım serisi başlatıldıktan,WREN bitinin temizlenmesi bu yazım şeklini etkilemek-tedir. WREN biti kurulmadıkça, WR bitinin kurulması engellenir.
Yazım şeklinin tamamlanmasından sonra, donanımdaki WR biti temizlenir ve EE yazım bitini bayrak biti (EEIF) kurulur. Kullanıcı bu kesmeyi aktifleştirebilir yada etkinleş-tirebilir. EEIF yazılım tarafından silinmelidir.
NOT: EEPROM veri bellek E/W cycle zamanı 10ms aşabilmektedir. (tipik) Yazım şeklinin bitiminden emin olmak için EE kesmesi kullanılmalı veya WR biti seçilmelidir. (EECON<1>). Her iki durum şeklinin tamamlandığını ifade eder.
Yazım doğrulanması: EEPROM verisine yazılan değerlerin yazılması istenen değerlerle doğrulanması gerekmek-tedir. Bu EEPROM birirnin spesifikasyon limitine yakın uygulamalarda kullanılmalıdır. Toplam kaldırma diski , uygunluk (rahatlık) derecesini belirlemeye yardımcı olacaktır.Genel olarak EEPROM yazım başarısızlığı ”1” olarak yazılan, fakat geriye “0” olarak okunan bitten kaynaklanmaktadır.
Örnek 2.4 : Yazım doğrulanması:
Taklit yazılımlara karşı koruma: Şöyle durumlar olabilir ki , aygıt EEPROM veri belleğine yazmak istemeyebilir. Taklit yazılımlara karşı korunmak için, değişik mekanizmalar monte edilmiş, kurulmuştur. Yüksek güçte WREN temizlenir. Bunun yanı sıra , yüksek güç timer’ i (72 msn süreli) EEPROM yazımını önler.
Yazılımı başlatan ardışık ve WREN biti ikisi birlikte ‘Brown-Out’, güç arızası veya yazılım aksamasında tesadüfi yazılımları önlemeye devam eder.
Kod koruma süresince EEPROM veri işlemi: Micro, kod korumalı durumdayken düzene sokulan verileri okuyabilir ve EEPROM verisine yazabilir.
ROM aygıtlarında iki koruma biti mevcuttur. Birisi ROM program belleği diğeri ise EEPROM veri belleği içindir.
Uygulama
Bu bölümde PIC ile PC Kontrollü RF Duyuru Panosu’nun teknik detaylarına değineceğiz. PIC ile PC Kontrollü RF Duyuru Panosu 2 bölümden oluşmaktadır. Birinci bölüm verici bölümü ikinci bölüm ise alıcı bölümüdür.
Verici Devresi ,Data girişi
Şekil 4.1 Verici Devre Blok Şeması
Şekil 4.1 de blok şeması verilen devre PIC ile PC Kontrollü RF Duyuru Panosu’nun verici devresidir. Bilgisayarın seri portundan çıkan veriler elektriksel sinyaller şeklinde iletirler. Seri porttan çıkan veriler 15 V civarındadır. Bizim bu sinyalleri RF data transmitter ile alıcı devreye gönderebilmemiz için 5V luk bir gerilimle kodlanmış olması lazım. Devrede bulunan MAX 232 entegresi seriporttan çıkan 15 V civarında olan elektriksel sinyali 5V kare dalga sinyaline indirgemektedir.
Şekil 4.2 de MAX 232 entegresinin bağlantı-uç şeması görülmektedir. Bölüm 2 Seri İletişim konusundada bahsettiğimiz gibi seri portun 3 numaralı ucu data çıkışı olarak kullanılmaktadır, 5 numaralı uç ise GND dir. Seri portun 3 numaralı ucundan çıkan data MAX 232 entegresinin 11 nolu ucuna gelir. MAX 232 entegresi PC den aldığı 15 V civarında olan veriyi lojik 5 V ta indirgiyerek RF verici modüle gönderir.
1-3 , 4-5 , 2-6 uçlarına bağlanan kondansatörler datasheet bilgilerine göre 22 uf seçilmiştir. Bu kondansatörler kare dalganın frekansını ayarlamakla görevlidirler. Entegrenin 14 umaralı ucu data çıkış ucudur. Buradan çıkan +5 V civarındaki veri RF verici modül sayesinde alıcı devreye iletilmektedir. Entegrenin 15 ve 16. uçları ise besleme uçlarıdır.
Şekil 4.2 MAX 232 Entegresi Bağlantı Uç Şeması
RF verici modül
Şekil 4.3 RF Transmitter Devresi
Bu modül üzerinde bulunan entegre devre sayesinde DATA girişine uygulanan sayısal verileri RF formatında kodlama yapıyor. MAX 232 Entegresinin 14 nolu çıkış ucundan çıkan sayısal veriler bu entegre devrenin 2 nolu data-in ucuna geliyor ve RF sinyallere dönüşüyor. Entegre devrenin 1-3 nolu uçları besleme için kullanıyor ve 4 nolu ucu ise anten çıkışı için kullanılıyor.
Besleme devresi
Verici devrenin çalışabilmesi için devre elemanlarının beslenmesi gerekmektedir. Bu besleme geriliminin 5V dan daha düşük olduğu durumlarda verici devre çalışmaz , 5V dan daha yüksek bir gerilimde ise devre elemanları zarar görebilir. Devre elemanlarının zarar görmemesi için devrede 7805 regülatör entegresi kullanılmıştır. Şekil 4.4 te 7805 regülatör entegresinin blok şeması görülmektedir. 1. uç giriş , 2. uç şase için ve 3. uç ise +5V çıkışı için kullanılmaktadır.
Şekil 4.4 7805 Entegresi Blok Şeması
Led göstergeler
Verici devrede iki adet LED bulunmaktadır. Birinci LED 7805 entegresinin çıkışına bağlanarak devreye gelen gerilimi gözlemek için kullanılmaktadır. Eğer devreye bir pil veya bir adaptör bağlanırsa LED yanacak ve devreye elektrik geldiğini gösterecektir.
İkinci LED ise seri portun 4 numaralı Data Terminal Ready (DTR) ucuna bağlanarak PIC ile PC Kontrollü RF Duyuru Panosu kontrol yazılımının devre ile bağlantı kurup kuramadığını gösterir. Devre ile bağlantı kurulduğu taktirde ikinci LED yanacaktır.
Şekil 4.5 Verici Devre
Alıcı Devresi
Verici devreden gelen RF sinyallerin alınması ve LCD ekranda gösterilmesi bu devrede bulunan PIC 16F84 Mikrokontrolörler tarafından yapılmaktadır. Devrede bulunan birinci PIC PC den gelen verileri dinlemekle görevlidir. Eğer kendisine uygun formatta bir veri gelmişse gelen veriyi alarak bir diziye atar ve diğer PIC’e veri göndereceğine dair bir kesme sinyali yollar. Kesme sinyalini alan PIC yaptığı işi bırakarak diğer PIC den gelen verileri bekler. Gelen verileri alır ve ekranda kayan yazı formatında görüntüler.
Şekil 4.6 Alıcı Devre Blok Şeması
RF Alıcı modül
Şekil 4.6 Alıcı Modül
433 MHZ saat frekansında çalışan entegre devre RF verici modül tarafından kodlanan RF sinyalleri alarak 2 numaralı çıkış ucundan PIC’e iletir. 1 ve 3 numaralı uçlar modülün beslemesi için kullanılır. 4 numaralı uç ise anten çıkışıdır.
Veri Dinleyen PIC
RF alıcı modülün 2 numaralı çıkışından gelen veri şekil 4.7 de blok şeması verilen 1. PIC mikrokontrolorler tarafından değerlendirilir. Günümüzde elektronik cihazlardan yayılan elektromanyetik dalgalardan da etkilenen alıcı modül çevre cihazlardan gelen parazit sinyalleri de alabilir ve PIC mikro. ya iletebilir.
PIC mikronun gelen sinyalin bilgisayar kontrol yazılımından mı yoksa çevre cihazlardan mı geldiğini anlayabilmesi için bilgisayardan gelen verinin başına kontrol karakterleri ekledim. PIC mikro bilgisayardan gelen veriyi alıyor , başına bakıyor, gelen karakterler daha önceden içerisinde tanımlı olan kontrol karakterleriyle uyuşuyorsa verinin kontrol yazılımından geldiğini anlayarak işleme koyuyor , değilse dikkate almıyor.
Devrede PIC mikrokontrolorlerini sürmek için 4 MHZ kristal osilatör kullandım. PIC mikro. nun RB1 portu RF modülden gelen veriyi almak için , RB2 portu diğer PIC’e kesme sinyali göndermek için RB3 portu diğer PIC’e data göndermek için RB4 portu ise kontrol LED’i için kullanıldı.
PIC mikro. üzerine düşen görevi yerine getirdiğini onaylamak için RB4 çıkışına kısa süreli sinyal göndererek LED in yanmasını sağlıyor.
PIC ile seri iletişim yapılırken Baud Rate’e karşılık gelen kodu belirlemek için aşadaki formül kullanılır.
KOD=(1000000/Baud)-20 (1)
(Tablo 1.1 de baud rate değerlerine karşılık gelen kodlar verilmiştir)
Şekil 4.7 PIC Bağlantı Uç Şeması
Tablo 4.1 Standart Baud Rate Değerleri
Yazının kaydırılmasında görevli olan PIC: Veri dinlemekle görevli olan PIC ten gelen kesme sinyali PIC mikronun. RB0 portuna geldiği taktirde PIC mikro veri geleceğini anlayarak KESME alt programına dallanır ve veri aldığına dair Buzerden tek Beep sesi çıkarır. Bu alt program diğer PIC’ten gelen veriyi alarak bir dizi içinde saklar. Dizi içinde olan karakter kümesi PIC ‘in içinde bulunan EEPROM belleğe elektrik kesintilerinden etkilenmemesi için yazılır.
Verinin EEPROM belleğe yazıldığı Buzerden gelen iki Beep sesi ile anlaşılır. Daha sonra EEPROM belleğin ilk 31 adresinden okunan veri LCD ekranda kayan yazı şeklinde görüntülenir. PIC Mikro.’da kullanılan uçlar ve görevleri Tablo 4.2 de verilmiştir.
Tablo 4.2 PIC Mikronun Kullanılan Uçları
LCD Ekran
Yazığımız programlardan elde edeceğimiz neticeleri görsel olarak takip edebilmek amacı ile Pic’lere muhtelif büyüklüklerde LCD ekranlar bağlanır.
Bu konuda en çok kullanılan LCD 2 sıra ve her sırada 16 karakter yer alan LCD ler kullanılır. Bunların 4 sıralı olanları olduğu gibi her sırada karakter adedi 40 ‘a kadar olanlarda mevcuttur. Ben Projemde 2×16 lık LCD kullandım.
LCD ler standart olarak 14 bacaklı (pinli) ekranlardır. Bacak numaralarına göre fonksiyonları Tablo 4.3 te belirtilmektedir.
Şekil 4.8 LCD Ekran
Tablo 4.3 LCD Bağlantı Uçları
Bazı modellerinde 15. ve 16. cı bacaklarda mevcuttur. Bunlar back light denilen arka-dan ekran aydınlatması için kullanılan Led ışığının voltaj besleme uçlarıdır. Bu uçlar ayrı verildiği gibi 15 ve 16. cı bacaklar olarak da verilebilir.
LCD nin 8 adet (8 bitlik) Data giriş bacakları olduğunu ve istenirse LCD ile 8 yerine 4 bit üzerinden haberleşme yapılabileceğini belirtmek istiyorum. Aslında 8 bit’in tek seferde verilmesi yerine ince ilk 4 bit sonrada ikinci 4 bit verilerek 8 bitlik bilgi tamamlanmaktadır. Faydası ise 8 adet yerine 4 adet Data bacağı kullanarak Pic’de bize 4 adet fazladan bacak bırakmasıdır ve bu yüzden kullanım açısından daima tercih edilmektedir.
Besleme devresi: Alıcı devrenin çalışabilmesi için devre elemanlarının beslenmesi gerekmektedir. Bu besleme geriliminin 5V dan daha düşük olduğu durumlarda verici devre çalışmaz , 5V dan daha yüksek bir gerilimde ise devre elemanları zarar görebilir. Devre elemanlarının zarar görmemesi için devrede 7805 regülatör entegresi kullanılmıştır. Şekil 4.4 te 7805 regülatör entegresinin blok şeması görülmektedir. 1. uç giriş , 2. uç şase için ve 3. uç ise +5V çıkışı için kullanılmaktadır.
Şekil 4.9 Alıcı Devre
Kontrol Yazılımı
PIC ile PC Kontrollü RF Duyuru Panosu’na veri gönderebilmek için şekil 4.10 da gösterilen kontrol yazılımını Visual Basic’te geliştirdim. Cihazla bağlantının sağlanması için uygun port seçildikten sonra bağlan butonu yardımıyla cihazla bağlantı sağlanır. Cihazla bağlantı kurulursa şekilde de görülen kırmızı gösterge yeşil olacak ve verici devre üzerindeki LED yanacaktır.
Metin yazılıp gönder butonuna basıldığı zaman metni oluşturan harfler tek tek alınıp binary formatta seri porttan elektriksel sinyaller olarak verici devreye gönderilir. Maksimum gönderilebilecek metin uzunluğu PIC 16F84 işlemcisinin hafıza sınırı nedeniyle 31 karakter-dir.
(kodlar resim formatında kullanmak için yazıya dökmelisiniz bir kopyasınıda bana ulaştırırsanız memnun olurum 🙂 yazıya eklerim diğer okurlarımız için kolaylık olur)
Kaynaklar
[1] Orhan ALTINBAŞAK “PIC Basic Pro İle PIC Programlama” Altaş Yayıncılık
[2] Orhan ALTINBAŞAK “Mikrodenetleyiciler Ve PIC Programlama” Altaş Yayıncılık
[3] WWW.ANTRAK.GOV.TR
Veri Dinleyen PIC ,Yazının kaydırılmasında görevli olan PIC’in Yazılımı ve Kontrol Yazılımı;
Şifre-Pass: 320volt.com
Yayım tarihi: 2008/12/28 Etiketler: haberleşme, lcd devreleri, led uygulamaları, microchip pic projeleri, pic mikro, PIC16C84, PIC16F84 örnekleri, rf alıcı verici, rs232, seri haberleşme, veri iletimi, Visual Basic
s.a ne diyim kardeş tek kelimeyle mükemmel çok güzel olmuş ellerine sağlık
rf alıcı verici ne kadardır piyasada bende bir tane yapayım diyordum kaç sene önce ama daha nasip olmadı bir türlü vakit ayıramadım
başarının devamı dileğiyle:)
arkadaşlar ben ünv ögrencisiyim elektronik haberleşme bölümü okumaktayım ancak okuldan bi proje yapmamızı istiyorlar şu ana kdar bişi yapamadıgımız içinde zor durumda kaldık bu devrenin maliyeti nekadardır vede bize yapaıp gönderebilicek bi kişi arıyoruz bunu yapan kimse duyrulum acill helpp bu derstende kalmak istemiyorum :(:(:(
visual basic dosyasını da eklersen seviniriz
slm ellerine sağlık onur bilge bişey danışacaktım acaba verici devresinin besleme kaynağını seri porttan almamız mümkün mü o şekilde bişeyler yapılamaz mı o zaman daha iyi olacağını düşürnüyorum
güzel proğramlar elinize sağlık
Ben 12 yaşındayım, devrenin parçalarını alıp yaptım fakat programlama konusunu tam anlamadım, mümkünse RF duyuru panosu kontrol programının resimdeki halini [email protected] adresine ya da buraya yollar mısınız?
gerçekten çok güzel olmuş. bu kadar emek verip yazmışsınız
teşekkürler
harika olmuş eline sağlık
visual basic dosyasını da eklersen seviniriz
Merhaba Hocam,
Sizden bir konuda yardım isteyecektim. PC mizin sistem saatinden bilgisini alan dijital bir saat devresi yapmak istiyorum. Fakat 1 haftadır konu ile ilgili bir kaynak bulamadım. Yardımcı ola bilirmisiniz.