• Tidak ada hasil yang ditemukan

msp430kitap

N/A
N/A
Protected

Academic year: 2021

Membagikan "msp430kitap"

Copied!
138
0
0

Teks penuh

(1)

MSP430 Programlama Notları

MSP430 Programlama Notları

2.BASKI

2.BASKI

Fe

Feridun GÖKÇEGÖZ ridun GÖKÇEGÖZ 

Emre EMANET  Emre EMANET  M.Fatih İNANÇ  M.Fatih İNANÇ  Fırat DEVECİ  Fırat DEVECİ  Erhan YILMAZ  Erhan YILMAZ 

(2)

2. BASKIYA

2. BASKIYA ÖN SÖZÖN SÖZ

MSP430 ile ilgili

MSP430 ile ilgili

oluşturmuş olduğumuz bu kaynak Türkiye’deki en

oluşturmuş olduğumuz bu kaynak Türkiye’deki en

tecrübeli insanların yazılarından derlenerek ve seçilerek bu faydalı kaynak

tecrübeli insanların yazılarından derlenerek ve seçilerek bu faydalı kaynak

ortaya çıkmıştır.

ortaya çıkmıştır.

Başta editörlüğünü ve derlemesini yapmış olduğum bu kitap gerek

Başta editörlüğünü ve derlemesini yapmış olduğum bu kitap gerek

mikrodenetleyicilere giriş, gerekse MSP430 mikrodenetleyicisi hakkında

mikrodenetleyicilere giriş, gerekse MSP430 mikrodenetleyicisi hakkında

önemli bir Türkçe doküman durumundadır. Bu baskısında MSP430’un SPI

önemli bir Türkçe doküman durumundadır. Bu baskısında MSP430’un SPI

donanımı ve ADC10 vb. donanımlar 

donanımı ve ADC10 vb. donanımlar  üzerinde daha fazla durularak

üzerinde daha fazla durularak

MSP430 ile yapılabilecek uygulamalar attırılmıştır.

MSP430 ile yapılabilecek uygulamalar attırılmıştır.

Başta yazar arkadaşlar olmak üzere hepsine t

Başta yazar arkadaşlar olmak üzere hepsine t

e

e

şekkü

şekkü

r eder, sevgili

r eder, sevgili

Ferhat Umut DİZDAR

Ferhat Umut DİZDAR

hoca

hoca

ma çalışmalarıma ve mikrodenet

ma çalışmalarıma ve mikrodenet

leyici

leyici

konusunda vermiş olduğu

konusunda vermiş olduğu destekten dolayı saygılarımı ve sevgilerimi

destekten dolayı saygılarımı ve sevgilerimi

sunuyorum.

sunuyorum.

Bu kitabın ülkemizdeki teknik insanlara yararlı olmasını diliyor,

Bu kitabın ülkemizdeki teknik insanlara yararlı olmasını diliyor,

herkesin başarılı olmasını canı

herkesin başarılı olmasını canı gönülden istiyorum.

gönülden istiyorum.

Zihniniz hep açık olsun

Zihniniz hep açık olsun

..

MSP430

MSP430 Programlama

Programlama

Sayfa

Sayfa

Emre EMANET

Emre EMANET

(3)

YAZARLARIMIZ

YAZARLARIMIZ

Feridun GÖKÇEGÖZ

Feridun GÖKÇEGÖZ

www.fgokcegoz.com www.fgokcegoz.com  fgokcegoz@yahoo.com  fgokcegoz@yahoo.com

1987 İstanbul doğumlu. 2001 yılında ilköğretim eğitimini tamamlayıp 1987 İstanbul doğumlu. 2001 yılında ilköğretim eğitimini tamamlayıp Mecidiyeköy Lisesinde (YDA) lise eğitimine devam etti. 2005 yılında Mecidiyeköy Lisesinde (YDA) lise eğitimine devam etti. 2005 yılında lise eğitimini tamamladı ve 2006 yılında Sakarya Üniversitesi Elektrik lise eğitimini tamamladı ve 2006 yılında Sakarya Üniversitesi Elektrik Elektronik Müh. bölümünü kazandı. 2010 yılında başarı ile lisans Elektronik Müh. bölümünü kazandı. 2010 yılında başarı ile lisans eğitimini tamamladı ve 2011 yılından itibaren ise Yıldız Teknik eğitimini tamamladı ve 2011 yılından itibaren ise Yıldız Teknik Üniversitesi Fen Bilimleri Enstitüsü, Elektrik Makineleri ve Güç Üniversitesi Fen Bilimleri Enstitüsü, Elektrik Makineleri ve Güç Elektroniği anabilim dalında yüksek lisans eğitimine devam Elektroniği anabilim dalında yüksek lisans eğitimine devam

etmektedir. etmektedir.

Emre EMANET

Emre EMANET

emanetemre28@gmail.com emanetemre28@gmail.com 1991 Giresun doğ

1991 Giresun doğdudu. Liseyi memleketim olan Tirebolu’da Tirebolu. Liseyi memleketim olan Tirebolu’da Tirebolu

Endüstri Meslek Lisesinde Elektrik –

Endüstri Meslek Lisesinde Elektrik – Elektronik TeknolojiElektronik Teknoloji

bölümünde tamamladı. Mikrodenetliyiciler ile lisede tanışma bölümünde tamamladı. Mikrodenetliyiciler ile lisede tanışma veve

uğraşma fırsatı buldu

uğraşma fırsatı buldu..MEB proje tabanlı beceri yarışmasında il MEB proje tabanlı beceri yarışmasında il 2.liği2.liği

bulunmaktadır

bulunmaktadır.. Şu an Ordu Üniversite’si MYO Kontrol VeŞu an Ordu Üniversite’si MYO Kontrol Ve

Otomasyon Teknolojisi programı 2. sınıf öğrencisi olarak okumakta Otomasyon Teknolojisi programı 2. sınıf öğrencisi olarak okumakta

olan yazar mikrodenetleyiciler ve

olan yazar mikrodenetleyiciler ve otomasyon alanlarındaotomasyon alanlarında uğraşmakta. uğraşmakta.

M.Fatih İNANÇ

M.Fatih İNANÇ

www.fatihinanc.com www.fatihinanc.com  fatihinanc@hotmail.com  fatihinanc@hotmail.com

1989 Ankara doğumlu. 2003 yılında ilkokul eğitimini tamamlayıp 1989 Ankara doğumlu. 2003 yılında ilkokul eğitimini tamamlayıp Anadolu Meslek Lisesi Bilgisayar Bölümünde eğitimine devam etti. Anadolu Meslek Lisesi Bilgisayar Bölümünde eğitimine devam etti. 2008 yılında ise Selçuk Üniversitesi Teknik Eğitim Fakültesi Bi

2008 yılında ise Selçuk Üniversitesi Teknik Eğitim Fakültesi Bilgisayarlgisayar

Sistemleri Öğretmenliğini kazandı. Halen aynı üniversitede 4.Sınıf  Sistemleri Öğretmenliğini kazandı. Halen aynı üniversitede 4.Sınıf  öğrencisi olarak eğitimine

öğrencisi olarak eğitimine devam etmektedir.devam etmektedir.

MSP430

(4)

Fırat DEVECİ

Fırat DEVECİ

www.fxdev.org www.fxdev.org  firat_deveci@hotmail.com  firat_deveci@hotmail.com

1988 yılında İzmir'de doğdu. 2011 yılında Ege Üniversitesi Elektrik ve Elektronik 1988 yılında İzmir'de doğdu. 2011 yılında Ege Üniversitesi Elektrik ve Elektronik Mühendisliği'ni Tez Birincisi olarak bitirdi.

Mühendisliği'ni Tez Birincisi olarak bitirdi. Yazarın ilgi alanı Yazarın ilgi alanı yenilenebilir enerji, güç elektroniği,yenilenebilir enerji, güç elektroniği, mikrodenetleyiciler ve kontrol uygulamaları olarak sıralanmaktadır.

mikrodenetleyiciler ve kontrol uygulamaları olarak sıralanmaktadır. Bir tanesi IEEE'de olmakBir tanesi IEEE'de olmak

üzere çeşitli sempozyumlarda 3 makalesi bulunan 2011 yılı itibari ile yine aynı üniversitede üzere çeşitli sempozyumlarda 3 makalesi bulunan 2011 yılı itibari ile yine aynı üniversitede yüksek lisansını

yüksek lisansını sürdürmektesürdürmektedir.dir.

Erhan YILMAZ

Erhan YILMAZ

erhanyilmaz.ytu@gmail.com

erhanyilmaz.ytu@gmail.com

20-02-1990

20-02-1990 doğdu. Elektroniğe 2004 yılında İstanbul Kartaldoğdu. Elektroniğe 2004 yılında İstanbul Kartal endüstri meslek lisesine girerek başladım. Sonrasında Marmara endüstri meslek lisesine girerek başladım. Sonrasında Marmara üniversitesi endüstriyel elektronik bölümüne geçip oradan de üniversitesi endüstriyel elektronik bölümüne geçip oradan devamvam

ettim. 2009 itibari ile Marmara üniversitesindeki eğitimimi ettim. 2009 itibari ile Marmara üniversitesindeki eğitimimi tamamladım. Sonrasında 1 sene hazırlanıp dgs sınavı ile Yıldız tamamladım. Sonrasında 1 sene hazırlanıp dgs sınavı ile Yıldız Teknik üniversitesi elektronik haberleşme mühendisliğine

Teknik üniversitesi elektronik haberleşme mühendisliğine girdim.girdim. Elektronik anlamda çeşitli analog uygulamalarım olmakla

Elektronik anlamda çeşitli analog uygulamalarım olmakla beraberberaber genel olarak sayısal

genel olarak sayısal elektronik ve mikro denetleyiciler ileelektronik ve mikro denetleyiciler ile

uğraşıyorum. Şu an halen Yıldız teknikte (3.

uğraşıyorum. Şu an halen Yıldız teknikte (3. sınıf) okumaktayım.sınıf) okumaktayım.

MSP430

(5)

İÇİNDEKİLER

İÇİNDEKİLER

SAYFA NO

SAYFA NO

BÖLÜM 1 –

BÖLÜM 1 – MSP430 GENEL ÖZELLİKLERİ VE OSC AYARLARI

MSP430 GENEL ÖZELLİKLERİ VE OSC AYARLARI

8

8

1.1-1.1-

)MSP430’a Genel Bakış

)MSP430’a Genel Bakış

8

8

1.2-1.2-

)MSP430’un Donanımsal Mimarisi Ve Temel Blok Diyagramı

)MSP430’un Donanımsal Mimarisi Ve Temel Blok Diyagramı

8

8

1.3-1.3-

)LaunchPad Paket İçeriği Ve Üzerindeki Bağlantılar

)LaunchPad Paket İçeriği Ve Üzerindeki Bağlantılar

9

9

1.4-1.4-

) İlk Uygulama Yazma

) İlk Uygulama Yazma

10

10

1.5-1.5-

) MSP430 Osilatör Ayarları

) MSP430 Osilatör Ayarları

12

12

BÖLÜM 2 –

BÖLÜM 2 –

MSP430 RISC CPU

MSP430 RISC CPU

2.1-2.1-

) MSP430 16 BİT RISC CPU

) MSP430 16 BİT RISC

