Dengan sejumlah besar variabel teks, saya merasa perlu untuk menyimpannya dalam memori Flash menggunakan PROGMEM . Apa konsekuensi positif dan negatif dari menyimpan variabel besar di Flash (menggunakan PROGMEM) vs SRAM vs EEPROM di Arduino?
12
Implikasi utamanya adalah Anda tidak dapat mengubah informasi yang disimpan dalam PROGMEM. Anda juga akan mendapatkan hit kinerja (sangat kecil) karena string harus disalin 1 byte pada suatu waktu.
Keausan FLASH bukan masalah (utama) karena untuk membuat perubahan pada program Anda, Anda harus memprogram ulang FLASH.
Dengan pengenalan IDE 1.x, makro F () disertakan. Ini membuatnya lebih mudah untuk menjaga string dalam PROGMEM.
Misalnya alih-alih menggunakan: Serial.print ("Hello World!");
Anda sekarang dapat menggunakan:
Serial.print (F ("Hello World!");
Perhatikan, bahwa F () bukan fungsi, itu hanya makro sehingga penggunaannya agak terbatas.
sumber
PROGMEM paling baik digunakan untuk data yang tidak dapat diubah. Jika Anda akan terus mengubah variabel dengan cepat, saya hanya akan menyimpannya di SRAM. Di sisi lain, jika Anda ingin memiliki beberapa variabel teks yang tidak dapat diubah (mis. Hal-hal yang akan ditampilkan) yang tidak akan terlalu sering diambil, PROGMEM adalah ide yang bagus.
Mengenai EEPROM - cobalah untuk menyimpan ini untuk hal-hal yang persisten. IIRC lebih lambat untuk mengambil data dari EEPROM melalui SRAM / PROGMEM. Biasanya saya (dan lainnya) menyalin data dari EEPROM ke SRAM (Bahkan contoh resmi melakukan ini) sebelum menggunakannya.
sumber