Modifications

Sauter à la navigation Sauter à la recherche
aucun résumé de modification
Ligne 1 : Ligne 1 :  
{{FEATHER-M0-EXPRESS-NAV}}
 
{{FEATHER-M0-EXPRESS-NAV}}
   −
{{traduction}}
   
== Introduction ==
 
== Introduction ==
 
L'ATSAMD21 est un tout petit composant mais encore assez récent comme nouveau venu dans le monde des Arduino-compatible. La '''plupart''' des croquis et bibliothèques fonctionnerons mais il y a quelques petites choses à noter!
 
L'ATSAMD21 est un tout petit composant mais encore assez récent comme nouveau venu dans le monde des Arduino-compatible. La '''plupart''' des croquis et bibliothèques fonctionnerons mais il y a quelques petites choses à noter!
Ligne 143 : Ligne 142 :  
</syntaxhighlight>
 
</syntaxhighlight>
   −
== Conversion en virgule flottante ==
+
== Conversion en virgule flottante (dtostrf) ==
{{traduction}}
+
Tout comme pour les AVR arduino, la bibliothèque M0 ne propose un support "complet" permettant de convertir une valeur en virgule flottante vers une chaine de caractères.  
Like the AVR Arduinos, the M0 library does not have full support for converting floating point numbers to ASCII strings. Functions like sprintf will not convert floating point.  Fortunately, the standard AVR-LIBC library includes the dtostrf function which can handle the conversion for you.
     −
Unfortunately, the M0 run-time library does not have dtostrf.  You may see some references to using '''#include <avr/dtostrf.h>''' to get dtostrf in your code.  And while it will compile, it does '''not''' work.
+
Les fonctions comme {{fname|sprintf}} ne feront pas la conversion de valeur en virgule flottante. Par chance, la bibliothèque standard AVR-LIBC inclus la fonction {{fname|dtostrf}} qui est capable de gérer cette conversion pour nous.
   −
Instead, check out this thread to find a working dtostrf function you can include in your code:
+
Malencontreusement, les bibliothèques run-time du M0 ne dispose pas de cette fonction dtostrf! Vous pourriez rencontrer quelques fils de discussions mentionnant '''#include <avr/dtostrf.h>''' pour obtenir la fonction dtostrf. <font color="red">Mais si cela compile, le fonction '''ne fonctionne pas sur un M0'''</font>.
   −
<a href="http://forum.arduino.cc/index.php?topic=368720.0">http://forum.arduino.cc/index.php?topic=368720.0</a>
+
A la place, voyez le fil de discussion suivant pour trouver une fonction {{fname|dtostrf}} fonctionnelle que vous pourrez inclure dans votre code:
 +
* http://forum.arduino.cc/index.php?topic=368720.0
   −
== COmbien de RAM disponible? ==
+
== Combien de RAM disponible? ==
 
Un ATSAMD21G18 dispose de 32K de RAM mais vous pourriez avoir besoin de surveiller sa consommation pour des raisons propres à votre projet. Vous pouvez le faire à l'aide de cette fonction:
 
Un ATSAMD21G18 dispose de 32K de RAM mais vous pourriez avoir besoin de surveiller sa consommation pour des raisons propres à votre projet. Vous pouvez le faire à l'aide de cette fonction:
   Ligne 167 : Ligne 166 :  
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