INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
W5500 über steckbrett am due
09.04.2019, 20:35
Beitrag #1
W5500 über steckbrett am due
ein W5500 ethernet modul soll zusammen mit einem SD-car-reader am arduino due angeschlossen werden (mit 10-cm-kabel).

- wenn das W5500 direkt am SPI port des due angeschlossen ist, funktionert es.

- ist ein steckbrett dazwischen, scheitert Ethernet.begin() ("Failed to configure Ethernet using DHCP")

- direkt an einem arduino micro angeschlossen funktioniert das W5500.

kabel wurden zwischendurch getauscht, die pin-verbindungen mehrmals überprüft. die SD-card funktioniert in allen o.g. fällen.

kabel zu lang? zuviel für den 5V pin?

bild zur veranschaulichung im anhang.

Code:
#include <SPI.h>
#include <Ethernet2.h>

#define CS_PIN 7

byte mac[] = { 0x12, 0xAF, 0x8A, 0x3E, 0xB4, 0xDE };
int i = 0;

byte packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets

EthernetUDP Udp;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  
  Ethernet.init(CS_PIN);
  Serial.println("Initialize Ethernet with DHCP:");
    if (Ethernet.begin(mac) == 0) {
      Serial.println("Failed to configure Ethernet using DHCP");
      while (true) {
        delay(1);
      }
    }

      // print your local IP address:
  Serial.print("My IP address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.localIP()[thisByte], DEC);  
    Serial.print(".");
  }
  Serial.println();

danke.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.04.2019, 20:44
Beitrag #2
RE: W5500 über steckbrett am due
(09.04.2019 20:35)woswasi schrieb:  ...
zuviel für den 5V pin?
...
Das wäre für mich erst mal die plausibelste Erklärung.
Irgendwo hatte ich mal gelesen dass man den 5V Ausgang des Arduino nicht über 50mA belasten sollte.

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.04.2019, 23:47
Beitrag #3
RE: W5500 über steckbrett am due
(09.04.2019 20:44)ardu_arne schrieb:  
(09.04.2019 20:35)woswasi schrieb:  ...
zuviel für den 5V pin?
...
Das wäre für mich erst mal die plausibelste Erklärung.
Irgendwo hatte ich mal gelesen dass man den 5V Ausgang des Arduino nicht über 50mA belasten sollte.

OK, ich probiere das mal mit einem DC/DC converter von 12V auf 3,3V und 5V. sicherheitshalber nachgefragt - der Vin pin des due verträgt 6V-12V?

danke.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.04.2019, 11:23
Beitrag #4
RE: W5500 über steckbrett am due
(09.04.2019 23:47)woswasi schrieb:  der Vin pin des due verträgt 6V-12V?

7-12 Volt

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.04.2019, 23:21
Beitrag #5
RE: W5500 über steckbrett am due
nach einigen versuchen laufen das ethernet modul und der due über externe stromversorgung & steckbrett. sobald ich die SD card card dazustecke, funktionieren beide (eth & SD) nicht mehr.

die SD card hat im gegensatz zum W5500 modul kein RST (reset). kann das ein grund sein?

ich bleibe jedenfalls dran.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.04.2019, 10:41 (Dieser Beitrag wurde zuletzt bearbeitet: 14.04.2019 14:25 von Chopp.)
Beitrag #6
RE: W5500 über steckbrett am due
Hallo,

Schwer zu sagen, aber vermutlich eher nicht.

Auf dem Bild vermute ich cs auf 7 und 11 ?
Im Sketch sehe ich aber nur ein Modul mit cs 7.
So kann man nicht sehen ob deine SD Karte mit cs 11 angesprochen wird.
Nicht das 7 und 11 gleichzeitig schalten.

Ohne aktuellen Sketch alles nur raterei.

Gruß, Markus

Hallo,
Ich hab mal paar gute Seiten geschmökert, kann die aber mit dem tablet nicht verlinken.

Als erste Maßnahme: haben alle die selbe Spannung? 5v , 3.3v ?
Nicht das du verschiedene braust.
Sonst musst du Levelshifter einsetzen.

Zweitens: zieh mal den 11 vom Arduino ab und setz den auf High.
Wenn das W5500 jetzt funktioniert,
Dann den 11 wieder an den Arduino stecken, und an jeden cs einen Pullup von 10 - 40 k machen.

So kannst du zwischen Software und Hardware eingrenzen.
SD geht, dann Hardware, ansonsten Softwareproblem.

Hintergrund: es wird empfohlen vor dem Setup als erstes die cs pins als Ausgang zu deklarieren, und auf High zu setzen.
Erst danach sollte man die Spi Routine definieren.
Es gab einige Diskussionen, wo ein Netzteil einen 15ms Sanftanlauf hatte,
und sich die cs Leitungen im triestade befanden.
Auch ein Pullup am miso wurde heiß diskutiert.
Da es alles Entwickler und Semiprofis waren, schwören die auf Software und sehen alles andere als Hardwaremurks.

Ich sehe das anders, der Pullup sichert einen zuverlässigen Start Zustand,
Und Softwareprobleme sind erheblich schwerer bei uns Anfängern aufzudecken.

Gruß, Markus

Immer in Stress
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.04.2019, 18:53
Beitrag #7
RE: W5500 über steckbrett am due
danke, das ist sehr hilfreich!

ich habe mit zwei getrennten sketches getestet - einen für LAN, einen für SD. möglicherweise liegt da das problem: daß das jeweils andere SPI-modul nicht richtig initialisiert wird und daher blockt.

SD CS liegt auf pin 10. beide module werden werden vom DC/DC konverter mit 5V vesorgt, der auch 12V per Vin an den due liefert. bin von 5V für die module ausgegangen, weil der SPI-header am due auch 5V liefert.

max. strom war bisher sicher auch ein grund - die LEDs an den modulen leuchten deutlich heller, wenn der konverter die 5V liefert.

ich fasse das gleich mal mit deinen anregungen in einem sketch zusammen und werde berichten!

mfg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.04.2019, 21:08 (Dieser Beitrag wurde zuletzt bearbeitet: 15.04.2019 21:15 von woswasi.)
Beitrag #8
RE: W5500 über steckbrett am due
nachdem ich draufgekommen bin, daß die reihenfolge des einschaltens (ext. stromversorgung, USB, upload, monitor, ...) auswirkungen hat und es erst nach einem on-board reset gilt, ist das ganze jetzt reproduzierbar:

- Ethernet UND SD card angeschlossen (*): nur SD card funktioniert
- nur Ethernet angeschlossen(*): Ethernet funktioniert.

(*) SPI pins und 5V/GND an- bzw abgesteckt

Ethernet CS pin 7
SD card CS pin 10

- pin10 abgesteckt (SD CS, per software auf HIGH), aber die SPI pins der SD card angeschlossen: die SD card wird trotzdem erkannt, W5500 funktioniert weiterhin nicht

Code:
Initialize Ethernet with DHCP:
Failed to configure Ethernet using DHCP

Initializing SD card...Wiring is correct and a card is present.
The local IP address is: 255.255.255.255
The DNS server IP address is: 0.0.0.0
The gateway IP address is: 255.255.255.255

Card type: SDHC
Volume type is FAT32
Volume size (bytes): 3029860352
[...]

- kann das mit einer verwechslung von HIGH/LOW zu tun haben?
- was ist "einen pullup an CS machen" gemeint? ein 10k-40k Ohm widerstand zwischen modul-CS und arduino-CS?[/code]

nachfolgend der gesamte sketch.

danke !

Code:
#include <SPI.h>
#include <SD.h>
#include <Ethernet2.h>

#define ETH_PIN 7
#define SDC_PIN 10

Sd2Card card;

byte mac[] = { 0x12, 0xAF, 0x8A, 0x3E, 0xB4, 0xDE };

