MSP430 LaunchPad mikroKomut Seti V0.1


launchpad-mspexp430g2-01Oluşturulan komut seti sayesinde, MSP430LaunchPad’in giriş/çıkış pinlerinin “Dijital Giriş-Çıkış”, “Analog Giriş ve PWM Çıkış” olarak kontrol edilmesi sağlanır.

 

Gerekli Donanım :
• MSP 430 LaunchPad
• Analog giriş için Potansiyometre (opsyonel)

Devre Bağlantısı :launchPad

Devre Şeması :

launchPadSema
Komut Setinin Açıklaması :

Komut seti, Serial Monitör üzerinden gönderilen 8 byte lik bir bilgiden oluşur. İlk 3 byte lik bilgi “GÖREV” bilgisi tanımı, sonraki 2 byte “PİN NO” ve son 3 byte da “DEĞER” bilgisi tanımıdır.

mikroKomutSeti
Tablodan da anlaşıldığı üzere, 4 işlem komutu için 4 temel görev tanımı vardır. Pin No, ve her pinin gerçekleştirebildiği işlem yetenekleri için ise, MSP430’un pin haritasına bakılmalıdır. Komut setinin çalışabilmesi için, 1 ile 20 arasındaki pin tanımlaması kullanılmalıdır.

LaunchPadMSP430G2553-V1.5

Komut Seti Kullanım Örnekleri :

Dijital Çıkış :

MSP430LaunchPad üzerindeki karta tümleşik 2 nolu pine (P1_0) bağlı bulunan Kırmızı LED’in yakılma işlemi :

Seri Port Üzerinden Gönderilen komut : pin02oNN

pin02oNN

MSP430LaunchPad üzerindeki karta tümleşik Kırmızı LED’in söndürülme işlemi :

Seri Port Üzerinden Gönderilen komut : pin02oFF

pin02oFF

Bu işlemi Dijital Çıkış özelliği olan tüm pinlerde uygulamak mümkündür.

Dijital Giriş :

MSP430LaunchPad üzerindeki karta tümleşik 5 nolu pine (P1_3) bağlı bulunan S2 butonu ile Dijital Giriş okuma işlemi :

msp430Button

MSP430 LaunchPad üzerinde bulunan 5 nolu pine (P1_3) bağlı bulunan S2butonu pin ile GND arasındadır. Dolayısı ile S2 butonuna basılmadığında, Dijital Giriş Değeri: Lojik 1; S2 butonuna basıldığında ise, Dijital Giriş Değeri: Lojik 0 dır.

Seri Port Üzerinden Gönderilen komut : pin05dRD

pin05dRD1
S2 Butonuna BASILMADIĞINDA Gönderilen Komut Dönütü :

S2 Butonuna BASILDIĞINDA Gönderilen Komut Dönütü :

pin05dRD2

Bu işlemi Dijital Giriş özelliği olan tüm pinlerde uygulamak mümkündür.

Analog Çıkış (PWM) :

MSP430LaunchPad üzerindeki karta tümleşik 14 nolu pine (P1_6) bağlı bulunan Yeşil LED’in istenilen(0 ile 255 arası PWM değer girişi) ışık değerinde yakılma işlemi :

Seri Port Üzerinden Gönderilen komut(%50 PWM) : pwm14127

pwm14127_1

pwm14127 komutunun osiloskop ekranında görünümü :

pwm14127_2

Bu işlemi Analog Çıkış (PWM) özelliği olan tüm pinlerde uygulamak mümkündür.

Analog Giriş :

MSP430LaunchPad kartına harici olarak, 6 nolu pine (P1_4) bağlanan Potansiyometre’nin Analog Giriş değerini okuma işlemi :

Seri Port Üzerinden Gönderilen komut : ana06aRD

ana06aRD1

MSP430 ile Potansiyometre Bağlantısı :

ana06aRD2
Bu işlemi Analog Giriş özelliği olan tüm pinlerde uygulamak mümkündür.

Program Kodu : 

