Avise – AVR Virtual Stack Engine


Avise (AVR Virtual Stack Engine) adalah virtual stack engine yang dirancang khusus untuk beberapa mikrokontroler AVR ATmega antara lain: ATmega8, ATmega168, ATmega32 dan ATmega162. Avise adalah bahasa pemrograman Forth yang dimodifikasi. Selayaknya Forth, Avise menggunakan teknik pemrograman threaded-code. Avise diklaim memiliki pemroses yang cepat.

Untuk mikrokontroler AVR ATmega, selain Avise, ada beberapa versi Forth yang sempat saya gunakan yakni: FlashForth dan amForth. Namun keduanya tidak mendukung mikrokontroler ATmega8 karena memang program Forth-nya sendiri (compiler + interpreter) membutuhkan memori yang besar sehingga hanya bisa digunakan pada mikrokontroler dengan memori besar seperti ATmega328.

Berikut ini adalah contoh sistem yang saya buat menggunakan FlashForth:

KISUNO – Dialek Pemrograman Ala Ladder Pada Arduino UNO

 

Avise sangat menarik karena menyediakan versi untuk ATmega8. Meskipun banyak keterbatasan, tapi sangat cukup digunakan untuk sistem yang tidak membutuhkan program yang kompleks.

Avise adalah implementasi Forth. Dan Forth adalah bahasa pemrograman berbasis stack. Oleh karenanya parameter-parameter fungsi disimpan dalam stack. Ketika sebuah fungsi dengan 2 parameter dipanggil, maka fungsi tersebut akan mengambil 2 buah nilai dari stack teratas. Dan jika fungsi tersebut mengembalikan 1 atau beberapa nilai, maka akan disimpan atau dimasukkan ke dalam stack. Tak salah jika Avise merupakan singkatan dari AVR Virtual Stack Engine.

 

Avise Untuk ATmega8

Mikrokontroler AVR ATmega8 dengan kapasitas memori 8 kilobyte memang kurang ideal untuk mesin stack. Biasanya, Forth untuk mikrokontroler dengan memori kecil hanyalah berupa kompiler yang mengubah kode program bahasa Forth menjadi bahasa mesin.

Namun tidak demikian halnya dengan Avise. Pembuat Avise berkenan membuat versi Avise untuk ATmega8, sehingga kita bisa menjadikan ATmega8 sebagai mesin stack yang mandiri dengan kelengkapan berupa antarmuka pemrograman ASCII melalui komunikasi serial, tokenizer dan evaluator, kamus (dictionary) fungsi berupa tabel dan sistem operasi sederhana.

Ini benar-benar menarik!

Avise untuk ATmega8 diprogram untuk bekerja pada frekuensi 8MHz. Ini juga merupakan salah satu spesifikasi yang menurut saya menguntungkan karena ATmega8 bisa bekerja tanpa kristal, cukup menggunakan clock internal 8MHz. Baudrate komunikasi serial yang digunakan juga mengasikkan, yakni 19200. Jadi lumayan cepat.

 

Mencoba Avise ATmega8

Pembuat Avise menyediakan file .HEX yang bisa didownload di sini. Pilih file av43808.hex dan tulis atau program ke mikrokontroler ATmega8.

Saya menggunakan board KISFORTHUNER yang sudah memiliki port serial sebagai berikut.

Untuk terminal saya menggunakan e4thcom. Tentu saja kita bisa menggunakan program lain seperti Hyperterminal, TeraTerm maupun Putty.

Dari screenshot eksperimen di atas, kita dapat mengetahui bahwa Avise versi ATmega8 menyediakan sekitar 90 word (fungsi). Mestinya bisa lebih sedikit lagi jika seandainya fungsi-fungsi operasi GPIO ditiadakan. Tapi pembuat Avise memutuskan untuk menyediakan fungsi-fungsi GPIO yang bisa langsung diakses dengan mudah.

Contoh: board KISFORTHUNER memiliki Buzzer yang dikontrol oleh pin GPIO PD2. Untuk membunyikan Buzzer, kita cukup memasukkan perintah:

   $d2 oh

Dan untuk mematikan Buzzer, cukup dengan perintah:

   $d2 ol

oh atau OH (Avise tidak membedakan huruf besar dan kecil), adalah fungsi untuk mengeset bit tertentu pada port tertentu. $d2 (atau $D2) berarti PORTD bit ke-2.

ol atau OL adalah kebalikan OH. OL akan mereset bit tertentu pada port tertentu.

Pada screenshot juga ditunjukkan contoh pendefinisian fungsi bzr-on dan bzr-off yang berfungsi untuk membunyikan Buzzer dan mematikan Buzzer.

   : bzr-on $d2 oh ret
   : bzr-off $d2 ol ret

Untuk membaca Analog-Input, tersedia fungsi AIN. Contoh: untuk membaca nilai ADC dari A0 dan A1 adalah sebagai berikut:

   0 AIN
   1 AIN

Atau bisa juga ditulis sebagai berikut

   0 AIN 1 AIN

atau

   0 1 AIN AIN

Dengan perintah tersebut, maka stack akan terisi nilai ADC dari Analog-Input pin A0 dan A1 dengan nilai ADC A0 berada dipuncak stack.

 

Kunjungi Situs Kami

 

Penutup

Banyak yang harus dipelajari melalui banyak eksperimen untuk mendayagunakan Avise. Avise memang Forth, tapi yang namanya Forth, yang standar hanya beberapa fungsi saja, sisanya tergantung pada pembuatnya. Oleh karenanya setiap kali berganti Forth, maka kita harus mempelajari kembali masing-masing fungsi yang dimilikinya.

Selamat belajar dan teruslah berkarya.

 

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini:
search previous next tag category expand menu location phone mail time cart zoom edit close