PIC Frekans Ayarı Yapılması

PIC ile bir proje yaparken yararlanılacak en önemli kaynak Veri Sayfalarıdır. Ama ne yazık ki bu kaynaklar İngilizcedir ve çevirileri yoktur. Ancak Google Translate ile bu çevirileri yapmak olanaklıdır. Bu çeviriler çok anlaşılır olmasa da yine de yararlanılabilir.

Frekans ayarı için örnek olarak PIC 16F1826/27 yı kullanacağım. Diğer PICler için bilgiler benzerdir. Bu PIC’in veri sayfasının 5. Bölümünde frekans ünitesi ve frekans ayarları anlatılmaktadır. Bu anlatılanlardan yararlanılacaktır.

Osilatör modülü sekiz kipten birinde yapılandırılabilir.

Saat kipleri:

1. ECL – Harici Saat Düşük Güç kipi – (0 MHz ila 0,5 MHz)

2. ECM – Harici Saat Orta Güç kipi – (0,5 MHz ila 4 MHz)

3. ECH – Harici Saat Yüksek Güç kipi – (4 MHz ila 32 MHz)

4. LP – 32 kHz Düşük Güçlü Kristal kipi

5. XT – Orta Kazançlı Kristal veya Seramik Rezonatör Osilatör kipi (4 MHz’e kadar)

6. HS – Yüksek Kazançlı Kristal veya Seramik Rezonatör kipi (4 MHz ila 20 MHz)

7. RC – Harici Direnç-Kondansatör (RC).

8. INTOSC – iç osilatör (31 kHz – 32 MHz).

 İlk 7 tanesi dışarıdan eleman kullanılarak yapılır. Bu yazıda dışarıdan eleman kullanmadan yapılan 8. sırada belirtilen iç osilatör ayarlanmasını anlatmaya çalışacağım. Bu konun anlatıldığı PICin veri sayfasının ilgili bölümünün tercümesi aşağıdadır.

5.2.2 DAHİLİ SAAT KAYNAKLARI

Cihaz, aşağıdaki işlemlerden birini gerçekleştirerek dahili osilatör bloğunu sistem saati olarak kullanacak şekilde yapılandırılabilir:

