Arduino Mega mit W5100 funktioniert nicht

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:

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.

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

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

Gruß

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

power-dodge: 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.

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 :)

power-dodge: 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

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ß

Mal eine grundlegende Frage zu Deinem W5100 Shield:

Ist das überhaupt für den MEGA geeignet? Hat das hinten den 3x3 Pin Steckverbinder für den ICSP-Anschluß dran?
Wenn nicht, funktioniert das nicht auf dem MEGA. Gib uns im Zweifelsfall mal einen Link zu Deinem Shield.

Gruß Tommy

Gib uns im Zweifelsfall mal einen Link zu Deinem Shield.

Hat er/sie/es gemacht! Zumindest eine URL.

Es hat keinen ICSP Stecker am hinteren Ende Und dennoch tut es am Mega!

Ok, die URL habe ich übersehen. Nach allgemeinem Sprachgebrauch ist das Ding ja auch kein Shield, sondern ein Modul. Wegen der Bezeichnung Shield habe ich nach dem Anschluß gefragt.

Gruß Tommy

Wegen der Bezeichnung Shield habe ich nach dem Anschluß gefragt.

Ja, die Semantik, da hapert es manchmal! (nicht nur bei mir)

Moin,

ja manchmal weiß man es nicht wie man die Teile nennen soll.

Ich jetzt den Scetch erweitert, auf meine 11 Ausgänge. Mit dem Modbus TCP View komme ich drauf und kann die Ausgänge steuern.

Wenn ich aber paar nach einander ansteure, bleibt das Modul irgendwie hängen. Da hillft nur reset. Im Normalfall leuchten 4 LED.s am Modul, wenn es hängt bleibt eine LED an und zweite blinkt (FDX)

Oder muss man hier noch etwas anpassen : (Eher im oberen Bereich)?

TCCR1A = (TCCR1A & 0xF8) | 0x01;
  TCCR0A = (TCCR0A & 0xF8) | 0x01;
  TCCR0B = (TCCR0B & 0xF8) | 0x01;
  TCCR2B = (TCCR2B & 0xF8) | 0x01;
  
  pinMode(0, INPUT);
  pinMode(1, INPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  pinMode(15, INPUT);
  pinMode(16, INPUT);
  pinMode(17, INPUT);
  pinMode(18, INPUT);
  pinMode(19, INPUT);
  pinMode(20, INPUT);
  pinMode(21, INPUT);
}

void loop()
{
  Mb.Run();
  


  //D2 Timer1A
  analogWrite(2, Mb.R[0]); 
  //D3 Timer0A
  analogWrite(3, Mb.R[1]); 
  //D4 Timer0B
  analogWrite(4, Mb.R[2]); 
  //D5 Timer2B
  analogWrite(5, Mb.R[3]); 
  //D6 Timer1A
  analogWrite(6, Mb.R[4]); 
  //D7 Timer0A
  analogWrite(7, Mb.R[5]); 
  //D8 Timer0B
  analogWrite(8, Mb.R[6]); 
  //D9 Timer2B
  analogWrite(9, Mb.R[7]);
  //D11 Timer1A
  analogWrite(11, Mb.R[8]); 
  //D12 Timer0A
  analogWrite(12, Mb.R[9]); 
  //D13 Timer0B
  analogWrite(13, Mb.R[10]); 
  
}

Muss hier noch was rein?:

Wenn ja wie würde es sich fortsetzen?

TCCR1A = (TCCR1A & 0xF8) | 0x01; TCCR0A = (TCCR0A & 0xF8) | 0x01; TCCR0B = (TCCR0B & 0xF8) | 0x01; TCCR2B = (TCCR2B & 0xF8) | 0x01;

Dankeschön

Ist ein Modul und läuft am Mega genausogut wie am Uno. Hab ich auch im Einsatz

Hatte auch mal gelesen gehabt das es an Stromversorgung liegen kann.

Es lag auch bei mir daran, über einen Stabi und eigene Masse läuft er jetzt länger und die Led´s sind heller (5V)

