Quick Start EZ430-F2013

Baca dulu disclaimer dari saya

Tulisan ini akan membahas bagaimana memulai menggunakan/memprogram EZ430-F2013. Yang dibahas dalam tulisan ini adalah:

  • Langkah-langkah menggunakan Code Composer Studio untuk membuat program sederhana
  • Penjelasan program LED yang berkedip
  • Menambah LED
  • Menjalankan microcontroller tanpa terhubung ke komputer

Baca juga tulisan mengenai pengenalan microcontroller untuk mendapatkan gambaran bagaimana bekerja dengan microcontroller.

Saya mendapatkan development board ini gratis ketika sedang ada promo. Tepatnya saya dapat gratis 3 benda ini (hanya perlu membayar pajak sekitar 100 ribu rupiah, tapi teman-teman yang di Indonesia perlu membayar pajak 250 ribu rupiah).

ez430-f2013.jpg

Di dalam kitnya disertakan 2 IDE: Code Composer Studi (CCS) dan IAR Embedded Workbench. CCS berbasis eclipse (mudah bagi yang sudah kenal eclipse), lebih fleksibel, tapi lambat karena menggunakan Java. IAR lebih cepat karena murni dalam C tapi fitur debuggingnya kurang dibandingkan CCS.

Karena di user guide (PDF 1.3 Mb) ada petunjuk menggunakan IAR. Saya hanya akan menunjukkan menggunakan CCS.

Langkah-langkah menggunakan CCS

Pilih "File" lalu "New", lalu "CCS Project".

ccs-0.jpg

Masukkan nama projectnya, misalnya "blink"

ccs-1.jpg

Pilih tipe projectnya MSP430

ccs-2.jpg

Biarkan saja halaman "Additional Project Settings", dan klik next

ccs-3.jpg

Pilih Output Type: "Executable", Device Variant "MSP430F2XXX" lalu "MSP430F2013", dan diamkan sisanya.

ccs-4.jpg

Setelah selesai projectnya, kita tambahkan file sourcenya. Pilih lagi "File", "New", lalu "Source File".

ccs-0.jpg

Masukkan nama filenya, misalnya "main.c"

ccs-5.png

Lalu copy paste atau ketik ulang program di bawah ini:

#include "msp430f2013.h"

int main()
{
  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
  P1DIR |= BIT0;                        // Set P1.0 to output direction

  for (;;)
  {
    volatile unsigned int i;            // volatile to prevent optimization

    P1OUT ^= BIT0;                      // Toggle P1.0 using exclusive-OR

    i = 10000;                          // SW Delay
    do i--;
    while (i != 0);
  }     
  return 0;
    
}

Compile programnya dengan "Project" lalu "Build Active Project"

Lalu pilih "Target", "Debug Active Target"

Setelah itu klik "Target" Lalu "Run", maka program berjalan dan LED akan berkedip.

Penjelasan Program

Bagian include akan mengimport segala macam definisi untuk Chip yang kita pakai yaitu MSP430-F2013

#include "msp430f2013.h"

Lalu kita mendefinisikan fungsi utama. Dalam C fungsi ini adalah main. Kerangka program kosong adalah seperti ini:

int main()
{
    return 0;
}

Perhatikan bahwa nilai kembalian int dan return 0; adalah konvensi dalam C.

Sekarang kita bahas isi programnya.

Watchdog

Secara default, fungsi watchdog di MSP430-F2013 adalah ON. Watchdog ini adalah fitur supaya kita tidak membuat program yang "hang".Jika watchdog aktif, maka setiap beberapa detik kita harus mereset watchdognya, jika tidak, maka program dianggap hang, dan microcontroller akan direset.

Hal pertama yang dilakukan program sederhana adalah mematikan watchdog:

  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
  

Mensetup pin LED

Di microcontroller, beberapa pin-nya dikelompokkan menjadi "port". Setiap pin bisa menjadi input atau output (tidak bisa keduanya sekaligus). Hal pertama yang perlu disetup adalah mensetup arah pin agar pin LED menjadi output.

Dari datasheet msp430f2013 kita bisa melihat bahwa microcontroller ini punya 2 port, yang satu dinamakan port P1, 8 bit (8 pin) dan satu lagi P2, hanya 2 bit (2 pin):

digital-io.png

Dan dari pinoutnya:

pinoutf2013.png

LED di Development board USB dihubungkan ke port P1 bit 0. Ini bisa dilihat di halaman 12 user guide (sebenarnya user guidenya agak aneh menyebut MSP430x20x1, mestinya MSP430x20xx):

led-ez430f2013.png

Setelah kita tahu di mana port dan pin tempat LED berada, kita perlu mensetup bahwa arah P1.0 adalah output. Untuk mensetup pin tersebut, caranya adalah dengan menulis ke P1DIR, kita or kan dengan BIT0, artinya pin P1.0 arahnya menjadi OUTPUT.

  P1DIR |= BIT0;                        // Set P1.0 to output direction

Ada banyak tutorial di Internet mengenai manipulasi/operasi bit. Misalnya: http://sol.gfxile.net/boolean.html

Menyalakan LED

Jika kita hanya ingin menyalakan LED saja, kita cukup melakukan ini:

    P1OUT |= BIT0;

Tapi karena kita ingin mengedipkan LED, kita ingin agar jika posisinya menjala maka menjad mati, dan jika mati menjadi menyala. Kita bisa melakukannya dengan if seperti ini:

if ((P1OUT & BIT0) == BIT0) { //if it is ON
    P1OUT &= ~BIT0; //turn it off
} else {
    P1OUT |= BIT0; //turn it on
}

Tapi kita bisa memakai sifat operator XOR (di C simbolnya adalah ^), sesuatu jika 0 di-XOR-kan dengan 1 maka hasilnya adalah 1, dan jika 1 di-XOR-kan dengan 1 maka hasilnya menjadi 0. Maka pernyataan if tersebut bisa disingkat menjadi:

    P1OUT ^= BIT0;                      // Toggle P1.0 using exclusive-OR

Delay

Jika kita tidak memberi delay, maka kedipan akan sangat cepat, tidak terlihat oleh mata. Loopnya seperti ini: isi i dengan 10000, kurangi i sampai 0.

    i = 10000;                          // SW Delay
    do i--;
    while (i != 0);

Ada bagian penting dalam deklarasi i, yaitu penggunaan kata kunci volatile:

    volatile unsigned int i;            // volatile to prevent optimization

Artinya: jangan optimasi penggunaan variabel i. Compiler bisa sangat pintar, jika i dioptimasi, maka bisa diketahui bahwa i tidak dipakai untuk apa-apa selain dalam loop itu. Jika optimasi dilakukan, maka compiler akan melihat loop itu tidak perlu dan akan dibuang.

Menambah LED

Dengan 1 LED saja, tidak banyak yang bisa kita lakukan, dengan beberapa LED kita bisa membuat lebih banyak program yang menarik. Anda bisa melihat beberapa ide di halaman ide aplikasi microcontroller (ini masih akan saya lengkapi).

Saya akan menambahkan LED di PIN P1.1 (alias di pin no 3). Berarti development boardnya perlu dibuka dan boardnya dikeluarkan:

tambah-led-1.jpg

Setelah itu saya mengubah programnya menjadi seperti ini (hanya bagian main saja saya tunjukkan):

int main()
{
    int stat;
    
  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
  P1DIR |= BIT0 + BIT1;                        // Set P1.0 to output direction


  stat = 0;
  for (;;)
  {
    volatile unsigned int i;            // volatile to prevent optimization
        
    if (stat==0) {    
        P1OUT ^= BIT0;                      // Toggle P1.0 using exclusive-OR
    } else {
        P1OUT ^= BIT1;                      // Toggle P1.1 using exclusive-OR      
    }
    stat ^= 1;
    i = 50000;                          // SW Delay
    do i--;
    while (i != 0);
    
  }     

Sekarang kita bisa melihat LED menyala bergantian, yang merah di breadboard:

tambah-led-2.jpg

dan yang hijau di board:

tambah-led-3.jpg

Saya menambahkan delay menjadi 50000 supaya lebih terlihat perubahannya. Saya menggunakan kabel extension USB agar mudah mendekatkan development board ke breadboard.

Memisahkan Target Board dari komputer

Target board bisa dilepas, dan jika diberi power yang cukup akan bisa berjalan sendiri. Menghubungkan microcontroller ke 2 batere 1.5 V (total 3 V) cukup untuk menyalakan microcontroller (Pin 1 ke +, dan Pin 14 ke -). Dalam contoh ini saya menambahkan juga LED lain di luar target board supaya lebih menarik.

lepas.jpg

Sayangnya target board ez430-f2013 kurang user friendly untuk dihubungkan ke breadboard (sulit untuk memastikan kabel sudah terhubung dengan pin microcontroller karena ukuran kabel biasanya lebih kecil dari lubang di target board). Solusi yang lebih baik adalah menyolder pin header (akan dibahas di bagian lain).

Penutup

Demikian perkenalan singkat untuk memulai development dengan ez430-f2013.

Copyright © 2009-2018 Yohanes Nugroho