MikroC ile PIC Programlama - PowerPoint PPT Presentation

1 / 16
About This Presentation
Title:

MikroC ile PIC Programlama

Description:

Title: leri Lojik Tasar m Author: kvardar Last modified by: user Created Date: 1/1/2002 5:50:53 AM Document presentation format: Ekran G sterisi (4:3) – PowerPoint PPT presentation

Number of Views:88
Avg rating:3.0/5.0
Slides: 17
Provided by: kva95
Category:
Tags: mikroc | pic | ile | programlama | uart

less

Transcript and Presenter's Notes

Title: MikroC ile PIC Programlama


1
MikroC ile PIC Programlama
10.Hafta
2
USART Evrensel Senkron-Asenkron Alici Verici
Modülü
3
  • USART modül verilerin senkron veya asenkron
    iletimi için kullanilan ve belli bir protokol
    dahilinde islem yapan bir birimdir. Bu modül
    dahilinde
  • Verinin seriden paralele dönüstürülmesi ve
    paralelden seriye dönüstürülmesi,
  • Eslik bitlerini eklemek ve bu bitleri kontrol
    etmek suretiyle hata bulmak,
  • Baslatma ve durdurma bitlerini eklemek ve
    bulmak, gibi islemler yapilabilir.
  • Islevsel açidan, USART alici ve verici olarak
    iki kisma ayrilir. Her iki yönde de veri
    aktarmadan önce USART denetim kaydedicisine,
    verinin niteligini gösterecek bir denetim sözcügü
    programlanmalidir. Örnegin veri bitlerinin
    sayisi , eslik kullanilip kullanilmadigi, eger
    eslik kullanilmis ise, bunun tek eslik mi yoksa
    çift eslik mi oldugu ve durdurma bitlerinin
    sayisi gibi. Temel olarak, baslatma biti istege
    bagli olmayan tek bittir ve her zaman yalnizca
    bir baslatma biti vardir. Bir baslatma durumu
    için bu bitin mantiksal 0 seviyesinde olmasi
    gerekmektedir.

4
  • PIC 16F877de USART modülünün kontrolü için
    TXSTA ve RCSTA kaydedicileri mevcuttur. RSCTA ve
    Baud hiz kaynagi SPBRG yazmacidir. SPBRG 8
    bitlik zamanlayicidir. Veri tablolarini
    incelenerek gerekli baud hizi seçilir.
    Asenkron çalistirilacaksa BRGH(TXSTAlt2gt) biti de
    baud hizlarini kontrol edebilir. BRGH senkron
    moda gerekmez.Baud hizi ile ilgili üç tane
    yazmaç vardir. Bunlar TXSTA, RCSTA, SPBRG? dir.
  • USART asenkron modunda en çok kullanilan
    biçimler
  • standart 1 baslama(start) biti ,
  • 8 veya 9 veri biti,
  • 1 bitis(stop) bitidir.

USART modülü veri iletisiminde önce en düsük
öncelikli biti seçer. Parite biti donanim
tarafindan yakalanamaz, ancak istendigi
takdirde yazilim tarafindan yakalanabilir.
USART uyuma (sleep) modunda çalismaz.
USART?in 4 önemli elemani vardir. Bunlar
Baud hiz kaynagi, Örnekleme devresi,
Asenkron iletim ve Asenkron alicidir.
Asenkron iletim yazmaçlari ise PIR, RCSTA,
TXREG, PIE, TXTA, SPBRG?dir.
5
TXSTA Kaydedicisi
  • TX9D Iletilen verinin 9. Bitini olusturur. Bu
    bit bir parite biti olarak düsünülebilir.
  • TRMT Transmit shift register (TSR Iletim
    kaydirmal i kaydedicisi) durum bitidir. TRMT1
    ise TSR bos tur. TRMT0 ise TSR dolu
    vaziyettedir.
  • BRGH Yüksek baud orani seçim bitidir. BRGH1
    ise yüksek hiz, BRGH0 ise yavas hiz seçilmis
    olur.
  • SYNC USART modülünde mod seçim bitidir. SYNC1
    ise senkron (e s zamanli ) çalisma modu, SYNC0
    ise asenkron (es zamanli olmayan) çalisma modu
    seçilir.
  • TXEN USART modülünde iletim gerçeklestirmek
    için yetkilendirme bitidir. TXEN1 ise iletim
    yetkisi verilir. TXEN0 ise iletim yetkisi
    verilmez.
  • TX9 9 bitlik iletim yetkilendirme bitidir.
    TX91 ise 9 bitlik iletim seçilir. TX90 ise 8
    bitlik iletim durumu seçilir.
  • CSRC Clock kaynagi seçim bitidir. USART e s
    zamanli çalisma modunda iken CSRC1 ise master
    mod seçilmis olur ve clock kaynagi dahilidir,
    CSRC0 ise slave mod seçilmistir ve clock kaynagi
    olarak harici kaynak kullanilir.

6
RCSTA Kaydedicisi
  • RX9D Alinan verinin 9. Bitini olusturur. Bu bit
    bir parite biti olarak düsünülebilir.
  • OERR Bitis süresi hata bitidir. OERR1 ise
    bilgi aliminda belli bir süre içerisinde veri
    alinamamistir. OERR0 ise herhangi bir süre asimi
    söz konusu degildir.
  • FERR Çerçeve hata bitidir. FERR1 ise çerçeve
    hatasi vardi r, FERR0 ise çerçeve hatasi
    yoktur.
  • ADDEN Adres ortaya çikarma durumunu
    etkinlestirme bitidir. ADDEN1 ise adres ortaya
    çikarma durumu etkinlestirilir, ilgili kesme
    aktif hale getirilir ve RSRlt8gt biti1 oldugunda
    alis tamponu yüklenir. ADDEN0 ise adres ortaya
    çikarma durumu etkin degildir ve 9. bit parite
    biti olarak kullanilabilir.
  • CREN Sürekli alis yetkilendirme bitidir.
    Asenkron modda CREN1 ise sürekli alis etkindir,
    CREN0 ise sürekli veri alimi kullanim disidir.
    Senkron modda CREN1 ise CREN biti temizlenene
    kadar sürekli veri al i m i etkin olur, CREN0
    ise sürekli veri alimi kullanim disidir.
  • SREN Tek veri alimi yetkilendirme bitidir.
    Master senkron modda SREN1 ise tek veri alimi
    etkindir. Bu durumda islem tamamlandiginda bu
    bitin tekrar sifirlanmasi gerekir. SREN0 ise
    tek veri alimi kullanim disidir.
  • RX9 Veri alma durumu yetkilendirme bitidir.
    RX91 ise 9 bitlik veri alimi formati seçilir.
    RX90 ise 8 bitlik veri alimi formati seçilir.
  • SPEN Seri port yetkilendirme bitidir. SPEN1
    ise seri port aktif yapilir. Bu durumda RC7/RX/DT
    ve RC6/TX/CK pinleri seri port pinleri olarak
    tahsis edilir. SPEN0 ise seri port kullanim
    disidir.

7
USART Baud Oran Jeneratörü (BRG)
  • USART modülde clockun frekansini belirleyen
    aygittir. USART baud jeneratörü USARTin
    senkronize ve Senkronize modlarini
    desteklemektedir. BRG 8 bitlik bir jeneratördür.
    Bu cihaz 8 bitlik serbest zamanli bir clock
    ile kontrol edilir. Asenkron modda bit BRGH
    (TXSTAlt2gt) ile kontrol edilir. Senkronize modda
    ise bit BRGH istenmez. Verilen ve istenilen baud
    rate ve Fosc SPBRG (register) degerleri asagidaki
    formül ile ayarlanabilir ve hesaplanabilir.
  • Istenen Baud orani Fosc / (64 (X 1))
  • 9600 16000000 /(64
    (X 1))
  • X 25.042
    25
  • Hesaplanan Baud orani 16000000 / (64 (25 1))
  • 9615
  • Hata (Hesaplanan Baud Orani -Istenen Baud Orani
    ) / Istenen Baud Orani
  • (9615 -
    9600) / 9600
  • 0.16

8
USART Asenkronize Durumu
  • Asenkron iletimde genellikle 8 bitlik iletim
    formati kullanilmaktadir. PIC 16F877de datalar
    denetleyici üzerinde bulunan osilatörden standart
    baudun frekans oranina göre iletilir. USART
    gönderici ve alicidan alinan ve iletilen ilk bit
    LSBdir. USART iletici ve kaydedici fonksiyonel
    olarak bagimsiz fakat ayni data formati seklinde
    ve baud oraninda kullanilir. Baud jeneratörü saat
    gibi çalisir veya x16 yada x64 lük bitlerin orani
    seklinde üretim yapar ve BRGH biti ile kontrol
    edilir. (TXSTAXZ) Bu oranlar hiçbir zaman donanim
    tarafindan desteklenmez fakat sistem içerisinde 9
    bitlik veriler halinde sistemde kullanilir.
    Asenkronize modda islemi durdurmak için
    denetleyici uyku moduna sokulur. Asenkronize mod
    SYNC bitinin durumuna göre seçilir (TXSTA lt4gt).

9
USART Asenkronize
  • USART ileticinin kalbi TSRdir. TSR ileticiye
    okuma/yazma islemleri için gereken veriler tampon
    tarafindan iletilir.(TXREG) TXREG kaydedicisi TSR
    ileticiye veri ile beraber yüklenir. Iletilecek
    olan veriler TSRnin yüklenmesinden sonra TXREG
    kaydinin tamamlanmasi ile baslar. TXREGde ise
    veri iletimi TXIF (PIRlt4gt) bitinin izni ile olur.
    Yani bilgi transferi için daha önceki iletim
    isleminin tamamlanmis ve tamponun bosalmis
    olmasi gerekmektedir. Yeni veri iletimine
    baslanmadan evvel TXIFin mutlaka temizlenmesi
    gerekmektedir. Bu bitin temizlenmesi ile birlikte
    yeni veriler TXREG yüklenir ve baslatma biti ile
    beraber veriler iletilmis olur.

