<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>FxDev &#124; ße Different Everytime! &#187; msp430</title>
	<atom:link href="http://www.fxdev.org/etiket/msp430/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fxdev.org</link>
	<description>FxDev &#124; This Evolution is Revolution</description>
	<lastBuildDate>Wed, 01 Feb 2012 22:16:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>MSP430 Programlama Kitabı</title>
		<link>http://www.fxdev.org/msp430-programlama-kitabi/</link>
		<comments>http://www.fxdev.org/msp430-programlama-kitabi/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 22:11:53 +0000</pubDate>
		<dc:creator>FxDev</dc:creator>
				<category><![CDATA[Mühendislik]]></category>
		<category><![CDATA[74hc595]]></category>
		<category><![CDATA[çizgi]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[composer]]></category>
		<category><![CDATA[iar]]></category>
		<category><![CDATA[instrument]]></category>
		<category><![CDATA[kitabı]]></category>
		<category><![CDATA[lcd]]></category>
		<category><![CDATA[msp430]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[sd16]]></category>
		<category><![CDATA[sıcaklık sensörü]]></category>
		<category><![CDATA[studio]]></category>
		<category><![CDATA[texas]]></category>
		<category><![CDATA[timer]]></category>

		<guid isPermaLink="false">http://www.fxdev.org/?p=1046</guid>
		<description><![CDATA[Yaklaşık bir sene önce başladığım MSP430 kitabımı, yoğunlukları atlatmam nedeniyle en sonunda bugün bitirebildim. Texas Ins. özellikle kullanım yaygınlığının artması için özel çaba sarfettiği ve 8 bit mikrodenetleyicilerden 16 bit ve daha üstü için basamak oluşturabileceğine inandığım kitabımı sizlerle paylaşıyorum. Daha önceki kitaplarımdan farklı olarak bu kitabın içine elimden geldiğince uygulama resimlerini de koydumu ayrıca [...]]]></description>
			<content:encoded><![CDATA[<p><a class="lightbox"  title ="MSP430 Programlama Kitabı" href="http://www.fxdev.org/wp-content/uploads/2011/07/MSP430_Programlama.jpg"><img src="http://www.fxdev.org/wp-content/uploads/2011/07/MSP430_Programlama.jpg" alt="" title="MSP430 Programlama Kitabı" width="250" height="339" class="alignright size-full wp-image-1045" /></a>Yaklaşık bir sene önce başladığım MSP430 kitabımı, yoğunlukları atlatmam nedeniyle en sonunda bugün bitirebildim. Texas Ins. özellikle kullanım yaygınlığının artması için özel çaba sarfettiği ve 8 bit mikrodenetleyicilerden 16 bit ve daha üstü için basamak oluşturabileceğine inandığım kitabımı sizlerle paylaşıyorum. Daha önceki kitaplarımdan farklı olarak bu kitabın içine elimden geldiğince uygulama resimlerini de koydumu ayrıca belirtmek isterim.</p>
<p>Kitabın içerisinde yer alan konular ise şöyle;</p>
<p>- MSP430 Mikrodenetleyici Donanımları<br />
- Tüm Yönleri ile Code Composer Studio<br />
- IAR ile MSP430 Programlamak<br />
- Port Giriş/Çıkış, Buton ve Döngü İşlemleri<br />
<span id="more-1046"></span>- Kesmeler<br />
- TimerA1 Sayıcı ve PWM Uygulaması<br />
- MSP430 ile LCD Uygulaması<br />
- MSP430 ve 74HC595<br />
- SD16 ADC Modülü<br />
- ΣΔ Modülasyon Tanım ve Detayları<br />
- MSP430 Dahili Sıcaklık Sensörü Okuma<br />
- EZ430-F2013 Donanımı</p>
<p>Kitabı indirmek için lütfen <a href="http://www.4shared.com/file/fYURcccw/MSP430_Programlama.html" title="MSP430 Programlama Kitabı" target="_blank"><strong>buraya</strong></a> basınız.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: left; margin-right: 290px;"><g:plusone size="standard" count="1" href="http://www.fxdev.org/msp430-programlama-kitabi/">{lang: 'tr'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.fxdev.org/msp430-programlama-kitabi/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>MSP430 ve UART Denemesi</title>
		<link>http://www.fxdev.org/msp430-ve-uart-denemesi/</link>
		<comments>http://www.fxdev.org/msp430-ve-uart-denemesi/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 16:25:53 +0000</pubDate>
		<dc:creator>FxDev</dc:creator>
				<category><![CDATA[Mühendislik]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[deneme]]></category>
		<category><![CDATA[max232]]></category>
		<category><![CDATA[max3232]]></category>
		<category><![CDATA[msp430]]></category>
		<category><![CDATA[proteus]]></category>
		<category><![CDATA[register]]></category>
		<category><![CDATA[seri]]></category>
		<category><![CDATA[simülasyon]]></category>
		<category><![CDATA[texas]]></category>
		<category><![CDATA[ti]]></category>
		<category><![CDATA[uart]]></category>

		<guid isPermaLink="false">http://www.fxdev.org/?p=844</guid>
		<description><![CDATA[Ne zamandır MSP430 ile ilgili bir uygulama yapmıyordum bu yüzden bugün biraz kafamı diğer işlerden uzaklaştırmak ve notlarımı düzenlemek için MSP430&#8242;un UART kısmına göz atmaya karar verdim. Fakat ilk hevesle baktığım bu çevre birimini, MSP430&#8242;un datasheet&#8217;inden anlamak gerçekten zor. Sanırım bu yüzdendir ki sitesinde her mikrodenetleyici ile ilgili ufak tefek onca kod parçacığı var. Ben [...]]]></description>
			<content:encoded><![CDATA[<p><a class="lightbox" title="MSP430" href="http://www.fxdev.org/wp-content/uploads/2010/10/MSP430.jpg"><img class="alignright size-full wp-image-845" title="MSP430" src="http://www.fxdev.org/wp-content/uploads/2010/10/MSP430.jpg" alt="" width="175" height="160" /></a>Ne zamandır MSP430 ile ilgili bir uygulama yapmıyordum bu yüzden bugün biraz kafamı diğer işlerden uzaklaştırmak ve notlarımı düzenlemek için MSP430&#8242;un UART kısmına göz atmaya karar verdim.<br />
Fakat ilk hevesle baktığım bu çevre birimini, MSP430&#8242;un datasheet&#8217;inden anlamak gerçekten zor. Sanırım bu yüzdendir ki sitesinde her mikrodenetleyici ile ilgili ufak tefek onca kod parçacığı var. Ben de bu kodları inceleyerek bu birimi çözmeyi başardım ve MSP430F2112 ile simülasyonu yaptım.<span id="more-844"></span></p>
<p><strong>MSP430 UART Birimi</strong></p>
<p>Bu denememde kullandığım MSP430 için kullanmamız gereken USCI_Ax modülünün UART modunun şemasını aşağıdan görebilirsiniz. Yine aşağıdaki şemadan görebileceğiniz üzere bu birim IrDA için de ayrılmış özelliklere sahip olsa da biz bu uygulamamızda bu noktaya değinmeyeceğiz.<a class="lightbox"  title ="MSP430 UART Birimi Şeması" href="http://www.fxdev.org/wp-content/uploads/2010/10/MSP430_UART.png"><img src="http://www.fxdev.org/wp-content/uploads/2010/10/MSP430_UART.png" alt="" title="MSP430 UART Birimi Şeması" width="504" height="622" class="aligncenter size-full wp-image-846" /></a>Yukarıdaki şekle tekrar bakarsak öncelikli olarak belirlememiz gereken kısım, UART birimi için gerekli olan saat kaynağımızdır. Bu kaynak <strong>UCA0CTL1</strong> registerinden ayarlanabilir. Ben uygulamada bu kaynağı SMCLK olarak belirledim ve yapmamız gerekenleri aşağıya şöyle sıraladım.</p>
<p><strong>1)</strong> <strong>UCA0CTL1</strong>&#8216;dan parity, data ve stop bitleri gibi bilgiler belirlenir.<br />
<strong>2)</strong> (<span style="color: #ff0000;"><strong>SMCLK Frekansı</strong></span>/<span style="color: #339966;"><strong>Baud Rate</strong></span>) formülünden çıkan sayının 15-8. bitleri <strong>UCA0BR1</strong>, 7-0. bitleri <strong>UCA0BR0 </strong>registerlerine yüklenerek baudrate ayarlanır.<br />
<strong>3)</strong> <strong>UCA0MCTL</strong> registeri ile tam çıkmayan sonuçlarda oluşabilecek hataları engellemek için hata düzeltme değeri buraya girilir. Örneğin SMCLK frekansımı 1Mhz, baudrate değerimiz 9600 olursa 1M/9600=104,16.. şeklinde çıkar. Burada ondalıklı kısmın ilk değeri 1&#8242;i alırsak modülasyon değerimiz <strong>UCA0MCTL</strong>=<span style="color: #ff0000;"><strong>UCBRS0</strong></span> olur. UCBRS0 değeri UCBRS0..UCBRS7&#8242;ye kadar gitmektedir ve değerler binary şekildedir. Örneğin SMCLK frekansımız 32khz olduğunda bu değer 32k/9600=3.33 çıkar. Buradan ondalığın ilk değeri 3 çıkar ve <strong>UCA0MCTL</strong>=<span style="color: #008000;"><strong>UCBRS1</strong></span>+<span style="color: #3366ff;"><strong>UCBRS0</strong></span> şeklinde tanımlanır. Ayrıca hata düzeltilmesi yapılmadan da UART birimi çalışabilmektedir, fakat profesyonel uygulamalarda bu tercih edilmez.<br />
<strong>4)</strong> Bunları yaptıktan sonra <strong>UCA0CTL1</strong> registerindenin 0. biti temizlenmelidir. Bu bit temizlenmez ise UART birimi resette kalır ve birim çalışamaz.<br />
<strong>5)</strong> Son olarak bilgi almak için <strong>UCA0RXBUF</strong> ve göndermek için ise <strong>UCA0TXBUF</strong> registerlerini kullanabilirsiniz. Ayrıca alım ve gönderim FIFO&#8217;larının boş olup olmadıklarını ise sırasıyla <strong>IFG2</strong> registerinin 0. ve 1. bitlerinden kontrol edebilirsiniz.<br />
Registerlerin daha ayrıntılı kullanımları için kullandığınız MSP430&#8242;un datasheet&#8217;ine bakabilirsiniz. Yukarıda saydıklarımızı bir kütüphane haline getirirsek UART.h ve UART.c aşağıdaki gibi olmaktadır.</p>
<p><strong>UART.h</strong></p>
<pre class="brush: c">#define CLK  			16000000  // SMCLK değeri
#define UART0_BAUD_RATE  	19200	  // Baudrate
#define UART0_WORD_LENGTH  	0	  // 1: 7bit, 0:8bit
#define UART0_STOP_BIT  	0	  // 0: Stop bit=1, 1: Stop bit=2/1.5
#define UART0_PARITY  		0	  // 0: Parity yok, 1: Parity var
#define UART0_PARITY_SEL  	0	  // 0: Odd, 1: Event

extern void uart_init(void);
extern void uart_putch(unsigned char c);
extern char uart_getch(void);
extern void uart_string(const char *st);</pre>
<p><strong>UART.c</strong>
<pre class="brush: c">#include "msp430.h"
#include "UART.h"

void uart_init(void)
{
  UCA0CTL0=0x00;                      // UART mode, asenkron
  UCA0CTL0=(UART0_PARITY < < 7)|(UART0_PARITY_SEL << 6)|(UART0_WORD_LENGTH << 4)|(UART0_STOP_BIT << 3);

  UCA0CTL1 |= UCSSEL_2;               // SMCLK
  UCA0BR1=(CLK/UART0_BAUD_RATE)/256;  // Baudrate hesaplanıyor
  UCA0BR0=(CLK/UART0_BAUD_RATE)%256;

  UCA0MCTL = UCBRS0;                  // Bu baud hesabına göre değişebilir
  UCA0CTL1 &#038;= 0xFE;                   // Software reset kaldırılıyor
}

void uart_putch(unsigned char c)
{
  while(!(IFG2 &#038; 0x02));		// Transmit gönderim FIFO'su boş mu?
    UCA0TXBUF=c;
}

char uart_getch(void)
{
  while(!(IFG2 &#038; 0x01));		// Receive alım FIFO'su boş mu?
    return UCA0RXBUF;
}

void uart_string(const char *st)
{
  while(*st)
    uart_putch(*st++);
}</pre>
<p>Görüldüğü üzere UART kütüphanesi oldukça sadedir. Aşağıda ise örnek için kullandığım kodları görebilirsiniz.
</pre>
<pre class="brush: c">#include "msp430.h"
#include "uart.h"

void main( void )
{
    WDTCTL  = WDTPW + WDTHOLD;
    BCSCTL1 = CALBC1_16MHZ;   // Kristal 16MHz'e ayarlanıyor
    DCOCTL  = CALDCO_16MHZ;

    P3SEL = 0x30;             // P3.4 ve P3.5 UART için yönlendirildi
    P3DIR = 0xFF;

    uart_init();
    uart_string("Hello World\r\n");
    uart_string("www.FxDev.org");

    for(;;)
      uart_putch(uart_getch()); // Echo yaptırılıyor
}</pre>
<p>Uygulamanın çalışan simülasyonunu da aşağıdaki resimden (tıklarsanız büyür) görebilirsiniz.<a class="lightbox"  title ="MSP430 Uygulaması" href="http://www.fxdev.org/wp-content/uploads/2010/10/MSP430-Uygulama.png"><img src="http://www.fxdev.org/wp-content/uploads/2010/10/MSP430-Uygulama.png" alt="" title="MSP430 Uygulaması" width="601" height="472" class="aligncenter size-full wp-image-847" /></a>Yukarıdaki uygulama görüldüğü üzere yazılım kontrollüdür ve amatörcedir. Bu uygulamaya daha fazla işlev katmak için kesmeleri kullanırsak kodumuz aşağıdaki gibi olmaktadır.
<pre class="brush: c">#include "msp430.h"
#include "uart.h"

volatile unsigned char i=0;

void main( void )
{
    WDTCTL  = WDTPW + WDTHOLD;
    BCSCTL1 = CALBC1_16MHZ;       // Kristal 16MHz'e ayarlanıyor
    DCOCTL  = CALDCO_16MHZ;

    P1SEL = 0x00;
    P1DIR = 0xFF;
    P1OUT = 0x00;
    P3SEL = 0x30;                 // P3.4 ve P3.5 UART için yönlendirildi
    P3DIR = 0xFF;

    uart_init();
    uart_string("Hello World\r\n");
    uart_string("www.FxDev.org");

    IE2 |= UCA0RXIE + UCA0TXIE ;  // Alım ve gönderim kesmeleri aktif

    _EINT();                      // Kesmeler açılıyor
}

// Gönderim kesmesi
#pragma vector=USCIAB0TX_VECTOR
__interrupt void USCI0TX_ISR(void)
{
   while(!(IFG2 &#038; 0x01));                 // Receive alım FIFO'su boş mu?
    P1OUT = i++;
}

// Alım kesmesi
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
    while(!(IFG2 &#038; 0x02));		// Transmit gönderim FIFO'su boş mu?
      UCA0TXBUF=UCA0RXBUF;
}</pre>
<p>Yukarıdaki kodlara dikkat edilirse gönderim kesmesinde her bir karakter için P1&#8242;deki çıkışlar binary olarak aktif edilmektedir.<br />
Yazımı bitirmeden önce MSP430&#8242;ların 3.3V gerilim ile çalıştıkları için MAX232 entegresi kullanılamayacaklarını belirtmek isterim. Bu iş için ya kendiniz step-up özellikli bir devre tasarlamalı ya da piyasada 3.3V için özelleştirilmiş MAX3232 entegresini MSP430 uygulamalarınız için kullanabilirsiniz. Bu uygulama ile ilgili tüm dosyaları <strong><a href="http://www.4shared.com/file/qosl7X1y/MSP430_UART.html" target="_blank">buradan</a></strong> indirebilirsiniz.<br />
Herkese çalışmalarında başarılar dilerim <img src="http://www.fxdev.org/wp-content/plugins/more-smilies/Phoenity/wink.png" alt=")" class="wp-smiley" /> </p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: left; margin-right: 290px;"><g:plusone size="standard" count="1" href="http://www.fxdev.org/msp430-ve-uart-denemesi/">{lang: 'tr'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.fxdev.org/msp430-ve-uart-denemesi/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>MSP430</title>
		<link>http://www.fxdev.org/msp430/</link>
		<comments>http://www.fxdev.org/msp430/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 18:07:14 +0000</pubDate>
		<dc:creator>FxDev</dc:creator>
				<category><![CDATA[İnceleme]]></category>
		<category><![CDATA[Mühendislik]]></category>
		<category><![CDATA[güç]]></category>
		<category><![CDATA[instrument]]></category>
		<category><![CDATA[interrupt]]></category>
		<category><![CDATA[kesme]]></category>
		<category><![CDATA[mikrodenetleyici]]></category>
		<category><![CDATA[mips]]></category>
		<category><![CDATA[msp430]]></category>
		<category><![CDATA[pic]]></category>
		<category><![CDATA[power]]></category>
		<category><![CDATA[texas]]></category>
		<category><![CDATA[timer]]></category>
		<category><![CDATA[uA]]></category>

		<guid isPermaLink="false">http://www.fxdev.org/?p=780</guid>
		<description><![CDATA[Staja başladığım ilk günlerde incelediğim MSP430&#8216;u, işlerimin biraz durulmasından sonra biraz daha öğrenmek için tekrar kutusundan çıkardım. İlk öğrenmeye başladığım zamanlarda osilatör ayarlarının zorluğundan yakınsam da, Texas&#8217;ın ilgili dokümanlarında bu ayarların ne kadar kolay yapıldığını görünce, bu kadar zaman bununla mı uğraşıyormuşum diye kendime de kızmıştım. Peki nedir bu MSP430, neden bugünlerde herkesin gündeminde? Texas [...]]]></description>
			<content:encoded><![CDATA[<p><a class="lightbox"  title ="MSP430 Part" href="http://www.fxdev.org/wp-content/uploads/2010/07/IMG_0023.jpg"><img src="http://www.fxdev.org/wp-content/uploads/2010/07/IMG_0023.jpg" alt="" title="MSP430 Part" width="267" height="204" class="alignright size-full wp-image-782" /></a>Staja başladığım ilk günlerde incelediğim <strong>MSP430</strong>&#8216;u, işlerimin biraz durulmasından sonra biraz daha öğrenmek için tekrar kutusundan çıkardım. İlk öğrenmeye başladığım zamanlarda osilatör ayarlarının zorluğundan yakınsam da, Texas&#8217;ın ilgili dokümanlarında bu ayarların ne kadar kolay yapıldığını görünce, bu kadar zaman bununla mı uğraşıyormuşum diye kendime de kızmıştım. Peki nedir bu MSP430, neden bugünlerde herkesin gündeminde?<br />
<a href="http://www.ti.com/"><strong>Texas Instrument</strong></a>&#8216;in özellikle Microchip&#8217;in karşısına &#8220;düşük güç tüketimi neymiş gör&#8221; diye ürettiği dünyanın en düşük güç harcayan mikrodenetleyicilerinden biri MSP430. Elektronik piyasasında özellikle ürettiği güç entegreleri ile nam salan Texas Instrument&#8217;in ürettiği bir mikrodenetleyicinin güç tüketiminin uçuk olması beklenemezdi elbette. <span id="more-780"></span>Onlar da bunun hakkını vermek için ellerinden geleni yapmışlar zaten. Ayrıca MSP430, 8bitlik işlemlerden kurtulmak isteyenler için bir basamak oluşturabiliyor, çünkü MSP430 16bitlik veri yolu kullanıyor.<br />
Peki rakamlara dökecek olursak, gerçekten ortalama (MSP430F2013) MSP430&#8242;u eşsiz kılan nedir şöyle bir bakalım;<br />
<div class="important-green"><span class="important-title-green">MSP430</span>- Gerçek zamanlı saat modunda çekilen akım: 0.7uA<br />
- MIPS aktifken çekilen akım: 200uA<br />
- Flash seçenekleri: 10-60kB<br />
- Rom seçenekleri: 1-16kB<br />
- Ram seçenekleri: 512B-10kB<br />
- GPIO seçenekleri: 14-22-48<br />
- ADC seçenekleri: 10-12Bit<br />
- DAC seçenekleri: 12Bit<br />
- İletişim seçenekleri: SPI, I2C, UART, USI<br />
- 12kHz RC, 16MHz&#8217;e kadar içsel krital<br />
- 16bit veri yolu<br />
- Ve daha bir çok özellik.</div></p>
<p>Orta seviye sayılabilecek bir mikrodenetleyicinin tüm özelliklerine sahip bu mikrodenetleyici sadece 3.3V ile çalışıyor. Tüm bu rakamlar özellikle taşınabilir cihaz tasarımcıları için oldukça önemli değerler.<br />
Örneğin elimize 2600mAh&#8217;lik ortalama bir pil olsun. MSP430&#8242;unda MIPS&#8217;inin her zaman aktif olduğunu düşünelim. Hemen oran orantı kurduğumuzda 2,600,000/200=13000saat~1,5yıl çalışma demek. Bir de MSP430&#8242;u uyku moduna aldığınızı düşünün.<br />
Bu kadar özendirmeden sonra elbette bir örnek yapmadan olmaz.<br />
<a class="lightbox"  title ="MSP430 USB Stick" href="http://www.fxdev.org/wp-content/uploads/2010/07/IMG_0022.jpg"><img src="http://www.fxdev.org/wp-content/uploads/2010/07/IMG_0022.jpg" alt="" title="MSP430 USB Stick" width="645" height="363" class="aligncenter size-full wp-image-781" /></a>Ben, staj yerinden temin ettiğim, resmini yukarıda görebileceğiniz USB geliştirme sticki üzerinde kodlarımı yazıp deniyorum, bu stick&#8217;in üzerinde ise yine yukarıdaki resimde görüleceği üzere MSP430F2013 bulunmakta. Ayrıca stickten dışarı pin çıkışları da alınmış, programlamlama ve debugger özelliğine sahip olan stick&#8217;te kontrol için bir tane de led koymuşlar.<br />
MSP430&#8242;un geliştirme ortamı ise Texas&#8217;ın kullanıcılara bedava olarak sunduğu &#8220;IAR Embedded Workbench KickStart for MSP430&#8243;. Özellikle şunu belirtmek isterim ki, programı oldukça hızlı derlese de IAR&#8217;ın görünümü gerçekten <strong>&#8220;iğrenç&#8221;</strong>. Onun için her zaman AVR programlarken çok hoşlanıyorum, çünkü adamlar Eclipse gibi bir arayüz kullanıyorlar. İnternette yaptığım ufak araştırmalarda MSP430 için de geliştirilmiş Eclipse eklentileri gördüm, fakat deneme şansım daha olmadı. Fakat deneyip, olumlu sonuçlar aldığımda elbette buradan yine sizlerle paylaşacağım.</p>
<p>MSP430 için ilk örneğimizde, 16 bitlik TIMERA ve kesmesini kullanarak bir ledin 1sn&#8217;de yanıp sönmesini sağlayacağız. Krital kaynağımızı ise DCO seçeceğiz.<br />
Örnek kodlarımız ve açıklamalarını aşağıda görebilirsiniz.</p>
<pre class="brush: c">#include "msp430.h"       	  // MSP430 başlık dosyası

void main( void )
{
	WDTCTL = WDTPW + WDTHOLD; // Watchdog Timer'ı durdur.

	BCSCTL1= CALBC1_1MHZ;     // Kristal şu anlık 1MHz ayarlanıyor
	DCOCTL = CALDCO_1MHZ;
	BCSCTL3= LFXT1S_2;

	TAR=0x0000;      // TAR değeri sıfırlanıyor
	TACTL=0x02D6;    // SMCLK seçili, MOD1, 1:8, Interrupt Enable, Interrupt Flag temizleniyor
	TACCR0=62500;    // TACCR0 değerine 1.000.000/8=125.000/2=62500 yükleniyor

	P1DIR=0xFF;   // P1 çıkış olarak ayarlanıyor

	for(;;)
	{
		if((TACTL&#038;0x0001)==0x0001)    // TimerA kesmesi bekleniyor
		{
			P1OUT^=0xFF;   // Kesme gelince P1 çıkışları tersleniyor
			TACTL&#038;=0xFFFE; // Kesme bayrağı temizleniyor
		}
	}
}</pre>
<p>Yukarıda yazdığımız kod TIMERA&#8217;nın kesme bayrağına sonsuz döngüde bakıyor. Bu, basit uygulamalar için uygulanabilir gözükse de oldukça amatörcedir. Bunun yerine her zaman TIMER kesmesi kullanılması tercih edilmelidir. Aynı işlemi yapan kod ise aşağıda gözükmektedir.</p>
<pre class="brush: c">#include "msp430.h"         // MSP430 başlık dosyası

// TimerA kesme vektörü
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P1OUT^=0xFF;              // Kesme gelince P1 çıkışları tersleniyor
}

void main( void )
{
  WDTCTL = WDTPW + WDTHOLD; 	// Watchdog Timer'ı durdur.

  BCSCTL1= CALBC1_1MHZ;   // Kristal şu anlık 1MHz ayarlanıyor
  DCOCTL = CALDCO_1MHZ;
  BCSCTL3= LFXT1S_2;

  TAR=0x0000;             // TAR değeri sıfırlanıyor
  TACTL=0x02D6;           // SMCLK seçili, MOD1, 1:8, Interrupt Enable, Interrupt Flag temizleniyor
  TACCR0=62500;           // TACCR0 değerine 1.000.000/8=125.000/2=62500 yükleniyor
  TACCTL0=CCIE;           // CCIFG interrupt'ı açılıyor  

  P1DIR=0xFF;             // P1 çıkış olarak ayarlnıyor

  _EINT();                // Genel kesmeler açılıyor

  for(;;);
}</pre>
<p>Görüleceği üzere bu kod daha sağlıklı olmuştur. Yukarıdaki kodda göreceğiniz üzere MSP430&#8242;da kesmelere gitmeden önce vektörel olarak tanımlama yapılmalıdır. Yine yukarıda görüldüğü gibi kesmeye gidildiğinde MSP430, o kesmeye ait bayrağı kendisi silmektedir.<br />
Yazdığımız kodun çalışırken çekilmiş videosu ise aşağıda gözükmektedir.</p>
<p><a href="http://www.fxdev.org/msp430/"><em>Click here to view the embedded video.</em></a></p>
<p>Görüldüğü gibi o ya da bu mikrodenetleyici olsun her şey registerleri kontrol etmekte bitiyor. Onun için ben, yeni bir mikrodenetleyici öğrenirken öncelikle çevresel birimleri ve registerleri ele alıyorum. Daha sonrası kod yazmak olduğu için gerisi o ya da bu şekilde devam eder. Fakat registerler öğrenilmeden, bir led yakıp söndürmek bile işkence haline gelebilir.</p>
<p>İlerleyen zamanlarda yavaş da olsa bu konu üzerine eğilmek istiyorum.<br />
Her türlü sorunuzu bana yorum kısmından sorabilirsiniz.<br />
Herkese iyi çalışmalar.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: left; margin-right: 290px;"><g:plusone size="standard" count="1" href="http://www.fxdev.org/msp430/">{lang: 'tr'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.fxdev.org/msp430/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

