Je suis un peu embeter car je ne peux pas utiliser la librairie SD pour avoir une carte SD et enregistrer des petites donnée.
J'ai besoin de pouvoir stiké des positions GPS si elles ne peuvent pas etre envoyée sur le serveur distant (http ou TCP).
Es-ce que Laonardo ou Nano ont une petite mémoire pour sauver un fichier.txt ou un fichier Json?
Je crois que si non, Leonardo et Nano on un petit EEPROM?
Cet EEPROM, quelle influence a -t-elle sur la mémoire de Leonardo ou Nano (car j'en plus beaucoup ; 76% et 725 pour les mémoire global et local)
En préambule depuis le temps que tu pose des questions il serait temps de lire la datasheet du micro que tu utilises.
Rien que dans les premières pages tu trouvera 70 % des réponses a tes questions.
Ensuite sur ce forum il a été dit à plusieurs reprises que l'eeprom interne est limitée en nombre de cycles d'écriture.
En conséquence elle n'est pas prévue pour servir d'organe de stockage dynamique.
Son utilité se trouve dans le stockage de valeurs de configuration qui ne varient qu'exceptionnellement.
Il s'agit de la mémoire où toutes les variables de ton programme sont rangées
En fait, il n'y a pas besoin d'utiliser une librairie ou une fonction comme avec l'EEPROM.
Quand je d'éclare une variable, elle est stockée dans la SRAM.
C'est d'ailleur pourcela que quand je compile mon programe, j'ai ceci
Sketch uses 21,876 bytes (76%) of program storage space. Maximum is 28,672 bytes.
Global variables use 1,873 bytes (73%) of dynamic memory, leaving 687 bytes for local variables. Maximum is 2,560 bytes.
le 687 correspond à la SRAM.
Suis-je juste?
Son utilité se trouve dans le stockage de valeurs de configuration qui ne varient qu'exceptionnellement.
D'accord je vois. Par exemple, je pourrais enregistrer un parametre d'utilisation que je ne veux pas perdre quand j'éteint mon module
Ceci dit, je dois stocker des positions GPS, donc je n'ai pas d'autre choix que d'utiliser une carte SD, ou un autre EEPROM "externe", connecté a Nano?
J'insiste sur le fait que les limites ne concernent que l'écriture et octet par octet.
Si la limite est 10000 cycles et que tu écrit toujours sur le même octet , par exemple l'octet 0, cet octet sera inutilisable à la 10 001 écriture mais pas les octets suivants qui n'ayant jamais été utilisés conservent leur capacité de 10 000 cycles d'écriture.
Il n'y a aucune limite pour la lecture.
Encore une fois tout ce que je dis là je l'ai trouvé dans la datasheet du micro-contrôleur --> tu vois ce que je veux dire.
Il y a des RAM externe à accès en SPI qui pourrait faire l'affaire.
A toi d'en assurer la gestion par contre. Mais cela donnera toujours un code moins volumineux que la librairie SD.
Maintenant, si tu n'utilises plus la librairie SD. Tu vas libérer de la RAM. Est-ce que cette RAM libérée ne serait pas suffisante pour stocker tes données temporairement.
Bonjour,
Merci pour vos réponses et oui va falloir que je creuse la dessus.
Je n'utilise pas encore la SD et j'ai presque plus de RAM. Il faut que je regarde comment libérer de la SRAM, donc l'espace prix par les variable.
Alors maintenant je en sais pas ce qu'il y a de mieux entre l'EEPROM et la RAM externe. Etant limité en RAm, je dois vraiment faire le choix entre la solution qui utilise moin de RAM.
J'ai deja une expérience, meme limitée avec l'EEPROM. La question est , es-ce que je vais utilisé l EEPROM interne ou une externe.
Faut que je me document avec la datasheet, en effet.
En gros, toutes les 20 secondes, je dois enregistrer les positions GPS ou Cellid, s'il y a pas de connection pour envoyer ces positions sur le serveur distant. L'EEPROM est bien car il concerve les donnée si le module est éteint et rallumer.
Maintent, en effet, je dois me rendre compte des capacité de l'EEPROM interne.
@68tjs
Je vais lire doc, mais j'aimerais comme meme avant te poser une question.
Qu'es-ce un cycle? Es-ce le nombre de fois que l'EEPRIM est accèdes pour enregistrer une donnée?
Es-ce le nombre de qu'il y a un passage dans loop()?
Si une position GPS prends 150 caractere (char chaine[150]), et que toutes les 20s il enregistre les données car je suis en montagne et il n'y a pas de 3G. Pendant combien de temps, je vais enregistrer mes positions jusqu'à ce que la premiere soit remplacée par la dernire position "arrivée" parce que il y a eu 1000 cycle?
Un "cycle d'écriture" pourrait aussi s'appeler une "opération d'écriture" ou un "ordre d'écriture" : c'est quand on fait ce qu'il faut pour changer la valeur de ce qui est déjà écrit dans l'eeprom.
Ce qui tue l'eeprom ce sont les courants importants qu'il faut utiliser pour modifier les charges internes.
Pour plus de détail il faut consulter des documents expliquant la technologie utilisée dans les eeprom.
si tu utilise beaucoup de chaine de caracterre et que tu veux economisé de la RAM tu peut deja utiliser la macro F() qui place les chaine de caractere en memoire flash ou memoire programe.
quand j'ai commancer a faire mon systeme d'automate je ne l'utilisé pas est alors que la memoire de programe n'etait qua 70Ko/256Ko , je saturé les 8Ko de memoire RAM , apres c'estait bon je suis retombé a 2-3Ko d'impacte sur la RAM.
Serial.print(" ceci est une chaine placé en RAM" );
Serial.print( F(" ceci est une cahine placé en Flash");