Memory - TeachMeSoft

Memory

Memory

Memory (penyimpanan)


Catatan pada halaman ini adalah untuk semua papan kecuali Jatuh Tempo, yang memiliki arsitektur yang berbeda

Ada tiga kumpulan memori dalam mikrokontroler yang digunakan pada papan Arduino berbasis avr:
  • Flash memory(ruang program), adalah tempat sketsa Arduino disimpan.
  • SRAM (static random access memory) adalah tempat sketsa membuat dan memanipulasi variabel saat dijalankan.
  • EEPROM adalah ruang memori yang dapat digunakan programmer untuk menyimpan informasi jangka panjang.
Memori flash dan memori EEPROM tidak mudah menguap (informasi tetap ada setelah daya dimatikan). SRAM mudah menguap dan akan hilang saat daya disikluskan.

The ATmega328 Chip ditemukan di Uno memiliki jumlah berikut memori:

Flash 32k byte (yang .5k digunakan untuk bootloader)
SRAM 2k byte
EEPROM 1k byte

The ATmega2560 di Mega2560 memiliki ruang memori yang lebih besar:

Flash 256k byte (8k yang digunakan untuk bootloader)
SRAM 8k byte
EEPROM 4k byte

Perhatikan bahwa tidak banyak SRAM tersedia di 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 dalam SRAM (setiap karakter mengambil byte, ditambah terminator '\ 0'). Ini mungkin tidak terlihat banyak, tetapi tidak butuh waktu lama untuk mencapai 2048, terutama jika Anda memiliki banyak teks untuk dikirim ke layar, atau tabel pencarian yang besar, misalnya.

Jika Anda kehabisan SRAM, program Anda mungkin gagal dengan cara yang tidak terduga; tampaknya berhasil diunggah, tetapi tidak berjalan, atau berjalan dengan aneh. Untuk memeriksa apakah ini terjadi, Anda dapat mencoba mengomentari atau memperpendek string atau struktur data lainnya dalam sketsa Anda (tanpa mengubah kode). Jika kemudian berjalan dengan sukses, Anda mungkin kehabisan SRAM. Ada beberapa hal yang dapat Anda lakukan untuk mengatasi masalah ini:
  • Jika sketsa Anda berbicara dengan program yang berjalan di komputer (desktop / laptop), Anda dapat mencoba menggeser data atau perhitungan ke komputer, mengurangi beban di Arduino.
  • Jika Anda memiliki tabel pencarian atau array besar lainnya, gunakan tipe data terkecil yang diperlukan untuk menyimpan nilai yang Anda butuhkan; misalnya, sebuah int membutuhkan dua byte, sedangkan byte hanya menggunakan satu byte (tetapi dapat menyimpan rentang nilai yang lebih kecil).
  • Jika Anda tidak perlu memodifikasi string atau data saat sketsa Anda berjalan, Anda dapat menyimpannya dalam memori flash (program) alih-alih SRAM; untuk melakukan ini, gunakan kata kunci PROGMEM .
  • Untuk menggunakan EEPROM, lihat perpustakaan EEPROM .

REFERENSI

  • [1] https://www.arduino.cc/en/Tutorial/Memory


    Disqus comments