CPU

BÖLÜM

BÖLÜM

3

3

 –

 – MSP430 GİRİŞ ÇIKIŞ AYARLARI

MSP430 GİRİŞ ÇIKIŞ AYARLARI

13

13

3.1-3.1-

) Pin Yönlendirme Ve Kullanımı

) Pin Yönlendirme Ve Kullanımı

13

13

3.2-3.2-

) Port Okuma Ve Yazma Uygulaması

) Port Okuma

Ve Yazma Uygulaması

18

18

BÖLÜM

BÖLÜM

4

4

 –

 – MSP430 TİMER AYARLARI

MSP430 TİMER AYARLARI

20

20

4.1-4.1-

) TimerA Bölümü

) TimerA Bölümü

20

20

4

4

.1.1) TimerA Sayıcı Modu

.1.1) TimerA Sayıcı Modu

21

21

4.1.1.1-)TimerA

4.1.1.1-)TimerA Stop

Stop Modu

Modu

22

22

4.1.1.2-)TimerA

4.1.1.2-)TimerA Up

Up Modu

Modu

22

22

4.1.1.3-)

4.1.1.3-) TimerA

TimerA Continuous

Continuous Modu

Modu

26

26

4.1.1.4-)

4.1.1.4-) TimerA

TimerA Down

Down Modu

Modu

26

26

4.1.2) TimerA Up/Down Modunu Kullanarak Basit PWM

4.1.2) TimerA Up/Down Modunu Kullanarak Basit PWM

Sinyali Üretmek

Sinyali Üretmek

28

28

BÖLÜM

BÖLÜM

5

5

 –

 – ADC10 MODÜLÜ

ADC10 MODÜLÜ

28

28

5.1-5.1-

)ADC İşlemleri

)ADC İşlemleri

29

29

5.1.1-)Referans

5.1.1-)Referans Belirleme

Belirleme

29

29

5.1.2-5.1.2-

)Çevrim Frekansı Belirleme

)Çevrim Frekansı Belirleme

29

29

5.1.3-5.1.3-

)ADC10 Giriş Seçimi

)ADC10 Giriş Seçimi

30

30

5.2-)ADC

5.2-)ADC

Kullanım Registerleri

Kullanım Registerleri

30

30

5.3-5.3-

) Sıcaklık

) Sıcaklık Sensörü

Sensörü

33

33

5.4-5.4-

) ADC10 Modülü İle Gerilim Ölçümü

) ADC10 Modülü İle Gerilim Ölçümü

38

38

BÖLÜM

BÖLÜM

6

6

 –

 – MSP430 İLE DİSPLAY KONTROL UYGULAMASI

MSP430 İLE DİSPLAY KONTROL UYGULAMASI

43

43

6.1-6.1-

) Displayler Hakkında Genel Bilgiler

) Displayler Hakkında Genel Bilgiler

43

43

6.2-) 74HC164

6.2-) 74HC164

İle Display Sürme

İle Display Sürme

44

44

6.3-6.3-

) MSP430 7448 İle Yukarı Aşağı Sayıcı

) MSP430 7448 İle

Yukarı Aşağı Sayıcı

48

48

MSP430

(6)

BÖLÜM

BÖLÜM

7

7

 –

 – MSP430 İLE LCD KONTROL UYGULAMASI

MSP430 İLE LCD KONTROL UYGULAMASI

53

53

7.1-7.1-

) LCD Hakkında Genel Bilgiler

) LCD Hakkında Genel Bilgiler

53

53

7.2-7.2-

) MSP430 2X16 LCD Uygulaması

) MSP430 2X16 LCD Uygulaması

56

56

7.3-)

7.3-) MSP430,

MSP430, 74HC595

74HC595 ve

ve LCD

LCD

60

60

BÖLÜM

BÖLÜM

8

8

 –

 – MSP430 İLE KEYPAD(TUŞ TAKIMI) KONTROL UYGULAMASI

MSP430 İLE KEYPAD(TUŞ TAKIMI) KONTROL UYGULAMASI

67

67

8.1-8.1-

) Tuş Takımı Hakkında Genel Bilgiler

) Tuş Takımı Hakkında Genel Bilgiler

67

67

8.2-8.2-

) MSP430 İle Tuş Takımı

) MSP430 İle Tuş Takımı Uygulam

Uygulaması

ası

69

69

8.3-8.3-

) MM74C922 İle Tuş Takımı Uygulaması

) MM74C922 İle

Tuş Takımı Uygulaması

72

72

BÖLÜM 8 –

BÖLÜM 8 – MSP430 I2C MODÜLÜ

MSP430 I2C MODÜLÜ

76

76

8.1-)

8.1-) I2C

I2C Master

Master Modu

Modu

76

76

8.2-)

8.2-) I2C

I2C Slave

Slave Modu

Modu

77

77

8.3-)

8.3-) I2C

I2C Transmitter

Transmitter

77

77

8.4-)

8.4-) I2C

I2C Reveiver

Reveiver

77

77

8.5-)

8.5-) Start

Start Durumu

Durumu

78

78

8.6-)

8.6-) Stop

Stop Durumu

Durumu

78

78

8.7-)

8.7-) Kesmeler

Kesmeler

78

78

BÖLÜM 9 –

BÖLÜM 9 – MSP430 İLE DC

MSP430 İLE DC

MOTOR

MOTOR

KONTROLÜ

KONTROLÜ

87

87

BÖLÜM 10 –

BÖLÜM 10 – MSP430 İLE SD VE MMC KART UYGULAMASI

MSP430 İLE SD VE MMC KART UYGULAMASI

92

92

10.1-10.1-

) MSP430 SD/MMC Uygulaması

) MSP430 SD/MMC Uygulaması

93

93

BÖLÜM 11 –

BÖLÜM 11 –

MSP430

MSP430 EK

EK DONANIMLARI

DONANIMLARI

97

97

11.1-)

11.1-) ez430

ez430 Chronos

Chronos

97

97

11.1.1-11.1.1-

)Kutu İçeriği

)Kutu İçeriği

98

98

11.1.2-11.1.2-

)Teknik Özellikler

)Teknik Özellikler

98

98

11.1.3-11.1.3-

)ez430 Bilgisayar Arayüzü

)ez430 Bilgisayar Arayüzü

99

99

11.2-)eZ430-11.2-)eZ430-

RF2500 İncelemesi

RF2500 İncelemesi

101

101

BÖLÜM 12 –

BÖLÜM 12 – EK KISIM / DERLEYİCİLER VE KULLANILAN DONANIMLAR

EK KISIM / DERLEYİCİLER VE KULLANILAN DONANIMLAR

106

106

12.1-12.1-

) IAR Kullanımı

) IAR Kullanımı

106

106

12.2)

12.2) Code

Code Composer

Composer Studio

Studio

109

109

12.3-12.3-

) Kullanılan Donanımlar

) Kullanılan Donanımlar

112

112

KAYNAKÇA

KAYNAKÇA

113

113

MSP430

(7)

BÖLÜM 1 –

BÖLÜM 1 – MSP430 GENEL ÖZELLİKLERİ VE OSC AYARLARI

MSP430 GENEL ÖZELLİKLERİ VE OSC AYARLARI

1.1-) MSP430

1.1-) MSP430’a’a Genel BakışGenel Bakış

Şekil 1

Şekil 1 - MSP430G2231 Genel Yap- MSP430G2231 Genel Yapısıısı

MSP430 Texas Instrument firmasının ürettiği çok düşük güç tüketimiyle ön plana çıkan MSP430 Texas Instrument firmasının ürettiği çok düşük güç tüketimiyle ön plana çıkan

bir mikrodenetleyicidir.

bir mikrodenetleyicidir. Von NeumannVon Neumann mimarisinde 16 Bit RISC mimarisine sahip birmimarisinde 16 Bit RISC mimarisine sahip bir mikrodenetleyicidir.

mikrodenetleyicidir. İçerisinde I2C, SPI, USART, ADC gibi klasik haline gelmiş birçokİçerisinde I2C, SPI, USART, ADC gibi klasik haline gelmiş birçok modmodülüülü

barındırmaktadı barındırmaktadır.r. MSP430G2201 MSP430G22011 MSP430G2221 MSP430G2231 MSP430G2201 MSP430G22011 MSP430G2221 MSP430G2231 Program Memory(kB) Program Memory(kB) 2 2 2 2 2 2 22 SRAM(Bytes) SRAM(Bytes) 128 128 128 128 128 128 128 128  I/O Pins I/O Pins 10 10 10 10 10 10 10 10  16-bit Timers 16-bit Timers 1 1 1 1 1 1 11 Capture/Compare Registers Capture/Compare Registers 2 2 2 2 2 2 22 USI:I2C/SPI USI:I2C/SPI 11  ADC Channels  ADC Channels 8 8   ADC Resolutions(Bits)  ADC Resolutions(Bits) 10 10  Şekil 2

Şekil 2 --MSP430G2x21, MSP430G2x31 Ailesinin Genel Özellikleri MSP430G2x21, MSP430G2x31 Ailesinin Genel Özellikleri  1.2-)

1.2-)MSP430’un Donanımsal Mimarisi Ve Temel Blok DiyagramıMSP430’un Donanımsal Mimarisi Ve Temel Blok Diyagramı

Şekil 3 – 

Şekil 3 – MSP430’ MSP430’ ununTemel Blok DiyagramıTemel Blok Diyagramı

MSP430

(8)

1.3-)

1.3-)LaunchPad Paket İçeriği Ve Üzerindeki BağlantılarLaunchPad Paket İçeriği Ve Üzerindeki Bağlantılar

Şekil 

Şekil 4 - LaunchPad 4 - LaunchPad Ve Üzerindeki Bağlantılar Ve Üzerindeki Bağlantılar 

LaunchPad’i satın aldığınızda kutusundan 2 adet sticker, programlamak için USB LaunchPad’i satın aldığınızda kutusundan 2 adet sticker, programlamak için USB

kablosu,MSP430G2231 mikrodenetleyici ve MSP430G2211 mikrodenetleyicisi

kablosu,MSP430G2231 mikrodenetleyici ve MSP430G2211 mikrodenetleyicisini barıdıyor.ni barıdıyor. MSP430G2231

MSP430G2231 LaunchPad’in üstünde montaLaunchPad’in üstünde monta j jlı haldelı halde geliyor.geliyor. Ayrıca 32.768Mhz mikro kristalAyrıca 32.768Mhz mikro kristal

ve hızlı başlangıç rehberiyle

ve hızlı başlangıç rehberiyle birliktebirlikte mikrodenetleyiciden çıkış veya giriş almak için dişi pinmikrodenetleyiciden çıkış veya giriş almak için dişi pin yuvası ve erkek pin bulunuyor.

yuvası ve erkek pin bulunuyor. Hızlı başlangıç rehberi bize MSP430’u Hızlı başlangıç rehberi bize MSP430’u tanıtıyor ve programlarınıtanıtıyor ve programlarını

nereden

nereden indirebileceğimizi bize gösteriyor.indirebileceğimizi bize gösteriyor. LaunchPad ayrıca 20 Pin mikrodenetleyicilerideLaunchPad ayrıca 20 Pin mikrodenetleyicileride desteklemektedir.

desteklemektedir.

Şekil 5

