1284p Ethernet Shield

RESET mit was verbinden?

Der Reset-Pin des Shields mit dem Reset-Pin des 1284p. Damit das Shield auch geresettet wird, wenn der MCU einen Reset durchmacht.

Kannst Du ein Oszi anhängen, um den SS-Pin zu testen?

Hast das Bild angeschaut? Hab kein Oszi.

0.4-0.6V sind da drauf

Hast das Bild angeschaut?

Auf dem Bild ist aber nichts mit PB2 verbunden.

Poste mal den Code, den Du zum Testen verwendest.

Ist der normale Webduino RGB Sketch

/* Web_AjaxRGB.pde - example sketch for Webduino library */

#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"

// CHANGE THIS TO YOUR OWN UNIQUE VALUE
static uint8_t mac[6] = { 0x02, 0xAA, 0xBB, 0xCC, 0x00, 0x22 };

// CHANGE THIS TO MATCH YOUR HOST NETWORK
static uint8_t ip[4] = { 192, 168, 178, 177 }; // area 51!

/* all URLs on this server will start with /rgb because of how we
 * define the PREFIX value.  We also will listen on port 80, the
 * standard HTTP service port */
#define PREFIX "/rgb"
WebServer webserver(PREFIX, 80);

#define RED_PIN 12
#define GREEN_PIN 13
#define BLUE_PIN 14

int red = 0;            //integer for red darkness
int blue = 0;           //integer for blue darkness
int green = 0;          //integer for green darkness

/* This command is set as the default command for the server.  It
 * handles both GET and POST requests.  For a GET, it returns a simple
 * page with some buttons.  For a POST, it saves the value posted to
 * the red/green/blue variable, affecting the output of the speaker */
void rgbCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  if (type == WebServer::POST)
  {
    bool repeat;
    char name[16], value[16];
    do
    {
      /* readPOSTparam returns false when there are no more parameters
       * to read from the input.  We pass in buffers for it to store
       * the name and value strings along with the length of those
       * buffers. */
      repeat = server.readPOSTparam(name, 16, value, 16);

      /* this is a standard string comparison function.  It returns 0
       * when there's an exact match.  We're looking for a parameter
       * named red/green/blue here. */
      if (strcmp(name, "red") == 0)
      {
    /* use the STRing TO Unsigned Long function to turn the string
     * version of the color strength value into our integer red/green/blue
     * variable */
        red = strtoul(value, NULL, 10);
      }
      if (strcmp(name, "green") == 0)
      {
        green = strtoul(value, NULL, 10);
      }
      if (strcmp(name, "blue") == 0)
      {
        blue = strtoul(value, NULL, 10);
      }
    } while (repeat);
    
    // after procesing the POST data, tell the web browser to reload
    // the page using a GET method. 
    server.httpSeeOther(PREFIX);
//    Serial.print(name);
//    Serial.println(value);

    return;
  }

  /* for a GET or HEAD, send the standard "it's all OK headers" */
  server.httpSuccess();

  /* we don't output the body for a HEAD request */
  if (type == WebServer::GET)
  {
    /* store the HTML in program memory using the P macro */
    P(message) = 
""
  "Webduino AJAX RGB Example"
  ""
  ""
  ""
  ""
  ""
""
""
  "
"   "
"   "
" "" "";     server.printP(message);   } } void setup() {   pinMode(RED_PIN, OUTPUT);   pinMode(GREEN_PIN, OUTPUT);   pinMode(BLUE_PIN, OUTPUT); //  Serial.begin(9600);   // setup the Ehternet library to talk to the Wiznet board   Ethernet.begin(mac, ip);   /* register our default command (activated with the request of   * http://x.x.x.x/rgb */   webserver.setDefaultCommand(&rgbCmd);   /* start the server to wait for connections */   webserver.begin(); } void loop() {   // process incoming connections one at a time forever   webserver.processConnection(); //  Serial.print(red); //  Serial.print(" "); //  Serial.print(green); //  Serial.print(" "); //  Serial.println(blue);   analogWrite(RED_PIN, red);   analogWrite(GREEN_PIN, green);   analogWrite(BLUE_PIN, blue); }

An PB2 habe ich auch versucht, funktioniert nicht.

An PB2 habe ich auch versucht, funktioniert nicht.

Du solltest den Pin 10 des Shields an PB2 lassen, der Code wird den Pin ansprechen, vorausgesetzt, Du compilierst wirklich für den 1284p.

Wie äussert sich "funktioniert nicht"? Lass mal ein paar Serial-Aufrufe drin und schau, wo Du welche Ausgaben bekommst. Um das Shield zu testen, würde ich keinen Webserver verwenden, sondern einen einfachen Beispielsketch der Ethernet-Bibliothek (z.B. ChatServer).

PIN10 an PB2

Chat server address:0.0.32.0
Chat server address:0.0.240.4
Chat server address:2.0.32.0
Chat server address:0.0.0.4
Chat server address:0.32.0.32
Chat server address:0.32.0.32
Chat server address:0.32.0.4
Chat server address:0.4.0.4
Chat server address:0.0.0.4
Chat server address:2.0.32.0
Chat server address:4.0.0.4
Chat server address:255.255.0.4
Chat server address:0.32.0.0
Chat serverÿChat server address:0.4.16.4
Chat server address:0.4.0.4
Chat server addressChat server address:0.0.32.0
Chat server address:2.0.32.0
Chat server address:0.32.0.3Chat server address:0.0.0.4
Chat server address:0.37.0.32
Chat server address:0.32.0.4
Chat server address:0.32.0.32
Chat server address:2.0.16.16
We have a new client
Chat server address:0.32.0.4
Chat server address:85.0.32.0
Chat server address:0.0.32.0
/*
 Chat  Server

 A simple server that distributes any incoming messages to all
 connected clients.  To use telnet to  your device's IP address and type.
 You can see the client's input in the serial monitor as well.
 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 9 Apr 2012
 by Tom Igoe

 */

#include 
#include 

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


// telnet defaults to port 23
EthernetServer server(23);
boolean alreadyConnected = false; // whether or not the client was connected previously

void setup() {
  // initialize the ethernet device
  Ethernet.begin(mac, ip, gateway, subnet);
  // start listening for clients
  server.begin();
 // Open serial communications and wait for port to open:
  Serial.begin(9600);



  Serial.print("Chat server address:");
  Serial.println(Ethernet.localIP());
}

void loop() {
  // wait for a new client:
  EthernetClient client = server.available();

  // when the client sends the first byte, say hello:
  if (client) {
    if (!alreadyConnected) {
      // clead out the input buffer:
      client.flush();    
      Serial.println("We have a new client");
      client.println("Hello, client!"); 
      alreadyConnected = true;
    } 

    if (client.available() > 0) {
      // read the bytes incoming from the client:
      char thisChar = client.read();
      // echo the bytes back to the client:
      server.write(thisChar);
      // echo the bytes to the server as well:
      Serial.write(thisChar);
    }
  }
}

PIN10 an PB4

Chat server address:255.255.255.255
Chat server address:255.255.255.255
Chat server address:255.255.255.255
Chat seòChat server address:255.255.255.255
Chat server address:255.255.255.255
Chat server address:255.255.255.255
Chat server address:255.255.255.255
Chat server address:255.255.255.255
Chat server address:255.255.255.255

Sieht so aus, als wäre Dein 1284p im Dauerreset. Denn eigentlich kommt die Ausgabe der Chat-Server Adresse nur einmal im setup(). Weiterhin wundert mich die Ausgabe nicht die gesetzte IP liefert. Auch die Netzmaske kommt mir komisch vor. Normalerweise ist die ehre 255.255.255.0. Hast Du das Shield mit genau diesen Sketchen mal auf einem Uno probiert? Nicht, das es ein Netzwerkproblem und kein Chip-Problem ist.

Auf UNO läufts richtig:

ChaChat server address:192.168.178.177

Subnet habe ich auch angepasst, ändert sich nichts.

Ich habe soeben bemerkt, dass das ChatServer-Beispiel wirklich die falschen Parameter an die Ethernet-Bibliothek übergibt. Der dritte Parameter von Ethernet.begin() ist die IP des DNS-Servers und nicht der Gateway. Kannst Du das noch ändern?

Aber ich stimme mit mkl0815 überein, es sieht so aus, als würde Dein Breadboard-Rechner ständig resetten. Als erstes würde ich die Glättungskondensatoren näher an den Chip bringen und noch einen hinzufügen, der mind. 10µF gross ist.

Auf UNO: Cha address:192.168.178.1 Chat server address:192.168.178.1

Auf 1284p: C32.0.0 Chat server address:0.0.0.4

Ich habe hier nur 0,1µf und 22pf

Wie siehts denn mit dem AREF PIN aus? Muss der angeschlossen werden oder nicht? weil wenn ja, dann siehts so nach paar mal resett aus.....

Ch address:192.168.178.177
Chat server address:192.168.178.177
Chat server address:0.168.178.177
Chat server address:192.168.240.0
Chat server address:192.168.240.0
Chat server address:192.168.178.177
Chat server address:0.168.178.177
Chat server address:0.168.178.177
Chat server address:0.168.178.177

Wie siehts denn mit dem AREF PIN aus? Muss der angeschlossen werden oder nicht?

Bei meinen Breadboard-Rechnern habe ich ihn immer verbunden, aber ob das notwendig ist, weiss ich leider auch nicht. Ich bin aber immer noch der Meinung, dass Du Kondensatoren zur Glättung (englisch decoupling) einsetzen musst. Direkt am Chip sollte ein 100nF sein, in der Versorgung mind. 40µF.

10,11 und 30,31 ist mit einem 0.1 µF (100nF) verbunden. Crystal hat 22pF an 12,13 dran.

Crystal hat 22pF an 12,13 dran.

Ich nehme an, gegen GND.

Einfach zur Sicherheit eine Nachfrage: Die Ausgabe passiert, ohne dass Du den Reset-Taster anfasst, einfach spontan?

Kannst du mal im Betrieb die Spannung von Vcc nach GND messen? Und wenn Du hast, hänge mal einen etwas dickeren Elko zwischen Vcc und GND, so ab 40µF.

Ja gegen GND

Da hab ich reset gedrückt um zu schauen ob die ip sich ändert

Ch address:192.168.178.177
Chat server address:192.168.178.177
Chat server address:0.168.178.177
Chat server address:192.168.240.0
Chat server address:192.168.240.0
Chat server address:192.168.178.177
Chat server address:0.168.178.177
Chat server address:0.168.178.177

Bei den anderen hab ich nicht gedrückt. Es sind 3.6-4 volt, schwankt immer.

Es sind 3.6-4 volt, schwankt immer.

Was belegt, dass Deine Stromversorgung das Problem ist. Versuche mal, den Arduino mit Strom vom externen Netzteil zu versorgen (7.5 - 9V). Vielleicht liefert Dein Rechner auf dem USB nicht genügend Strom für dieses Dreiergestirn.

Mit 12V sind es auch nicht mehr als 4.2V

Welchen pin brauch die Sd karte? Hab an pin 4 und PB0 probiert, Serial Monitor findets nicht.

skorpi08:
Mit 12V sind es auch nicht mehr als 4.2V

Und wo sind die 12V angeschlossen? Wie betreibst Du denn den 1284P?

Als Programmer nutze ich das UNO Board ohne den 328 Chip. An dem UNO Board sind die 12V auch angeschlossen. Gemessen habe ich an 10 und 11 bei dem 1284p.

Wenn Du den 1284p abhängst, was misst Du dann zwischen 5V und GND am Ethernet Shield?

An dem UNO Board sind die 12V auch angeschlossen.

Was heisst hier auch? Wo denn sonst noch?