Avec de grandes quantités de variables de texte, j'ai trouvé nécessaire de les stocker dans la mémoire Flash à l'aide de PROGMEM . Quelles sont les conséquences positives et négatives du stockage de grandes variables dans Flash (en utilisant PROGMEM) vs SRAM vs EEPROM sur l'Arduino?
12
L'implication principale est que vous ne pouvez pas modifier les informations stockées dans PROGMEM. Vous prendrez également un (très petit) coup de performance car la chaîne doit être copiée 1 octet à la fois.
L'usure du FLASH n'est pas une préoccupation (principale) car pour apporter des modifications à votre programme, vous devrez de toute façon reprogrammer le FLASH.
Avec l'introduction IDE 1.x, la macro F () a été incluse. Cela facilite la conservation des chaînes dans PROGMEM.
Par exemple, au lieu d'utiliser: Serial.print ("Hello World!");
Vous pouvez désormais utiliser:
Serial.print (F ("Bonjour tout le monde!");
Notez que F () n'est pas une fonction, c'est juste une macro donc son utilisation est quelque peu limitée.
la source
PROGMEM est mieux utilisé pour les données immuables. Si vous voulez continuer à changer rapidement les variables, je les stocke simplement dans la SRAM. D'un autre côté, si vous voulez avoir des variables de texte immuables (par exemple des éléments à afficher) qui ne seront pas récupérées trop souvent, PROGMEM est une excellente idée.
Concernant l'EEPROM - essayez de l'enregistrer pour des éléments persistants. IIRC il est plus lent de récupérer les données de l'EEPROM sur SRAM / PROGMEM. Habituellement, je (et d'autres) copie les données de l'EEPROM vers SRAM (même l' exemple officiel le fait) avant de les utiliser.
la source