MikroC ile PIC Programlama

Slides:



Advertisements
Benzer bir sunumlar
Hazırlayan ve Sunan Ali Yasin Çakılcı HUNROBOTX
Advertisements

ARM Tabanlı Mikrodenetleyici Temelleri ve Programlama
GENEL OLARAK Ana kart Nedir? Ana kartın Yapısı
BİLGİSAYAR PORTLARI.
EXCEL ŞAHİN AKDAĞ 1.
PLC.
Paralel Arayüz.
STRİNG FONKSİYONLARI.
8259A Programlanabilir Kesme Denetleyicisi (PIC)
Delta PLC Programlama Editörü
Bölüm 2 C Dilinin Temelleri
Veri İletiminde Hata Kontrol Yöntemleri
BİLİŞİM AĞLARI VE VERİ HABERLEŞMESİ
MikroC ile PIC Programlama
ORT – 104 Hoş Geldiniz.
MikroC ile PIC Programlama
BÖLÜM 2: BİLGİSAYAR SİSTEM YAPILARI
Nesne Tabanlı Programlama
Yapısal Program Geliştirme – if, if-else
BİLGİSAYAR AĞLARI VE İLETİŞİM
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 9. Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1,
5. EGITIM Mikrodenetleyiciler PIC16F628 – PIC16F877
XML Biçimli, Belirsiz Değişkenlikteki Verilerin Aktarım ve Görselleştirmesine Mikrodenetleyici Destekli Bir Çözüm Hüseyin GÜRÜLER*, Ayhan İSTANBULLU**,
16F628 TANIMLAMA KISMI Devrenizi çalıştırmak için 16F628 mikrodenetleyicisini programlarken kullanacağınız tanımlama kısmı verilmiştir. Defterinize not.
ALGORİTMALAR VE PROGRAMLAMAYA GİRİŞ
İSTANBUL İLİNDEKİ ENDÜSTRİ MESLEK LİSELERİN KONUMUNU BELİRTEN HARİTA
Timer 1 16bit (65535) Programlanabilir dahili ve harici saat kaynağı
Mikroişlemciler ve Mikrobilgisayarlar
Anahtar link-katmanı cihazı: hublardan daha zeki, aktif rol üstlenir
DERS 5 PIC 16F84 PROGRAMLAMA.
MESAJ GEÇİŞİ(MESSAGE PASSİNG)
Bilgisayar Mimarisi ve Organizasyonu
3. Bölüm Taşıma Katmanı Computer Networking: A Top Down Approach 4th edition. Jim Kurose, Keith Ross Addison-Wesley, July Transport Layer.
Bilgisayar Programlama
C# ile Seri İletişim Aslı Ergün.
Taşıma Katmanı Öğr. Gör. Mustafa SARIÖZ
HESAP TABLOSU PROGRAMLARI
ROBOT KONTROLÜ HAZIRLAYANLAR Kenan ÖZTEKTEN Sıla KARASU Arif ADALAR
LD/LDI LD X0 LDI X0 X0 Y0 X0 Y1 Temel Komutlar
Dijital Çıkış Mantığı.
MİKRODENETLEYİCİ TABANLI KABLOSUZ HABERLEŞME ve MULTIMEDYA KULLANIMI
Ethernet Anahtarlama.
Bölüm 13: I/O Sistemleri Giriş/Çıkış Donanımı
AĞ TEMELLERİ BÖLÜM 2 – AĞ TÜRLERİ
CCS C İLE PİC PROGRAMLAMA DERS -1-
CCS C İLE PIC PROGRAMLAMA DERS-2-
BİLİŞİM TEKNOLOJİLERİ
BİL 322 Programlanabilir Sayısal Sistemler LCD ile Uygulama Geliştirme.
CCS C İLE PIC PROGRAMLAMA DERS-3-
ENDÜSTRİYEL GÖMÜLÜ BİLGİSAYAR SİSTEMLERİ
RS Tüm dünyada kabul edilen ve uluslararası standart haline gelmiş bazı haberleşme ara yüzleri vardır. Bütün üreticiler bu standartlar üzerinden haberleşme.
USB Universal Serial Bus Evrensel Seri veriyolu. Tak çalıştır aygıtların sistemlerde daha kolay bir şekilde kullanımını sağlamak amacıyla geliştirilmiş.
Kaydediciler (Registers)
İnformasiya texnologiyaları kafedrası
DERS 5 PIC 16F84 PROGRAMLAMA.
TEMEL BİLGİSAYAR TEKNOLOJİLERİ KULLANIMI
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Bilgisayar Donanım ve Sistem Yazılımı
Doğu Akdeniz Üniversitesi Bilgisayar Ve Teknoloji Yüksek Okulu
MİkroİŞlemcİler ve programlanmasI Mekatronik Mühendisliği Bölümü
DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI
4. GİRİŞ/ÇIKIŞ DEYİMLERİ 4.1. Giriş
INTERCONNECTION PROTOCOLS
Doğu Akdeniz Üniversitesi Bilgisayar Ve Teknoloji Yüksek Okulu
AB BilgiTek IV KABLOSUZ REKLAM & DUYURU PANOSU TASARIMI VE YAPIMI
Bilgisayar Mühendisliğine Giriş
MBLOCK ile Arduino ve Robotik Kodlama
ETHERNET KARTI(AĞ KARTI)
MBLOCK ile Arduino ve Robotik Kodlama
MİkroİŞlemcİler ve programlanmasI Mekatronik Mühendisliği Bölümü
Sunum transkripti:

MikroC ile PIC Programlama 10.Hafta Mikrodenetleyiciler

USART Evrensel Senkron-Asenkron Alıcı Verici Modülü

USART modül verilerin senkron veya asenkron iletimi için kullanılan ve belli bir protokol dahilinde işlem yapan bir birimdir. Bu modül dahilinde • Verinin seriden paralele dönüştürülmesi ve paralelden seriye dönüştürülmesi, • Eşlik bitlerini eklemek ve bu bitleri kontrol etmek suretiyle hata bulmak, • Başlatma ve durdurma bitlerini eklemek ve bulmak, gibi işlemler yapılabilir. İşlevsel açıdan, USART alıcı ve verici olarak iki kısma ayrılır. Her iki yönde de veri aktarmadan önce USART denetim kaydedicisine, verinin niteliğini gösterecek bir denetim sözcüğü programlanmalıdır. Örneğin; veri bitlerinin sayısı , eşlik kullanılıp kullanılmadığı, eğer eşlik kullanılmış ise, bunun tek eşlik mi yoksa çift eşlik mi olduğu ve durdurma bitlerinin sayısı gibi. Temel olarak, başlatma biti isteğe bağlı olmayan tek bittir ve her zaman yalnızca bir başlatma biti vardır. Bir başlatma durumu için bu bitin mantıksal 0 seviyesinde olması gerekmektedir.

PIC 16F877’de USART modülünün kontrolü için TXSTA ve RCSTA kaydedicileri mevcuttur. RSCTA ve Baud hız kaynağı SPBRG yazmacıdır. SPBRG 8 bitlik zamanlayıcıdır. Veri tablolarını incelenerek gerekli baud hızı seçilir. Asenkron çalıştırılacaksa BRGH(TXSTA<2>) biti de baud hızlarını kontrol edebilir. BRGH senkron moda gerekmez.Baud hızı ile ilgili üç tane yazmaç vardır. Bunlar ; TXSTA, RCSTA, SPBRG‟ dir. USART asenkron modunda en çok kullanılan biçimler; standart 1 başlama(start) biti , 8 veya 9 veri biti, 1 bitiş(stop) bitidir. USART modülü veri iletişiminde önce en düşük öncelikli biti seçer. Parite biti donanım tarafından yakalanamaz, ancak istendiği takdirde yazılım tarafından yakalanabilir. USART uyuma (sleep) modunda çalışmaz. USART‟ın 4 önemli elemanı vardır. Bunlar Baud hız kaynağı, Örnekleme devresi, Asenkron iletim ve Asenkron alıcıdır. Asenkron iletim yazmaçları ise; PIR, RCSTA, TXREG, PIE, TXTA, SPBRG‟dir.

