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).
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".
Masukkan nama projectnya, misalnya "blink"
Pilih tipe projectnya MSP430
Biarkan saja halaman "Additional Project Settings", dan klik next
Pilih Output Type: "Executable", Device Variant "MSP430F2XXX" lalu "MSP430F2013", dan diamkan sisanya.
Setelah selesai projectnya, kita tambahkan file sourcenya. Pilih lagi "File", "New", lalu "Source File".
Masukkan nama filenya, misalnya "main.c"
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):
Dan dari pinoutnya:
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):
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:
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:
dan yang hijau di board:
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.
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