Şekil 5 – – MSP430G2231 Ve 20 Pin MSP430’lar MSP430G2231 Ve 20 Pin MSP430’lar 

MSP430

(9)

1.4-1.4-) İlk Uygulama Yazma) İlk Uygulama Yazma

İlk uygulamamızda LaunchPad’in üzerindeki LED’i yakıp söndürmeyi

İlk uygulamamızda LaunchPad’in üzerindeki LED’i yakıp söndürmeyi öğreneceğiz.öğreneceğiz. ŞemadaŞemadakiki

entegre Proteus programında MSP430G2231 olmadığı için bu entegrenin aynı

entegre Proteus programında MSP430G2231 olmadığı için bu entegrenin aynı donanımsaldonanımsal yapısında olan başka bir

yapısında olan başka bir entegre kullanılmıştır.entegre kullanılmıştır.

Şekil 

Şekil 6 -6 -İlk Uygulamanın Devre Şemasıİlk Uygulamanın Devre Şeması

Bu uygulamamız için LaunchPad’in P1.0 uçuna bağlı LED’i yakacağız.

Bu uygulamamız için LaunchPad’in P1.0 uçuna bağlı LED’i yakacağız. Hiçbir bağlantıHiçbir bağlantı yapmadan donanım üstünde bu deneyeceğiz.

yapmadan donanım üstünde bu deneyeceğiz. İlk uygulamayı yazmadan önce uygulamaİlk uygulamayı yazmadan önce uygulama kodunun açıklamalarını sindirerek okumanızı tavsiye ediyorum.

kodunun açıklamalarını sindirerek okumanızı tavsiye ediyorum.

#include "io430.h" #include "io430.h" #include "in430.h" #include "in430.h" #define

#define LED LED P1OUT_bit.P0P1OUT_bit.P0 void delay (void)

void delay (void) { { unsigned int j; unsigned int j; for(j=50000;j;j--); for(j=50000;j;j--); } }

void main( void ) void main( void ) { { WDTCTL = WDTPW + WDTHOLD; WDTCTL = WDTPW + WDTHOLD; DCOCTL=CALDCO_1MHZ; DCOCTL=CALDCO_1MHZ; BCSCTL1=CALBC1_1MHZ; BCSCTL1=CALBC1_1MHZ; P1OUT = 0x00; P1OUT = 0x00; P1DIR = 0x01; P1DIR = 0x01; for(;;) for(;;) { { delay(); delay(); LED ^=1; LED ^=1; } } } } XIN/P2.6/TA1 XIN/P2.6/TA1 13 13 XOUT/P2.7XOUT/P2.7 12 12 TEST/SBWTCKTEST/SBWTCK 11 11 RST/NMI/SBWTDIORST/NMI/SBWTDIO 10 10 P1.2/TA1/CA2 P1.2/TA1/CA2 44 P1.1/TA0/CA1 P1.1/TA0/CA1 33 P1.0/TACLK/ACLK/CA0 P1.0/TACLK/ACLK/CA0 22 P1.3/CAOUT/CA3 P1.3/CAOUT/CA3 55 P1.4/SMCLK/CA4/TCK P1.4/SMCLK/CA4/TCK 66 P1.7/CAOUT/CA7/TDO/TDI P1.7/CAOUT/CA7/TDO/TDI 99 P1.6/TA1/CA6/TDI/TCLK P1.6/TA1/CA6/TDI/TCLK 88 P1.5/TA0/CA5/TMS P1.5/TA0/CA5/TMS 77 U1 U1 MSP430F2011 MSP430F2011 D1 D1 LED-RED LED-RED R1 R1 330 330

MSP430

(10)

Program kodumuzu inceleyelim. Program kodumuzu inceleyelim.

İlk 2 satırda MSP430’un

İlk 2 satırda MSP430’un tanımlanması ve kodların çalışması için kütüphane dosyalarını ekledik.tanımlanması ve kodların çalışması için kütüphane dosyalarını ekledik. Eğer örneğin 2 satırdaki

Eğer örneğin 2 satırdaki #include "in430.h"#include "in430.h" kkütüphanesini eklememiş olsaydık,ütüphanesini eklememiş olsaydık, p

programımız çalışmayacaktı veya rogramımız çalışmayacaktı veya IAR Studio biIAR Studio bize yazdığın kze yazdığın kodu ilk satıodu ilk satırdaki rdaki kütüphanekütüphane dede

bulamıyorum gibisinden bir hata

bulamıyorum gibisinden bir hata verecekti.verecekti. 3 satırdaki kod ise Led

3 satırdaki kod ise Led bağlı ucu programımıza bildirmemize yarıyor.bağlı ucu programımıza bildirmemize yarıyor.

WDTCTL = WDTPW + WDTHOLD;

WDTCTL = WDTPW + WDTHOLD; satırında isesatırında ise WatchDog Timer pasif hale getirilmesiyleWatchDog Timer pasif hale getirilmesiyle

başlamış. Eğer bu satır olmasaydı, mikrodenetleyicinin içind

başlamış. Eğer bu satır olmasaydı, mikrodenetleyicinin içinde bulunan WDT birimi belirlie bulunan WDT birimi belirli p

periyotlarla, temizlenmediği takdirde mikrodenetleyiciye reset eriyotlarla, temizlenmediği takdirde mikrodenetleyiciye reset attıracaktıattıracaktı.. DCOCTL=CALDCO_1MHZ;

DCOCTL=CALDCO_1MHZ; BCSCTL1=CALBC1_1MHZ; BCSCTL1=CALBC1_1MHZ;

Bu satırda ise mikrodenetleyicinin çalışması için gerekli saat darbelerinin ayarlarlamaları Bu satırda ise mikrodenetleyicinin çalışması için gerekli saat darbelerinin ayarlarlamaları yapılmakta. Bunun

yapılmakta. Bunun için dahili RC osilatör, 1MHz e ayarlanmış ve mikrodenetleyicinin clockiçin dahili RC osilatör, 1MHz e ayarlanmış ve mikrodenetleyicinin clock modülüne bu frekans için

modülüne bu frekans için kalibrasyon değerleri yüklenmiştir.kalibrasyon değerleri yüklenmiştir.

Bir sonraki satırda ise led’in bağlı olduğu pin ile ilgili ayarlamalar yapılmaktadır. MSP430 un Bir sonraki satırda ise led’in bağlı olduğu pin ile ilgili ayarlamalar yapılmaktadır. MSP430 un

pinleri bir adet register

pinleri bir adet register üzerinden okunup yazılamamaktadır. İlgili pin giriş konumundaysa,üzerinden okunup yazılamamaktadır. İlgili pin giriş konumundaysa, PXIN Register’ından, ilgili pin, çıkış

PXIN Register’ından, ilgili pin, çıkış konumundaysa, PXOUT register ından ilgili değerler okunupkonumundaysa, PXOUT register ından ilgili değerler okunup yazılmaktadır. Bu satırda ilk olarak,

yazılmaktadır. Bu satırda ilk olarak, P3OUT pini sıfırlanmakta ve alt satırda, ilgiliP3OUT pini sıfırlanmakta ve alt satırda, ilgili pin in DATApin in DATA

DIRECTION Register’ına, çıkış olarak kullanacağımızın bilgisi

DIRECTION Register’ına, çıkış olarak kullanacağımızın bilgisi verilmekteverilmektedir.dir. MSP430’larda herhangi bir pini çıkış yapmak istiyorsak

MSP430’larda herhangi bir pini çıkış yapmak istiyorsak o pinin DATA DIRECTION Ro pinin DATA DIRECTION Register’ınaegister’ına

Lojik1, giriş yapmak istiyorsak o pinin DATA DIRECTION Register’ına Lojik0 yükleme Lojik1, giriş yapmak istiyorsak o pinin DATA DIRECTION Register’ına Lojik0 yüklememizmiz gerekmektedir.

gerekmektedir.

Herhangi bir pini Digital I/O olarak kullanabilmemiz için, DIRECTION register ı Lojik 1, Herhangi bir pini Digital I/O olarak kullanabilmemiz için, DIRECTION register ı Lojik 1, SELECTION Register’ı Lojik 0 olması gerekir. İlgili pin ADC girişi olarakta kullanılabiliyorsa, o pin SELECTION Register’ı Lojik 0 olması gerekir. İlgili pin ADC girişi olarakta kullanılabiliyorsa, o pin için ADC10AE0 Register’ına Lojik 0 yazılmalıdır. Fakat

için ADC10AE0 Register’ına Lojik 0 yazılmalıdır. Fakat,, default durumda, zaten Lojik0 olduğudefault durumda, zaten Lojik0 olduğu için yeniden ayarlamaya gerek yoktur.

için yeniden ayarlamaya gerek yoktur.

MSP430

(11)

Programımıza devam edecek olursak, ardından sonsuz döngüye girmiş ve belirli bir süre Programımıza devam edecek olursak, ardından sonsuz döngüye girmiş ve belirli bir süre

gecikme fonksiyonunun(

gecikme fonksiyonunun(200ms) ardından LED terslenmektedir ve bu şekilde sürekli aynı işlem200ms) ardından LED terslenmektedir ve bu şekilde sürekli aynı işlem tekrarlanmıştır.

tekrarlanmıştır.

1.5-1.5-) MSP430 Osilatör Ayarları) MSP430 Osilatör Ayarları

İlk uygulamayı yazarken bahsettiğimiz osilatörler hakkında bilgi vereceğim.

İlk uygulamayı yazarken bahsettiğimiz osilatörler hakkında bilgi vereceğim. MSP430 kendiMSP430 kendi

içerisinde kullanacağı 3 adet saat

içerisinde kullanacağı 3 adet saat kaynağına sahiptir. Bunlar;kaynağına sahiptir. Bunlar;

Master Clock (MCLK)

Master Clock (MCLK) : CPU ve : CPU ve birkaç çevresel birim tarafından kullanılır.birkaç çevresel birim tarafından kullanılır.

Sun-system Master Clock (SMCLK)

Sun-system Master Clock (SMCLK) : Çevresel birimler için kullanılır.: Çevresel birimler için kullanılır. Auxiliary Clock (ACLK

Auxiliary Clock (ACLK) : Çevresel birimler için kullanılır.) : Çevresel birimler için kullanılır.

Bu birimlerin nasıl bağlandıkları ve çıkışa nasıl yansıdıkları şekilde görülmektedir. Bu birimlerin nasıl bağlandıkları ve çıkışa nasıl yansıdıkları şekilde görülmektedir.

Şekil 

Şekil 7 7 – – Osilatör KaynaklarıOsilatör Kaynakları

Şekil 7’de görülen MCLK veya

Şekil 7’de görülen MCLK veya SMCLK genellikle MHz düzeylerinde iken, ACLK birimi iseSMCLK genellikle MHz düzeylerinde iken, ACLK birimi ise genellikle kHz mertebesinde

genellikle kHz mertebesindedir. MSP430’a saat sinyali üreten 3 dir. MSP430’a saat sinyali üreten 3 birim bulunur:birim bulunur:

Low-or-high-freq-crystal-osc (LFXT1) :

Low-or-high-freq-crystal-osc (LFXT1) : GenGenelde 32kHz civarındadır. Eğer dıştanelde 32kHz civarındadır. Eğer dıştan kristal kullanılacaksa MSP430 ile