TXSTA Kaydedicisi TX9D: İletilen verinin 9. Bitini oluşturur. Bu bit bir parite biti olarak düşünülebilir. TRMT: Transmit shift register (TSR= İletim kaydırmal ı kaydedicisi) durum bitidir. TRMT=1 ise TSR boş tur. TRMT=0 ise TSR dolu vaziyettedir. BRGH: Yüksek baud oranı seçim bitidir. BRGH=1 ise yüksek hız, BRGH=0 ise yavaş hız seçilmiş olur. SYNC: USART modülünde mod seçim bitidir. SYNC=1 ise senkron (e ş zamanlı ) çalışma modu, SYNC=0 ise asenkron (eş zamanlı olmayan) çalışma modu seçilir. TXEN: USART modülünde iletim gerçekleştirmek için yetkilendirme bitidir. TXEN=1 ise iletim yetkisi verilir. TXEN=0 ise iletim yetkisi verilmez. TX9: 9 bitlik iletim yetkilendirme bitidir. TX9=1 ise 9 bitlik iletim seçilir. TX9=0 ise 8 bitlik iletim durumu seçilir. CSRC: Clock kaynağı seçim bitidir. USART e ş zamanlı çalışma modunda iken; CSRC=1 ise master mod seçilmiş olur ve clock kaynağı dahilidir, CSRC=0 ise slave mod seçilmiştir ve clock kaynağı olarak harici kaynak kullanılır.

RCSTA Kaydedicisi RX9D: Alınan verinin 9. Bitini oluşturur. Bu bit bir parite biti olarak düşünülebilir. OERR: Bitiş süresi hata bitidir. OERR=1 ise bilgi alımında belli bir süre içerisinde veri alınamamıştır. OERR=0 ise herhangi bir süre aşımı söz konusu değildir. FERR: Çerçeve hata bitidir. FERR=1 ise çerçeve hatası vardı r, FERR=0 ise çerçeve hatası yoktur. ADDEN: Adres ortaya çıkarma durumunu etkinleştirme bitidir. ADDEN=1 ise adres ortaya çıkarma durumu etkinleştirilir, ilgili kesme aktif hale getirilir ve RSR<8> biti=1 olduğunda alış tamponu yüklenir. ADDEN=0 ise adres ortaya çıkarma durumu etkin değildir ve 9. bit parite biti olarak kullanılabilir. CREN: Sürekli alış yetkilendirme bitidir. Asenkron modda CREN=1 ise sürekli alış etkindir, CREN=0 ise sürekli veri alımı kullanım dışıdır. Senkron modda CREN=1 ise CREN biti temizlenene kadar sürekli veri al ı m ı etkin olur, CREN=0 ise sürekli veri alımı kullanım dışıdır. SREN: Tek veri alımı yetkilendirme bitidir. Master senkron modda SREN=1 ise tek veri alımı etkindir. Bu durumda işlem tamamlandığında bu bitin tekrar sıfırlanması gerekir. SREN=0 ise tek veri alımı kullanım dışıdır. RX9: Veri alma durumu yetkilendirme bitidir. RX9=1 ise 9 bitlik veri alımı formatı seçilir. RX9=0 ise 8 bitlik veri alımı formatı seçilir. SPEN: Seri port yetkilendirme bitidir. SPEN=1 ise seri port aktif yapılır. Bu durumda RC7/RX/DT ve RC6/TX/CK pinleri seri port pinleri olarak tahsis edilir. SPEN=0 ise seri port kullanım dışıdır.

