C18 Kütüphaneleri ve Özellikleri

Bu yazıda bundan sonraki yazılarda referans olarak kullanacağım bir çok fonksiyonun özelliklerini, ne tür parametreler aldıklarını ve bu parametrelerin ne için kullanıldığını açıklayacağım.

Bu başlık altında fonksiyonlarını inceleyeceğimiz modüllerin isimleri aşağıdaki gibidir;

  • ADC (Analog-to-Digital Converter)
  • I/O Port
  • Timer
  • PWM (Pulse Width Modulation)
  • USART
  • Delay
  • I²C

Not: Fonksiyonlar parametre alırken bir parametrelik yere birden fazla parametre atanmak istenirse bu parametreler bir AND(“&”) işaretiyle bağlanır. 

  1. ADC (Analog-to-Digital Converter) Fonksiyonları:

    BusyADC(): char BusyADC(void); 

    ADC modülü o an analog-dijital çevirme işlemi yapıyor mu diye kontrol eder. Fonksiyonun dönüş değeri;
    1: ADC modülü çevirme işlemi yapıyor.
    2: ADC modülü herhangi bir çevirme işlemi yapmıyor.CloseADC():  void CloseADC(void);
    ADC modülünü kapatır.ConvertADC(): void ConvertADC(void);
    Analog’tan dijitale çevirme işlemini başlatır.
    OpenADC(): void OpenADC(unsigned char config, unsigned char config2, unsigned char portconfig);

    ADC modülünü açar. Çeşitli parametlereleri aşağıda verildiği gibidir;

    config1: Birden fazla parametre alır fakat bunların hepsini OR işleminden geçirerek tek bir parametre haline getirir. Alabileceği parametreler aşağıdaki gibidir;

    A/D Clock Source: ADC çalışması için saat sinyali
    ADC_FOSC_2: Çalışma frekansı(Fadc) = Fosc / 2
    ADC_FOSC_4: Çalışma frekansı(Fadc) = Fosc / 4
    ADC_FOSC_8: Çalışma frekansı(Fadc) = Fosc / 8
    ADC_FOSC_16: Çalışma frekansı(Fadc) = Fosc / 16
    ADC_FOSC_32: Çalışma frekansı(Fadc) = Fosc / 32
    ADC_FOSC_64: Çalışma frekansı(Fadc) = Fosc / 64
    ADC_FOSC_RC: Çalışma frekansı saat sinyali mikrodenetleyicinin içindeki osilatörden alınacak

    – A/D Result Justification: 
    ADC_RIGHT_JUST: Sonuç düşük anlamlı bitlerde
    ADC_LEFT_JUST: Sonuç yüksek anlamlı bitlerde

    – A/D Acquisition Time Select:
    ADC_0_TAD: 0 Tad
    ADC_2_TAD: 2 Tad
    ADC_4_TAD: 4 Tad
    ADC_6_TAD: 6 Tad
    ADC_8_TAD: 8 Tad
    ADC_12_TAD: 12 Tad
    ADC_16_TAD: 16 Tad
    ADC_20_TAD:20 Tad

    config2:  Birden fazla parametre alır fakat bunların hepsini ORişleminden geçirerek tek bir parametre haline getirir. Alabileceği parametreler aşağıdaki gibidir;

    – Channel: ADC çevrim sonucunun hangi kanal üzerinden okunacağını belirtir.
    ADC_CH0: Channel 0
    ADC_CH1: Channel 1
    ADC_CH2: Channel 2
    ADC_CH3: Channel 3
    ADC_CH4: Channel 4
    ADC_CH5: Channel 5
    ADC_CH6: Channel 6
    ADC_CH7: Channel 7
    ADC_CH8: Channel 8
    ADC_CH9: Channel 9
    ADC_CH10: Channel 10
    ADC_CH11: Channel 11
    ADC_CH12: Channel 12
    ADC_CH13: Channel 13
    ADC_CH14: Channel 14
    ADC_CH15: Channel 15

    – A/D Interrupts: ADC modülünün çevirme işlemi sonucunda kesme oluşturup oluşturmayacağını ayarlar
    ADC_INT_ON: Kesmeler aktif
    ADC_INT_OFF: Kesmeler devre dışı

    – A/D voltage configuration:
    ADC_VREFPLUS_VDD: VREF+ = VDD
    ADC_VREFPLUS_EXT: VREF+ = external
    ADC_VREFMINUS_VDD: VREF- = VDD
    ADC_VREFMINUS_EXT: VREF- = external

    portconfig: Bu değer 0 ile 15 arasında bir değerdir. ADC portlarının analog giriş  yada dijital giriş/çıkış yapmak için ayarlanmasını sağlar. (0:0000 bütün girişler analog, 15:1111 bütün giriş/çıkışlar dijital)

    Örnek kullanım;
    OpenADC( ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_12_TAD, ADC_CH0 & ADC_INT_OFF, 15
    );

    ReadADC(): int ReadADC(void);

     Analog to Digital çevrim sonucunu döndürür (16-bit).

    SetChanADC(): void SetChanADC(unsigned char channel);

    ADC işlemi için hangi kanalın kullanılacağını belirler (Aynı işlemi OpenADC() fonksiyonuyla da yapabiliriz).

    – Channel:
    ADC_CH0: Channel 0
    ADC_CH1: Channel 1
    ADC_CH2: Channel 2
    ADC_CH3: Channel 3
    ADC_CH4: Channel 4
    ADC_CH5: Channel 5
    ADC_CH6: Channel 6
    ADC_CH7: Channel 7
    ADC_CH8: Channel 8
    ADC_CH9: Channel 9
    ADC_CH10: Channel 10
    ADC_CH11: Channel 11

  2. I/O Port Fonksiyonları:

    ClosePORTB():void ClosePORTB(void); 

    B portunu ve B portuna bağlı kesmeleri devre dışı bırakır.CloseRB0INT() / CloseRB1INT() / CloseRB2INT(): 
    void CloseRB0INT(void);
    void CloseRB1INT(void);
    void CloseRB2INT(void);
    Belirtilen portlara bağlı kesmeleri devre dışı bırakır.
    OpenPORTB(): void OpenPORTB(unsigned char config);

    B portunu ve B portuna bağlı kesmeleri aktifleştirir.

    config:
    – Interrupt-on-Change:
     Kesmeleri aktifleştirir ya da devre dışı bırakır.

    PORTB_CHANGE_INT_ON: Kesmeler aktif.
    PORTB_CHANGE_INT_OFF:Kesmeler devre dışı.

    – Enable Pullups: Pull-up dirençlerini aktifleştirir veya devre dışı bırakır.
    PORTB_PULLUPS_ON:
     Pull-up dirençleri aktif.
    PORTB_PULLUPS_OFF: Pull-up dirençleri devre dışı.

    OpenRB0INT() / OpenRB1INT() / OpenRB2INT(): 
    void OpenRB0INT(unsigned char config);
    void OpenRB1INT(unsigned char config);
    void OpenRB2INT(unsigned char config);

    Belirtilen portlara bağlı kesmeleri aktifleştirir.

    config:
    – Interrupt-on-Change: Kesmeleri aktifleştirir veya devre dışı bırakır.PORTB_CHANGE_INT_ON: Kesmeler aktif.
    PORTB_CHANGE_INT_OFF: Kesmeler devre dışı.

    – Interrupt-on-Edge:  Kesmelerin gelen sinyalin hangi davranışına göre oluşturulacağını belirtir.

    RISING_EDGE_INT: Gelen sinyalin yükselen kenarında (Sinyal lojik-0’dan lojik-1’e geçerken) kesme oluşacak.
    FALLING_EDGE_INT: Gelen sinyalin düşen kenarında (Sinyal lojik-1’den lojik-0’a  geçerken) kesme oluşacak.

    – Enable Pullups: Pull-up dirençlerini aktifleştirir veya devre dışı bırakır.

    PORTB_PULLUPS_ON: Pull-up dirençleri aktif.
    PORTB_PULLUPS_OFF: Pull-up dirençleri devre dışı.
     

  3. Timer FonksiyonlarıCloseTimer0() / Closetimer1() /CloseTimer2():
    void CloseTimer0(void);
    void CloseTimer1(void);
    void Closetimer2(void); 

    Belirtilern timer modülünü devre dışı bırakır.OpenTimer0(): void OpenTimer0(unsigned char config);Timer0 modülünü aktifleştirir. Timer modüllerinin ne tür işlemler için kullanıldığına ilerleyen yazılarda değineceğim. Şimdilik sadece aldığı parametrelerin ne işe yaradığı üzerinde konuşacağız.config:
    – Enable Timer0 Interrupt:
    Timer0 modülünün oluşturacağı kesmelerin durumunu belirtir.

    TIMER_INT_ON: Timer0 kesmeleri aktif.
    TIMER_INT_OFF:Timer0 kesmeleri devre dışı

    – Timer Width: Timer0 modülündeki sayacın 8-bit olarak mı yoksa 16-bit olarak mı kullanılacağını belirtir. 8 bitlik ise 0-255 arası, 16 bitlik ise 0-65536 arası sayma işlemi yapılır.
    T0_8BIT: 8 bitlik sayaç
    T0_16BIT: 16 bitlik sayaç

    – Clock Source: Timer0 modülünün clock olarak hangi kaynağı kullanacağını belirtir (Clock kaynağı timer0 biriminin kesme oluşturma süresini doğrudan etkiler).

    T0_SOURCE_EXT: Clock kaynağı dışarda (I/O pin)
    T0_SOURCE_INT: Clock kaynağı içerde (T0sc)

    Prescale Value: Seçilen kaynak(clock’)tan gelen clock sinyali direkt olarak kullanılmaz. Bu değer prescale(bölme oranı) ile çarpılır. Yani prescale değeri ne kadar küçük olursa(1:128, 1:256 gibi) sayaç o kadar hızlı sayar diyebiliriz.

    T0_PS_1_1:  1:1 bölme oranı
    T0_PS_1_2:  1:2 bölme oranı
    T0_PS_1_4:  1:4 bölme oranı
    T0_PS_1_8:  1:8 bölme oranı
    T0_PS_1_16:  1:16 bölme oranı
    T0_PS_1_32:  1:32 bölme oranı
    T0_PS_1_64:  1:64 bölme oranı
    T0_PS_1_128:  1:128 bölme oranı
    T0_PS_1_256:  1:256 bölme oranı

    Örnek kullanım;
    OpenTimer0( TIMER_INT_OFF  & T0_8BIT & T0_SOURCE_INT & T0_PS_1_32
    );

    OpenTimer1(): void OpenTimer1(unsigned char config);

    Timer1 modülünü aktifleştirir.

    config:
    – Enable Timer0 Interrupt: Timer1 modülünün oluşturacağı kesmelerin durumunu belirtir.

    TIMER_INT_ON: Timer1 kesmeleri aktif.
    TIMER_INT_OFF: Timer1 kesmeleri devre dışı

    – Timer Width: Timer1 modülündeki sayacın 8-bit olarak mı yoksa 16-bit olarak mı kullanılacağını belirtir.

    T1_8BIT_RW: 8 bitlik sayaç
    T1_16BIT_RW: 16 bitlik sayaç

    – Clock Source: Timer1 modülünün clock olarak hangi kaynağı kullanacağını belirtir

    T1_SOURCE_EXT: Clock kaynağı dışarda (I/O pin)
    T1_SOURCE_INT: Clock kaynağı içerde (T0sc)

    Prescale Value: Timer1 biriminin sayma süresiyle ters orantılı.

    T0_PS_1_1:  1:1 bölme oranı
    T0_PS_1_2:  1:2 bölme oranı
    T0_PS_1_4:  1:4 bölme oranı
    T0_PS_1_8:  1:8 bölme oranı

    – Oscillator Use: Timer1 osilatörünün kullanılma durumunu belirtir.

    T1_OSC1EN_ON: Timer1 osilatörü aktif.
    T1_OSC1EN_OFF: Timer1 osilatörü devre dışı.

    – Synchronize Clock Input: Harici saat sinyali ile senkronize olma durumunu belirtir.

    T1_SYNC_EXT_ON: Harici saat sinyaliyle senkronize.
    T1_SYNC_EXT_OFF: Harici saat sinyaliyle senkronize değil.

    Örnek kullanım;
    OpenTimer1( TIMER_INT_ON  & T1_SOURCE_EXT & T1_PS_1_1 & T1_OSC1EN_OFF & T1_SYNC_EXT_OFF );

    OpenTimer2(): void OpenTimer2 (unsigned char config);

    Timer2 modülünü aktifleştirir.

    config:
    – Enable Timer0 Interrupt:
    Timer2 modülünün oluşturacağı kesmelerin durumunu belirtir.

    TIMER_INT_ON: Timer2 kesmeleri aktif.
    TIMER_INT_OFF: Timer2 kesmeleri devre dışı

    Prescale Value: Timer2 biriminin sayma süresiyle ters orantılı.

    T0_PS_1_1:  1:1 bölme oranı
    T0_PS_1_4:  1:4 bölme oranı
    T0_PS_1_16:  1:16 bölme oranı

    – Postscale Value: Timer2 biriminin sayma işlemini kaç defa tekrarlayacağını belirtir. Sadece Timer2 modülü için kullanılabilir.

    T0_POST_1_1:  1:1 bölme oranı
    T0_POST_1_2:  1:2 bölme oranı
    T0_POST_1_3:  1:3 bölme oranı
    T0_POST_1_4:  1:4 bölme oranı
    T0_POST_1_5:  1:5 bölme oranı
    T0_POST_1_6:  1:6 bölme oranı
    T0_POST_1_7:  1:7 bölme oranı
    T0_POST_1_8:  1:8 bölme oranı
    T0_POST_1_9:  1:9 bölme oranı
    T0_POST_1_10:  1:10 bölme oranı
    T0_POST_1_11:  1:11 bölme oranı
    T0_POST_1_12:  1:12 bölme oranı
    T0_POST_1_13:  1:13 bölme oranı
    T0_POST_1_14:  1:14 bölme oranı
    T0_POST_1_15:  1:15 bölme oranı

    Örnek kullanım;
    OpenTimer2( TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_8);

  4. PWM (Pulse Width Modulation) Fonksiyonları 

    CloseEPWM1(): void CloseEPWM1(void); 

    Enhanced PWM modülünü devre dışı bırakır.

    OpenEPWM1(): void OpenEPWM(char period);
    Enhanced PWM modülünü aktifleştirir.period: 
    EPWM modülü ile oluşturacağımız sinyalin periyot değerini belirtir.

    PWM period =[(period ) + 1] x 4 x Tosc x TMR2 prescaler 

    SetDCEPWM1(): void SetDCEPWM1(unsigned int dutycycle);

    EPWM modülü ile bir dutycycle süresince lojik-1 sinyali elde etmemizi sağlar.

    dutycycle:
    Elde ettiğimiz sinyalin lojik-1’de kalma süresini belirtir  (10 bitlik bir değerdir).

    SetOutputEPWM1(): void SetOutputEPWM1(unsigned char outputconfig,unsigned char outputmode);

    PWM modülünün kullandığı bitlerin durumunu ayarlar, hangi çıkış ne için, nasıl kullanılacak belirtir.

    outputconfig:
    SINGLE_OUT: Single output
    FULL_OUT_FWD: Full-bridge output forward
    HALF_OUT: Half-bridge output
    FULL_OUT_REV: Full-bridge output revers

    outputmode:
    PWM_MODE_1: P1A ve P1C active-high, P1B ve P1D active-high
    PWM_MODE_2: P1A ve P1C active-high, P1B ve P1D active-low
    PWM_MODE_3: P1A ve P1C active-low, P1B ve P1D active-high
    PWM_MODE_4: P1A ve P1C active-low, P1B ve P1D active-low

  5. USART FonksiyonlarıBusyUSART(): char BusyUSART(void);Usart modülünün kullanımda olup olmadığını denetler. Fonksiyonun dönüş değeri;
    0:
    Usart modülü aktarım yapmıyor. (transmitter is idle)
    1:
    Usart modülü kullanımda.(transmitter is in use)CloseUSART(): void CloseUSART(void);
    Usart modülüne ait kesmeleri, transmitter ve receiver’ları devre dışı bırakır.DataRdyUSART(): char DataRdyUSART(void);

    Buffer’daki data alınmaya uygun mu diye kontrol eder. Fonksiyonun dönüş değeri;
    0: Data alınmaya uygun değil.
    1: Data alınmaya uygun.

    getsUSART(): void getsUSART(char * buffer, unsigned char len);

    Haberleşme kanalından alınan len uzunluğundaki string’i *buffer adresine yazar. Bu fonksiyon sadece 8-bit transmit/receive modunda çalışır.

    buffer:
    Gelen karakterlerin mikrodenetleyicide hangi adresten itibaren saklanacağını gösteren pointer değeridir.

    len:
    Gelen karakterlerin sayısını belirtir. buffer adresinden itibaren len sayısı kadar alana okuma yapılır.

    Örnek kullanım;
    char input[10];
    getsUSART( input, 5);

    OpenUSART(): void OpenUSART(unsigned char config, unsigned int spbrg);

    Usart modülünü aktifleştirir.

    config:
    Interrupt on Transmission: Karşı tarafa veri aktarımı tamamlandıktan sonra kesme oluşma durumunu belirtir.

    USART_TX_INT_ON: Aktarım tamamlandığında kesme oluşacak.
    USART_TX_INT_OFF: Aktarım tamamlandığında kesme oluşmayacak.

    Interrupt on Receipt: Karşı taraftan veri alımı tamamlandıktan sonra kesme oluşma durumunu belirtir.

    USART_RX_INT_ON: Veri alındığında kesme oluşacak.
    USART_RX_INT_OFF: Veri alındığında kesme oluşmayacak.

    USART Mode: Usart haberleşmesinin hangi modda gerçekleşeceğini belirtir. 2 mod olabilir;

    USART_ASYNCH_MODE:  Asenkron mod
    USART_SYNCH_MODE: Senkron mod

    Transmission Width: Tek seferde aktarılacak verinin boyutunu belirtir.

    USART_EIGHT_BIT: 8 bitlik veri aktarımı (Transmit/Receive)
    USART_NINE_BIT: 9 bitlik veri aktarımı (Transmit/Receive)

    Slave/Master Select: Senkron haberleşmede modunda Slave(Köle) ya da Master(Usta) olma durumunu belirler. Haberleşme master olan tarafın kontrolündedir.

    USART_SYNC_SLAVE: Senkron slave modu
    USART_SYNC_MASTER: Senkron master modu

    Reception Mode:

    USART_SINGLE_RX: Single reception
    USART_CONT_RX: Continuous reception

    – Baud Rate: Aktarım yapılırken kullanılacak baud seviyesini belirler.  Baud, haberleşme esnasında 1 saniyede aktarılan dalga çeşidi  sayısıdır. Dolayısıyla haberleşme hızına etki eder. (Genelde 9600 kullanımı yaygındır.)

    USART_BRGH_HIGH: Yüksek baud oranı
    USART_BRGH_LOW: Düşük baud oranı

    spbrg:
    Buraya yazılan değer baud rate generator yapısından geçirilir ve baud hızı ayarlanır. Bunun için kullanılan formüller şöyle;

    Asynchronous mode, high speed:FOSC / (16 * (spbrg + 1))
    Asynchronous mode, low speed: FOSC / (64 * (spbrg + 1))
    Synchronous mode: FOSC / (4 * (spbrg + 1))

    Örnek kullanım;

    OpenUSART1( USART_TX_INT_OFF &USART_RX_INT_OFF &USART_ASYNCH_MODE &USART_EIGHT_BIT &USART_CONT_RX &USART_BRGH_HIGH,25 );

    putsUSART(): void putsUSART(char *data);

    data stringini USART haberleşme kanalına koyar. Sadece 8bit transmit/receive modda çalışır.

    data:
    Aktarılan stringi belirtir. Bu string ayrıca NULL karakterini de içerir. (Stringlerin son karakterleri nulldur.)

    Örnek kullanım;
    putsUSART(“Hello World”);

    ReadUSART(): char ReadUSART(void);

    getcUSART() fonksiyonuyla aynı işi görür. getsUSART() fonksiyonunun 9 bit transmit/receive modundaki hali olarak düşünebilir(ama sadece 9 bit transmit/receive modda kullanılacak diye bir kural yoktur). Haberleşme kanalından gelen 1 byte’lık veriyi okur Eğer 9 bit transmit/receive mod kullanılıyorsa bu 1 byte’lık veriye 9. bit de dahildir.

    WriteUSART(): void WriteUSART(char *data);

    putcUSART() fonksiyonuyla aynı işi görür.  putsUSART() fonksiyonunun 9 bit transmit/receive modundaki hali olarak düşünebilir(ama sadece 9 bit transmit/receive modda kullanılacak diye bir kural yoktur).data değerini haberleşme kanalına koyar.

    data:
    USART haberleşme kanalında aktarılacak değer.

    baudUSART(): void baudUSART(unsigned char baudconfig);

    Baud oranı konfigürasyon bitlerinin ayarlanmasında kullanılır.

    baudconfig:
    – Clock Idle State: Haberleşme yapılmazken, hat idle seviyesindeyken hattın durumunun ne olacağını belirtir.

    BAUD_IDLE_CLK_HIGH: Clock idle durumu yüksek seviyede
    BAUD_IDLE_CLK_LOW: Clock idle durumu düşük seviyede

    Baud Rate Generation:
    BAUD_16_BIT_RATE: 16 bit generation rate
    BAUD_8_BIT_RATE: 8 bit generation rate

    RX Pin Monitoring
    BAUD_WAKEUP_ON: RX pin monitored
    BAUD_WAKEUP_OFF: RX pin not monitored

    Baud Rate Measurement:BAUD_AUTO_ON: Auto baud rate measurement enabled
    BAUD_AUTO_OFF: Auto baud rate measurement disabled

  6. Delay FonksiyonlarıDelay1TCY():  void Delay1TCY(void);Bir NOP kodu çalıştırma zamanı kadar gecikme üretir. Yani bu fonksiyonu çalıştırdığımızda aslında koda bir NOP instruction’ı eklenir ve bu instruction çalışması bitince program kaldığı yerden çalışmaya devam eder.Delay10TCYx(): void Delay10TCYx(unsigned char unit);

    Bu fonksiyon 10’luk  instruction cycle’ın katları şeklinde gecikmeler üretir.  (10 tane instruction * unit)

    unit:
    1-255 sayıları arasında 8 bitlik bir değerdir. Bu değer gecikme katlarını belirler. Eğer sıfır ise fonksiyon 2.560 intruction cycle kadar gecikme üretir.

    Delay100TCYx(): void Delay10TCYx(unsigned char unit);

    Bu fonksiyon 100’lük  instruction cycle’ın katları şeklinde gecikmeler üretir. (100 tane instruction * unit)

    unit:
    1-255 sayıları arasında 8 bitlik bir değerdir. Bu değer gecikme katlarını belirler. Eğer sıfır ise fonksiyon 25.600 intruction cycle kadar gecikme üretir.

    Delay1KTCYx(): void Delay10TCYx(unsigned char unit);

    Bu fonksiyon 1.000’lik  instruction cycle’ın katları şeklinde gecikmeler üretir. (1.000 tane instruction * unit)

    unit:
    1-255 sayıları arasında 8 bitlik bir değerdir. Bu değer gecikme katlarını belirler. Eğer sıfır ise fonksiyon 256.000 intruction cycle kadar gecikme üretir.

    Delay10KTCYx(): void Delay10TCYx(unsigned char unit);

    Bu fonksiyon 10.000’lik  instruction cycle’ın katları şeklinde gecikmeler üretir. (10.000 tane instruction * unit)

    unit:
    1-255 sayıları arasında 8 bitlik bir değerdir. Bu değer gecikme katlarını belirler. Eğer sıfır ise fonksiyon 2.560.000 intruction cycle kadar gecikme üretir.

  7. I²CFonksiyonlarıI2C haberleşmesinde kullanılan fonksiyonlar şu şekilde.AckI2C(): void AckI2C(void);Acknowledge sinyali üretir. (Genellikle veri alındığında onayı bu şekilde veririz.)

    NotAckI2C(): void NotAckI2C(void);

    Not Acknowledge sinyali üretir. (Genellikle artık veri almayacağımızı bu şekilde bir sinyal üretiriz.)

    DataRdyI2C(): unsigned char DataRdyI2C(void);

    I2C buffer’ındaki veri okunmaya uygun mu diye kontrol eder. (Genelde veriyi okunmadan önce veri hazır mı diye bu fonksyionla kontrol ederiz.)

    Fonksiyonun döndürdüğü değer;
    1: Veri SSPx buffer’ındadır. Okumaya müsaittir
    0: Veri SSPx buffer’ında değildir. Henüz alınmamıştır, okunamaz.

    getsI2C(): unsigned char getsI2C(unsigned char *rdptr, unsigned char lenght);

    I2C üzerinden string okumak için kullanılır.

    rdptr:
    I2C üzerinden okunan verinin hangi adresten başlanarak saklanacağını gösterir.

    lenght:
    I2C üzerinden okunacak eleman sayısını gösterir.

    Fonksiyonun dönüş değeri;
    0: Gönderilen bütün veri alınmıştır.
    -1: Veri yolunda bir collusion meydana gelmiştir.

    Örnek kullanım;
    unsigned char string[15];

    getsI2C(string, 15);

    IdleI2C(): void IdleI2C(void);

    I2C veri yolu Idle(kullanıma hazır) olana kadar gecikme yapar. (Kendi içinde boş bir döngüye girer.)

    OpenI2C(): void OpenI2C(unsigned char sync_mode, unsigned char slew);

    SSPx modülünü I2C haberleşme koşullarını ayarlamak için verdiğimiz parametrelere göre  konfigüre eder.

    sync_mode:
    SLAVE_7: I2C slave modu, 7 bitlik adresleme (slave olan cihazın bir adresi bulunmak zorunda ki master olan slave’e erişebilsin).
    SLAVE_10: I2C slave modu, 10 bitlik adresleme (slave cihazların çokluğuna göre 10 bite kadar adresleme olanağı var).
    MASTER: I2C master modu (master cihazın adresi olmaz, kendisinin başka bir cihaz tarafından bulunmasına ihityaç yoktur).

    slew:
    SLEW_OFF100 kHz’lik iletişim sağlar.
    SLEW_ON: 400 kHz’lik iletişim sağlar.

    Örnek kullanım;
    OpenI2C(MASTER, SLEW_ON);

    putsI2C(): unsigned char putsI2C(unsigned char *wrptr);

    I2C veri yoluna string veri yazmak için kullanılır (Master veya Slave modunda kullanılabilir).

    wrptr:
    I2C üzerinden okunan verinin hangi adresten başlanarak saklanacağını gösterir.

    Fonksiyonun dönüş değeri;

    Master I2C modu:
    0: Veride NULL karakterine ulaşılmıştır (string son elemanına kadar gönderilmiştir).
    -2: Slave cihazından NOT ACK sinyali alınmıştır.
    -3: Collusion oluşmuştur.

    Slave I2C modu:
    0: Veride NULL karakterine ulaşılmıştır (string son elemanına kadar gönderilmiştir).
    2: Master cihazından NOT ACK sinyali alınmıştır (bu durumda haberleşme sonlandırılır).

    Örnek kullanım;
    unsigned char string[] = “data to send”;

    putsI2C(string);

    ReadI2C(): unsigned char ReadI2C(void);

    getcI2C() fonksiyonuyla aynı işi görür. I2C üzerinden 1 byte’lık veri okur.

    WriteI2C(): unsigned char WriteI2C(unsigned char data_out);

    putcI2C() fonksiyonuyla aynı işi görür. I2C üzerinden 1 byte’lık veri gönderir.

    data_out:
    I2C hattına verilecek olan 1 byte’lık değerdir.

    Fonksiyonun dönüş değeri;
    0: Veri I2C hattına başarıyla çıkartılmıştır.
    -1: Collusion olmuştur.

    Örnek kullanım;
    WriteI2C(‘a’);

    RestartI2C(): void RestartI2c(void);

    I2C haberleşmesini restart koşuluna sokar. (Genellikle haberleşmeyle ilgili özellikleri değiştirmek istediğimiz zaman kullanırız.) StopI2c() – StartI2C() kullanmanın kolay yoludur.

    StartI2C(): void StartI2C(void);

    I2C haberleşmesini başlatır.

    StopI2C():  void StopI2C(void);

    I2C haberleşmesini sonlandırır.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s