void setup() {
  Serial.begin(115200);

  pinMode(ETH_PIN, OUTPUT);
  pinMode(SDC_PIN, OUTPUT);

  digitalWrite(ETH_PIN, HIGH);
  digitalWrite(SDC_PIN, HIGH);

  Ethernet.init(ETH_PIN);
  Serial.println("Initialize Ethernet with DHCP:");
  if (Ethernet.begin(mac) == 0) {
     Serial.println("Failed to configure Ethernet using DHCP");
     // while (true) {
     //  delay(1);
     // }
  } else Serial.println("Success");

    Serial.print("\nInitializing SD card...");

  // we'll use the initialization code from the utility libraries
  // since we're just testing if the card is working!
  if (!card.init(SPI_HALF_SPEED, SDC_PIN)) {
    Serial.println("initialization failed. Things to check:");
    Serial.println("* is a card inserted?");
    Serial.println("* is your wiring correct?");
    Serial.println("* did you change the chipSelect pin to match your shield or module?");
    // return;
  } else {
    Serial.println("Wiring is correct and a card is present.");
  }
  printDebug();
  
}

void printDebug() {

  SdVolume volume;
  SdFile root;

  Serial.print("The local IP address is: ");
  Serial.println(Ethernet.localIP());

  Serial.print("The DNS server IP address is: ");
  Serial.println(Ethernet.dnsServerIP());

  Serial.print("The gateway IP address is: ");
  Serial.println(Ethernet.gatewayIP());
  
  // print the type of card
  Serial.print("\nCard type: ");
  switch (card.type()) {
    case SD_CARD_TYPE_SD1:
      Serial.println("SD1");
      break;
    case SD_CARD_TYPE_SD2:
      Serial.println("SD2");
      break;
    case SD_CARD_TYPE_SDHC:
      Serial.println("SDHC");
      break;
    default:
      Serial.println("Unknown");
  }

  // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
  if (!volume.init(card)) {
    Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
    return;
  }

  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("\nVolume type is FAT");
  Serial.println(volume.fatType(), DEC);
  Serial.println();

  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  volumesize *= 512;                            // SD card blocks are always 512 bytes
  Serial.print("Volume size (bytes): ");
  Serial.println(volumesize);
  Serial.print("Volume size (Kbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);
  Serial.print("Volume size (Mbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);

  Serial.println("\nFiles found on the card (name, date and size in bytes): ");
  root.openRoot(volume);

  // list all files in the card with date and size
  root.ls(LS_R | LS_DATE | LS_SIZE);
}

void loop() {
  
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ENC28J60 vs W5100 vs W5500 Frage Chopp 4 525 19.07.2020 14:42
Letzter Beitrag: hotsystems
  Kommunikation über mittlere Distanzen (5 bis 10m) stw 12 2.943 19.04.2020 22:36
Letzter Beitrag: stw
  Attiny85 über ISP programmieren senseman 20 3.957 01.04.2020 08:34
Letzter Beitrag: hotsystems
  Arduino mit W5500 - maximale Übertragungsrate Plammi 5 1.223 01.03.2020 15:24
Letzter Beitrag: MicroBahner
  LED Strip über Arduino und Fernbedienung steuern Michi_exe 1 1.118 03.12.2019 15:05
Letzter Beitrag: Tommy56
  Arduino Nano + W5500 Server Problem Plammi 8 2.726 23.11.2019 19:40
Letzter Beitrag: ardu_arne
  Daten über 230V~ Leitung übertragen, geht das ? Tim1975 12 4.640 24.08.2019 12:45
Letzter Beitrag: hotsystems
  Übertragung von Sensordaten zu Arduino über USB Peter Weiss 3 1.662 27.06.2019 16:41
Letzter Beitrag: Tommy56
  Arduino DUE über WiFi verbinden GuaAck 1 1.605 16.03.2019 23:23
Letzter Beitrag: Tommy56
  Serielle Kommunikation über PS/2 Tastatur Rockman 2 1.632 08.02.2019 13:36
Letzter Beitrag: Rockman

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste