• Tidak ada hasil yang ditemukan

Fungsi Soft Timer untuk Keperluan Operasi Tundaan dan Penjadwalan (Scheduling) Pada Sistem Embedded

N/A
N/A
Protected

Academic year: 2021

Membagikan "Fungsi Soft Timer untuk Keperluan Operasi Tundaan dan Penjadwalan (Scheduling) Pada Sistem Embedded"

Copied!
6
0
0

Teks penuh

(1)

http://iwan.blog.undip.ac.id

Pada artikel Engineering View: Control Problems and Tools , saya telah sedikit menyinggung sistem embedded berkatagori reactive. Dalam sistem jenis reactive ini, interaksi sistem dengan lingkungan pada dasarnya memiliki kekangan waktu yang nyata sekali (bersifat real time). Sekarang coba anda bayangkan, apa yang terjadi jika sistem alarm gedung baru berbunyi tiga puluh menit setelah terjadinya kebakaran. Bagaimana perasaan anda jika lima menit setelah transaksi penarikan di ATM, uang belum juga keluar dari mesin tersebut. Apakah anda merasa nyaman, jika AC mulai hidup setelah dua menit tombol ON pada remote control ditekan. Apakah anda tidak merasa kecewa ketika sistem pengingat pada jam tangan tidak berbunyi setelah waktu setting berlalu?. Bagaimana nasib pengendara mobil mewah, jika airbag pada steer mobil baru mengembang lima detik setelah terjadinya tabrakan (ya terlambat hanya lima detik saja...). dst..dst... Intinya, selain kebenaran logika program, salah satu syarat penting yang harus dipenuhi dalam sistem-sistem embedded reactive adalah masalah kekangan dan respon waktu sistem.

Terkait dengan pengembangan sistem-sistem embedded reactive tersebut, sebelum anda melakukan coding, lakukan terlebih dulu thinking dan drawing, untuk lebih jelasnya silahkan anda rujuk (kembali): Design of Embedded Control System Using Statechart: One Picture is Worth a Thousand of Words ! dan Tutorial Perancangan Sistem Embedded Berbasis Statechart: Studi Kasus Pada Line Follower Mobile Robot .

Jika kode fungsi yang merepresentasikan prilaku sistem embedded telah anda dapatkan (tentunya lewat tiga tahapan utama: Thingking, Drawing and Coding), maka permasalahannya sekarang adalah bagaimana program utama menjadwal pemanggilan fungsi tersebut.

Pada artikel ini saya akan menyajikan semacam template softtimer yang dapat anda gunakan sebagai sistem penjadwal dan sekaligus dapat dimanfaatkan juga sebagai basis operasi tundaan yang mungkin anda perlukan dalam sistem reactive yang sedang dibangun.

