Penjelasan Memory pada Arduino

Ada tiga bagian memori pada mikrokontroler digunakan pada berbasis board avr Arduino :
  • Flash memory (ruang program), adalah di mana sketsa atau program Arduino disimpan. 
  • SRAM (static random access memory) adalah di mana sketsa atau program arduino menciptakan dan memanipulasi variabel ketika berjalan.
  • EEPROM adalah ruang memori yang dapat digunakan oleh programmer untuk menyimpan informasi jangka panjang.
 
 
 
Flash memori dan memori EEPROM adalah non-volatile (informasi tetap ada walaupun setelah daya dimatikan). SRAM termasuk volatile dan akan hilang ketika daya dimatikan.

Chip ATmega328 yang dipasang pada Arduino Uno memiliki jumlah memori sebagai berikut :

Flash  32k bytes (of which .5k is used for the bootloader)
SRAM   2k bytes
EEPROM 1k byte

ATmega2560 pada Arduino  Mega2560 memiliki ruang memori yang lebih besar :

Flash  256k bytes (of which 8k is used for the bootloader)
SRAM   8k bytes
EEPROM 4k byte

Perhatikan bahwa tidak ada banyak SRAM tersedia pada Arduino Uno. Sangat mudah untuk menggunakan semuanya dengan memiliki banyak string dalam program Anda. Misalnya, deklarasi seperti:

char message[] = "I support the Cape Wind project.";

menempatkan 33 byte ke SRAM (masing-masing karakter mengambil byte, ditambah terminator '\ 0'). Ini mungkin tidak tampak seperti banyak, tetapi tidak butuh waktu lama untuk sampai ke 2048, terutama jika Anda memiliki sejumlah besar teks untuk mengirim ke layar, atau tabel besar, misalnya.

Jika Anda kehabisan SRAM, program anda mungkin gagal dalam cara yang tak terduga; akan muncul untuk meng-upload berhasil, tetapi tidak berjalan, atau menjalankannya dengan aneh. Untuk memeriksa apakah hal ini terjadi, Anda dapat mencoba komentar keluar atau memperpendek string atau struktur data lain dalam sketsa Anda (tanpa mengubah kode). Jika kemudian berjalan sukses, Anda mungkin kehabisan SRAM. Ada beberapa hal yang dapat Anda lakukan untuk mengatasi masalah ini:

  • Jika sketsa Anda pada program yang berjalan pada (desktop / laptop) komputer, Anda dapat mencoba menggeser data atau perhitungan untuk komputer, mengurangi beban pada Arduino. 
  • Jika Anda memiliki tabel lookup atau array besar lainnya, menggunakan tipe data terkecil yang diperlukan untuk menyimpan nilai-nilai yang Anda butuhkan; misalnya, int mengambil dua byte, sedangkan byte menggunakan hanya satu (tetapi dapat menyimpan berbagai kecil dari nilai-nilai). 
  • Jika Anda tidak perlu memodifikasi string atau data sementara sketsa Anda berjalan, Anda dapat menyimpannya dalam flashdisk (program) memori bukan SRAM; untuk melakukan hal ini, menggunakan kata kunci PROGMEM.
Untuk menggunakan EEPROM, lihat library EEPROM.
Previous
Next Post »