Utilisation de la fonction F() pour économiser de la RAM

Un log shield sur carte SD avec horloge RTC et zone de prototypage à pastilles carrées

Utilisation de la fonction F() pour économiser de la RAM

Message non lude amg108 » Ven 30 Déc 2011 18:21

Je m'initie au microcontroller Arduino Uno en construisant un Web server. Cependant -Le principal problème une fois que votre projet grossis- est le manque de RAM (seulement 2kB), bien que le sketch lui-même fasse déjà 29kB proche de la limite de 32kB ! j'ai donc décidé de revoir tout le code pour économiser de la RAM et en utilisant pour la première fois la fonction F() de la nouvelle version 1.00. De 500Bytes je suis remonté à environ 700Bytes. Mais surprise, alors que je pouvais encore ajouter F() sur quelques chaines de caractères j'ai eu des anomalies sur les entrées analogiques (valeurs aberrantes). Lorsque je les ai retirer et tout est rentrer dans l'ordre!
Bizarre non?
J'ai essayé d'avoir de la documentation sur cette fonction F() mais rien n' éxiste sur le site Arduino.
Si quelqu'un a déjà utilisé cette fonction je voudrais bien avoir un feedback.

Merci à l'avance
amg108
 
Messages: 1
Inscription: Ven 30 Déc 2011 17:47

Re: Utilisation de la fonction F() pour économiser de la RAM

Message non lude Trigger » Sam 7 Jan 2012 14:10

Bonjour bonjour,

J'utilise cette fonction de puis un moment pour un serveur web et je n'ai pas eu de soucis.
Voici un petit bout de code, qui j'espère t'aidera pour la synthaxe :)


Code: Tout sélectionner
client.println(F("<center>"));
client.println("<FORM method=\"get\" action=\"http://"+ip_str+"/\">");
client.println(F("<p>"));
client.println(F("<br>"));
client.println(F("<input src=\"http://nsa22.casimages.com/img/2011/12/21/11113.png\" type=\"image\" name=\"menu\" >"));
client.println(F("</p>"));
client.println(F("</FORM>"));
client.println(F("</center>"));


amicalement,
Trigger
Trigger
 
Messages: 12
Inscription: Jeu 3 Nov 2011 20:31

Re: Utilisation de la fonction F() pour économiser de la RAM

Message non lude Manu25 » Jeu 26 Jan 2012 08:34

Lorsque l'on commence à avoir des trucs bizarres, c'est souvent du à un dépassement de la RAM sous les Arduino. Très difficile à détecter...
Lorsque ça arrive, je remplace le Arduino par un Mega, et si tout est ok, c'est normalement un soucis de RAM.

Bon courage!

Manu
Manu25
 
Messages: 2
Inscription: Lun 7 Nov 2011 10:23


Retourner vers Mémoire

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité