Selasa, 06 Februari 2018

Memori Atmega8535

            1. MEMORI PROGRAM Flash ROM

ATmega8535 berisi 8K byte On-chip In-System Flash memori reprogrammable untuk penyimpanan program. Karena lebar semua instruksi AVR adalah 16 atau 32 bit, Flash ini disusun sebesar 4K x 16. Untuk keamanan perangkat lunak, ruang memori Flash Program dibagi menjadi dua bagian, bagian Boot Program dan bagian Application Program.

Gambar Peta Alamat Flash ROM


Memori flash memiliki daya tahan setidaknya 10.000 siklus menulis/menghapus. Lebar Program Counter (PC) ATmega8535 adalah 12 bit, sehingga memori menangani lokasi memori program 4K.
Kedua bagian Ruang memori Program Flash yaitu bagian Program Boot dan Program Aplikasi,  telah mendedikasikan bit Lock untuk perlindungan menulis dan membaca/menulis. Instruksi SPM yang ditulis ke bagian Aplikasi Flash memori harus berada di bagian Program Boot. Selama panggilan interupsi dan subroutine, alamat kembali Program Counter (PC) disimpan di Stack Pointer (SP). Stack  Pointer secara efektif dialokasikan dalam data umum SRAM, dan akibatnya ukuran Stack hanya dibatasi oleh ukuran total SRAM dan penggunaan SRAM. Semua program pengguna harus menginisialisasi SP dalam rutin reset (sebelum subrutin atau interupsi dieksekusi). Stack Pointer SP dapat diakses baca/tulis di ruang I/O. Didalam arsitektur AVR, SRAM data dengan mudah dapat diakses melalui lima mode pengalamatan yang berbeda. 

2. MEMORI DATA SRAM


Memori Data SRAM ATmega8535 memiliki 608 Alamat lokasi Memori data terdiri dari File Register, Memory I/O dan internal SRAM. Yang pertama 96 lokasi alamat file Register dan Memori I/O, dan selanjutnya 512 lokasi alamat data internal SRAM. Lima mode pengalamatan yang berbeda untuk mencakup memori data: langsung,  Tidak langsung, tidak langsung dengan Pra-penurunan, tidak langsung dengan Pasca-penaikan, dan tidak langsung dengan pemindahan



Gambar Peta Memori Data SRAM

Mode pengalamatan langsung (direct addressing) Pengalamatan memori dengan cara menuliskan langsung satu byte alamat memori pada operand instruksi, sehingga hanya dapat menjangkau alamat memori yang ditempati oleh file register dan memori I/O. Instruksi-instruksi yang menggunakan pengalamatan langsung ini contohnya adalah :

ADD     Rd, Rr ;
SUB     Rd, Rr ;
MOV    Rd, Rr ;
LDS     Rd, k;
STS     k, Rr;
IN       Rd, P ;
OUT    P,  Rr ;

Rd adalah alamat register tujuan data dan Rr adalah alamat register asal data merupakan operand pada instruksi. Alamat register ini diisi dengan alamat antara 0x00 (00 heksadesimal) sampai dengan alamat 0x1F (1F heksadesimal).
k adalah alamat SRAM yang dapat menjangkau alamat dari 0x60 sampai pada alamat 0xFF (255).
P adalah alamat memori I/O diisi dengan alamat antara 0x00 sampai dengan 0x3F.  Perintah IN dan OUT dapat diganti dengan menggunakan perintah LD dan ST tetapi alamat memori I/O diisi dengan alamat antara 0x50 sampai dengan 0x5F.

Pengalamatan langsung tidak dapat mencapai ruang seluruh data SRAM, karena alamat internal SRAM melebihi satu byte sehingga tidak dapat dituliskan pada operand instruksi. Untuk dapat mencapai alamat internal SRAM dapat menggunakan pengalamatan memori tidak langsung, yaitu menyimpan alamat internal SRAM pada satu pasangan register X, Y dan Z atau register R26 sampai R31. Di File register R26 sampai R31 ini sebagai fitur register pointer pengalamatan tidak langsung. pada pengalamatan tak langsung ini memori yang diakses adalah memori yang ditunjuk oleh register pointer X, Y atau Z, sedangkan yang kita tuliskan pada operand instruksi adalah alamat register X, Y atau Z. Contoh instruksi pengalamatan tak langsung adalah : 

LD     Rd, X;
LD     Rd, Y;
LD     Rd, Z;
ST      X, Rr;
ST      Y, Rr;
ST      Z, Rr;

Mode pengalamatan memori tidak langsung dengan pasca-penaikan (Indirect and Post Increment) merupakan pengalamatan memori dengan menambahkan 1 (increment) dari data yang tersimpan pada register pasangan X, Y atau Z setelah eksekusi dilaksanakan. Misalnya pasangan register X berisi 0x013A, maka dengan mode pengalamatan ini, setelah instruksi dilaksanakan,  X akan berisi 0x013A + 0x0001 = 0x013B. Contoh perintah dengan menggunakan mode pengelamatan ini adalah :

