Home > AVR, Mikrokontroler > Struktur Memori ATtiny2313

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 0×0000 sampai dengan 0×03FF, 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 0×0000 sampai dengan 0×001F, Register I/O menempati 64 byte selanjutnya dengan alamat 0×0020 sampai dengan 0×005F, dan Internal SRAM menempati 128 byte sisanya dengan alamat 0×0060 sampai dengan 0×00DF. Sekarang kita tahu mengapa alamat awal Internal SRAM adalah 0×0060. Alamat akhir Internal SRAM (dalam hal ini 0×00DF) 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 0×00 sampai 0×3F. Masing-masing register memiliki fungsi khusus. Sebagai contoh register I/O nomor 0×0018 yang terletak di alamat 0×0038 adalah register PORTB dan register I/O nomor 0×001B yang terletak di alamat 0×003B 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!

  1. Anang
    August 3, 2009 at 8:57 am | #1

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

  1. No trackbacks yet.