<?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; uA</title>
	<atom:link href="http://www.fxdev.org/etiket/ua/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</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>

