uno32 et module ethernet et SD

Bonjour :slight_smile:

J’ai fait l’acquisition d’un uno32 y a pas très longtemps, j’essaye depuis un certain temps de faire fonctionner différents montages et … pas moyen…
Là, je suis avec le module ethernet, je soupsonais un problème avec les librairies, mais j’utilise celle livrée avec mpide v0023, qui devrait donc fonctionner …

#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 };
byte ip[] = { 192,168,2, 177 };

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

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

void loop()
{
  // listen for incoming clients
  Client 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();
  }
}

Meme problème avec le lecteur de carte SD du meme module

/*
  SD card read/write
 
 This example shows how to read and write data to and from an SD card file 	
 The circuit:
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13
 ** CS - pin 4
 
 created   Nov 2010
 by David A. Mellis
 updated 2 Dec 2010
 by Tom Igoe
 
 This example code is in the public domain.
 	 
 */

#include <SD.h>

File myFile;

void setup()
{
  Serial.begin(57600);
  Serial.print("Initializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
  pinMode(4, OUTPUT);

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }

  Serial.println("initialization done.");

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test.txt", FILE_WRITE);

  // if the file opened okay, write to it:
  if (myFile) {
    Serial.println("Writing to test.txt...");
    for(int i = 0; i < 20; i++)
    {
      Serial.print("Ecrit dans test.txt... : ");
      Serial.println(i, DEC);
      
      myFile.print("ecrit : ");
      myFile.println(i, DEC);

    }
    // close the file:
    myFile.close();
    Serial.println("done.");
  } 
  else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }

  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } 
  else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void loop()
{
  // nothing happens after setup
}

Initializing SD card…initialization done.
Writing to test.txt…
Ecrit dans test.txt… : 0

La le fichier est bien créé, par contre il bloque à l’écriture… la ligne "myFile.print("ecrit : “);” n’est jamais executée et reste blocante dans le programme
Voilà, c’est le programme de base, j’ai juste changé l’ip. pas moyen de faire un ping, ni bien évidement de me connecter à l’arduino par le navigateur :frowning:

Quelqu’un a une idée ??

Merci

Salut,

vohu: J'ai fait l'acquisition d'un uno32 y a pas très longtemps, j'essaye depuis un certain temps de faire fonctionner différents montages et ... pas moyen... Là, je suis avec le module ethernet, je soupsonais un problème avec les librairies, mais j'utilise celle livrée avec mpide v0023, qui devrait donc fonctionner ...

Il y a une modif hardware a réaliser pour faire marcher la shield ethernet ;) http://www.chipkit.cc/wiki/index.php?title=Library_Status#Ethernet_hardware_mod

Sinon pour la SD je sait pas ce qui pourrait poser problème, la lib SD marche bien chez moi (sur max32) http://www.chipkit.cc/wiki/index.php?title=Library_Status Vérifie ton câblage ...

je vais voir pour l'ethernet,

Pour la carte SD, aucun cablage, c'est le lecteur de carte se trouvant sur le shiel ethernet

vohu: je vais voir pour l'ethernet,

Pour la carte SD, aucun cablage, c'est le lecteur de carte se trouvant sur le shiel ethernet

Ok donc oui logique, tant que tu n'aura pas fait la modif hardware tu aura le même problème pour l'ethernet et pour la sd (même bus SPI).

mon anglais est plutot mauvais, mais si j'ai bien compris, il faut couper une ?? toutes les broches du ICSP du shield ??

Ethernet hardware mod The 2x3 connector on the right side of the board on the Arduino boards is an Atmel ISP connector. Because the AVR in-system-programming protocol uses SPI with the CPU held in reset, this connector has three of the SPI signals plus reset. The Ethernet shield picks up those three SPI signals from this connector. It also ties the reset from this connector together with the reset on the power connector. When the Uno32 and Max32 were designed, it was thought that it would be more useful in the long run for this connector to be a full SPI connector, so the SPI slave select pin was put where reset is on an Arduino board. It was not thought that some shield would tie both reset pins together. So, right now, every time the sketch tries to bring Slave select low to start to send something to the shield, it resets the processor. Oops. So, the mod is to cut reset somewhere. You can cut the trace on the Uno32, cut the pin from the connector on the Uno32 or cut the pin on the Ethernet shield. If you cut the trace on the shield near the power connector that works also. Unfortunately, we couldn't find a schematic for the particular version of the shield we have to verify that. We cut the pin from the shield on our board. The other problem is that there are at least five different versions of the ethernet shield out. Some early boards didn't have the reset signal at the power connector but only had it at the ICSP connector. On any newer board, the cut should be benign.

vohu: mon anglais est plutot mauvais, mais si j'ai bien compris, il faut couper une ?? toutes les broches du ICSP du shield ??

arg! NON! Il te suffit juste de laisser la broche reset de l'ethernet shield flottante (tu la plie un peu juste pour quel passe à coté du "trou").

ok...

d'après ou

il s'agit de la broche 5, donc c'est bien celle qui se trouve au dessus de R29 sur la uno32 ?

ça à l'air d'être ça, mais je parlai pas de la broche reset du spi mais de la broche reset de la shield (mal expliqué désolé :blush:) à coté du 3v3, sur le connecteur souligné power. Si tu essaye de plier le broche reset du spi tu va la casser ;)

Bon, ben ça fonctionne toujours pas :/

vohu:
Bon, ben ça fonctionne toujours pas :confused:

Ha? C’est bizarre, si tu peut regarde le signal au niveau de la broche reset de la uno32, si le reset de la shield est bien séparé du reset de l’arduino il ne devrait pas y avoir de changement d’état.

quand j'appuye sur le reset de la shield, seulement les led du réseau s'éteignent, quand j'appuye sur le reset de la uno32, y a que la uno qui redémarre

La carte SD ne fonctionne pas non plus, et reste toujours bloquée au moment de l'écriture (le fichier vide est bien créé pourtant)

Bonjour,

Je rencontre le même problème d'écriture sur une SD avec la max32 et je ne trouve pas de solution. Tu pourras arriver à écrire dans le fichier, si tu ajoute au préalable une ligne dans le fichier créé via ton ordinateur. En remettant le SD dans le lecteur de ta carte, l'écriture dans le fichier ne devrait plus bloquer.

Si tu trouve ou si tu as trouvé une solution merci de me retourner les infos.

Merci

Ben