• Cihaz Sıfırlandığında varsayılan sistem saati olarak kullanılacak INTOSC saat kaynağını seçmek için Konfigürasyon Kelimesi 1’deki FOSC<2:0> bitlerini programlayın. ( #pragma config FOSC = INTOSC )

• Çalışma zamanı sırasında sistem saat kaynağını dahili osilatöre geçirmek için SCS<1:0> bitlerini OSCCON kaydına yazın. Daha fazla bilgi için Bölüm 5.3 “Saat Değiştirme”ye bakın. ( OSCCONbits.SCS = 0x0; )

INTOSC modunda, genel amaçlı I/O için OSC1/CLKIN mevcuttur. OSC2/CLKOUT, genel amaçlı G/Ç veya CLKOUT için kullanılabilir.

OSC2/CLKOUT pininin işlevi, Konfigürasyon Word 1’deki CLKOUTEN bitinin durumu ile belirlenir.

Dahili osilatör bloğu, iki bağımsız osilatöre ve üç dahili sistem saat kaynağından birini üretebilen özel bir Faz Kilidi Döngüsü, HFPLL’ye sahiptir.

1. HFINTOSC (Yüksek Frekanslı Dahili Osilatör) fabrikada kalibre edilmiştir ve 16 MHz’de çalışır. HFINTOSC kaynağı, 500 kHz MFINTOSC kaynağından ve özel Faz Kilidi Döngüsü, HFPLL’den üretilir. HFINTOSC’nin frekansı, OSCTUNE kaydı (Kayıt 5-3) kullanılarak yazılım aracılığıyla kullanıcı tarafından ayarlanabilir.

2. MFINTOSC (Orta Frekans Dahili Osilatör) fabrikada kalibre edilmiştir ve 500 kHz’de çalışır. MFINTOSC’nin frekansı, OSCTUNE kaydı (Kayıt 5-3) kullanılarak yazılım aracılığıyla kullanıcı tarafından ayarlanabilir.

3. LFINTOSC (Düşük Frekanslı Dahili Osilatör) kalibre edilmemiştir ve 31 kHz’de çalışır.

5.2.2.1 HFINTOSC

Yüksek Frekanslı Dahili Osilatör (HFINTOSC), fabrikada kalibre edilmiş 16 MHz dahili saat kaynağıdır. HFINTOSC’nin frekansı, OSCTUNE kaydı (Kayıt 5-3) kullanılarak yazılım aracılığıyla değiştirilebilir.

HFINTOSC’nin çıkışı bir postcaler ve multiplexer’a bağlanır (bkz. Şekil 5-1). HFINTOSC’den türetilen dokuz frekanstan biri, OSCCON kaydının IRCF<3:0> bitleri kullanılarak yazılım aracılığıyla seçilebilir. Daha fazla bilgi için Bölüm 5.2.2.7 “Dahili Osilatör Saat Anahtarı Zamanlaması”na bakın.

HFINTOSC şu şekilde etkinleştirilir:

• İstenen HF frekansı için OSCCON kaydının IRCF<3:0> bitlerini yapılandırın ve

• FOSC<2:0> = 100 veya

• OSCCON kaydının Sistem Saati Kaynağı (SCS) bitlerini ‘1x’ olarak ayarlayın.

OSCSTAT kaydının Yüksek Frekans Dahili Osilatör Hazır biti (HFIOFR), HFINTOSC’nin ne zaman çalıştığını ve kullanılabileceğini gösterir.

OSCSTAT kaydının Yüksek Frekans Dahili Osilatör Durumu Kilitli biti (HFIOFL), HFINTOSC’nin son değerinin %2’si dahilinde çalıştığını gösterir.

OSCSTAT kaydının Yüksek Frekanslı Dahili Osilatör Durumu Kararlı biti (HFIOFS), HFINTOSC’nin son değerinin %0,5’i dahilinde çalıştığını gösterir.

5.2.2.2 MFINTOSC

Orta Frekans Dahili Osilatör (MFINTOSC), fabrikada kalibre edilmiş 500 kHz dahili saat kaynağıdır. MFINTOSC’nin frekansı, OSCTUNE kaydı (Kayıt 5-3) kullanılarak yazılım aracılığıyla değiştirilebilir.

MFINTOSC’nin çıkışı bir postcaler ve multiplexer’a bağlanır (bkz. Şekil 5-1). MFINTOSC’den türetilen dokuz frekanstan biri, OSCCON kaydının IRCF<3:0> bitleri kullanılarak yazılım aracılığıyla seçilebilir. Daha fazla bilgi için Bölüm 5.2.2.7 “Dahili Osilatör Saat Anahtarı Zamanlaması”na bakın.

MFINTOSC aşağıdakiler tarafından etkinleştirilir:

• İstenen HF frekansı için OSCCON kaydının IRCF<3:0> bitlerini yapılandırın ve

• FOSC<2:0> = 100 veya

• OSCCON kaydının Sistem Saati Kaynağı (SCS) bitlerini ‘1x’ olarak ayarlayın

OSCSTAT kaydının Orta Frekans Dahili Osilatör Hazır biti (MFIOFR), MFINTOSC’nin ne zaman çalıştığını ve kullanılabileceğini gösterir.

PIC Frekans Ayarı

PIC dahili osilatörü ile kullanılabilir. Nasıl kullanılacağını bu yazıda anlatmaya çalışacağım. PIC Veri Sayfasının 52. sayfasındaki 5.1 şeklinde osilatör blok şeması verilmiştir. Anılan şekli aşağıya aldım.

Şekilde dış ve iç frekansın bağlantıları gösterilmektedir. OSC1, OSC2, T1OSO ve T1OSI girişleri dış osilatör bağlantısı için kullanılmaktadır. İç osilatöre baktığımızda 2 tane iç osilatörün olduğunu görüyoruz. 31 kHz osilatör özel amaçlar için kullanılmaktadır. Bizim kullanacağımız osilatör 500 kHz ile başlayan ve HFPLL birimi ile 16 MHz’e kadar çıkan osilatördür. Son ölçekleyici ile bu frekans 10 değişik frekansa dönüştürülmektedir. Bu 10 frekanstan kullanmak istediğimizin seçimini IRCF<3:0> kayıtçısı ayarıyla yapacağız.

Ayrıca 8 MHz frekansı kullanarak 32 MHz frekans elde etmek de olanaklı. Yukarıdaki şekilden görüleceği gibi 8 MHz frekansı 4 katına çıkaran 4xPLL birimi ile bu yapılabilir.

Frekans ayarı için programlamanın nasıl yapılacağına bakalım.

Öncelikle 32 MHz:

// CONFIG1

#pragma config FOSC = INTOSC    // İç osilatör seçiliyor (INTOSC oscillator: I/O function on CLKIN pin)

// CONFIG2

#pragma config PLLEN = ON       // Frekansı 4 katına çıkaran 4x PLL etkin

// Frekans ayarları 32 MHz için

    OSCCONbits.IRCF = 0xE;          // 1110 8 MHz seçildi

    OSCCONbits.SPLLEN = 0x1;     // 4xPLL etkin

    OSCCONbits.SCS = 0x0;            // İç osilatör seçildi

    OSCSTATbits.PLLR = 0x1;         // PLL birimi hazır

Yukarıdaki 4 kayıtçının tam değerleri aşağıda verilmiştir:

IRCF<3:0>: İç osilatör frekans ayar biti
000x =31 kHz LF
0010 =31.25 kHz MF
0011 =31.25 kHz HF(1)
0100 =62.5 kHz MF
0101 =125 kHz MF
0110 =250 kHz MF
0111 =500 kHz MF (default upon Reset)
1000 =125 kHz HF(1)
1001 =250 kHz HF(1)
1010 =500 kHz HF(1)
1011 =1 MHz HF
1100 =2 MHz HF
1101 =4 MHz HF
1110 =8 MHz or 32 MHz HF(see Section 5.2.2.1 “HFINTOSC”)
1111 =16 MHz HF

SPLLEN: Yazılım PLL etkin biti
Eğer PLLEN’nin Configuration Word 1 deki değeri (Yapılandırma Kelimesi 1) = 1 ise:
SPLLEN biti yoksayılır.4x PLL daima etkindir. (subject to oscillator requirements)
Eğer PLLEN’nin Configuration Word 1 deki değeri (Yapılandırma Kelimesi 1) = 0: ise
1 = 4x PLL etkin
0 = 4x PLL etkin değil

SCS<1:0>: Sistem saati seçim biti
1x = İç osilatör bloğu seçilir
01 = Timer1 osilatör bloğu seçilir
00 = Word 1 (Yapılandırma Kelimesi 1) deki FOSC<2:0> değere göre belirlenir.

PLLR 4x PLL Hazır biti
1 = 4x PLL hazır
0 = 4x PLL hazır değil

Share your love

Newsletter Updates

Enter your email address below and subscribe to our newsletter

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir