Archive for » July 1st, 2011«

Perkenalan ke AVR lanjutan

Interrupt Function

sebagai mana namanya, fungsi ini akan menginterupsi program yang sedang diproses dan mengerjakan program lain yang ada dalamnterrupt Service Routine (ISR) yang akan melakukan apapun yang harus dilakukan saat terjadi interupsi.  interupsi ini biasa digunakan ketika prosessor harus segera merespon ke   interrupt  atau dalam kasus-kasus dimana sangat tidak efektif atau boros untuk prosessor dalam memilih sebuah perintah untuk dilaksanakan. sebagai ilustrasi, ketika kita sedang mengerjakan sesuatu kemudian tiba-tiba atasan kita memerintahkan melakukan hal lain dengan segera, maka kita akan meninggalkan pekerjaan yang sedang kita lakukan untuk sementara waktu sampai tugas yang diberikan oleh atasan yang harus dilakasanakan segera, dapat kita selesaikan, dan selanjutnya kita kembali kekegiatan semula. atau contoh lain, saat kita sedang membaca buku, kemudian tiba-tiba telpon berdering, sehingga kita akan berhenti membaca buku untuk mengangkat telepon dan setelah selesai kita kembali melanjutkan membaca buku.



Contoh dari aplikasi yang sangat berguna lainnya dari interrupt seperti pada perangkat input. Sebagai contoh pada aplikasi keypad, dengan kemampuan dari mikrokontroller untuk memproses instruksi-instruksi yang sangat cepat, sementara manusia lebih lambat. maka sangat boros dan tidak efektif bagi prosessor untuk menunggu salah satu keypad ditekan oleh manusia. perihal ini, penekanan pada keypad mungkin dapat menyebabkan sebuah interrupt dan mikrokontrol dapat beristirahat dalam artian berhenti memproses untuk menunggu salah satu key di tekan untuk melakukan sesuatu berdasarkan perintah dari penekanan key tersebut. jika key ditekan dimana pertama-tama beberapa hal diperlukan untuk menyebabkan tereksekusinya sebuah perintah, prosessor akan kembali untuk menunggu key selanjutnya sampai key dianggap cukup untuk mengeksekusi sebuah perintah. penggunaan interrrupt membebaskan prosessor dari memilih keypad secara konstant sehingga prosessor berada  pada tingkat yang jauh lebih cepat dari yang kita dapat menekan tombol.

Setiap Interrupt memiliki alamat vektor yang ditugaskan ke bagian yang rendah dalam memori program. Compiler menempatkan alamat permulaan dari yang terkati dengan Interrupt Service Routines dan instuksi melompat relatif pada lokasi vektor pada setiap interrupt. Ketika terjadi  interrupt, program akan selesai mengeksekusi instruksi yang sedang berlangsung kemudian  bercabag atau menuju lokasi vektor yang terkait dengan interrupt tersebut. Program kemudian mengeksekusi relative jump instruction ke  ISR dan mulai mengeksekusinya. ketika terjadi interrupt, return address ( alamat dari instruksi selanjutnya yang akan dieksekusi setelah interrupt selesai dieksekusi) disimpan pada System stack. Instruksi terakhir Service routine interrupt adalah sebuah instruksi bahasa assembly RETI, yang mana adalah return from interrupt. Instruksi ini menyebabkan return address dimunculkan dari stack dan program dilanjutkan dari titik dimana program tersebut diinterupsi.

Pada prosessor AVR, semua interrupt memiliki prioritas yang sama, oleh karena itu sebuah interrupt tidak dapat menginterupsi yang lain, tetapi dua interrupt dapat terjadi serentak. dalam kasus ini,  interrupt dengan nilai vektor paling rendah akan dieksekusi pertama. Mengacu pada tabel vektor pada spesifikasi prosessor.

 

selanjutnya,…mungkin dengan contoh program ^^V

Category: AVR  Leave a Comment