Pages: [1]   Go Down
Author Topic: Speicherfehler ? Arduino328  (Read 1029 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Full Member
***
Karma: 8
Posts: 153
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,
bin immernoch dabei, mich in die Programmierung einzuarbeiten. Habe ein Programm modifiziert (WEBCLIENT) und wenn ich das gesamte Programm benutze startet es nicht. Nehme ich ein paar Befehle raus, geht es. Kann man irgendwie den Speicher überprüfen ? Der Compiler bringt keine Fehlermeldung und was in der void loop() Schleife steht und nicht abgearbeitet wurde, kann ja auch nicht zum Absturz führen.

Gruss Kalli

Arduino Duemilanove 328
Arduino ETHShield SD
Arduino-0018

P:S:
Wie kann ich jetzt den Sketch hier ranhängen ?
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 184
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sketche kann Du posten indem Du auf das Raute # Zeichen über dem Textfenster clickts und dann den Code einfügst.

« Last Edit: October 02, 2010, 10:51:21 am by LC_Data » Logged

Es gibt 10 Gruppen von Menschen:
Die einen können binär zählen, die anderen nicht.

Central Europe
Offline Offline
Edison Member
*
Karma: 7
Posts: 1220
Use the Source, Luke.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wieviel Speicher braucht denn dein Programm? Vergiß nicht, du hast gerade einmal 2 kB RAM für Daten und Stack. Der HTTP-header von Google ist größer als das.

Korman
Logged

0
Offline Offline
Full Member
***
Karma: 8
Posts: 153
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
Webtest5.pde
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21856
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Du mußt den Kode Kopieren , nicht das File
Code:
//das ist code

Zum mitschreiben:
Du schriebst "code" in eckigen Klammern, dann Deinen Kode und dann "/code" in eckigen Klammern.

Uwe
« Last Edit: October 02, 2010, 04:18:00 pm by uwefed » Logged

0
Offline Offline
Full Member
***
Karma: 8
Posts: 153
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
/*
 * Web Server
 */

#include <Ethernet.h>
int ledPin = 13;
int ledan =1;
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {  192, 168, 3, 223 };
Server server(80);


/*
Kostenlose, frei konfigurierbare Homepage-Uhr von www.schnelle-online.info/Homepage/Tools.html. Ohne Gewähr, ohne Haftung.
Nutzungsbedingung: Dieser Kommentar und der Link unten dürfen nicht entfernt oder (nofollow) modifiziert werden.
*/


char T1[] =("<a style='text-decoration:none;border-style:none;color:black;' target='_blank'");
char T2[] ="href='http://www.schnelle-online.info/Atomuhr-Uhrzeit.html'";
char T3[] ="id='soitime20850727171' title='Atomuhr genaue Uhrzeit'>Genaue Uhrzeit</a><br/>";
char T4[] ="<a style='text-decoration:none;border-style:none;color:black;' target='_blank'";
char T5[] ="href='http://www.schnelle-online.info/Kalender.html' id='soidate20850727171'";
char T6[]  ="title='Kalender mit deutschen Feiertagen'>Kalender</a>";
char T7[]  ="<script type='text/javascript'>";
char T8[]  ="SOI = (typeof(SOI) != 'undefined') ? SOI : {};(SOI.ac21fs = SOI.ac21fs || []).push(function()";
char T9[]  ="{(new SOI.DateTimeService('20850727171', 'DE')).start();";
char T10[]  ="}); (function() {if (typeof(SOI.scrAc21) == 'undefined')";
char T11[]  =("{ SOI.scrAc21=document.createElement('script');SOI.scrAc21.type='text/javascript';");
char T12[] =("SOI.scrAc21.async=true;SOI.scrAc21.src=((document.location.protocol == 'https:') ? 'https//' : 'http://')");
//char T12[]  =(" SOI.scrAc21.async=true;SOI.scrAc21.src=((document.location.protocol == 'https:') ?");
char T13[]  =(" + 'homepage-tools.schnelle-online.info/Homepage/atomicclock2_1.js';");
char T14[]  =(" (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0])");
char T15[]  =(" .appendChild(SOI.scrAc21);}})();");
char T16[]  =("</script>");

void setup()
{
  Ethernet.begin(mac, ip);
  server.begin();
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}
void loop()

{
   if (ledan==1)
  {digitalWrite(ledPin,HIGH);
  ledan=0;
  Serial.print(ledan);
delay(500);}
  else
  {digitalWrite(ledPin,LOW);
  
  ledan=1;
  Serial.print(ledan);
  delay(500);
  }

  Client client = server.available();
  
    if (client)
  { Serial.println(client);
        // an http request ends with a blank line
    boolean current_line_is_blank = true;
    while (client.connected())
    {
     // Serial.print(current_line_is_blank);
      if (client.available())
      {
        char c = client.read();
        Serial.print(c);
        if (c == '\n' && current_line_is_blank)
        {
//delay(1000);  
//TESTH();

Serial.println("vor HTML Text");
/*
Bei Aktivierung dieses ganzen Blocks, haengt sich das Board auf...
client.print(T1);
client.print(T2);
client.print(T3);
client.print(T4);
client.print(T5);
client.print(T6);
client.print(T7);
client.print(T8);
client.print(T9);
client.print(T10);
client.print(T11);
client.print(T12);
client.print(T13);
client.print(T14);
client.print(T15);
client.print(T16);
*/
//client.print("<html>");

client.print("<head>");
client.print("<title>Arduino</title>");
client.print("</head>");

client.print("<body>");
client.print("<p>&nbsp;</p>");
client.print("<p>&nbsp;</p>");
client.print("<p><font size='7'>Aktuelle Temperaturen</font><font size='4'> </font></p>");
client.print("<p><b><font size='5'>draussen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
client.print("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
client.print("drinnen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
client.print("Heizung</font></b></p>");
client.print("<p><b><font size='5'>&nbsp; 12,5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
client.print("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
client.print("22,1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
client.print("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
client.print("45,3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Grad</font></b></p>");
client.print("<p>&nbsp;</p>");

client.print("</body>");

client.print("</html>");
          
    
          for (int i = 0; i < 6; i++)
            {
            client.print("analog input ");
            client.print(i);
            client.print(" is ");
            client.print(analogRead(i));
            client.println("<br />");
          }
          break;
        }
        if (c == '\n') {
          // we're starting a new line
          current_line_is_blank = true;
        }
        else if (c != '\r') {
          // we've gotten a character on the current line
          current_line_is_blank = false;
        }
      }
    }
    // give the web browser time to receive the data
    
    delay(1000);
    client.stop();
      }
}




Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21856
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Kalli

Hab Deinen Code nicht controlliert aber die Strings, die ja konstant sind, könntest Du in den Fash-Speicher schreiben und so RAM sparen.
dazu:
http://arduiniana.org/libraries/Flash/ und
http://www.arduino.cc/en/Reference/PROGMEM

Grüße Uwe
Logged

0
Offline Offline
Full Member
***
Karma: 8
Posts: 153
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,
Danke für die Hinweise. Wusste nicht, dass es da eine Begrenzung gibt. Habe nun das Problem mit PROGMEM gelöst. Nun kann ich mich beruhigt an die weitere Programmierung machen.

Na dann, bis weitere Probleme auftreten...

Kalli
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21856
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Es gibt keine Begrenzung des Speichers; es gibt nur, nur eine bestimmte Menge davon (der ATmeega328 hat 2kByte). Die Variablen und andere Parameter die zur Ausführung des Programs benötigt werden (STACK mit Rücksprungadressen ecc) benötigen RAM-Speicher. Irgendwann einmal ist dann Schluß, wenn zuviele Variablen benutzt werden.
Viele Grüße

Laut gedacht: Warun kommt niemanden in den Sinn auch mal was zu schreiben, wenn er keine Probleme hat?  smiley-wink :smiley

GrüßeUwe
« Last Edit: October 04, 2010, 10:58:09 am by uwefed » Logged

Pages: [1]   Go Up
Jump to: