Yanıtlar:
Mevcut Arduino kartlarının çoğundaki mikrodenetleyici (Due, Leonardo, eski Arduinos ve diğer bazı uyumlu kartlar hariç) AtMega328'deki FLASH, EEPROM ve SRAM'ın hızlı bir karşılaştırması.
PROGMEM
.Dolayısıyla, PROGMEM kullanmanın temel varsayımsal olumsuz sonucu 10.000 yazma döngüsü sınırıdır. EEPROM kullanmanın temel olumsuz sonucu, verileri okumak / yazmak / kopyalamak için kod karmaşıklığıdır . SRAM, kapasitesi çok sınırlı .
Birincil ima, PROGMEM'de depolanan bilgileri değiştirememenizdir. Dizenin bir seferde 1 bayt kopyalanması gerektiğinden (çok küçük) bir performans isabeti de alırsınız.
FLASH'ın yıpranması (birincil) bir endişe değildir, çünkü programınızda değişiklik yapmak için FLASH'ı yeniden programlamanız gerekir.
IDE 1.x tanıtımı ile F () makrosu dahil edildi. Bu, dizeleri PROGMEM içinde tutmayı kolaylaştırır.
Örneğin: Serial.print ("Merhaba Dünya!");
Artık şunları kullanabilirsiniz:
Serial.print (F ("Merhaba Dünya!");
F () bir işlev değildir, sadece bir makro olduğundan, kullanımı biraz sınırlıdır.
PROGMEM en iyi değişmez veriler için kullanılır. Hızla değişen değişkenleri koruyacaksanız, bunu SRAM'de saklıyorum. Öte yandan, çok sık getirilmeyecek bazı değişmez metin değişkenlerine (örneğin, görüntülenecek şeyler) sahip olmak istiyorsanız, PROGMEM harika bir fikirdir.
EEPROM ile ilgili olarak - bunu kalıcı şeyler için kaydetmeye çalışın. IIRC, SRAM / PROGMEM üzerinden EEPROM'dan veri almak daha yavaştır. Genellikle (ve diğerleri) verileri kullanmadan önce EEPROM'dan SRAM'a kopyalarım ( resmi örnek bile bunu yapar).