Go Down

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

Tommy56

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
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

combie

#16
Dec 25, 2017, 05:19 pm Last Edit: Dec 25, 2017, 05:22 pm by combie
Quote
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!

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

Quelle: Joseph Joubert

Tommy56

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
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

combie

Quote
Wegen der Bezeichnung Shield habe ich nach dem Anschluß gefragt.
Ja, die Semantik, da hapert es manchmal!
(nicht nur bei mir)
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

power-dodge

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

Code: [Select]
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

ElEspanol

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

power-dodge

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:

Code: [Select]
    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:

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
  //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ß

Tommy56

Quote
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
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

power-dodge

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ß

power-dodge

Vielleicht verwechsle ich gerade float mit fade.

Tommy56

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
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

power-dodge

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ß

postmaster-ino

Hi

Das (fade) ist dann wiederum Dein Part.
Was hindert Dich daran, dem µC mehrere Werte zu übermitteln?
Zumindest, wenn ich Dich korrekt verstanden habe, ist Das 'Daten in den µC bekommen' nicht das Problem.
Dann sende :gewünschte Helligkeit, Zeit bis zum Erreichen dieses Wertes
Im µC schaust Du nach, welche Helligkeit gerade anliegt, welche Helligkeit gewünscht ist und wie lange Du zwischen den Einzelschritten warten musst.
Dann wartest Du diese Zeit ab, Ausgangs-Helligkeit++, Endwert erreicht? Nein -> Warten, Ja -> schlafen, bis neuer Befehl kommt.

Wenn Du Da noch irgendwelche Kurven (aka nichtlineares Empfinden) rein zaubern willst, wird's mit den Wartezeiten wohl etwas aufwändiger, wenn man sich aber bereits so tief mit der Materie auseinander gesetzt hat, sollte auch dieser Schritt schaffbar sein.

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

power-dodge

Danke für den Tipp,

hindert tut mich da nicht. Aber wie er merkt habe ich nicht so die Erfahrung.

Der Mega soll nen Slave sein, IP Syscom soll dann bei bestimmten Ereignissen,
zu einzelnen Pins die Helligkeitswerte senden.
Und ein paar Sensoren ständig auslesen, z.B. Pir´s.

So in etwa war meine Vorstellung...

Das Fade werde ich mir mal anschauen.

Gruß

power-dodge

Hallo,

leider bekomme ich es doch nicht hin.
Entweder blinkt die LED schnell (delay zeit)
oder eben wird ignoriert. 255 z.B wird sofort ausgeführt.

Würde mich über ein paar Tipps freuen.

Danke schon mal.

Gruß

Go Up