Problem with Ethernet Sketch, browser text is very strange

Hi

I have a Arduino Ethernet board that produces strange results, the browser text is a mixture of the expected text and other older Sketches repeated a lot of times.

The sketch is from the Arduino 1.0 WebServer example:

/*
  Web Server
 
 A simple web server that shows the value of the analog input pins.
 using an Arduino Wiznet Ethernet shield. 
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 * Analog inputs attached to pins A0 through A5 (optional)
 
 created 18 Dec 2009
 by David A. Mellis
 modified 4 Sep 2010
 by Tom Igoe
 
 */

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);

// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup()
{
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
}

void loop()
{
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();

          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(analogRead(analogChannel));
            client.println("
");
          }
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
  }
}

The output should be just a couple of lines, but is this instead:

analog input 0 is 501
analog input 1 is 434
analog input 2 is 336
analog input 3 is 275
analog input 4 is 238
analog input 5 is 212
rigin: * Content-Type: text/html; charset=utf-8 
Hello, World!
>cmd"HTTP/1.0 200 OK HTTP/1.0 200 OK Server: Webduino/1.4 Access-Control-Allow-Origin: * Content-Type: text/html; charset=utf-8 
Hello, World!
8 
Hello, World!
black; padding: 5px;"> 
LOW
Digital 9: HTTP/1.0 200 OK Server: Webduino/1.4 Access-Control-Allow-Origin: * Content-Type: text/html; charset=utf-8 
Hello, WorlHTTP/1.0 200 OK Server: Webduino/1.4 Access-Control-Allow-Origin: * Content-Type: text/html; charset=utf-8 
Hello, World!
in: * Content-Type: text/htHTTP/1.0 200 OK Server: Webduino/1.4 Access-Control-Allow-Origin: * Content-Type: text/html; charset=utf-8 
Hello, World!
Server: Webduino/1.4 Access-Control-Allow-Origin: * Content-Type: text/html; charset=utf-8 
Hello, World!
HTTP/1.0 200 OK Server: WebHTTP/1.1 200 OKHTTP/1.0 200 OK Server: Webduino/1.4 Access-Control-Allow-Origin: * Content-Type: HTTP/1.0 200 OK Server: Webduino/1.4 Access-Control-Allow-Origin: * Content-Type: text/html; charset=utf-8 
Hello, World!
Origin: * Content-Type: text/html; charset=utf-8 
Hello, World!
1>or different text here.

- - 
Analog input 0 reads: 442o WebHTTP/1.1 200 OK style HTTP/1.0 200 OK Server: Webduino/1.4 Access-Control-Allow-Origin: * ContenHTTP/1.0 200 OK Server: Webduint/html; charset=utf-80 OK Server: Webduinal PinHTTP/1.0 200 OK Server: Webduino/1.4 Access-Control-Allow-Origin: * Content-Type: text/html; charset=utf-8 

Hello, World!
/1.0 200 OK SHTTP/1.0 200 OKHTTP/1.0 200 OK Server: Webduino/1.4 Access-Control-Allow-Origin: * Content-Type: text/html; charset=utf-8 
HelHTTP/1.1 200 OK rver: Webduino/1.4 Access-Control-Allow-Origin: Content-Type: text/html analog input 0 is 501

… which goes on and on for 50 browser pages

Any hint to what is going on?

(I notice that the LED on the board connected to Digital pin 9 is dim, which it should’t be, the code has no connection to it as far as I can tell)

Regards

Klaus

Bytheway, I print a message to the serial monitor when the page is fetched, and it is only run once

Also, the browser page actually also contains text from other previous sketches, like some data is residing in the W5100...

Thanks

Klaus

I think I found the cause. The W5100 chip seemed hot, so I turned it off for 5 minutes, and now its working again. Dont know if it was due to elevated temperatures or perhaps the device is not cleared properly when a new sketch is loaded

Looks like its the last part, that the W5100 is not cleared properly, since the browser text contained text/data from earlier sketches....

Regards

Klaus

The w5100 chip normally runs hot. Server test code.

//zoomkat 1-10-11
//web LED code
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html 
//address will look like http://192.168.1.102:84/ when submited
//for use with W5100 based ethernet shields

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84); //server port

String readString; 

//////////////////////

void setup(){

  pinMode(4, OUTPUT); //pin selected to control
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();

  //enable serial data print 
  Serial.begin(9600); 
  Serial.println("servertest1"); // so I can keep track of what is loaded
}

void loop(){
  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        //read char by char HTTP request
        if (readString.length() < 100) {

          //store characters to string 
          readString += c; 
          //Serial.print(c); //uncomment to see in serial monitor
        } 

        //if HTTP request has ended
        if (c == '\n') {

          ///////////////
          Serial.println(readString);

          //now output HTML data header

          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();

          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>Arduino GET test page</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H1>HTML form GET example</H1>");

          client.println("<FORM ACTION=\"http://192.168.1.102:84\" method=get >");

          client.println("Pin 4 \"on\" or \"off\": <INPUT TYPE=TEXT NAME=\"LED\" VALUE=\"\" SIZE=\"25\" MAXLENGTH=\"50\">
");

          client.println("<INPUT TYPE=SUBMIT NAME=\"submit\" VALUE=\"Change Pin 4!\">");

          client.println("</FORM>");

          client.println("
");

          client.println("</BODY>");
          client.println("</HTML>");

          delay(1);
          //stopping client
          client.stop();

          /////////////////////
          if(readString.indexOf("on") >0)//checks for on
          {
            digitalWrite(4, HIGH);    // set pin 4 high
            Serial.println("Led On");
          }
          if(readString.indexOf("off") >0)//checks for off
          {
            digitalWrite(4, LOW);    // set pin 4 low
            Serial.println("Led Off");
          }
          //clearing string for next read
          readString="";

        }
      }
    }
  }
}