MSP430 ile Energia Kullanımı

Merhaba arkadaşlar..

Bu yazıda MSP kartları ile Energia kullanımından bahsedeceğiz. Daha önceden kullanmaya çalışmış olanlar bilirler MSP43* Kartları C ile CCS yada IAR kullanarak programlamak Energia ile programlamaya göre çok daha zordur. Peki ya bu kolaylığı sağlayıp Energia’ ya diğer IDE’ lerden ayıran nedir?

Energia IDE’ sini diğer MSP için kullanılan IDE’ lerden ayıran en büyük özellik Wiring dili ile programlanmasıdır. Wiring dili Arduino IDE’ sinde kullanılan dildir ve “pinMode, digitalRead” gibi fonksiyonları içerir. Bu sayede MSP430 son derece basit bir şekilde programlanabilir.  Energia’ yı bağlantıdan indirebilirsiniz. İndirdiğiniz zaman dosyaları Rar içerisinden çıkartıp çalıştırabilirsiniz.

Ancak Energia kullanırken şu unutulmamalıdır. Energia IDE’ si ile MSP’ nin sahip olduğu özelliklerin bir çoğu kullanılamamaktadır. Eğer elinizdeki MSP karta tam olarak hakim olmak ve her yönüyle öğrenmek istiyorsanız CCS kullanmanızı şiddetle tavsiye ederim. Başlangıç için yada basit işler için Energia son derece kullanışlıdır. İlerleyen zamanlarda CCS ile yapılmış uygulamalarda paylaşmaya çalışacağım.

Şimdik tanıtımı ve yükleme işlemlerini yaptıktan sonra sıra geldi uygulamaları yapmaya. Daha önceden Arduino kullanmış olanlar kodları anlamakta zorluk çekmeyeceklerdir. Ayrıca IDE’ nin içerisindeki  File -> Examples kısmından bir çok örneğe göz atarak benzerliği görebilirsiniz. Ben bazı farklı fonskiyonları kullanarak değişik özelliklerden bahsetmeye çalışacağım. Örnekleri anlatacağım kart MSP430F5529′ dur. Bu kart en çok kullanılan MSP430G2550′ den bazı farklı özellikleri bulunmaktadır. Yeri geldikçe diğer kartı kullananlar için farklardan bahsedeceğim.

launchpads-msp430g2-pins-maps-13-42
Resmi Büyütmek İçin Resme Tıkla
msp430f5529
Resmi Büyütmek İçin Resme Tıkla

İlk olarak blink uygulamasına bakalım. Arduino için olan blink örneğinde yakıp söndürülen led 13 numaralı pine bağlı olan onboard led’ di. Energia’ da ise onboard led RED_LED olarak tanımlanmış. Eğer kullandığınız kart MSP430F5529 ise GREEN_LED‘ i de kullanabilirsiniz. MSP kartlarda pin isimlendirilmesi yukarıdaki resimlerdeki gibidir

// most launchpads have a red LED
#define LED RED_LED

//see pins_energia.h for more LED definitions
//#define LED GREEN_LED
  
// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(LED, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(LED, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(LED, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}

Daha önceden Arduino kullanmış olanlar kodların benzerliğini zaten farkedecektir. Şimdi bazı farklı örnekler yapalım. Örneğin son zamanlarda Arduino’ da kullanılan ancak MSP’ de daha fazla ihtiyaç duyacağınız ADC çözünürlüğünü değiştirme ile ilgili bir örnek yapalım. Arduino’ ların bir çoğunda 10 bitlik ADC çözünürlüğü bulunmaktadır. Ancak MSP kartlarının ADC çözünürlüğü değişiklik göstermektedir. Bu yüzden kullanmadan önce kartınıza uygun ADC çözünülüğünü ayarlamanız tavsiye edilir. 

int potPin = A0;    //potansiyometre A0 pinine bağlanmıştır

void setup() {
  // put your setup code here, to run once:
  pinMode(A0, INPUT);

  //analog okuma çözünürlüğü 12 bit olarak ayarlandı
  analogReadResolution(12);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly: 
  int potVal = analogRead(A0);      //pot değerini okuduk

  Serial.print("Pot Degeri:\t");    //seri portta değeri yazdırdık
  Serial.println(potVal);
  delay(100);
}

Şimdi gelelim MSP kartlarının en güzel özelliklerinden biri olan güç tasarrufu modlarına. Energia’ da güç tasarrufu modunun kolayca kullanılabilmesi için “Sleep()”  isimli bir fonksiyon oluşturulmuş. Bu fonksiyon sayesinde “delay()” fonksiyonuna benzer olarak MSP’ nin o satırda beklemesi sağlanabiliyor. Ancak delay fonksiyonu herhangi bir güç tasarrufu sağlamazken sleep modu ise bekleme anında bir çok şeyi devre dışı bırakarak güç tasarrufu sağlıyor. “sleep()” fonksiyonu güç tasarrufurunu LMP3 modu ile aktif etmektedir. Siz farklı bir mod kullanmak istiyorsanız bunu kaynak kodundan değiştirebilirsiniz. Kaynak kodun bulunduğu yere buradan ulaşabilirsiniz.

Bu güç tasarrufu modlarının ne olduğuna ve neleri deaktif ettiğine aşağıdaki resimden ulaşabilirsiniz.

lpm

Şimdi bununla ilgili basit bir örnek verelim. Hem de sleep fonskiyonun verdiği gecikmeyi gözlemleyelim.

int ledPin = RED_LED;                 // Red LED on LaunchPad

void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
  Serial.begin(9600);
}

void loop()
{
  unsigned long f_time = millis();
  digitalWrite(ledPin, HIGH);   // sets the LED on
  sleep(1000);                  // waits for a second
  digitalWrite(ledPin, LOW);    // sets the LED off
  Serial.print("Gecen sure: ");
  Serial.print(millis() - f_time);
  Serial.print("\t");
  sleep(1000);                  // waits for a second
  Serial.print("Gecen sure: ");
  Serial.println(millis() - f_time);
}

Bu kodda ilk örnekteki delay’ ların yerine sleep fonskyionu kullandık. Ancak verilen gecikme seri monittörü açtığımız zaman her 1000 ms için +250 ms eklenmiş olduğunu gözlemledik. Bunun sebebi sleep fonksiyonun sahip olduğu 1 birlik hassasiyettir. Bu yüzden çok hassas işlemler için sürekli kullanım uygun değildir. Ancak siz bu fonksiyona ihtiyaç duymadan kendi sleep ifadenizi de oluşturabilirsiniz. 

Bu konuda anlatacaklarım bu kadardı.  Energia’ nın kullanımı ile ilgili farklı örneklere ve ek bilgilere kullandığınız MSP sürümünün referans sayfasından ulaşabilirsiniz. Ayrıca buradaki PDF’ i inceleyebilirsiniz. İçerisindeki anlatım güzel olup PDF türkçedir. MSP430G2550 için buradan MSP430F5529 için buradan ulaşabilirsiniz.  İlerleyen tarihlerde MSP kullanımı ile özellikle ESP8266 üzerine yeni örnekler paylaşmaya çalışacağım.

İyi çalışmalar.. 

Add a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir