PIC18F4550 CLOCK AYARLARI
Güncelleme 16/08/2024
OSİLATÖR KONTROLÜ
18F4550 mikrodenetleyicisinde osilatörün çalışması CONFING1L, CONFIG1H adındaki 2 konfigürasyon registeri aracılığıyla belirlenir. Osilatör modu ve USB prescaler/postscaler seçenekleri bu registerlar ile ayarlanır.
OSCCON registerı hangi clock modunun aktif edileceğinin seçimi için kullanılır.
OSCTUNE registerı dahili INTRC frekans kaynağını kırpma ayarlarını yapmak için kullanılır.
OSİLATÖR ÇEŞİTLERİ
18F4550 12 farklı osilatör modu mevcuttur. FOSC3:FOSC0 konfigürasyon bitleriyle bu modların seçimi gerçekleştirilir.
XT Crystal/Resonator-Birincil osilatör kaynağından gelen Max 4MHz osilatör.
XTPLL Crystal/Resonator – 4 MHz osilatör bölme oranı uygulanmadan PLL verilir ve PLL çıkışı kaynak olarak kullanılır.
HS High-Speed Crystal/Resonator– Birincil osilatör kaynağından gelen 4MHz üzeri osilatör kullanılır.
HSPLL High-Speed Crystal/Resonator- 4MHz üzeri osilatör PLL 4MHz elde edilecek şekilde bir bölme oranıyla girişine verilir ve PLL çıkışı kullanılır
EC External Clock – Harici bir clock kaynağı OSC1 pinine verilir, OSC2 pininden FOSC/4 frekansında bir sinyal çıkışı verilir.
ECIO External Clock – Harici bir clock kaynağı OSC1 pinine verilir, OSC2(RA6) pini normal IO olarak kullanılabilir.
ECPLL External Clock – Harici bir clock kaynağı 4MHz’i sağlayacak bir bölme oranıyla PLL girişine verilir ve PLL çıkışı kaynak olarak kullanılır. OSC2(RA6) pini FOSC/4 frekansında sinyal üretir.
ECPIO External Clock – Harici bir clock kaynağı 4MHz’i sağlayacak bir bölme oranıyla PLL girişine verilir ve PLL çıkışı kaynak olarak kullanılır. OSC2(RA6) pini normal IO olarak kullanılır
INTHS – Dahili osilatör mikrodenetleyiciye clock kaynağı olarak kullanılır, harici HS osilatör USB için kullanılır.
INTXT – Dahili osilatör mikrodenetleyiciye clock kaynağı olarak kullanılır, harici XT osilatör USB için kullanılır.
INTIO – Dahili osilatör mikrodenetleyiciye clock kaynağı olarak kullanılır, harici clock kaynağı USB için kullanılır . OSC2(RA6) pini normal IO olarak kullanılabilir.
INTCKO – Dahili osilatör mikrodenetleyiciye clock kaynağı olarak kullanılır, harici clock kaynağı USB için kullanılır . OSC2(RA6) pini FOSC/4 clock çıkışı verir.
OSİLATÖR MODLARI VE USB İŞLEMİ
USB birimine clock kaynağı olarak sadece primary(birincil) osilatör seçilebilir. Bu clock kaynağı direk olarak USB kaynağı olarak kullanılabilirken, dolaylı olarak yani PLL girişine verilip, PLL çıkışından USB ye verilerek kullanılabilir.
Primary Osilatör
HS: Yüksek hızlı osilatör .(>4MHz)
XT: Düşük hızlı osilatör.(<=4MHz)
EC: OSC1 girişine bir clock kaynağı bağlanır. OSC2 pini FOSC/4 clock sağlar.
ECIO: OSC1 girişine bir clock kaynağı bağlanır. OSC2 pini normal IO olarak kullanılır.
USB modülü yukarıdaki primary oslitör girişine bağlı osilatörlerden biriyle beslenmek zorundadır. Yani internal(dahili) veya secondary(ikincil) osilatörler USB birimine verilemez. Fakat bu birimlerden biri mikrodenetleyiciye ve çevre birimlerine bağlanabilir. USB düşük hız 6MHz ve yüksek hız 48MHz olmak üzere iki hız seçeneğiyle çalıştırılabilir.
DAHİLİ OSİLATÖR BLOĞU
PIC18F4550 2 farklı clock üretebilen bir dahili clock bloğuna sahiptir. Eğer USB kullanılmayacaksa, dahili osilatör harici osilatör gereksinimini ordan kaldırmaktadır.
Ana clock kaynağı 8MHz INTOSC dir ve direk olarak mikrodenetleyiciye clock kaynağı olarak kullanılabilmektedir. Aynı zaman da 8 MHz lik sinyali direk vermek yerine bir postscaler(bölme) uygulayarak 31kHz-4MHz arasında clock elde etmekte mümkündür. Clock kaynağı olarak 125kHz-8MHz arasında seçilirse INTOSC aktif hale gelir.
Diğer dahili kaynak ise INTRC kaynağıdır ve 31kHzlik sabit bir clock sağlamaktadır. Bu clock eğer midrodenetleyiciye clock kaynağı olarak seçilmiş ise veya aşağıdaki durumlarda aktif hale gelir.
Power-up Timer
Fail-Safe Clock Monitor
Watchdog Timer
Two-Speed Start-up
Clock kaynağı olarak doğrudan INTOSC, INTRC veya INTOSC kaynağında bir bölme uygulanarak alınabilir. Bu ayar OSCCON registerının IRCF bitleriyle yapılır.
INTERNAL OSİLATÖR MODLARI
Internal osilatörü mikrodenetleyici için, primary osilatörü USB için seçebileceğimiz 4 mod vardır.
INTHS mode: USB clock sinyalini HS osilatörden alır.
INTXT mode: USB clock sinyalini XT osilatörden alır.
INTCKO mode: USB clock sinyalini OSC1 pininden bir clock kaynağıyla alır, OSC2 pini FOSC/4 çıkış verir.
INTIO mode: USB clock sinyalini OSC1 pininden bir clock kaynağıyla alır, OSC2 pini normal IO olarak kullanılır.
Sadece INTIO modu seçildiğinde RA6 pini normal IO olarak kullanım için boşa çıkmaktadır. Eğer USB kullanılmayacaksa ve sistem clock sinyali olarak dahili osilatör kullanılıyorsa harici bir osilatöre gerek yoktur. Bu durumda yukarıdaki ayarlamaların hepsi sadece dahili osilatörü aktif eder, harici osilatör seçimlerinin bir önemi kalmaz. Böye bir durumda INTIO seçeneği extra 1 pin imkanı verdiği için daha kullanışlıdır.
PLL VE USB OSİLATÖR AYARLARI
18F4550 mikrodenetleyicisi USB’nin yüksek hızda iletişim için ihtiyaç duyduğu 48MHz frekansı sağlamak için frekans çapıcı PLL(Pulse Lock Loop) konulmuştur. PLL girişleri sadece primary osilatörden HS, XT, EC, ECIO olarak alınabilir. PLL girişlerine 4MHz sabit frekans verilmek zorundadır. Yani primary osilatör girişine 4MHz harici bir osilatör bağlanmış ise PLL girişine vermeden önce 4MHz’e eşit olacak şekilde bir önbölme uygulanmalıdır.
PLL çıkışı ise sabit 96MHz alınmaktadır. Bu frekans USB’ye 2 ye bölünerek gitmektedir. Mikrodenetleyici clock sinyali olarak bu 96MHz’lik çıkışı en fazla 48MHz olarak almaktadır. 48MHz dışında isteğe bağlı olarak 1/3 1/4 1/6 bölme oranlarıyla da 96MHz sinyali azaltarak alabilmektedir.
USB DÜŞÜK HIZDA ÇALIŞMASI
USB düşük hız olan 6MHz hızında çalıştırılmak istenirse bu değer direk olarak PLL çıkışdan alınamaz. Çünkü PLL çıkışından 96/2 olarak alınmaktadır. 6 MHz clock sağlamak için kaynak olarak 24MHz olmak koşuluyla primary osilatör seçenekleri HS, XT, EC kullanılabilir veya PLL çıkışından 24MHz olarak alınan clocklar 4’e bölünerek USB ye verilebilmektedir.