Diğer MSP430 Yazılarımız için Buraya Tıklayabilirsiniz
Herhangi bir mikrodenetleyici öğrenirken çoğu zaman ilk durağımız osilatör ayarları olur. Bunun sebebi ise genellikle kod içerisinde ilk olarak clock ayarlarını yapmamızdır. Hangi frekansta çalıştığını bilmediğimiz bir mikrodenetleyicide çevre birimleri kullanırken sıkıntı yaşanmaktadır. Ayrıca default clock ayarları genellikle karasız olur. Bununla birlikte MSP430’un clock sistemi oldukça basittir. Bizim kullanacak olduğumuz MSP430g2553 toplamda 3 adet clock kaynağına sahiotir. Bunlar; DCO, VLO ve LFXT1 olarak karşımıza çıkmaktadır. Kısaca açıklayacak olursak:
- DCO: Dijital olarak üretilen clock kaynağıdır. g2553 için sistemin ana clock kaynağı olarak kullanılmaktadır. Aynı zamanda peripheral’lar için de kullanılabilir. Maksimum 16 MHz kullanılabilmektedir.
- VLO: Yine çip içerisinde üretilen düşük güç için kullanılan kaynaktır. Genellikle 12 kHz olarak kullanılır.
- LFXT1: Dışarıdan bağlanan 32 kHz osilatör kaynak olarak kullanılır. Yine düşük güç için kullanılır.
Bu clock kaynakları üç yerde kullanılır:
- ACLK: Alternatif clock için kullanlır.
- MCLK: Sistemin ana clock’u için kullanılır.
- SMCLK: Peripheral’lar için kullanılır.
Clock kaynaklarının ayarlaması BCM register’ları ile yapmamız gerekmektedir. Register’ların açıklamaları şu şekildedir:
DCO frekansını ayarlamak için kullanılır.
ACLK ayarları için kullanılır.
MCLS ve SMCL kaynakları için kullanılır.
Low power clock ayarları için kullanılır.
Interrupt’ı aktifleştirmek ve interrupt durumunu izlemek için kullanılır.
VLO Kaynak Seçimi
VLO kaynak seçimi için BCSCTL3 register’ı içerisinde düşük güç clock kaynağı olarak VLO seçmemiz gerekmektedir. Bununla birlikte MCLK yani sistem clock kaynağı olarak da VLO seçmemiz gerekmektedir. Bunu da BCSCTL2 register’ı ile yapmamız gerekmektedir.
1 2 3 |
BCSCTL3 |= LFXT1S_2; //LFXT1S = 2 yapılarak VLO seçilir IFG1 &= ~OFIFG; //Interrupt bayrağı temizlenir BCSCTL2 |= SELM_3 + DIVM_3; //SELM_3 ile MCLK kaynağı olarak VLO seçilir. DIVM_3 ile 8'e bölünür. |
32 kHz Kristal Kaynak Seçimi
32 kHz kristal kaynak seçimi için de benzer işlemleri yapmamız gerekmektedir. Burada VLO’ya ek olarak dışarıdan bağladığımız kristalin bağlı olduğu kapasitelerin değerlerini de register’lar içerisinden belirtmemiz gerekmektedir. Board üzerinde 11pF kapasiteler mevcuttur.
1 2 3 4 5 6 7 |
BCSCTL3 |= LFXT1S_0 + XCAP_3; //LFXT1S = 0 yapılarak 32 kHz kaynak seçilir. XCAP = 3 ile 11pF kapasiteler seçilir. while(IFG1 & OFIFG) //Dışarıdan kaynak kullanıldığı için while döngüsü içerisinde onay beklenir. { IFG1 &= ~OFIFG; _delay_cycles(100000); //Bayrak temizlenmesi 50 uS sürmektedir. Bu yüzden delay kullanılır. } BCSCTL2 |= SELM_3 + DIVM_3; //MCLK kaynağı olarak 32 kHz seçilir. 8'e bölünür. |
DCO Kaynak Seçimi
DCO kaynak seçimi için CCS içerisinde hazır ayarlar bulunmaktadır. Bu ayarlar otomatik olarak DCO kontrol ve BCSCTL register’larını uygun duruma getirmektedir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//Öncelikle derleyicide tanımlamaların olup olmadığı kontrol edilir. if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF) { while(1); } //1 MHz için ayarlar yapılır. Burada 16 MHz'e kadar değerler kullanabilirsizin BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; /* 16 MHz örnek kod BCSCTL1 = CALBC1_16MHZ; DCOCTL = CALDCO_16MHZ; */ BCSCTL2 |= SELM_0; //MCLK kaynağı olarak DCO seçilir. Default ayardır |
Uygulamaların büyük bir kısmında MCLK ve SMCLK kaynağı olarak DCO kullanacağız. VLO ve 32 kHz kristal ile de uygulamalarımız olacak. Düşük güç yönetimi için interrupt ve LPM(Low-Power-Mode) özelliklerini kullanacağız. Bir sonraki yazımızda sizlerle MSP430 üzerindeki GPIO pinlerinin nasıl kullanıldığını öğreneceğiz. Sorunuz olursa lütfen yorumlarda belirtin. MSP430 hakkında daha fazla bilgi için diğer yazılarımıza göz atabilirsiniz.
Emeğiniz icin teşekkürler devamını bekliyorum
Biz teşekkür ederiz devamı gelecek