Hab da ne Frage wie kann ich in dem Sketch so konfigurieren, das jeder Ausgang PWM im Float steuert? Ob hoch oder runter...

Quasi so:

    if (fade < ziel) {
      fade++;
      Serial.print("fade Pin1 ");
      Serial.println(fade);
    }
    if (fade > ziel) {
      fade--;
      Serial.print("fade Pin1 ");
      Serial.println(fade);
    }
    analogWrite(pinLEDt, fade);
  }
}

Und hier ist mein jetziges Programmchen:

#include 
#include 

#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
  //http://playground.arduino.cc/Main/TimerPWMCheatsheet

  TCCR1A = (TCCR1A & 0xF8) | 0x01;
  TCCR0A = (TCCR0A & 0xF8) | 0x01;
  TCCR0B = (TCCR0B & 0xF8) | 0x01;
  TCCR2B = (TCCR2B & 0xF8) | 0x01;
  
  pinMode(0, INPUT);
  pinMode(1, INPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  pinMode(15, INPUT);
  pinMode(16, INPUT);
  pinMode(17, INPUT);
  pinMode(18, INPUT);
  pinMode(19, INPUT);
  pinMode(20, INPUT);
  pinMode(21, INPUT);
}

void loop()
{
  Mb.Run();
  


  //D2 Timer1A
  analogWrite(2, Mb.R[0]); 
  //D3 Timer0A
  analogWrite(3, Mb.R[1]); 
  //D4 Timer0B
  analogWrite(4, Mb.R[2]); 
  //D5 Timer2B
  analogWrite(5, Mb.R[3]); 
  //D6 Timer1A
  analogWrite(6, Mb.R[4]); 
  //D7 Timer0A
  analogWrite(7, Mb.R[5]); 
  //D8 Timer0B
  analogWrite(8, Mb.R[6]); 
  //D9 Timer2B
  analogWrite(9, Mb.R[7]);
  //D11 Timer1A
  analogWrite(11, Mb.R[8]); 
  //D12 Timer0A
  analogWrite(12, Mb.R[9]); 
  //D13 Timer0B
  analogWrite(13, Mb.R[10]); 
  
}

Kann man das als eine Zeile für alle Ausgänge definieren? Oder jeden einzelnen Ausgang muss man hinweisen? Das man die Schnelligkeit des Fadens einzustellen wäre schön.

gruß

Hab da ne Frage wie kann ich in dem Sketch so konfigurieren, das jeder Ausgang PWM im Float steuert? Ob hoch oder runter...

PWM (analogWrite) geht von 0 ... 255 (1 Byte). Was willst Du da mit float? Oder meinst Du etwas anderes?

Gruß Tommy

Möchte das die Werte langsam erreicht werden. Also von 0 bis 255 sagen wir mal in 1 Sekunde. Mag kein plötzliches einschalten.

Daher auch PWM nutze ich, damit ich auch mal sagen wir mal auf 100 stellen kann. Wenn ich aber 255 einstelle soll es dahin floaten.

Die verschiedenen helligkeiten gingen eben auch bei testen. Da sendete ich über Modbus saegen wir mal 100 zu dem 0 oder andere bis 11. Und das funktionierte.

Also möchte einfach keine ruckartige änderungen des Wertes.

Danke euch noch mal

Gruß

Vielleicht verwechsle ich gerade float mit fade.

Noch einen Hinweis dazu: Die Helligkeitsempfindung des Auges ist extrem nichtlinear, die Helligkeit der LED ist auch nicht linear. Das führt dazu, das Änderungen der Spannung im unteren Bereich wesentlich stärker wahrgenommen werden, als gleich große Änderungen im oberen Bereich.

Dazu gibt es hier einen Beitrag mit Wertetabellen.

Gruß Tommy

Danke für den Hinweis!

Das ist ja kein Problem, es werden später feste Werte vergeben. Die gewünschten werden eh durchs ausprobieren herausgefunden. Oder auch mehrere pro Einheit, dann werden diese unter einander gewechselt, nur sollte es über fade erfolgen.

Gruß