Reset dan Interrupt Mikrokontroler AVR ATmega8535

22

2.6.1. Memori

Atmel AVR menggunakan memori internal untuk penyimpanan data dan program. Terdapat empat tipe memori pada Atmel AVR antara lain: program flash memory , memori data register, IO register, dan SRAM, EEPROM, dan fuse bit. Keempat memori tersebut terdapat dalam satu chip tunggal dan pada lokasi yang terpisah. Alamat ke-0 pada memori data berbeda dengan alamat ke 0 pada program flash memory dan alamat ke-0 pada EEPROM.

2.6.1.1 Program Flash Memory

ATmega8535 memiliki 8 KB on-chip in-system reprogramable flash memory non-volatile untuk penyimpanan program. Memori program menyimpan opcode yang dapat dieksekusi dan data statis. AVR tidak dapat menggunakan memori program eksternal; memori flash on-chip merupakan satu-satunya memori program yang dapat diakses oleh core AVR. Karena keseluruhan instruksi AVR memiliki lebar data sebesar 16-bit, maka program flash memory terorganisasi atas 4 KB x 16.

2.6.1.2. Data Memory

Data memory pada ATmega8535 terdiri dari 32 general purpose registers 8-bit 0x0000 - 0x001F, 64 IO register 0x0020 - 0x005F, dan SRAM internal sebesar 512 Byte 0x0060 - 0x025F. Data memory tersebut dapat diakses dengan lima mode pengalamatan, yaitu: direct addressing, indirect addressing with displacement , indirect addressing, indirect addressing with pre-decrement, dan indirect addressing with post-increment.

2.6.2. Reset dan Interrupt

Interrupt akan melakukan lompatan pada sebuah interrupt service routine ISR yang melakukan apa yang seharusnya dilakukan. Interrupt berguna pada situasi tertentu ketika prosesor harus segera merespon suatu interrupt. AVR mendukung beberapa jenis sumber interrupt internal dan eksternal. Sebuah interrupt dapat terjadi dari perangkat internal yang mencapai keadaan tertentu seperti karakter yang diterima oleh UART, atau dari kejadian eksternal seperti 23 level tertentu pada sebuah pin. Setiap interrupt akan menyebabkan program melompat ke alamat memori tertentu yang memiliki intruksi RETI Return from Interrupt untuk mengabaikan interrupt, atau ke sebuah interrupt handler. Pada prosesor AVR, semua interrupt memiliki prioritas yang sama. Tidak dizinkan sebuah interrupt untuk melakukan interrupt terhadap interrupt lain, sehingga, sebuah interrupt dikatakan tidak memiliki prioritas lebih tinggi dari interrupt lain. Namun, adalah memungkinkan terjadinya dua atau lebih interrupt secara simultan. Ketika terjadi dua jenis interrupt yang harus dieksekusi, maka interrupt dengan urutan vektor terendah yang akan dieksekusi terlebih dahulu. Urutan vektor interrupt pada ATmega8535 dapat dilihat pada Tabel 2.4 berikut. Tabel 2.4. Urutan Vektor Interrupt pada ATmega8535 Alamat Awal Urutan Vektor Sumber Deskripsi 0x0000 1 Reset Reset eksternal, power up, watchdog timeout 0x0002 2 Interrupt Eksternal 0 Sinyal hardware pada pin INT0 0x0004 3 Interrupt Eksternal 1 Sinyal hardware pada pin INT1 0x0006 4 Timer 2 Compare Timer 2 compare match 0x0008 5 Timer 2 Overflow Timer 2 overflow Interrupt harus diinisialisasikan terlebih dahulu sebelum dapat dieksekusi. Inisialisasi Interrupt merupakan proses dua langkah, yaitu melakukan unmasking berarti memberikan sebuah nilai 1 pada register yang sesuai dengan interrupt yang akan diaktifkan pada interrupt yang akan diaktifkan, dan mengaktifkan semua interrupt yang telah di-unmask secara global. GICR General Interrupt Control Register digunakan untuk mengaktifkan interrupt eksternal. Men-set bit INT0 akan mengaktifkan interrupt eksternal 0. Ketika perangkat memberikan sinyal pada INT0, sinyal tersebut akan di-AND-kan secara logika dengan bit INT0 pada GICR. Jika hasilnya bernilai 1, maka interrupt diijinkan untuk terjadi dan sebaliknya jika bit INT0 bernilai 0 atau hasil operasi AND selalu 0. Setelah itu, prosesor akan segera mengarahkan interrupt ke alamat yang sesuai dengan tabel vektor interrupt. 24 ATmega8535 memiliki dua pin eksternal interrupt, yaitu INT0 dan INT1. AVR dapat melakukan triggering pada level high atau level low, pada falling edge , atau pada rising edge . Pada beberapa seri AVR terbaru mengimplementasikan pin-change interrupt untuk semua pin pada delapan pin dalam satu grup, menggantikan kebutuhan untuk melakukan polling terhadap pin. Pin-change interrupt handler akan memeriksa keadaan pin yang berasosiasi dengan vektor interrupt, dan menentukan tindakan yang akan lakukan. RESET merupakan interrupt dengan urutan vektor paling rendah, sekaligus merupakan interrupt yang khusus yang selalu diutamakan diatas semua interrupt dan kode program yang sedang dieksekusi. Pin RESET pada AVR merupakan sebuah pin input active-low yang akan memaksa untuk me-reset prosesor dan perangkat lain yang teintegrasi. Reset dapat dikendalikan oleh sebuah generator power-on reset eksternal, sebuah supervisor tegangan yang akan memberikan sinyal reset ketika sumber tegangan berada dibawah batas tertentu, atau komponen lain pada sistem yang lebih besar.

2.6.3. General Purpose IO Port