/*******************************************************************************
* @dosya MSP430KomutSistemi.ino
* @yazar Erkan ÇİL
* @sürüm V0.0.1
* @tarih 10-Haziran-2016
* @özet SeriPort üzerinden girilen komut sistemi komutları ile MSP430G2553'ün
Giriş Çıkış Pinlerinin kontrol edilmesi
******************************************************************************
*
* Bu program özgür yazılımdır: Özgür Yazılım Vakfı tarafından yayımlanan GNU
* Genel Kamu Lisansı’nın sürüm 3 ya da (isteğinize bağlı olarak) daha sonraki
* sürümlerinin hükümleri altında yeniden dağıtabilir ve/veya değiştirebilirsiniz.
*
******************************************************************************
*/
/* Eklentiler ------------------------------------------------------------------*/
/* Değişken Tanımlamaları-------------------------------------------------------*/
String anaStr, gorevStr, pinStr, komutStr;
int pinNo;
char buffer[8] = {' ',' ',' ',' ',' ',' ',' ',' '}; // Sekiz bytelik bufferin oluşturulması
/* Alt Fonksyonlar Listesi------------------------------------------------------*/
/* Programınızda kullanılan alt fonksyonlar bu kısımda listelenecektir----------*/
void temizleme(); //temizleme alt programi
void strDuzenleme(); //sting düzenleme alt programi
void girisCikis(); //giriş çıkış fonksyonu alt programi
/* Ayar Fonksyonu---------------------------------------------------------------*/
void setup()
{
// buraya yazdığınız ayarlama kodları, sadece bir kez çalıştırılacaktır:
Serial.begin(9600); //9600 baud Seri Haberleşme Bağlantısı Başlatılıyor
}
/* Sonsuz Döngü Fonksyonu-------------------------------------------------------*/
void loop()
{
// buraya yazdığınız döngü kodları, sonsuz döngü olarak sürekli çalıştırılacaktır:
if (Serial.available() > 0) {
Serial.readBytesUntil('\n', buffer, 8); // '\n' karakteri gelinceye kadar 8 bytelik bufferi oku
strDuzenleme();
girisCikis();
temizleme();
}
}
/* Alt Fonksyonlar--------------------------------------------------------------*/
/* Programınızda kullanılan alt fonksyonlar bu kısımda oluşturulacaktır---------*/
//BUFFER VE STRİNG DEĞER İÇERİKLERİNİN TEMİZLENMESİ :
void temizleme()
{
Serial.println(); // End the line
anaStr = ""; gorevStr = ""; pinStr = ""; komutStr = "";
Serial.flush();
for (int i = 0; i <= 7; i++){
buffer[i] += ' ';
}
}
//SERİ PORT EKRANINDAN GELEN BİLGİNİN DÜZENLENMESİ:
void strDuzenleme()
{
for (int i = 0; i <= 7; i++){
anaStr += String(buffer[i]);
}
Serial.print("KOMUT: ");
Serial.println(anaStr);
gorevStr = anaStr.substring(0,3);
Serial.print("Gorev: ");
Serial.print(gorevStr);
pinStr = anaStr.substring(3,5);
Serial.print("\tPin No: ");
Serial.print(pinStr);
pinNo = pinStr.toInt();
komutStr = anaStr.substring(5,8);
Serial.print("\tDeger: ");
Serial.println(komutStr);
}
void girisCikis()
{
// DİJİTAL ÇIKIŞ OLUŞTUR:
if(gorevStr == "pin")
{
pinMode(pinNo, OUTPUT);
if(komutStr=="oNN")
{
digitalWrite(pinNo, HIGH);
Serial.print("DURUM: pin");
Serial.print(pinNo);
Serial.print(">HIGH ");
}
else if(komutStr=="oFF")
{
digitalWrite(pinNo,LOW);
Serial.print("DURUM: pin");
Serial.print(pinNo);
Serial.print(">LOW ");
}
}
// ANALOG ÇIKIŞ (PWM) OLUŞTUR:
if(gorevStr == "pwm")
{
pinMode(pinNo, OUTPUT);
int pwmCikisDegeri = komutStr.toInt();
analogWrite(pinNo, pwmCikisDegeri);
Serial.print("DURUM: pin");
Serial.print(pinNo);
Serial.print("PWM Cikis Degeri:");
Serial.print(pwmCikisDegeri);
}
// ANALOG GİRİŞ OKU:
if(gorevStr == "ana" && komutStr =="aRD")
{
pinMode(pinNo, INPUT);
int analogGirisDegeri = analogRead(pinNo);
Serial.print("DURUM: pin");
Serial.print(pinNo);
Serial.print("OKUNAN Analog Deger:");
Serial.print(analogGirisDegeri);
}
// DİJİTAL GİRİŞ OKU:
if(gorevStr == "pin" && komutStr =="dRD")
{
pinMode(pinNo, INPUT);
int butonDurumu = digitalRead(pinNo);
if (butonDurumu == HIGH) {
Serial.print("DURUM: pin");
Serial.print(pinNo);
Serial.print("'nolu Pin Dijital Giris Degeri: 1");
}
else {
Serial.print("DURUM: pin");
Serial.print(pinNo);
Serial.print("'nolu Pin Dijital Giris Degeri: 0");
}
}
}
  1. Henüz hiç yorum yok.
(yayınlanmayacak)