10
USART Blok Diyagrami
11
  • Asenkronize ileticinin kümelenmesi asagida adim
    adim açiklanmistir.
  • SPBRG kaydedicisi baud ratein durumuna göre
    harekete geçer.
  • 2. Kullanilabilir asenkronize seri
    baglantilarinin temizlenebilmesi için SYNC
    bitinin temizlenmesi ve SPEN bitinin
    yetkilendirilmesi gerekir.
  • 3. Iletim için hazir vaziyete gelinmis ise TXIE
    bitinin yetkilendirilmesi gerekir.
  • 4. Eger 9 bitlik çevirici kullaniliyorsa, kümede
    TX9 biti seçilmelidir.
  • Bu çeviricinin kullanilabilmesi için TXEN bitinin
    yetkilenmesi ve de TXIF bitinin kümede yer almasi
    gerekmektedir.
  • 6. Eger 9 bitlik çeviri seçilmis ise TXD bitine
    9 bitlik veri yüklenmelidir.
  • 7. TXREG kaydedicisine bilgi yüklenir ve iletim
    baslar.

12
USART Blok Diagrami
13
ASCII kod tablosu
14
MikroC USART Komutlari
  • UARTx_Init
  • UARTx_Data_Ready
  • UARTx_Tx_Idle
  • UARTx_Read
  • UARTx_Read_Text
  • UARTx_Write
  • UARTx_Write_Text
  • UART_Set_Active
  • UARTx_Init Seri iletisimi istenilen hiz için
    baslangiç ayarlarini yapar. UART1_Init(9600) //
    9.6 kbps hizi için modül ayarlanir.
  • UARTx_Data_Ready Okunacak verinin hazir
    oldugunu gösterir. 1 veri hazir, 0 veri hazir
    degil.
  • // veri hazir ise okuma yapilir.
  • if (UART1_Data_Ready() 1) receive
    UART1_Read()

15
MikroC USART Komutlari
  • UARTx_Tx_Idle Gönderilmis olan veri gittiyse
    yeni veri gönderimi için transmiter port unun
    mesgul olup olmadigini test edilir. 1 veri
    gönderildi, 0 mesgul.
  • if (UART1_Tx_Idle() 1) UART1_Write(_data)
  • UARTx_Read Seri porttan 1 byte lik veri okur.
  • if (UART1_Data_Ready() 1) receive
    UART1_Read()
  • UARTx_Read_Text Seri porttan karakter dizisi
    okur.
  • UARTx_Write Seri porta 1 byte lik veri yazar.
  • UARTx_Write_Text Seri portta karakter dizisi
    yazar.
  • UART_Set_Active Birden fazla UART
    kullaniliyorsa aktif modülü belirler.

16
MikroC ile Seri Port Uygulama
char uart_rd // EUSART
biriminden alinacak olan veri için tanimlanan
degisken sbit LCD_RS at RD2_bit // LCD
display baglantilari 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 yapilandirildi CMCON 0
// Comparators
(karsilastiricilar) pasif edildi Lcd_Init()
// LCD display
yapilandirildi Lcd_Cmd(_LCD_CURSOR_OFF)
// LCD ekranindan imleç kaldirildi
Lcd_Cmd(_LCD_CLEAR) // LCD
ekrani silindi Lcd_Out(1, 3, " Seri
iletisim") // 1. satir, 3. sütun'a
text yazdirildi Lcd_Out(2, 1, " Uygulamasi")
// 2. satir, 1. sütun'a text yazdirildi
UART1_Init(57600) // USART
donanimi yapilandirildi Delay_ms(100)
// Baud hizi 57600 belirlendi
UART1_Write_Text("PIC16F877A USART
uygulamasi") UART1_Write(13)
// USART ile ENTER gönderildi
UART1_Write_Text("Protocol 57600, 8, N, 1")
UART1_Write(13) // USART
ile ENTER gönderildi for( ) if
(UART1_Data_Ready()) // Sayet USART'dan
veri geldi ise, uart_rd UART1_Read()
// Alinan veriyi oku, uart_rd'ye al,
UART1_Write(uart_rd) // ve USART'a
veriyi yaz Lcd_Chr_Cp(uart_rd)
// Alinan veriyi LCD ekranina gönder if
(uart_rd 27) Lcd_Cmd(_LCD_CLEAR) //
ESC display ekranini sil if (uart_rd 13)
Lcd_Cmd(_LCD_SECOND_ROW) // ENTER display 2.
satir
Write a Comment
User Comments (0)
About PowerShow.com