Modifications

Sauter à la navigation Sauter à la recherche
Ligne 167 : Ligne 167 :  
Merci a  [http://forum.arduino.cc/index.php?topic=365830.msg2542879#msg2542879 ce fil de discussion] sur les forums Arduino pour ce truc!
 
Merci a  [http://forum.arduino.cc/index.php?topic=365830.msg2542879#msg2542879 ce fil de discussion] sur les forums Arduino pour ce truc!
   −
== Storing data in FLASH ==
+
== Stocker des données en FLASH ==
If you're used to AVR, you've probably used '''PROGMEM''' to let the compiler know you'd like to put a variable or string in flash memory to save on RAM. On the ARM, its a little easier, simply add '''const''' before the variable name:
+
Si vous utilisez un AVR (Arduino), alors vous avez probablement déjà utilisé '''PROGMEM''' qui permet au compilateur de savoir que vous voulez placer le contenu d'une variable (ou chaine de caractère) dans la mémoire Flash (afin d'économiser de la RAM).  
   −
'''const char str[] = "My very long string";'''
+
Sur un ARM, c'est un peu plus facile. Il suffit d'ajouter le mot '''const''' devant le nom de la variable:
   −
That string is now in FLASH. You can manipulate the string just like RAM data, the compiler will automatically read from FLASH so you dont need special progmem-knowledgeable functions.
+
<syntaxhighlight lang="c">
 +
const char str[] = "Ma treesss lonnnnguuuue chaiiiinnnnneeee";
 +
</syntaxhighlight>
   −
You can verify where data is stored by printing out the address:<br>'''Serial.print("Address of str $"); Serial.println((int)&str, HEX);'''
+
Cette chaîne de caractère est maintenant en FLASH. Vous pouvez manipuler la chaîne de caractère comme si c'était des données en RAM, le compilateur fera automatiquement une lecture depuis la mémoire FLASH et vous n'aurez pas besoin d'utiliser de fonction spécialement conçue pour les manipulation progmem.
   −
If the address is $2000000 or larger, its in SRAM. If the address is between $0000 and $3FFFF Then it is in FLASH
+
Vous pouvez vérifier l'emplacement de stockage des données en affichant leur adresse de stockage:
    +
<syntaxhighlight lang="c">
 +
Serial.print("Address of str $"); Serial.println((int)&str, HEX);
 +
</syntaxhighlight>
 +
 +
Si l'adresse est:
 +
* égale ou supérieure à $2000000 alors c'est stocker en SRAM.
 +
* entre $0000 et $3FFFF alors c'est stocké en FLASH
    
{{FEATHER-M0-EXPRESS-TRAILER}}
 
{{FEATHER-M0-EXPRESS-TRAILER}}
29 917

modifications

Menu de navigation