kristal kullanılacaksa MSP430 ile senkronize yapılması gerekmektedir.senkronize yapılması gerekmektedir.

Internal Very-Low-Power-Low-Freq-Osc (VLO):

Internal Very-Low-Power-Low-Freq-Osc (VLO): Genellikle MSP430f2xx modellerindeGenellikle MSP430f2xx modellerinde

yaygındır. Kristal kullanılmayacaks

yaygındır. Kristal kullanılmayacaksa LFXT1’in alternatifidir. Msp430f2013 için a LFXT1’in alternatifidir. Msp430f2013 için hızı 12kHz’dir.hızı 12kHz’dir.

Digitally Controlled Osc (DCO) :

Digitally Controlled Osc (DCO) : Tüm MSP430 Tüm MSP430 entegrelerientegrelerinde mevcuttur.nde mevcuttur.

1us içinde çalışmaya başlayan, yazılımsal olara kontrol edilebilen, RC osilatördür. 1us içinde çalışmaya başlayan, yazılımsal olara kontrol edilebilen, RC osilatördür. Frekans ayarlama kısmı DCOCTL, BCSCTL1

Frekans ayarlama kısmı DCOCTL, BCSCTL1-3 registerleri ile IFG1 ve -3 registerleri ile IFG1 ve IE2 bitleri ile kontrol edilir.IE2 bitleri ile kontrol edilir.

Şekil 

Şekil 8 - L or H Freq. Crystal Osc 8 - L or H Freq. Crystal Osc 

MSP430

(12)

BÖLÜM 2 –

BÖLÜM 2 –

MSP430 RISC CPU

MSP430 RISC CPU

2.1-) MSP430

2.1-) MSP43016 BİT16 BİTRISC CPURISC CPU

MSP430’un diğer çevrebirimlerine geçmeden önce işlemcisini inceleyelim. Çünkü sahip olduğu MSP430’un diğer çevrebirimlerine geçmeden önce işlemcisini inceleyelim. Çünkü sahip olduğu işlemcide aşina olduğumuz PIC’te olmayan özellikler var.

işlemcide aşina olduğumuz PIC’te olmayan özellikler var. ASM olarak komut setiASM olarak komut setiIntelIntel’in komut setine’in komut setine benziyor biraz. Toplam

benziyor biraz. Toplam 2727 adetadetkomuta sahip olan MSP430′dakomuta sahip olan MSP430′daASMASM iile program yazmak çok da zorle program yazmak çok da zor değil aslında.

değil aslında.

Biz burada komutlardan fazla bahsetmeyeceğiz. Çünkü komutlar zaten az hem de Biz burada komutlardan fazla bahsetmeyeceğiz. Çünkü komutlar zaten az hem de datasheetinde en ince ayrıntısına kadar anlatılmış.

datasheetinde en ince ayrıntısına kadar anlatılmış. İşlemcinin öne çıkan özelliklerini sıralarsak;

İşlemcinin öne çıkan özelliklerini sıralarsak;

 Stack Pointer, Program Counter veStack Pointer, Program Counter ve Status Register a erişebilme,Status Register a erişebilme, 

 16 Bit adreslemeyle belleğe daha az erişim gerekliliği (fetch),16 Bit adreslemeyle belleğe daha az erişim gerekliliği (fetch), 

 7 adet adresleme modu,7 adet adresleme modu, 

 RISC Mimarisine sahip işlemcide toplam 27 adet komut,RISC Mimarisine sahip işlemcide toplam 27 adet komut, 

 Bazı işlemleri tek komut çevriminde Bazı işlemleri tek komut çevriminde yapabilme,yapabilme, 

 16 Bit olmasına rağmen byte ya da word16 Bit olmasına rağmen byte ya da word türünde veri adresleyebilmetüründe veri adresleyebilme Herşeyden önce bu

Herşeyden önce bu fetchfetch olayından biraz bahsedelim. Bir işlemcide her ASM komutununolayından biraz bahsedelim. Bir işlemcide her ASM komutunun

makina kodu olarak hexadecimal bir karşılığı vardır. Normalde ASM olarak yazdığımız. makina kodu olarak hexadecimal bir karşılığı vardır. Normalde ASM olarak yazdığımız.

MOV AL,0x33 MOV AL,0x33

kodunun makina dili olarak karşılığı

kodunun makina dili olarak karşılığı B433B433tür.tür. Bu kodBu kod B4B4 veve3333 olmak üzere iki kısıma ayrılır.olmak üzere iki kısıma ayrılır.B4B4

kısmı

kısmı OpcodeOpcode olarak tabir edilen asıl işlenecek olak kısımdır. CPU daki kod çözücü tarafındanolarak tabir edilen asıl işlenecek olak kısımdır. CPU daki kod çözücü tarafından bu kod çözülür ve

bu kod çözülür ve işletilir.işletilir.

Komut kuyruğundaki maksimum büyüklüğü işlemcinin veri yolu dedidiğimiz kısım belir

Komut kuyruğundaki maksimum büyüklüğü işlemcinin veri yolu dedidiğimiz kısım belirler.Buler.Bu

birim eğer 8 bit

birim eğer 8 bit ise işlemci her defasında maksimumise işlemci her defasında maksimum 8 bit(255)8 bit(255)adresleme yapabilir, eğer 16 bitadresleme yapabilir, eğer 16 bit ise de maksimum

ise de maksimum 16 bit(65535)16 bit(65535) adresleme yapabilir. İşlemci, her seferinde veri yolununadresleme yapabilir. İşlemci, her seferinde veri yolunun genişliği kadar veri

genişliği kadar veri işleyebilir.işleyebilir.

Diyelim ki bir toplama işlemi yapacağız ve bu işlemde toplayacağımız sayılardan ilki

Diyelim ki bir toplama işlemi yapacağız ve bu işlemde toplayacağımız sayılardan ilki 14001400 ikincisi ise

ikincisi ise 5353. Bu toplama işlemini 8 bitlik bir mikrodenetleyicide yaptığımızı varsayarsak. Bu toplama işlemini 8 bitlik bir mikrodenetleyicide yaptığımızı varsayarsak işlemci 1400 için

işlemci 1400 için 1400=0×0578(2 byte) 21400=0×0578(2 byte) 2 kez veriyoluna gidip veriyi oradan çekip işleme tabikez veriyoluna gidip veriyi oradan çekip işleme tabi tutacaktır.

tutacaktır.5353 için iseiçin ise 11 kez gitmesi yeterli. Yani bir toplama işlemi için en azkez gitmesi yeterli. Yani bir toplama işlemi için en az 33 kez veriyolunakez veriyoluna

gidip, bilgiyi çekip işleme tabi tutmaktadır. Bu anlattıklarımız 8 bit sistemler için geçerli. gidip, bilgiyi çekip işleme tabi tutmaktadır. Bu anlattıklarımız 8 bit sistemler için geçerli.

Bir de 16 bit sistemlerden bahsedelim. 16 bit bir sistemde bir seferde maksimum Bir de 16 bit sistemlerden bahsedelim. 16 bit bir sistemde bir seferde maksimum 2byte(65535)

2byte(65535) adreslenebildiğinden işlemci 1400 içinadreslenebildiğinden işlemci 1400 için 11 kez, 53 için yinekez, 53 için yine 11 kez veriyolunakez veriyoluna gidecektir. Toplam(en az)

gidecektir. Toplam(en az) 22 seferde işi halledebiliyor. Bir de bunun hız gerektirenseferde işi halledebiliyor. Bir de bunun hız gerektiren

uyg

uygulamalarda ve sürekli olarak yapıldığını düşünün. İşte buulamalarda ve sürekli olarak yapıldığını düşünün. İşte bu veriyoluna gidip bilgiyi getirmeveriyoluna gidip bilgiyi getirme

işlemine

işlemine  fetch fetch denilmektedir. Çok kapsamlı programlar yazmadıkça veri yolunun sağladığıdenilmektedir. Çok kapsamlı programlar yazmadıkça veri yolunun sağladığı

fayda pek farkedilmez aslında. O yüzden 8 bitlik bir PIC, Atmel veya 8051 çoğ

fayda pek farkedilmez aslında. O yüzden 8 bitlik bir PIC, Atmel veya 8051 çoğu uygulamalaru uygulamalar

için hala yeterlidir. Ama büyük işlerle uğraşıyorsak 8

için hala yeterlidir. Ama büyük işlerle uğraşıyorsak 8 bit hem vakit kaybettirir hem de zaman.bit hem vakit kaybettirir hem de zaman.

MSP430

(13)

MSP430’un CPU biriminde toplam

MSP430’un CPU biriminde toplam 1616adet saklayıcı görev yapmaktadır. Bunlardan ilk 4’üadet saklayıcı görev yapmaktadır. Bunlardan ilk 4’ü iişlemci için özel olarak ayrılmıştır(Dedicateşlemci için özel olarak ayrılmıştır(Dedicated Registers). Bunlar;d Registers). Bunlar; PC,SP,SR/CG1,CG2PC,SP,SR/CG1,CG2 olarakolarak

adlandırılır.Diğer 12 si

adlandırılır.Diğer 12 si ise genel amaçlı(General Purpose Registers)olarak kullanılaise genel amaçlı(General Purpose Registers)olarak kullanılan(n(R4-R15R4-R15

arası)saklayıc

arası)saklayıcılardır.Aşağıdaki resimde bunu biraz daha ılardır.Aşağıdaki resimde bunu biraz daha net anlayabilirsinet anlayabilirsiniz.niz.

MSP430’da yer alan CPU

MSP430’da yer alan CPU kaydedicileri kaydedicileri 

PC (Program Counter

PC (Program Counter – –R0) :R0) : 16 bitlik 64-16 bitlik 64-KB adres uzayına sahip program sayıcıdır. HerKB adres uzayına sahip program sayıcıdır. Her

artışında(n+2) bir sonraki işletilecek olan komutu gösterir. Komutlar 2 byte den fazla bile olsa artışında(n+2) bir sonraki işletilecek olan komutu gösterir. Komutlar 2 byte den fazla bile olsa PC ona göre adresleme yapabilir ve

PC ona göre adresleme yapabilir ve atanan tüm komutları bir düzene sokabilir.atanan tüm komutları bir düzene sokabilir.

SP (Stack Pointer

SP (Stack Pointer – – R1) :R1) :Stack pointer Stack pointer dediğimiz alan, işlemcinin herhangi bir kesme veya altdediğimiz alan, işlemcinin herhangi bir kesme veya alt

program geldiği anda

program geldiği anda PC(Program Counter)nin o anki konumunun(adres) kaydedildiği alandır.PC(Program Counter)nin o anki konumunun(adres) kaydedildiği alandır.

Kesme veya alt pro

Kesme veya alt program sonlandığı an PC nereye dallanması gerektiğini buraya kaydettiği engram sonlandığı an PC nereye dallanması gerektiğini buraya kaydettiği en

son adresten bilir. Bu alan MSP430

son adresten bilir. Bu alan MSP430 da RAM’in en yüksek değerlikli bloğunda 0×0280da RAM’in en yüksek değerlikli bloğunda 0×0280 adresinden itibaren yer alır ve

adresinden itibaren yer alır ve dikey olarak(yukarıdan aşağı) adreslenir. Stack Pointer’a herdikey olarak(yukarıdan aşağı) adreslenir. Stack Pointer’a her erişim PUSH(itme) veya POP(çekme) olarak adlandırılır. Her

erişim PUSH(itme) veya POP(çekme) olarak adlandırılır. Her POP işlemiPOP işlemi LIFO((Last In First Out LIFO Last In First Out ))

kuralıyla iş görür ve

kuralıyla iş görür ve reset anında bu saklayıcıreset anında bu saklayıcı sıfırlanırsıfırlanır. Aşağıda, PUSH ve POP anlarında. Aşağıda, PUSH ve POP anlarında SPSP veve PC

PC değerlerine dikkat ediniz.değerlerine dikkat ediniz.

Stack Pointer’da PUSH ve POP işlemleri  Stack Pointer’da PUSH ve POP işlemleri 

MSP430

(14)

Yukarıdaki resimde 0×280 adresinden itibaren adreslenen Stack bölgesinde PUSH ve Yukarıdaki resimde 0×280 adresinden itibaren adreslenen Stack bölgesinde PUSH ve POPPOP olayları anlatılmıştır. Resimde de görüldüğü gibi Stack Pointer’a itilen her adresi, dikey olayları anlatılmıştır. Resimde de görüldüğü gibi Stack Pointer’a itilen her adresi, dikey adreslemeden dolayı RAM’de daha düşük

adreslemeden dolayı RAM’de daha düşük adresli bölgelere yazılmaktadır. Ve çekilen her adresli bölgelere yazılmaktadır. Ve çekilen her değerdeğer için de

için de LIFOLIFOkuralı geçerlidir.kuralı geçerlidir.

SR (Status Register

SR (Status Register – – R2)R2) ::

Status Saklayıcısı Status Saklayıcısı

C(Carry) :

C(Carry) : Eğer bir aritmetik işlem sonucunda elde oluşmuşsa bu bitEğer bir aritmetik işlem sonucunda elde oluşmuşsa bu bit setset edilir.edilir. Z(Zero) :

Z(Zero) : Eğer bir aritmetik işlem sonucu 0 sa Eğer bir aritmetik işlem sonucu 0 sa bu bitbu bit setsetedilir, değilseedilir, değilse 00dır.dır. N(Negative) :

N(Negative) : Eğer bir aritmetik işlem sonucu 0 dan Eğer bir aritmetik işlem sonucu 0 dan küçükse bu bitküçükse bu bit setset edilir.edilir. GIE(General Interrupts Enable) :

GIE(General Interrupts Enable) : Eğer genel kesmelere izin verilmek isteniyorsa bu bitEğer genel kesmelere izin verilmek isteniyorsa bu bit setset edilmelidir.

edilmelidir.

CPU OFF: Düşük

CPU OFF: Düşük güç modu için CPU’yu devre dışı bırakma güç modu için CPU’yu devre dışı bırakma biti, Eğer bu bitbiti, Eğer bu bit setset edilirse CPUedilirse CPU

devre dışıdır. Ve sistem düşük güç modunda çalışmaktadır. devre dışıdır. Ve sistem düşük güç modunda çalışmaktadır.

OSC OFF: Bu

OSC OFF: Bu bit set edilirsebit set edilirse LFXT1LFXT1kristal osilatörü devre dışı kalır.kristal osilatörü devre dışı kalır. SCG0(System Clock Generator 0 ) :

SCG0(System Clock Generator 0 ) : Eğer bu bitEğer bu bitsetset edilirseedilirse DCOCLKDCOCLKdevre dışı kalır.devre dışı kalır. SCG1(System Clock Generator 1 ) :

SCG1(System Clock Generator 1 ) : Eğer bu bitEğer bu bitsetset edilirseedilirseSMCLKSMCLKdevre dışı kalır.devre dışı kalır.

V(Overflow) :

V(Overflow) : Taşma biti. Eğer bir aritmetik işlemin sonunda işaretli tarafa taşma olmuşsa buTaşma biti. Eğer bir aritmetik işlemin sonunda işaretli tarafa taşma olmuşsa bu

bit

bit setset edilir.edilir.

Durum kontrol bitlerinin çoğunu

Durum kontrol bitlerinin çoğunu CCderleyicisi bizim yerimize yapıyor… Donanım için kullanıderleyicisi bizim yerimize yapıyor… Donanım için kullanılanlan

diğer bitler ise

diğer bitler ise MSP430 CMSP430 Cderleyicisinde işlemler bitlerin isimleriyle yapıldığındanderleyicisinde işlemler bitlerin isimleriyle yapıldığından

dolayı(Özellikle

dolayı(ÖzellikleClockClockkısmında) işlerimiz bayağı bir kolaylaşıyor.kısmında) işlerimiz bayağı bir kolaylaşıyor.

CPUOFF, OSCOFF, SCG0 ve SCG1

CPUOFF, OSCOFF, SCG0 ve SCG1 saklayıcıları ise CPU nunsaklayıcıları ise CPU nun düşük güçdüşük güç modunda çalışmasınımodunda çalışmasını sağlamak için

sağlamak için gereken kontrol bitleridir vegereken kontrol bitleridir ve reset anreset anında tüm bitler 0’dır.ında tüm bitler 0’dır.

CG1

CG1 – –CG2 (Constant Generators) :CG2 (Constant Generators) : MSP430’un işlemcisinde ortak kullanılan altı MSP430’un işlemcisinde ortak kullanılan altı adet sabit,adet sabit, CG1

CG1 veve CG2CG2kaydedicileri tarafından üretilir. Bu birimin amacı kaydedicileri tarafından üretilir. Bu birimin amacı aritmetik işlemlerde çok sıkaritmetik işlemlerde çok sık kullanılan sayıları üreterek belleğe erişim gereksinimini azaltıp, işlemleri daha hızlı

kullanılan sayıları üreterek belleğe erişim gereksinimini azaltıp, işlemleri daha hızlı

yapabilmektir. Bu işlemler için ekstradan herhangi bir komut olmaması çok büyük avantajdır. yapabilmektir. Bu işlemler için ekstradan herhangi bir komut olmaması çok büyük avantajdır. Assembler bu işlemleri otomatik olarak

Assembler bu işlemleri otomatik olarak yapmaktadır. Aşağıdaki resimdeyapmaktadır. Aşağıdaki resimde CG1 veCG1ve CG2CG2

kaydedicilerine yüklenen değerler sonucu yapılacak işlem

kaydedicilerine yüklenen değerler sonucu yapılacak işlem görülmektedirgörülmektedir..

MSP430

(15)

R2(CG1)

R2(CG1)veveR3(CG2)R3(CG2)Saklayıcıları yüklenen değerler sonucu yapılan aritmetik Saklayıcıları yüklenen değerler sonucu yapılan aritmetik işlemler işlemler 

R4

R4 – – R12 (General Purpose Registers) :R12 (General Purpose Registers) : Bu 12 saklayıcı genel kullanım amaçlı saklayıcılardırBu 12 saklayıcı genel kullanım amaçlı saklayıcılardır.. BuBu

saklayıcıların hepsi akümülatör olarak veya adres

saklayıcıların hepsi akümülatör olarak veya adres göstericisi olarak veyahut da göstericisi olarak veyahut da değerlerideğerleri indekslemek(C

indekslemek(C’deki diziler gibi) ’deki diziler gibi) için kullanılabiliriçin kullanılabilir. Byte. Byte ya daya daWordWord adreslenebilir sistemdedir.adreslenebilir sistemdedir.

MSP430

(16)

BÖLÜM 2 –

BÖLÜM 2 – MSP430 GİRİŞ ÇIKIŞ AYARLARI

MSP430 GİRİŞ ÇIKIŞ AYARLARI

MSP430G2231 denetleyicisini pin yapısı

MSP430G2231 denetleyicisini pin yapısı aşağıda görülmektedir.aşağıda görülmektedir.

Şekil 9

Şekil 9--MSP430G2231 Pin YapısıMSP430G2231 Pin Yapısı

Yukardaki şekilden de anlaşılacağı üzere pin sayısı düşük olduğu için MSP430’un

Yukardaki şekilden de anlaşılacağı üzere pin sayısı düşük olduğu için MSP430’un pinlerinepinlerine

birden çok görev yüklenmiştir.MSP430G2231 P1 ve P2 olmak üzere iki adet

birden çok görev yüklenmiştir.MSP430G2231 P1 ve P2 olmak üzere iki adet Giriş/Çıkış portuGiriş/Çıkış portu vardır.

vardır. 

 P1 = 8 Giriş/ÇıkışP1 = 8 Giriş/Çıkış 

 P2 = 2 Giriş/Çıkış bulunmaktadırP2 = 2 Giriş/Çıkışbulunmaktadır.. Portların tamamında Pull

Portların tamamında Pull-up veya Pull--up veya Pull-down dirençleri bulunmaktadır.down dirençleri bulunmaktadır. 2.1-)

2.1-)Pin Yönlendirme Ve KullanımıPin Yönlendirme Ve Kullanımı

Diğer mikroişlemcilerden farklı olarak MSP430’da pin görevlerini özel olarak, diğer Diğer mikroişlemcilerden farklı olarak MSP430’da pin görevlerini özel olarak, diğer registerlerde

registerlerden bağımsız n bağımsız seçmek mümkündür.seçmek mümkündür. Genel anlamda ise pin

Genel anlamda ise pin yönlendirmelerini sağlayan registerleyönlendirmelerini sağlayan registerlerr(kaydediciler)(kaydediciler)ve görevleri kısacave görevleri kısaca şöyledir.

şöyledir. 

 PxIN :PxIN : Port okuma Port okuma kaydedicisidir.kaydedicisidir.Sadece okuma yapılabilir.Sadece okuma yapılabilir. 

 PxIN :PxIN : Port okuma Port okuma kaydedicisidirkaydedicisidir. Sadece okuma yapılabilir.. Sadece okuma yapılabilir. 

 PxDIR :PxDIR : Port yönlendirmesidir.Port yönlendirmesidir.

Bit 1 olduğunda çıkış, 0 olduğunda giriştir. Bit 1 olduğunda çıkış, 0 olduğunda giriştir. Bu özellik itibari

Bu özellik itibari ile AVR’lere benzemektedir.ile AVR’lere benzemektedir. 

 PxREN :PxREN : Pull-Pull-up direnç ekleme ya da çıup direnç ekleme ya da çıkarma kaydedicisidir.karma kaydedicisidir. 1 olduğunda ilgili pine pull

1 olduğunda ilgili pine pull--up direnci bup direnci bağlamaktadır.ağlamaktadır.

 PxSEL VE PxSEL2 :PxSEL VE PxSEL2 : Bu kaydediciBu kaydediciportun ilgili bitinin ne portun ilgili bitinin ne amaçla kullanılacağınıamaçla kullanılacağını

belirler. belirler.

Özellikleri ise aşağıda görülebilir. Özellikleri ise aşağıda görülebilir.

Şekil 

Şekil 10 - Pin10 - PinGörevlerinin TanımıGörevlerinin Tanımı

MSP430

(17)

Şekil 11

Şekil 11- P1- P1′  ′  e Ait Olan Saklayıcılar ve Özellikleri e Ait Olan Saklayıcılar ve Özellikleri 

Tabloda da görüldüğü gibi MSP430

Tabloda da görüldüğü gibi MSP430

′ ′ 

da g/ç işlemleri PIC’deki gibi değil. Portuda g/ç işlemleri PIC’deki gibi değil. Portu okumak için ayrı,okumak için ayrı, porta yazmak için ayrı kaydediciler kullanmamız gerekiyor. Bir ayrıntıyı daha belirte

porta yazmak için ayrı kaydediciler kullanmamız gerekiyor. Bir ayrıntıyı daha belirteyimyim MSP430

MSP430

′ ′ 

da PIC’teki gibida PIC’teki gibi bit bit işlem yapmak bit bit işlem yapmak da mümkün kılınmış. Bununla ilgili detaya ilerideda mümkün kılınmış. Bununla ilgili detaya ileride değineceğiz. Şimdi tek tek bu

değineceğiz. Şimdi tek tek bu kaydedicileri inceleyekaydedicileri inceleyelim…lim…

P1DIR: Bu

P1DIR: Bu saklayıcı PIC tekisaklayıcı PIC teki TRISTRIS yazmacına benzer. Ama TRIS yazmacıylayazmacına benzer. Ama TRIS yazmacıyla P1DIRP1DIRyazmacıyazmacı

arasında ters bir ilişki vardır. Saklayıcıya yazılan değer;

arasında ters bir ilişki vardır. Saklayıcıya yazılan değer; Bit = 1 iseBit = 1 ise çıkışçıkış, Bit = 0 ise, Bit = 0 ise girişgirişolarakolarak

ayarlanır.

ayarlanır. Reset durumunda değeri 0×00Reset durumunda değeri 0×00’dır.’dır. Örnek kullanım:Örnek kullanım:

P1DIR = 0xF0;

P1DIR = 0xF0; // İlk dört bit giriş diğerleri çıkış// İlk dört bit giriş diğerleri çıkış P1REN: P1

P1REN: P1 deki dahilideki dahili pull-uppull-up veyaveya pull-downpull-downdirençlerini kontrol etmek için kullanılır. Eğer;dirençlerini kontrol etmek için kullanılır. Eğer;

Bit = 0 ise

pull-up/pull-Bit = 0 ise pull-up/pull-down dirençleridown dirençleripasif pasif Bit = 1 ise pull-up/pull-Bit = 1 ise pull-up/pull-down dirençleridown dirençleri aktiftir.aktiftir.

Örnek kullanım:

Örnek kullanım:

P1REN = 0xF0;

P1REN = 0xF0; // İlk dört pindeki pull// İlk dört pindeki pull--up dirençleri aktif up dirençleri aktif  P1REN

P1RENsaklayıcısının ilgili bitlerinin 1 olması durumunda dirençlerin pullsaklayıcısının ilgili bitlerinin 1 olması durumunda dirençlerin pull-up veya pull-down-up veya pull-down olma durumu

olma durumu P1OUT P1OUT saklayıcısı tarafından kontrol edilir.saklayıcısı tarafından kontrol edilir. P1OUT: Bu

P1OUT: Bu kaydedici isekaydedici iseP1P1portunda çıkış olarak ayarlanan pinlerin portunda çıkış olarak ayarlanan pinlerin durumunu değiştirmekdurumunu değiştirmek

için kullanılır. Yine

için kullanılır. Yine kaydedicinin bitlerine 0 yazarsak çıkışımızkaydedicinin bitlerine 0 yazarsak çıkışımız lojik 0lojik 01 yazarsak çıkışımız1 yazarsak çıkışımız lojik 1lojik 1 dir.

dir.Örnek kullanım:Örnek kullanım:

P1OUT = 0x01;

P1OUT = 0x01; //P1.0 = 1//P1.0 = 1 Ayrıca

Ayrıca P1P1 dekideki P1RENP1REN saklayıcısının pullsaklayıcısının pull-up veya pull--up veya pull-down olma durumunu da bu down olma durumunu da bu saklayıcısaklayıcı belirler. Eğer

belirler. Eğer P1OUTP1OUTsaklayıcısındasaklayıcısındaP1RENP1RENsaklayıcısına denk gelen; Bit = 0 isesaklayıcısına denk gelen; Bit = 0 ise P1RENP1REN in ilgiliin ilgili biti

biti pull-downpull-down Bit = 1 iseBit = 1 ise P1RENP1REN in ilgili bitiin ilgili biti pull-uppull-upgörevini yapmak üzere görevini yapmak üzere değişmektedirdeğişmektedir..

P1IN: Bu

P1IN: Bu kaydedicikaydedici P1P1portunun giriş olarak ayarlanmış pinlerinin portunun giriş olarak ayarlanmış pinlerinin durumunu kontrol etmekdurumunu kontrol etmek için kullanılır. Saklayıcı okunduktan sonra geri dönen değer Bit =

için kullanılır. Saklayıcı okunduktan sonra geri dönen değer Bit = 0 ise pin0 ise pin lojik 0lojik 0,, Bit = 1 ise pinBit = 1 ise pin lojik 1

lojik 1 dir.dir.Örnek kullanım:Örnek kullanım:

MSP430

(18)

if(P1IN = 0x01) if(P1IN = 0x01) P1OUT=0x02;

P1OUT=0x02; //P1.0 = 1 ise P1.1 i lojik 1 yap//P1.0 = 1 ise P1.1 i lojik 1 yap

P1SEL: P1

P1SEL: P1 Portunun herhangi bir pinini Portunun herhangi bir pinini birkaç amaç için kullanabileceğininden baştabirkaç amaç için kullanabileceğininden başta

bahsetmiştik.

bahsetmiştik.P1SELP1SEL saklayıcısı seçtiğimiz pinin hangi amaç için saklayıcısı seçtiğimiz pinin hangi amaç için kullanılacağını seçmemizikullanılacağını seçmemizi

sağlar. sağlar.

Burada

Burada PxSEL2PxSEL2 saklayıcısı şimdilik bizim işimize saklayıcısı şimdilik bizim işimize yaramayacakyaramayacak çünkü kullanacak çok fazla modülçünkü kullanacak çok fazla modül

yok. Şimdilik giriş/çıkış

yok. Şimdilik giriş/çıkış veya diğer modüllere ait pinleri seçmek içinveya diğer modüllere ait pinleri seçmek için P1SELP1SEL veve P1DIRP1DIR

saklayıcılarını yeterli. saklayıcılarını yeterli.

Şekil 12

Şekil 12- Herhangi bir p- Herhangi bir pine ait fonksiyonları belirlemek içinine ait fonksiyonları belirlemek için P1SELP1SELveveP1DIRP1DIRsaklayıcısınasaklayıcısına yazılması gereken değerler 

yazılması gereken değerler  Şimdi de

Şimdi de P1P1içiniçinkesmelerikesmeleri inceleyelim…inceleyelim…

MSP430F2001

MSP430F2001′′ininP1P1 veveP2P2‘sindeki‘sindekiher pinher pin harici kesme kabiliyetine sahiptirharici kesme kabiliyetine sahiptir. Yani başlangıç. Yani başlangıç

için seçtiğimiz bu modelde 10 adet g/ç bulunmakla beraber bu 10 un 10 u da harici k

için seçtiğimiz bu modelde 10 adet g/ç bulunmakla beraber bu 10 un 10 u da harici k esme içinesme için kullanılabiliyor. Bu şimdilik hiç de

kullanılabiliyor. Bu şimdilik hiç de küçümseneceküçümsenecek bir k bir özellik değil. özellik değil. KesmelerKesmeler programın başındaprogramın başında bir vektör ile tanımlanabiliyor. Bu ise

bir vektör ile tanımlanabiliyor. Bu ise hızhızdemek. Evet,demek. Evet,baştabaşta bit bit işlem yapabilmebit bit işlem yapabilme imkânıimkânıvarvar

demiştik. IAR’da bit bit işlem yapmak her ne

demiştik. IAR’da bit bit işlem yapmak her ne kadar dkadar daaHi-Tech PIC CHi-Tech PIC C gibi olmasa da yine degibi olmasa da yine de

idare eder gibi. Bu kısımdaki örneklerde de bit bit

idare eder gibi. Bu kısımdaki örneklerde de bit bit işlem yapmayı göstermeye çalışacağım.işlem yapmayı göstermeye çalışacağım.

P1IFG (P1 Interrupt Flag) : P1

P1IFG (P1 Interrupt Flag) : P1‘deki her pinde harici kesme ‘deki her pinde harici kesme özelliği olduğundanözelliği olduğundan bahsetmiştik.

bahsetmiştik. P1P1pinlerinin hangisinde kesme oluştuğunupinlerinin hangisinde kesme oluştuğunu P1IFGP1IFGsaklayıcısının durumundansaklayıcısının durumundan öğreniyoruz. Eğer seçtğimiz; Bit = 0

öğreniyoruz. Eğer seçtğimiz; Bit = 0 ise, o pinde kesmeise, o pinde kesme oluşmamışoluşmamış, Bit = , Bit = 1 ise, o 1 ise, o pinde pinde kesmekesme

MSP430

(19)

oluşmuş

oluşmuş anlamına gelmektedir. Eğer kesme olmuşsaanlamına gelmektedir. Eğer kesme olmuşsa P1IFGP1IFGsaklayıcısı yazılımdasaklayıcısı yazılımda

temizlenmeli

temizlenmelidir. Aksi halde program hep kesme varmış dir. Aksi halde program hep kesme varmış gibi algılayacaktır.gibi algılayacaktır. Örnek Kullanım :Örnek Kullanım :

if(P1IFG_bit.P1IFG_7==1)

if(P1IFG_bit.P1IFG_7==1) //Eğer P1.7 de bir kesme oluşmuş ise;//Eğer P1.7 de bir kesme oluşmuş ise;

P1OUT_bit.P1O

P1OUT_bit.P1OUT_0=1; UT_0=1; //P1.0 //P1.0 = = 11

P1IE (P1 Interrupt Enable) : P1

P1IE (P1 Interrupt Enable) : P1‘de herhangi bir pindeki kesmeleri aktif veya pasif yapmak için‘de herhangi bir pindeki kesmeleri aktif veya pasif yapmak için gerekli olan saklayıcıdır. Eğer; Bit

gerekli olan saklayıcıdır. Eğer; Bit = 0 ise = 0 ise seçtiğimiz pinde harici kesmeseçtiğimiz pinde harici kesme kapalı,kapalı, Bit = 1 iseBit = 1 ise

seçtiğimiz pinde harici kesme

seçtiğimiz pinde harici kesme açıktır.açıktır. Örnek Kullanım:Örnek Kullanım:

P1IE.bit_P1IE_7=1;

P1IE.bit_P1IE_7=1; //P1.7 için harici//P1.7 için harici kesme aktifkesme aktif.. P1IES (P1 Interrupt Edge Select) :

P1IES (P1 Interrupt Edge Select) : Bu saklayıcı iseBu saklayıcı ise P1P1‘de seçtiğimiz herhangi bir pinde oluşan‘de seçtiğimiz herhangi bir pinde oluşan harici kesme için düşen kenar veya yükselen kenarda kesme oluşmasını seçmeye yarıyor. Eğer; harici kesme için düşen kenar veya yükselen kenarda kesme oluşmasını seçmeye yarıyor. Eğer;

Bit = 0 ise

Bit = 0 ise yükselen kenaryükselen kenar, Bit = 1 ise, Bit = 1 ise düşen kenardüşen kenarda kesmeye gidiliyor.da kesmeye gidiliyor.Örnek Kullanım:Örnek Kullanım:

P1IES.bit_P1IES_7=1;

P1IES.bit_P1IES_7=1; //P1.7 için düşen kenarda kesme oluşması//P1.7 için düşen kenarda kesme oluşması

isteniyor. isteniyor.

Aşağıda

AşağıdaP1IESP1IESsaklayıcısının düşen kenar veya yükselen kenar seçilmesi durumundasaklayıcısının düşen kenar veya yükselen kenar seçilmesi durumunda P1IFGP1IFG

saklayıcısındaki kesme bayraklarının nasıl etkileneceği görülüyor. saklayıcısındaki kesme bayraklarının nasıl etkileneceği görülüyor.

Şekil 13

Şekil 13--P1IESP1IES veve P1INP1INbitlerinin durumuna göre kesme bayraklarının durumubitlerinin durumuna göre kesme bayraklarının durumu

Şekil 

Şekil 1414– – Kesme UygulamasıKesme Uygulaması

XIN/P2.6/TA1 XIN/P2.6/TA1 13 13 XOUT/P2.7XOUT/P2.7 12 12 TEST/SBWTCKTEST/SBWTCK 11 11 RST/NMI/SBWTDIORST/NMI/SBWTDIO 10 10 P1.2/TA1/CA2 P1.2/TA1/CA2 44 P1.1/TA0/CA1 P1.1/TA0/CA1 33 P1.0/TACLK/ACLK/CA0 P1.0/TACLK/ACLK/CA0 22 P1.3/CAOUT/CA3 P1.3/CAOUT/CA3 55 P1.4/SMCLK/CA4/TCK P1.4/SMCLK/CA4/TCK 66 P1.7/CAOUT/CA7/TDO/TDI P1.7/CAOUT/CA7/TDO/TDI 99 P1.6/TA1/CA6/TDI/TCLK P1.6/TA1/CA6/TDI/TCLK 88 P1.5/TA0/CA5/TMS P1.5/TA0/CA5/TMS 77 U1 U1 MSP430F2001 MSP430F2001 +3.3V +3.3V P1.0 P1.0 P1.1 P1.1

MSP430

(20)

#include

#include <io430x20x1.h<io430x20x1.h>>

#include "in430.h" /*Genel Kesmeleri aktif etmek için

#include "in430.h" /*Genel Kesmeleri aktif etmek için gerekengereken

başlık dosyası*/ başlık dosyası*/

#define LED0

#define LED0 P1OUT_bit.P1OP1OUT_bit.P1OUT_0UT_0 #define LED1

#define LED1 P1OUT_bit.P1OP1OUT_bit.P1OUT_1UT_1 #define P1REN7

#define P1REN7 P1REN_bit.P1RP1REN_bit.P1REN_7EN_7 #define P1OUT7

#define P1OUT7 P1OUT_bit.P1OP1OUT_bit.P1OUT_7UT_7 #define P1IE7

#define P1IE7 P1IE_bit.P1IP1IE_bit.P1IE_7E_7 #define P1IES7

#define P1IES7 P1IES_bit.P1IP1IES_bit.P1IES_7ES_7 #define P1IFG7

#define P1IFG7 P1IFG_bit.P1IP1IFG_bit.P1IFG_7FG_7 void main( void )

void main( void ) {

{

WDTCTL = WDTPW + WDTHOLD;

WDTCTL = WDTPW + WDTHOLD; //Watchdog timer //Watchdog timer durduruluyordurduruluyor... P1DIR = 0x7F;

P1DIR = 0x7F; //P1.7 Giriş, diğerleri çıkış...//P1.7 Giriş, diğerleri çıkış...

P1OUT7 = 1;

P1OUT7 = 1; //P1.7 de pull-//P1.7 de pull-up direnci seçiliyor.up direnci seçiliyor.

P1REN7 = 1;

P1REN7 = 1; //P1.7 deki pull-up direnci aktif.//P1.7 deki pull-up direnci aktif. P1IE7

P1IE7 = = 1;1; //P1.7 için kesme aktif ediliyor.//P1.7 için kesme aktif ediliyor.

P1IES7 = 0;

P1IES7 = 0; //P1.7 kesmesi için yükselen kenar //P1.7 kesmesi için yükselen kenar 

P1IFG7 = 0;

P1IFG7 = 0; //P1.7 kesme bayrağı temizleniyor.//P1.7 kesme bayrağı temizleniyor.

BCSCTL1= CALBC1_8MHZ;

BCSCTL1= CALBC1_8MHZ; //DCOCLK 8MHZ //DCOCLK 8MHZ Seçiliyor...Seçiliyor...

DCOCTL =

DCOCTL = CALDCO_8MHZ;CALDCO_8MHZ; _BIS_SR(GIE);

_BIS_SR(GIE); //Genel Kesmeler aktif...//Genel Kesmeler aktif... LED0=1;

LED0=1; while(1);

while(1); //İşlemci sonsuz dögüde bırakılıp,//İşlemci sonsuz dögüde bırakılıp,

//harici kesmenin gelmesi

//harici kesmenin gelmesi bekleniyor.bekleniyor. }

}

#pragma

#pragma vector=PORTvector=PORT1_VECTOR1_VECTOR

//P1 Kesme Vektörü

//P1 Kesme Vektörü Tanımlanıyor..Tanımlanıyor....

__interrupt void

__interrupt void P1_Kesmesi(voP1_Kesmesi(void)id) { { LED0=~LED0; LED0=~LED0; LED1=~LED1; LED1=~LED1; P1IFG7=0;

P1IFG7=0; // P1// P1.7 kesme .7 kesme bayrağı temizleniyor bayrağı temizleniyor 

} }

MSP430

(21)

2.2-)

2.2-)Port Okuma Ve Yazma UygulamasıPort Okuma Ve Yazma Uygulaması

Portların yönlendirilmesini daha iyi anlayabilmek için bir uygulama yazalım. Portların yönlendirilmesini daha iyi anlayabilmek için bir uygulama yazalım. BuBu

uygulamamızda, P1 portumuza bağlı 4 adet pin ile P3 portumuza bağlı 4 adet ledi kontrol uygulamamızda, P1 portumuza bağlı 4 adet pin ile P3 portumuza bağlı 4 adet ledi kontrol edeceğiz. P1 portuna bağlı olan butonlardan birine basıldığında, karşısına denk gelen P3 edeceğiz. P1 portuna bağlı olan butonlardan birine basıldığında, karşısına denk gelen P3 portundaki led yanacaktır.

portundaki led yanacaktır.

Şekil 

Şekil 1515– – Port Okuma Yazma UygulamasıPort Okuma Yazma Uygulaması ŞemasıŞeması

Devremizde görüldüğü gibi 4 adet buton bulunmaktadır. Bu butonlar ile P1 portunun ilk dört Devremizde görüldüğü gibi 4 adet buton bulunmaktadır. Bu butonlar ile P1 portunun ilk dört

pini pull down

pini pull down a çekilmiştir. Ayrıca yeri gelmişken söyleyeyim,a çekilmiştir. Ayrıca yeri gelmişken söyleyeyim, bu uygulamamıza ait yazılımdabu uygulamamıza ait yazılımda

MSP430 da dahili

MSP430 da dahili olarak bulunan Pull Up ve Puolarak bulunan Pull Up ve Pull Down dirençlerinden de bahsedeceğiz.ll Down dirençlerinden de bahsedeceğiz.

#include "io430.h" #include "io430.h" #include "in430.h" #include "in430.h" void main( void ) void main( void ) { { WDTCTL = WDTPW + WDTHOLD; WDTCTL = WDTPW + WDTHOLD; DCOCTL=CALDCO_1MHZ; DCOCTL=CALDCO_1MHZ; BCSCTL1=CALBC1_1MHZ; BCSCTL1=CALBC1_1MHZ; P1DIR = 0x00; P1DIR = 0x00; P1REN = 0x0F; P1REN = 0x0F; P1OUT = 0xFF; P1OUT = 0xFF; P3OUT = 0x00; P3OUT = 0x00; P3DIR = 0xFF; P3DIR = 0xFF; while(1) while(1) { {

P3OUT = (P1IN & 0x0F); P3OUT = (P1IN & 0x0F); }

} } }

MSP430

(22)

Main fonksiyonunun ilk 4 satırını artık herkes anlamıştır herhalde. Gelelim port ayarlarına. İlk Main fonksiyonunun ilk 4 satırını artık herkes anlamıştır herhalde. Gelelim port ayarlarına. İlk olarak P1 portuna ilişkin ayarlamalar yapılmaktadır. İlk olarak P1 portunun tamamı giriş olarak olarak P1 portuna ilişkin ayarlamalar yapılmaktadır. İlk olarak P1 portunun tamamı giriş olarak yönlendirilmiştir.

yönlendirilmiştir. Ardından da P1REN register ına (Px Resistor ENable)Ardından da P1REN register ına (Px Resistor ENable) 0x0F hexadecimal0x0F hexadecimal

değeri yazılmıştır. Bu şu anlam

değeri yazılmıştır. Bu şu anlama gelmektedir. P1 portuna ait dahili pulla gelmektedir. P1 portuna ait dahili pull – –up veya pullup veya pull – – downdown

dirençlerini kullanacağım anlamına gelmektedir. Fakat burada bir soru akla gelmektedir. Pull dirençlerini kullanacağım anlamına gelmektedir. Fakat burada bir soru akla gelmektedir. Pull Up veya Pull Down dirençlerinden hangisini kullanacağımı nasıl belirleyeceğim. Onuda giriş Up veya Pull Down dirençlerinden hangisini kullanacağımı nasıl belirleyeceğim. Onuda giriş

konumund

konumunda bulunan portun PxOUT register ından ayarlayacağız.a bulunan portun PxOUT register ından ayarlayacağız. Anlaşılacağı üzere, herhangiAnlaşılacağı üzere, herhangi

bir pin için PxREN kaydedicisine Lojik1 yazılmışsa, o pin dahili olarak pull up/pull down’ bir pin için PxREN kaydedicisine Lojik1 yazılmışsa, o pin dahili olarak pull up/pull down’aa

çekil

çekilecektir. Pull up veya Pull down dan hangisineecektir. Pull up veya Pull down dan hangisine çekileceğini ise PxOUT Register’ı ileçekileceğini ise PxOUT Register’ı ile

ayarlanmaktadır. İlgili pin için PxOUT register ına Lojik1 yazılmışsa o pin Pull Up’a, Lojik0 ayarlanmaktadır. İlgili pin için PxOUT register ına Lojik1 yazılmışsa o pin Pull Up’a, Lojik0 yazılmışsa Pull Down’a çekilecek anlamına gelir.

yazılmışsa Pull Down’a çekilecek anlamına gelir.

Şekil 

Şekil 1616– – Port1.0 ve 1.3Port1.0 ve 1.3Pin FonksiyonlarıPin Fonksiyonları

