Page 1 sur 1

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

Message non luPosté: Ven 30 Déc 2011 18:21
de amg108
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

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

Message non luPosté: Sam 7 Jan 2012 14:10
de Trigger
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

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

Message non luPosté: Jeu 26 Jan 2012 08:34
de Manu25
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