LD     Rd, X+;
LD     Rd, Y+;
LD     Rd, Z+;
ST     X+, Rr;
ST     Y+, Rr;
ST     Z+, Rr;

Mode pengalamatan memori tidak langsung dengan pre-penurunan (Indirect and Pre - Decrement ) merupakan pengalamatan memori dengan mengurangi 1 (decrement) dari data yang tersimpan pada register pasangan X, Y atau Z sebelumnya eksekusi dilakasankan. Misalnya pasangan register X berisi 0x01D8, maka dengan mode pengalamatan ini X akan berisi 0x01D8 - 0x0001 = 0x01D7. Contoh perintah dengan menggunakan mode pengelamatan ini adalah :

LD     Rd, -X;
LD     Rd, -Y;
LD     Rd, -Z;
ST     -X, Rr;
ST     -Y, Rr;
ST     -Z, Rr;

Mode pengalamatan tidak langsung dengan Pemindahan (Indirect with Displacement) adalah pengalamatan memori dengan memindahkan alamat memori pointer ditambah nilai indeks q. nilai indeks q dapat mencapai 63 lokasi alamat dari dasar alamat yang diberikan oleh Register Y atau Z. misalkan register Y berisi alamat memori 0x1A3 dan q diganti dengan 0x05, maka alamat memori yang diakses adalah 0x1A3 + 0x05 = 0x1A8. Contoh instruksi dengan mode pengalamatan ini adalah:

LDD    Rd, Y+q;
LDD    Rd, Z+q;
STD    Y+q, Rr;
STD    Z+q, Rr;

Dengan semua mode pengalamatan ini maka 32 working register serbaguna, 64 I / O Register, dan 512 byte Data SRAM internal dalam ATmega8535 semuanya dapat diakses. 

3. MEMORI DATA EEPROM

Memori data EEPROM  ATmega8535 ini berisi 512 byte memori data EEPROM. Memori data ini  diorganisasi sebagai ruang Data terpisah, di mana setiap satu byte dapat dibaca dan ditulis. EEPROM memiliki daya tahan setidaknya 100.000 siklus menulis/menghapus. Akses antara EEPROM dan CPU yang dijelaskan berikut ini, melibatkan Register Alamat EEPROM (EEAR), Register Data EEPROM (EEDR), dan register Pengendalian EEPROM (EECR) yang dapat diakses pada ruang memori I/O.

EEPROM Address Register (EEAR) terdiri dari EEARL dan EEARH yang berfungsi menuliskan alamat EEPROM yang akan diakses. Alamat EEPROM dapat diakses secara linier mulai dari 0 (0x000) sampai 511 (0x1FF). Alamat EEPROM yang sesuai harus diisikan ke register EEAR sebelum EEPROM diakses.

EEPROM Data Register (EEDR) adalah register satu byte. Pada operasi menuliskan data pada EEPROM, EEDR berisi data untuk dituliskan pada EEPROM sesuai dengan alamat yang ditetapkan oleh EEAR. Sedangkan pada operasi membaca data pada EEPROM, EEDR berisi data yang dibaca dari EEPROM yang ditunjuk alamatnya oleh EEAR.

EEPROM Control Register (EECR) adalah register untuk mengendalikan operasi menulis atau membaca data pada EEPROM. Ada empat bit kendali yaitu :

Bit 3 – EERIE: EEPROM Ready Interrupt Enable, jika bit ini ditulis satu (1) maka EEPROM siap untuk diinterupsi jika bit I pada SREG sedang diset. jika ditulis nol (0) maka interupsi EEPROM dimatikan.

Bit 2 – EEMWE: EEPROM Master Write Enable, jika bit ini diberi satu (1) maka data yang ada pada EEDR akan ditulis pada EEPROM sesuai alamat yang ditunjuk oleh EEAR dengan mengeset bit EEWE empat siklus clock. jika bit ini diberi nol (0) maka mengeset bit EEWE tidak akan berpengaruh.

Bit 1 – EEWE: EEPROM Write Enable, adalah sinyal tulis ke EEPROM. Jika alamat dan data telah benar maka bit EEWE diberikan satu (1) untuk menuliskan data ke EEPROM.

Bit 0 – EERE: EEPROM Read Enable, adalah sinyal baca ke EEPROM. Jika alamat telah dituliskan pada EEAR maka bit EERE diberikan satu (1) untuk memberikan picu baca data dari EEPROM. EEPROM dapat dibaca dalam satu siklus instruksi dan data dapat diperoleh secara langsung. Ketika membaca EEPROM, CPU akan dihentikan selama empat siklus sampai melanjukan instruksi berikutnya.