Go Down

Topic: Arduino Mega mit W5100 funktioniert nicht (Read 4455 times) previous topic - next topic

power-dodge

Hallo,

würde gern den W5100 mit dem Mega zum laufen bekommen.

Das Problem ist das ich diese Pins dafür nutzen möchte:

PIN 50 = MISO
PIN 51 = MOSI
PIN 52 = SCK

finde grad nicht wo ich diese definieren kann...

Und dieses Sketch würde ich gern nutzen:

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

#include "Mudbus.h"

Mudbus Mb;
//Function codes 1(read coils), 3(read registers), 5(write coil), 6(write register)
//signed int Mb.R[0 to 125] and bool Mb.C[0 to 128] MB_N_R MB_N_C
//Port 502 (defined in Mudbus.h) MB_PORT

void setup()
{
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
  uint8_t ip[]      = { 192, 168, 178, 70 };
  uint8_t gateway[] = { 192, 168, 178, 1 };
  uint8_t subnet[]  = { 255, 255, 255, 0 };
  Ethernet.begin(mac, ip, gateway, subnet);


  //PWM Frequenz
  //0×01  1      31.374 KHz
  //0×02  8      3.921 Khz
  //0×03  64     490.1 Hz            // default
  //0×04  256    122.5 Hz
  //0×05  1024   30.63 Hz
  //For Arduino NANO:
  //http://playground.arduino.cc/Main/TimerPWMCheatsheet
  //timer 0 (controls pin 13, 4)
  //timer 1 (controls pin 12, 11)
  //timer 2 (controls pin 10, 9)
  //timer 3 (controls pin 5, 3, 2)
  //timer 4 (controls pin 8, 7, 6)

  TCCR1A = (TCCR1A & 0xF8) | 0x01;
  TCCR0A = (TCCR0A & 0xF8) | 0x01;
  TCCR0B = (TCCR0B & 0xF8) | 0x01;
  TCCR2B = (TCCR2B & 0xF8) | 0x01;
 
 
  pinMode(9, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(3, OUTPUT);
}

void loop()
{
  Mb.Run();
 

 
  //D9 Timer1A
  analogWrite(9, Mb.R[3]);
  //D6 Timer0A
  analogWrite(6, Mb.R[2]);
  //D5 Timer0B
  analogWrite(5, Mb.R[1]);
  //D3 Timer2B
  analogWrite(3, Mb.R[0]);
 
 

}



Dieser Mega soll von Ip syscom gesteuert werden.
In dem Sketch müsste ich noch weiter Ausgänge Steuern per PWM.
Daher sind die 2-13 pins belegt...
Danach muss ich noch ein paar PIR´s einbinden.

Kriege grad aber das kleine W5100 net zum laufen.

Habt Ihr einen Tipp?

Danke euch schon mal!

uwefed

Die SPI-Schnittstelle ist hardwareinplementiert und darum sind die Pins bekannt und werden in der Bibliothek automatisch definiert. Du brauchst aber zusätzlich pin 10 (und pin 4 für die SD-Karte falls eine verwendest).
Statt dem Pin 10 kannst Du jedes andere verwenden, Du mußt dann aber auf dem W5100 umlöten.

Grüße Uwe

power-dodge

Hallo,

vielen Dank für die Antwort!

Sd Karte soll nicht benutzt werden.
Also bräuchte ich Pin10 nicht?

Wie bekomme ich den das Modul zum laufen?

Dankeschön

power-dodge

Oder hab ich jetzt was falsch verstanden?

Ist es bekannt was man umlöten muss?

uwefed

Hallo,

vielen Dank für die Antwort!

Sd Karte soll nicht benutzt werden.
Also bräuchte ich Pin10 nicht?

Wie bekomme ich den das Modul zum laufen?

Dankeschön
Die SD Karte hängt normalerweise an pin 4.

Welche W5100 Platine bzw Shield hast Du?

Grüße Uwe

combie

Egal was du tust, aber wenn du Hardware SPI nutzt, muss der SS Pin ein Output sein, oder zumindest dauerhaft auf HIGH liegen.

Quote
Das Problem ist das ich diese Pins dafür nutzen möchte:

PIN 50 = MISO
PIN 51 = MOSI
PIN 52 = SCK
Das ist kein Problem, sondern der Normalfall.
 :smiley-cool: Alles andere wäre ein Problem :smiley-cool:
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

power-dodge

Hallo,

der mini ist es ,

https://rover.ebay.com/rover/0/0/0?mpre=https%3A%2F%2Fwww.ebay.de%2Fulk%2Fitm%2F272952466045

Hab wie oben beschrieben die Pins angeschlossen.
Nur Eben noch GND an GND, 5V an 5V und Reset an Reset.

Glaube SS in am Pin  53 angeschlossen.
Muss man diesen noch irgendwo einstellen?

combie

#7
Dec 25, 2017, 12:41 pm Last Edit: Dec 25, 2017, 01:27 pm by combie
Quote
Glaube SS in am Pin  53 angeschlossen.
Unsinn!

Du meinst sicherlich:
/CS(SS) des W5100 ist an Pin 53 angeschlossen

Denn SS des Mega ist Pin 53.
Immer, beim Mega.
Unveränderlich.


----

Die Ethernet Lib möchte gerne Pin 10 für /CS(SS des W5100) verwenden.
Aber dennoch MUSST du folgendes tun:
Quote
Egal was du tust, aber wenn du Hardware SPI nutzt, muss der SS(des Mega) Pin ein Output sein, oder zumindest dauerhaft auf HIGH liegen.
Dazu gibt es keine Alternative!
Keine Alternative!
No!
Nie und nimmer.
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

power-dodge

Auf dem Board von W5100 ist ein Pin SS der ist am Pin 53 angeschlossen.

Anschließen wollte ich es wie auf diesem Beispiel,

https://code-bude.net/2013/06/22/tutorial-arduino-mega-2560-mit-enc28j60-ethernetadapter-nutzen/

Nur ist es eben für nen anderen Adapter,  hab es auch versucht nach diesem Beispiel...

Ist es machbar?

Dankeschön

power-dodge

Wen Pin 10 auf  immer auf high sein muss, also auf dem weg zum Modul.
Kann ich da nicht 3 V drauf packen.

Gruß

Tommy56

Warum schaust Du Dir nicht die Beispiele an, die bei Deiner Ethernet-Lib dabei sind und die Du in der IDE aufrufen kannst? Beispiele von anderen Libs funktionieren sehr selten.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

combie

#11
Dec 25, 2017, 01:03 pm Last Edit: Dec 25, 2017, 01:28 pm by combie
Wen Pin 10 auf  immer auf high sein muss, also auf dem weg zum Modul.
Vorsicht:
DAS HABE ICH NICHT GESAGT!

Ich habe gesagt, und gemeint, dass die Ethernet Lib gerne Pin 10 verwenden möchte um den /CS(SS) des W5100 zu bedienen.

Und ich habe gesagt, dass SS Pin des Mega der Pin 53 ist.

Beweis:
> Serial.print(SS);
Ausgabe: 53

Dieser Pin muss dauerhaft auf Ausgang geschaltet werden, oder HIGH Potential haben, damit HardwareSPI nicht zwischendurch in den Slave Modus schaltet.
Das steht auch in der SPI Doku so drin.
Das steht auch im Datenblatt des ATMega2560 ganz klar und eindeutig so drin.

Also:
Wenn du das nicht tust, wirst du deinen Ethernet Adapter NICHT (zuverlässig) zum laufen bekommen.


Nachtrag:
Sehe gerade der Pin auf dem W5100 Adapter ist auch mit SS beschriftet.
/CS hätte ich erwartet.

Also:
Mache den Pin 53, also SS des Mega zum Output
Und schließe SS des W5100 Adapters an Pin 10 des Mega an.
Dann laufen alle Beispiele der Ethernet Lib.



Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

power-dodge

Vielen Vielen Dank euch!

Ha den SS auf Pin 10 gelegt und konnte kleines Ziel
erreichen.
Hab eigene IP abrufen können und diese war in der
Fritzbox vergeben.

Anstatt Pin 10 werde mir an der Stelle anderes PWM Ausgang auswählen. Sind noch ein paar frei.

Werde weiter als testen, hoffe kriege es einiger maßen hin.


Danke euch noch mal  :)

uwefed

Anstatt Pin 10 werde mir an der Stelle anderes PWM Ausgang auswählen. Sind noch ein paar frei.
Dann mußt Du das ein anderes Pin in der Bibliothek wählen.

Grüße Uwe

power-dodge

Ich muss da eh noch viele Pins vergeben und experimentieren...

Dann eben auch PIRs einbinden und schauen wie alles mit Modbus läuft.

Danke euch noch mal.

Gruß

Go Up