Référence du Langage Arduino : Mini | Standard | Etendue | Librairies | Comparaison
Il y a trois types de mémoires du microcontrôleur (ATmega 1268/328) utilisées sur les cartes Arduino :
La mémoire FLASH (c'est la même qui est utilisée pour votre appareil photo numérique) et l'EEPROM sont des mémoires dites non-volatiles, c'est à dire que l'information n'est pas effacées lorsque la carte est mise hors tension. La mémoire SRAM est volatile et sera effacée lorsque la carte est mise hors tension.
Voici la taille des mémoires disponibles pour les différents microcontrôleurs utilisés avec les cartes Arduino :
| Type de Mémoire | ATmega 168 | ATmega 328 | ATmega 1280 |
|---|---|---|---|
| Flash | 16K octets | 32K octets | 128K octets |
| SRAM | 1024 Octets | 2048 octets | 8K octets |
| EEPROM | 512 Octets | 1024 octets | 4K octets |
Pour toutes les cartes Arduino, 2 K de la mémoire FLASH sont utilisées pour le bootloader résident.
Noter qu'il n'y a pas beaucoup de SRAM disponible. Il est d'ailleurs très facile de l'utiliser complètement, en utilisant par exemple plusieurs chaînes de caractère dans votre programme, ce qui n'est pas sans poser de problèmes. Par exemple, une déclaration telle que :
char message[] = "I support the Cape Wind project.";
va utiliser 32 octets de la SRAM (chaque caractère utilisé un octet). Cela ne paraît pas comme çà, mais cela n'est pas long d'atteindre les 1024 octets, surtout si vous avez de larges portions de texte à envoyer pour affichage, ou une table de données à consulter, par exemple.
Si vous dépassez la taille limite de la SRAM, votre programme va probablement se comporter de façon inattendue; le transfert du programme se passera bien, mais ne fonctionnera pas ou s'exécutera de façon étrange. Pour vérifier si c'est cela qui arrive, vous pouvez essayez de mettre en commentaire ou de raccourcir les chaînes de caractères ou les autres structures de données de votre programme (sans modifier le code cependant). Si cela fonctionne alors normalement, cela veut dire que vous avez dépassé les limites de la SRAM. Il y a plusieurs choses que vous pouvez faire pour résoudre ce problème :
Voir également ici : http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1237998272 et ici : http://arduiniana.org/libraries/flash/
Page d'accueil de la référence Arduino en français
Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino.
Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.
La présente traduction française commentée a été réalisée par Xavier HINAULT (2010) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.
Traduction de la page originale : http://arduino.cc/en/Tutorial/Memory