Bonjour,
Je voudrais récupérer les données d'un signal sur une liaison RS232.
Pour ne pas avoir de perte, je mets les données dans un tableau et voudrais les affichées quand la liaison n'est pas occupé.
Bin parce qu'un tableau de 1500 bytes ça occupe un paquet de RAM, avec la lib SD qui en squatte de mémoire 512, normal que tu aies des problèmes avec un atmega328 à 2ko de SRAM
B@tto:
Bin parce qu'un tableau de 1500 bytes ça occupe un paquet de RAM, avec la lib SD qui en squatte de mémoire 512, normal que tu aies des problèmes avec un atmega328 à 2ko de SRAM
salut B@tto
et en plus ça depend de quel "duemilanove"
Hardware Serial utilise de la mémoire pour tamponner les données reçues et émises (2 x 64 octets).
Software Serial utilise de la mémoire pour tamponner les données reçues (64 octets).
SD utilise de la mémoire pour tamponner les données échangées avec la carte mémoire (1 bloc mémoire de 512 octets + des variables pour mémoriser l'état du système de fichier)
Utilise cette librairie pour voir ton occupation mémoire. Faire appel à la fonction à la fin du setup() lorsque toutes les classes sont instanciées. Et puis à quelques endroits dans le code pour voir l'évolution.
Assures-toi déjà que c'est bien un problème de mémoire.
Si c'est le cas, alors le processeur n'est pas adapté. Et il faudra passer à un autre (arduino Mega, Teensy ....).
Si ce n'est pas un problème de mémoire alors il faut chercher où ça plante.
C'est bien un problème de mémoire.
Voilà le compte-rendu de la compilation de ton code
Sketch uses 5 020 bytes (16%) of program storage space. Maximum is 30 720 bytes.
Global variables use 1 805 bytes (88%) of dynamic memory, leaving 243 bytes for local variables. Maximum is 2 048 bytes.
Low memory available, stability problems may occur
Tu pourrais grapiller une centaine d'octets en réduisant, dans les librairies, la taille des tampons des liaisons série. Mais cela a des conséquences, il faut que le programme soit réactif afin qu'il n'y ait jamais de débordement.