Timing dan Interupsi pada Arduino
Timing dan Interupsi pada Arduino
Seperti yang diketahui sebelumnya, timer digunakan untuk membuat perhitungan waktu menyerupai real time (waktu sebenarnya). Karena timer dapat menyerupai waktu sebenarnya, maka penggunaan timer bisa sebagai pengganti fungsi delay() pada arduino. Selain itu penggunaan timer lebih menguntungkan karena bisa diinterupsi pada saat proses delay.
Contohnya dapat dilihat pada program nyala hidup LED tiap 1 detik menggunakan timer-0 :
Skematik rangkaiannya seperti berikut :
Gambar Skematik Rangkaian Timer Interrupt LED
Cara memilih prescaler :
Gambar Datasheet ATmega328P Timer/Counter Control Register B
Gambar Datasheet Ddeskripsi Clock Select Bit
Cara mencari OCR(Output Compare Registers) :
Jadi, permintaan interupsi (interrupt request) akan aktif setiap 1ms.
Fungsi delay()
delay() berfungsi untuk menjeda program dalam waktu yang ditentukan dalam satuan milisecond(ms)
Contoh :
Program diatas digunakan untuk menunda output pin selama 1 detik.
Fungsi Interrupt
Fungsi interrupt pada Arduino adalah suatu fungsi dimana saat ada sebuah trigger baik secara eksternal maupun internal, fungsi interrupt akan menghentikan sejenak program yang sedang dijalankan oleh arduino. Fungsi interrupt berguna untuk membuat sesuatu terjadi secara otomatis dalam program mikrokontroler dan dapat membantu menyelesaikan masalah pengaturan waktu.
Syntax :
Keterangan :
1. interrupt : jumlah interupsi. Tipe data yang diperbolehkan : int.
2. pin : pin yang digunakan.
3. ISR : ISR yang akan dipanggil saat interupsi terjadi. Fungsi ini tidak boleh mengambil parameter dan tidak mengembalikan apa pun. Fungsi ini terkadang disebut sebagai interrupt service routine.
4. mode : menentukan kapan interupsi harus di-trigger. Empat konstanta telah ditentukan nilainya sebagai berikut :
- LOW = interrupt akan dieksekusi terus menerus selama pin membaca logika LOW.
- RISING = interrupt akan dieksekusi jika terjadi perubahan nilai pembacaan dari LOW ke HIGH.
- CHANGE = interrupt akan dieksekusi jika terjadi perubahan nilai pembacaan, baik itu dari HIGH ke LOW ataupun LOW ke HIGH.
- FALLING = interrupt akan dieksekusi jika terjadi perubahan nilai pembacaan dari HIGH ke LOW.
Pin yang dapat digunakan untuk fungsi interrupt sebagai berikut :
Contoh :
Gambar Rangkaian
Pada program diatas, apabila terjadi perubahan pada pin 2(button dipencet) maka LED akan mati sejenak kemudian hidup kembali.
0 Response to "Timing dan Interupsi pada Arduino"
Post a Comment