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