Struktur Memori ATtiny2313


Arsitektur AVR memiliki dua ruang memori utama yakni Memori Program (On-chip In-System Reprogrammable Flash Memory) dan Memori Data (SRAM Data Memory). Selain itu, AVR juga dilengkapi dengan EEPROM sebagai penyimpan data non-volatile, yang tidak hilang manakala sistem dimatikan.

On-chip In-System Reprogrammable Flash Memory
ATtiny2313 mempunyai memori flash sebesar 2 kilobyte yang dapat diprogram ulang. Memori ini digunakan untuk menyimpan program. Karena semua instruksi AVR memiliki lebar 16-bit atau 32-bit, maka memori program diorganisasikan sebagai 1 kilo x 16-bit, atau 1 kilo x 2-byte, atau 1 kiloword.

tn2313pmMemori flash memiliki ketahanan proses tulis-hapus sekitar 10.000 kali. Proses penulisan dan penghapusan memori ini dapat dilakukan dengan teknik pemrograman paralel dan teknik pemrograman serial. Teknik pemrograman serial lebih banyak digunakan karena tidak membutuhkan tegangan pemrograman khusus (11,5 – 12,5 volt).

Seperti yang ditunjukkan oleh gambar ilustrasi, program memori menempati alamat 0x0000 sampai dengan 0x03FF, atau alamat 0000 – 1023. Selain program, memori program juga digunakan untuk menyimpan konstanta-konstanta individu maupun kelompok yang biasa disebut tabel.

Konstanta individu maupun tabel dapat dialokasikan diseluruh ruang memori yang tersedia. Akan tetapi bukan berarti sembarangan naruh, jangan sampai terjadi overlap dengan alamat memori yang dialokasikan untuk Stack, jangan juga menerjang alamat memori yang dialokasikan untuk Interrupt Vector. Untuk menempatkan konstanta atau tabel pada alamat tertentu secara spesifik, gunakan direktif ORG.

Untuk mengakses data pada memori program digunakan instruksi LPM (Load Program Memory). Instruksi LPM akan mengambil data pada alamat memori yang ditunjuk oleh pasangan register R31:R30 atau dikenal sebagai register pointer Z.

SRAM Data Memory

tn2313sram

Seperti ditunjukkan pada gambar ilustrasi di samping, memori data dipetakan menjadi tiga bagian yakni Register File, Register I/O, dan Internal SRAM. Register File menempati 32 byte pertama dengan alamat 0x0000 sampai dengan 0x001F, Register I/O menempati 64 byte selanjutnya dengan alamat 0x0020 sampai dengan 0x005F, dan Internal SRAM menempati 128 byte sisanya dengan alamat 0x0060 sampai dengan 0x00DF. Sekarang kita tahu mengapa alamat awal Internal SRAM adalah 0x0060. Alamat akhir Internal SRAM (dalam hal ini 0x00DF) biasa disebut dengan RAMEND.

Register File (R0-R31) adalah General Purpose Working Register, yakni register-register yang digunakan untuk berbagai keperluan seperti operasi bilangan dan logika, operasi-operasi yang secara spesifik berhubungan dengan instruksi-instruksi assembler, dan pengalamatan. Register R26 sampai dengan R31 berfungsi sebagai pointer dalam proses pengalamatan tak-langsung.

Secara umum register-register ini adalah penyimpan data sementara, oleh karenanya untuk program dengan jumlah variabel yang sedikit dapat diimplementasikan tanpa menggunakan Internal SRAM, cukup menggunakan register sebagai variabel.

Register I/O atau disebut juga Memori I/O adalah register-register dengan fungsi khusus seperti Timer/Counter, UART, I/O Port, EEPROM, dan lain-lain. Register I/O diberi nomor 0x00 sampai 0x3F. Masing-masing register memiliki fungsi khusus. Sebagai contoh register I/O nomor 0x0018 yang terletak di alamat 0x0038 adalah register PORTB dan register I/O nomor 0x001B yang terletak di alamat 0x003B adalah register PORTA.

Internal SRAM adalah memori aktual dari mikrokontroler AVR. Di sinilah tempat menyimpan variabel-variabel selama mikrokontroler beroperasi. Untuk mengakses Internal SRAM digunakan pengalamatan langsung dan tak-langsung. Instruksi dengan pengalamatan langsung untuk mengakses Internal SRAM adalah LDS (Load Direct from Data Space) dan STS (Store Direct to Data Space).

Sedangkan instruksi dengan pengalamatan tak-langsung untuk mengakses Internal SRAM adalah LD (Load Indirect from Data Space to Register) dan ST (Store Indirect from Register to Data Space). Instruksi LD dan ST menggunakan pasangan register R26:R27 (Register Pointer X), atau pasangan register R28:R29 (Register Pointer Y), atau pasangan register R30:R31 (Register Pointer Z).

Dalam program assembler, direktif DSEG, BYTE, dan ORG serta label digunakan untuk mendefinisikan variabel dalam Internal SRAM.

EEPROM
ATtiny2313 memiliki 128 byte EEPROM yang diorganisasikan sebagai ruang memori data terpisah, artinya kita dapat membaca dan menulis sebuah byte tunggal. EEPROM memiliki ketahanan proses tulis/hapus sebanyak 100.000 kali. Akses antara EEPROM dan CPU dijembatani oleh register-register khusus yakni EEAR (EEPROM Address Register), EEDR (EEPROM Data Register), dan EECR (EEPROM Control Register). Ketiga register ini terletak di dalam Register I/O.

Selain dapat diakses oleh CPU melalui program, EEPROM juga dapat diakses langsung dari luar. Selayaknya memori program (flash), kita juga dapat men-download data dari komputer ke EEPROM atau meng-upload dari EEPROM ke komputer menggunakan program downloader.

Ketika CPU membaca EEPROM, CPU akan berhenti sejenak (halted) selama 4 siklus clock sebelum instruksi selanjutnya dieksekusi. Dan ketika CPU menulis ke EEPROM, CPU akan berhenti sejenak (halted) selama 2 siklus clock sebelum instruksi selanjutnya dieksekusi.

Dalam program assembler, direktif ESEG, DB, dan DW, serta label digunakan untuk mendefinisikan variabel dalam EEPROM.

Demikian sekelumit tentang memori ATtiny2313. Semoga bermanfaat.

Selamat belajar!

2 comments

  1. Anang · Agustus 3, 2009

    Programer dengan interface USB, bisa AVR & MCS51.
    bisa di download di AUDIO PLASA
    Mangkubumi No.31 Yogyakarta🙂

  2. unick · Juli 19, 2011

    pak mau nanya dunk,,,,, gimana sie caranya mengeset alamat memori untuk nulis password ? pake bahasa C cvavr apa yg perlu ditambahkan kodenya?
    mohon bantuannya pak,,,, kalao bisa sama contoh programnya ^^

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s