Yukarıdaki şemadan da bunu rahatlıkla anlayabiliriz. Eğer P1REN kaydedicisi Lojik1 ise sarı ile Yukarıdaki şemadan da bunu rahatlıkla anlayabiliriz. Eğer P1REN kaydedicisi Lojik1 ise sarı ile renklendirilmiş kısımdaki anahtar aktif olmaktadır. P1OUT a da Lojik 1 yazılmışsa, ilgili pin için renklendirilmiş kısımdaki anahtar aktif olmaktadır. P1OUT a da Lojik 1 yazılmışsa, ilgili pin için girişteki mux(multiplexer) sayesinde o pin DVCC ye, Lojik 0 yazılmışsa, DVSS ye direnç girişteki mux(multiplexer) sayesinde o pin DVCC ye, Lojik 0 yazılmışsa, DVSS ye direnç üzerinden çekildiğini anlayabili

üzerinden çekildiğini anlayabiliriz.riz.

Yazılıma devam edersek, P1 portu için yapılan

Yazılıma devam edersek, P1 portu için yapılan ayarlamalardan sonra, P3 portu için ayarlamalarayarlamalardan sonra, P3 portu için ayarlamalar yapılmıştır. İlk olarak port temizlenmiş, ardından da

yapılmıştır. İlk olarak port temizlenmiş, ardından da port çıkış olarak şartlanmıştır. Ardından daport çıkış olarak şartlanmıştır. Ardından da while(1) ile sonsuz döngüye girilmiş, P1 portu sürekli okunup, ilk dört biti maskelenip, P3 while(1) ile sonsuz döngüye girilmiş, P1 portu sürekli okunup, ilk dört biti maskelenip, P3 portuna aktarılmıştır.

portuna aktarılmıştır.

MSP430

(23)

Birde şunu söylemeliyim ki, sonsuz döngüye girmenin tek Birde şunu söylemeliyim ki, sonsuz döngüye girmenin tek yoluyolu

for(;;) for(;;) {

{

// Sonsuz döngüde

// Sonsuz döngüde yapılacak işlemler...yapılacak işlemler...

} }

Değildir. Sonsuz döngüye

Değildir. Sonsuz döngüye aşağıdaki gibide girilebilir.aşağıdaki gibide girilebilir.

while(1) while(1) {

{

// Sonsuz

// Sonsuz döngüde yapılacak işlemler...döngüde yapılacak işlemler... }

}

BÖLÜM 3 –

BÖLÜM 3 – MSP430 TİMER AYARLARI

MSP430 TİMER AYARLARI

3.1-)

3.1-)TimerA BölümüTimerA Bölümü

TimerA birimi

TimerA birimi 16bit16bit veve4 ayrı4 ayrı moda çalışabilen bir timer moda çalışabilen bir timer birimidir. Saat kaynakları istenildiğibirimidir. Saat kaynakları istenildiği gibi seçilebilir

gibi seçilebilir (( ACLK,SMCL vb. ACLK,SMCL vb.)) ve 2 ya ve 2 ya da 3 adet capture/compare registeri içerir. Ayrıca PWMda 3 adet capture/compare registeri içerir. Ayrıca PWM

ayarlaması da

ayarlaması da yine bu yine bu sayıcı ile yapılabilimektedir.sayıcı ile yapılabilimektedir. Bir diğer özellik ise MSP430Bir diğer özellik ise MSP430

′ ′ 

da bulunanda bulunan

kesme vektörleri sayesinde Timer_A birimi için oluşan

kesme vektörleri sayesinde Timer_A birimi için oluşan kesme anında programıkesme anında programı vektörlerevektörlere dallandırıp işlemlerimizi daha hızlı

dallandırıp işlemlerimizi daha hızlı halledebiliriz.halledebiliriz.

MSP430 un timerları çeşitli sayma modlarına sahiptir. TimerA control register içerisindeki MC MSP430 un timerları çeşitli sayma modlarına sahiptir. TimerA control register içerisindeki MC bitleri ile timer

bitleri ile timer ların çalışma modları ayarlanmaktadır.ların çalışma modları ayarlanmaktadır. MC_0 : Timer Kapalı

MC_0 : Timer Kapalı

MC_1 : Timer sürekli olarak sıfırdan CCR de

MC_1 : Timer sürekli olarak sıfırdan CCR değerine kadar sayar.ğerine kadar sayar. MC_2 : Timer sürekli olarak 0

MC_2 : Timer sürekli olarak 0 dan oxFFFF e kadar sayar.dan oxFFFF e kadar sayar.

MC_3 : Timer sürekli olarak sıfırdan CCR değerine, CCR değerine ulaşınca tekrar sıfıra geri MC_3 : Timer sürekli olarak sıfırdan CCR değerine, CCR değerine ulaşınca tekrar sıfıra geri doğru sayar.

doğru sayar.

Şekil 17 – 

Şekil 17 – Timer ModlarıTimer Modları Biz uygulamamızda TimerA yı “Up Mode”

Biz uygulamamızda TimerA yı “Up Mode” da kullanacağız. Yani Timer sıfırdan bizimda kullanacağız. Yani Timer sıfırdan bizim belirlediğimiz CCR değerine kadar sayacak ve tekrar sıfıra dönecek. Sıfıra dönme yani belirlediğimiz CCR değerine kadar sayacak ve tekrar sıfıra dönecek. Sıfıra dönme yani resetlenme esnasında da, kesme üretecek.

resetlenme esnasında da, kesme üretecek.

MSP430

(24)

3

3.1.1) TimerA Sayıcı Modu.1.1) TimerA Sayıcı Modu

ŞŞekil 18 ekil 18 – – TimerA Sayıcı KısmıTimerA Sayıcı Kısmı TimerA sayıcı kısmı Şekil 18’de

TimerA sayıcı kısmı Şekil 18’de görüleceği üzere farklı saat görüleceği üzere farklı saat kaynaklarından beslenebilmekaynaklarından beslenebilmektedir.ktedir. Bu kaynağı seçen

Bu kaynağı seçen TASSELxTASSELxbitleridir. Daha sonra seçilen saat kaynağıbitleridir. Daha sonra seçilen saat kaynağı IDxIDxile bölüm oranınaile bölüm oranına girer ve yükselen kenarda tetiklenmek üzere 16 bitlik sayıcı saymaya başlar. İstenilen anda girer ve yükselen kenarda tetiklenmek üzere 16 bitlik sayıcı saymaya başlar. İstenilen anda

TACLR

TACLRbiti 1 yapılarakbiti 1 yapılarakTARTARregisterinin içeriği sıfırlanabilir.registerinin içeriği sıfırlanabilir. MCxMCxile sayıcı modları seçilir, sayıcıile sayıcı modları seçilir, sayıcı

mod’a göre, dolduğunda kesme bayrağı

mod’a göre, dolduğunda kesme bayrağı çeker. TimerA ayarlanırken zamanlayıcının kapalıçeker. TimerA ayarlanırken zamanlayıcının kapalı olması MSP datasheetinde önerilmiştir. Ayrıca TimerA’nın çalışması içi

olması MSP datasheetinde önerilmiştir. Ayrıca TimerA’nın çalışması içinn MCxMCx’in mutlaka’in mutlaka sıfırdan büyük

sıfırdan büyük olması gerekmektedir.olması gerekmektedir.

Şekil 19 – 

Şekil 19 – TimerA Blok DiyagramıTimerA Blok Diyagramı

MSP430

(25)

TimerA’yı kontrol eden registerler ise aşağıdaki gibidir. TimerA’yı kontrol eden registerler ise aşağıdaki gibidir.

ŞŞekil 20 ekil 20 – – TimerA Kontrol RegisterıTimerA Kontrol Registerı

TASSELx

TASSELx Saat Kaynağı Seçim BitiSaat Kaynağı Seçim Biti

00 00 – –TACLKTACLK 01 01 – –ACLKACLK 10 10 – –SMCLKSMCLK 11 11 – –INCLKINCLK IDx

IDx Divider (Bölücü)Divider (Bölücü) 00 00 – –/1/1 01 01 – –/2/2 10 10 – –/4/4 11 11 – –/8/8 MCx

MCx Mode KontrolMode Kontrol 00

00 – –Stop ModeStop Mode 01

01 – – Up Mode (TACCR0’a kadar sayacak)Up Mode (TACCR0’a kadar sayacak) 10

10 – – Continious Mode (0xFFFF’e kadar sayacak)Continious Mode (0xFFFF’e kadar sayacak)

11

11 – –TACCR0-0- TACCR0-TACCR0-0- TACCR0-0.. şeklinde sayacak0.. şeklinde sayacak TACLR

TACLR TimerA’yı silen bitTimerA’yı silen bit

TAIE

TAIE TimerA interrupt enableTimerA interrupt enable TAIFG

TAIFG TimerA interrupt flagTimerA interrupt flag

Diğer registerler için datasheet’e bakınız. Diğer registerler için datasheet’e bakınız.

3.1.1.1-)TimerA Stop Modu 3.1.1.1-)TimerA Stop Modu

Bu modda sayıcı durdurulur. Bir nevi

Bu modda sayıcı durdurulur. Bir nevi sayıcının çalışmayacasayıcının çalışmayacağı anlamına gelir.ğı anlamına gelir.

3.1.1.2-)TimerA Up Modu 3.1.1.2-)TimerA Up Modu

Bu modda sayıcı

Bu modda sayıcıTACCRxTACCRx registerine yüklenen değer kadar arttıktan sonra sayıcı sıfırlanır registerine yüklenen değer kadar arttıktan sonra sayıcı sıfırlanır veve

tekrar sayıcı kendini

tekrar sayıcı kendini TACCRxTACCRx’e kadar arttırır. Şekil 21’de bu ’e kadar arttırır. Şekil 21’de bu modun çalışma şekli gösterilmiştir.modun çalışma şekli gösterilmiştir.

ŞŞekil 21ekil 21– – TimerA Up ModuTimerA Up Modu

MSP430

Referensi

Dokumen terkait

İlçe için yapılmış olan detaylı arazi ça- lışmalarına dayanan analizler neticesinde farklı tipteki yapılar için yer sarsıntısı sıvılaşma, taşıma gücü

Öğretmenler için, öğrencilerin farklı açılardan birbirlerinden farklı seviyelerde olmaları, bilişim teknolojileri dersinin eğitim sistemi içerisindeki yeri ve

Her malın farklı talep esnekliklerine sahip olmaları yanında bir mala olan talep için her fiyattan farklı esneklik söz konusu olabilmektedir. O halde malların

Onlar gibi olmaya çalışabilirsiniz; ama onların sizin gibi olmaları için değil...... Çünkü hayat ne geri sarar, ne de

Yoldaşını bırakıp ağaçların arkasına korunmak için sakla­ narak, kavrulmuş hayvana doğru emeklemeye başladı. Yö­ nünü tayin etmek için başını hafifçe

Diğer Peygamberler, kavimlerine lanet ettikleri halde, Peygamber efendimiz lanet etmemiştir Bir savaşta, kâfirlerin yok olması için dua etmesini istediklerinde (Ben lanet etmek

Veri tabanından sorgulama yapmak için SELECT, ekleme yapmak için INSERT güncelleme yapmak için UPDATE, silme yapmak için DELETE, yeni tablo oluşturmak için CREATE TABLE gibi

mürid için en önemli şey onun sufiyyi yoluna girip, onlar gibi giyinmesi, Allah (cc) için onların.