USART Baud Oran Jeneratörü (BRG) USART modülde clock’un frekansını belirleyen aygıttır. USART baud jeneratörü USART’ın senkronize ve Senkronize modlarını desteklemektedir. BRG 8 bit’lik bir jeneratördür. Bu cihaz 8 bit’lik serbest zamanlı bir clock ile kontrol edilir. Asenkron mod’da bit BRGH (TXSTA<2>) ile kontrol edilir. Senkronize mod’da ise bit BRGH istenmez. Verilen ve istenilen baud rate ve Fosc SPBRG (register) değerleri aşağıdaki formül ile ayarlanabilir ve hesaplanabilir. İstenen Baud oranı = Fosc / (64 (X + 1)) 9600 = 16000000 /(64 (X + 1)) X = [25.042] = 25 Hesaplanan Baud oranı =16000000 / (64 (25 + 1)) = 9615 Hata = (Hesaplanan Baud Oranı -İstenen Baud Oranı ) / İstenen Baud Oranı = (9615 - 9600) / 9600 = 0.16%

USART Asenkronize Durumu Asenkron iletimde genellikle 8 bitlik iletim formatı kullanılmaktadır. PIC 16F877’de datalar denetleyici üzerinde bulunan osilatörden standart baud‘un frekans oranına göre iletilir. USART gönderici ve alıcıdan alınan ve iletilen ilk bit LSB’dir. USART iletici ve kaydedici fonksiyonel olarak bağımsız fakat aynı data formatı şeklinde ve baud oranında kullanılır. Baud jeneratörü saat gibi çalışır veya x16 yada x64 lük bitlerin oranı şeklinde üretim yapar ve BRGH biti ile kontrol edilir. (TXSTAXZ) Bu oranlar hiçbir zaman donanım tarafından desteklenmez fakat sistem içerisinde 9 bitlik veriler halinde sistemde kullanılır. Asenkronize mod’da işlemi durdurmak için denetleyici uyku moduna sokulur. Asenkronize mod SYNC bitinin durumuna göre seçilir (TXSTA <4>).

USART Asenkronize USART ileticinin kalbi TSR’dir. TSR ileticiye okuma/yazma işlemleri için gereken veriler tampon tarafından iletilir.(TXREG) TXREG kaydedicisi TSR ileticiye veri ile beraber yüklenir. İletilecek olan veriler TSR’nin yüklenmesinden sonra TXREG kaydının tamamlanması ile başlar. TXREG’de ise veri iletimi TXIF (PIR<4>) bitinin izni ile olur. Yani bilgi transferi için daha önceki iletim işleminin tamamlanmış ve tamponun boşalmış olması gerekmektedir. Yeni veri iletimine başlanmadan evvel TXIF’in mutlaka temizlenmesi gerekmektedir. Bu bitin temizlenmesi ile birlikte yeni veriler TXREG yüklenir ve başlatma biti ile beraber veriler iletilmiş olur.

USART Blok Diyagramı

Asenkronize ileticinin kümelenmesi aşağıda adım adım açıklanmıştır. SPBRG kaydedicisi baud rate’in durumuna göre harekete geçer. 2. Kullanılabilir asenkronize seri bağlantılarının temizlenebilmesi için SYNC bitinin temizlenmesi ve SPEN bitinin yetkilendirilmesi gerekir. 3. İletim için hazır vaziyete gelinmiş ise TXIE bitinin yetkilendirilmesi gerekir. 4. Eğer 9 bit’lik çevirici kullanılıyorsa, kümede TX9 biti seçilmelidir. Bu çeviricinin kullanılabilmesi için TXEN bitinin yetkilenmesi ve de TXIF bitinin kümede yer alması gerekmektedir. 6. Eğer 9 bitlik çeviri seçilmiş ise TXD bitine 9 bitlik veri yüklenmelidir. 7. TXREG kaydedicisine bilgi yüklenir ve iletim başlar.

USART Blok Diagramı

ASCII kod tablosu

MikroC USART Komutları UARTx_Init UARTx_Data_Ready UARTx_Tx_Idle UARTx_Read UARTx_Read_Text UARTx_Write UARTx_Write_Text UART_Set_Active UARTx_Init : Seri iletişimi istenilen hız için başlangıç ayarlarını yapar. UART1_Init(9600); // 9.6 kbps hızı için modül ayarlanır. UARTx_Data_Ready : Okunacak verinin hazır olduğunu gösterir. 1: veri hazır, 0: veri hazır değil. // veri hazır ise okuma yapılır. if (UART1_Data_Ready() == 1) receive = UART1_Read();

MikroC USART Komutları UARTx_Tx_Idle : Gönderilmiş olan veri gittiyse yeni veri gönderimi için transmiter port unun meşgul olup olmadığını test edilir. 1: veri gönderildi, 0 : meşgul. if (UART1_Tx_Idle() == 1) { UART1_Write(_data); } UARTx_Read : Seri porttan 1 byte lık veri okur. if (UART1_Data_Ready() == 1) { receive = UART1_Read(); } UARTx_Read_Text : Seri porttan karakter dizisi okur. UARTx_Write : Seri porta 1 byte lık veri yazar. UARTx_Write_Text : Seri portta karakter dizisi yazar. UART_Set_Active : Birden fazla UART kullanılıyorsa aktif modülü belirler.

MikroC ile Seri Port Uygulama char uart_rd; // EUSART biriminden alınacak olan veri için tanımlanan değişken sbit LCD_RS at RD2_bit; // LCD display bağlantıları sbit LCD_EN at RD3_bit; sbit LCD_D4 at RD4_bit; sbit LCD_D5 at RD5_bit; sbit LCD_D6 at RD6_bit; sbit LCD_D7 at RD7_bit; sbit LCD_RS_Direction at TRISD2_bit; sbit LCD_EN_Direction at TRISD3_bit; sbit LCD_D4_Direction at TRISD4_bit; sbit LCD_D5_Direction at TRISD5_bit; sbit LCD_D6_Direction at TRISD6_bit; sbit LCD_D7_Direction at TRISD7_bit; void main(){ ADCON1 = 0x07; // AN pinleri dijital I/O yapılandırıldı CMCON = 0; // Comparators (karşılaştırıcılar) pasif edildi Lcd_Init(); // LCD display yapılandırıldı Lcd_Cmd(_LCD_CURSOR_OFF); // LCD ekranından imleç kaldırıldı Lcd_Cmd(_LCD_CLEAR); // LCD ekranı silindi Lcd_Out(1, 3, " Seri iletisim"); // 1. satır, 3. sütun'a text yazdırıldı Lcd_Out(2, 1, " Uygulamasi"); // 2. satır, 1. sütun'a text yazdırıldı UART1_Init(57600); // USART donanımı yapılandırıldı Delay_ms(100); // Baud hızı 57600 belirlendi UART1_Write_Text("PIC16F877A & USART uygulamasi"); UART1_Write(13); // USART ile ENTER gönderildi UART1_Write_Text("Protocol : 57600, 8, N, 1"); for( ; ; ) { if (UART1_Data_Ready()) { // Şayet USART'dan veri geldi ise, uart_rd = UART1_Read(); // Alınan veriyi oku, uart_rd'ye al, UART1_Write(uart_rd); // ve USART'a veriyi yaz Lcd_Chr_Cp(uart_rd); // Alınan veriyi LCD ekranına gönder if (uart_rd == 27) Lcd_Cmd(_LCD_CLEAR); // ESC display ekranını sil if (uart_rd == 13) Lcd_Cmd(_LCD_SECOND_ROW); // ENTER display 2. satır } } }