Go Down

Topic: Es-ce que Leonardo et Nano ont une mémoire pour enregistre un fichier.txt (Read 360 times) previous topic - next topic

pierrot10

Bonjour,

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)

Merci pour vos lumières
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

jlbechennec

Bonjour,

Le Leonardo (ATMega32u4) a 1ko d'EEPROM.
Le Nano (ATMega328) a également 1ko d'EEPROM

l'EEPROM vient en plus de la flash (programme) et de la SRAM (données) et n'est donc pas comptée dans les stats fournie par l'IDE à la compilation

pierrot10

D'acc0rd merci
Mais qu'es-ce c'est que la SRAM pour les données. Es-ce que ca s'exploite comme la EEPROM?

Maintenant su h'ai 1Kbit de EEPROM, ca vaudair dire que le pourrait mettre un "mot" de 1000 caracteres? 1 caractere prend un bit, n'es-ce pas?
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

jlbechennec


Mais qu'es-ce c'est que la SRAM pour les données.


Il s'agit de la mémoire où toutes les variables de ton programme sont rangées

Quote

Es-ce que ca s'exploite comme la EEPROM?


Non.

Quote

Maintenant su h'ai 1Kbit de EEPROM, ca vaudair dire que le pourrait mettre un "mot" de 1000 caracteres? 1 caractere prend un bit, n'es-ce pas?


1 caractère prend 1 octet et il un a 1ko, pas 1kbit, d'EEPROM

Tu devrais aller lire ceci : http://eskimon.fr/1397-arduino-annexe-2-gestion-de-la-memoire

68tjs

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.

pierrot10

D'accord merci pour ces petites détail.

Quote
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
Quote
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?

Quote
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?

Merci pour cet éclairciessement!
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

68tjs

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.

fdufnews

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.

pierrot10

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?

Merci
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

68tjs

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.


Heloderma-kris

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.

Code: [Select]

Serial.print(" ceci est une chaine placé en RAM" );
Serial.print( F(" ceci est une cahine placé en Flash");

Go Up