Dengan menggunakan softtimer yang nanti tersaji, anda dapat meng-create timer dengan jumlah sesuai kebutuhan. Softtimer tersebut saya coding-kan dengan bahasa C (compiler CodevisionAVR) untuk microcontroller AVR. Softtimer dirancang menggunakan tipe data struktur dengan memanfaatkan perangkat keras timer1 (timer

(2)

//******this template created by i-one for u*********/ //jumlah timer soft, disesuaikan dengan kebutuhan

#define MAX_TIMER 2;

typedef unsigned int uint; typedef unsigned char uchar; typedef struct{

uint delay; // delay dlm detak (tick)-> 1 tick = 1 ms

uchar time_out; //time_out=1 ->delay telah tercapai

uchar enable; //1 enable, 0 disable counting down

} soft_timer;

//deklarasi soft timer

soft_timer my_timer[MAX_TIMER];

//******deklarasi fungsi-fungsi pengaksesan timer

void init_reg_timer1();

/*

fungsi ini dipanggil untuk inisialisasi register- register timer1. fungsi cukup dipanggil 1x, jika anda

menggunakan timer lain, kode inisialisasi anda sesuaikan */

void set_timer(unchar no_timer, uint delay_ms);

/*

Jika fungsi ini dipanggil, maka count down timer akan mulai dijalankan

-no_timer: nomer timer yang digunakan (0,1,2,dst) -delay_ms: waktu tunda dlm satuan milisecond

*/

void kill_timer(uchar no_timer);

/*

fungsi ini digunakan untuk menghentikan proses counting down soft timer

*/

uchar get_timeout(uchar no_timer);

/*

fungsi ini digunakan untuk mengecek apakah waktu seting timer (lihat fungsi set_timer) sudah tercapai atau belum */

(3)

//**************definisi-definisi fungsi soft timer

void init_reg_timer1() {

//inisialisasi reg timer 1

//gunakan bantuan program generator

TCCR1A=0x00; TCCR1B=0x02;

//nilai awal timer 16 bit =0xFFFF->agar lsng interupsi

TCNT1H=0xFF; TCNT1L=0xFF;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x04; }

void set_timer(uchar no_timer,uint delay_ms) {

my_timer[no_timer].delay= delay_ms;

my_timer[no_timer].time_out=0; //reset

my_timer[no_timer].enable=1; //start countdown timer

}

void kill_timer(uchar no_timer) {

my_timer[no_timer].enable=0;

my_timer[no_timer].time_out=0; }

uchar get_timeout(uchar no_timer) {

return my_timer[no_timer].time_out; }

/* Timer 1 overflow interrupt service routine tiap 1 ms Clock kristal: 4 MHz, untuk clock crystal yang berbeda sesuaikan nilai TCNT1H dan TCNT1L –nya*/

interrupt [TIM1_OVF] void timer1_ovf_isr(void) {

(4)

{

if(my_timer[index].delay==0) {

my_timer[index].time_out =1; //set time_out

my_timer[index].enable=0; } else my_timer[index].delay --; //decrement } } } //**************end of template*******************

Contoh Perancangan Sistem Pemanas dan ilustrasi pemanfaatan fungsi soft timer Gambar berikut memperlihatkan diagram blok perangkat keras sistem kontrol pemanas

Rancanglah perangkat lunak sistem pemanas tersebut dengan prilaku sebagai berikut: Sesaat setelah kita menekan tombol berlabel Start, pemanas akan menyala selama 30 menit --kecuali jika kita tekan tombol berlabel Stop.

Penyelesaian

Berdasarkan problem diatas, nampak bahwa kita hanya membutuhkan dua state (keadaan) yang berbeda untuk merepresentasikan prilaku yang diharapkan: state Heater Off dan State Heater On. Transisi dari satu state ke state lain sudah cukup jelas. Gambar dibawah memperlihatkan prilaku sistem dalam bentuk statechart-nya.

(5)

Dengan mengacu statechart diatas maka realisasi fungsi transisi state (fungsi prilaku ) dapat mengambil bentuk:

void statechart_heater(void) {

switch(state) {

case HEATER_OFF: if(PB_START==PUSHED) {

HEATER=ON; count_mnt=0;

set_timer(0,60000); // seting timer 1menit state=HEATER_ON;

} break;

case HEATER_ON : if(get_timeout(0)) { count_mnt++; set_timer(0,60000); } if((PB_STOP==PUSHED)||(count_mnt>=30)) { HEATER=OFF; kill_timer(0); state=HEATER_OFF; } break;

(6)

Berikut adalah potongan kode program utama untuk sistem kontrol heater tersebut:

…… ……

enum {HEATER_OFF, HEATER_ON} #define PORTB.0 HEATER

#define OFF 0 // anggap heater active high #define ON 1 //anggap heater active high uchar state;

main() {

//inisialisasi Hardware -> DDRB.0 =output

DDRB.0=1;

//inisialisasi register timer1

init_reg_timer1();

//inisialisai state dan output heater

state=HEATER_OFF; HEATER=OFF;

//enable general interupt

asm(“SEI”)

//set timer soft 1 selama 50 ms

set_timer(1,50);

//never ending looping dengan penjadwalan while(1)

{

if(get_timeout(1) {

statechart_heater();

set_timer(1,50); //set ulang softtimer1 selama 50ms

} } }

Referensi

Dokumen terkait

Perkembangan Motorik Kasar Almira Kifthia Desanti, dari data penilaian dalam Penggunaan Media Gamolan untuk mengembangkan motorik kasar Almira dalam item

NAMA SCEDULE BANYAKNYA TENDANGAN POIN YANG DIHASILKAN PARTAI RONDE DOLYO CHAGI IDAN DOLYO CHAGI DOLYO CHAGI IDAN DOLYO CHAGI 1 Uswatun Hasanah PENYISIHAN.

Namun, di dalam penelitian yang akan dilakukan lebih membahasa tentang bagaimana proses pembelajaran Fikih dengan menggunakan teknik POGIL yang dilaksanakan di dalam kelas maupun

Fokus pengembangan penataan bangunan dan lingkungan di Kabupaten Gresik adalah pada kawasan wisata dan kawasan heritage/bersejarah yaitu sebagai berikut:... VII - 15 • Kawasan

Jumlah sel bakteri pada suatu sampel diketahui dengan menghitung jumlah koloni yang tumbuh pada media tersebut dikalikan dengan faktor pengencernya dengan

Pendapatan yang didapatkan oleh Home Industry “Bunda Arum” diperoleh dari pengurangan dari besarnya penerimaan (Jumlah produksi kurma salak dikalikan dengan harga kurma

Alamat ketua komite   : Cot keumuning  82.. Nama Sekretaris Komite  

Dari beberapa percobaan di atas dapat ditarik kesimpulan bahwa ketika suatu senyawa yang didalamnya terdapat air dan direaksikan oleh asam sulfat pekat, air dari