Bonjour,
Je suis en train de développer un programme, en pièce-jointe, un peu lourd en mettant bout à bout différents morceaux de programme que j'ai utilisé/développé jusque là et j'ai quelques problème de gestion de la mémoire. Pour le moment, ça m'arrive avec la fonction FichierSuivant.
Jusque là, j'utilise la librairie MemoryFree (Arduino Playground - AvailableMemory) pour savoir l'espace mémoire qu'il me reste et "otpimiser" mon programme, mais les résultats ne m'aident plus : j'ai soit disant 390 octets de libres, mais je rencontre un bogue que je n'ai pas quand j'en ai 395 de libres.
Voilà le morceau de code que j'utilise pour faire varier l'espace occupé en mémoire (ligne 183) :
//~ pour débogue : test remplissage mémoire
char *varmem;
varmem="abb";
Serial.println(varmem);
//~ pour débogue
Serial.println("memoire libre avant fichier suivant : ");
Serial.println(freeMemory());
J'ai aussi fait des tests pour ce qui prend le plus de mémoire et j'arrive aux impacts mémoire suivants (en octets):
- fonction FichierSuivant : 125
- type File : 31
- type MesurePulse : près de 110
- librairies, chargement uniquement, aucune délcaration d'instance :
- SD : 606
- Time : 0
Du coup, quelques questions :
- Pour FreeMemory, le résultat est faux, ou je n'utilise pas la fonction au bon moment ? Je ne comprend pas.
- Pour la librairie SD : ça prend énormément de place !!! On peut pas diminuer ?
- Ensuite, est-ce qu'il y a des "trucs" évident pour un programmeur chevronné qui sont efficaces pour gagner de l'espace mémoire et qui mériterait d'être fait pour mon programme
- J'ai lu 2-3 trucs sur PROGMEM, pour gagner 1000 octects (j'utilise un Uno), mais est-ce que ça ne ralenti pas trop le programme d'utiliser cet espace mémoire pour des variables amenées à changer
Tests.ino (13.3 KB)