Hallo zusammen, ich würde gerne 2 Shilds auf einem Arduino Uno R3 betrieben. Einmal das Ethernetshield DFRobot DFR0850 und dann das LCDShield DFRobot LCD12864. Laut den jeweiligen Beispielprogrammen werden folgende Pins genutzt: Ethernet shield attached to pins 10, 11, 12, 13 Display SPI Com: SCK = 13, MOSI = 11, CS = 10, CD = 9, RST = 8 Mir ist jetzt nicht ganz klar ob man überhaupt 2 Shields aufeinander stapeln kann, da ja zumindest 3 Anschlüsse (13, 11, 10) von beiden Shields verwendet werden? Könntet ihr mir da bitte weiterhelfen? Vielen Dank im Vorraus, Eric
Eric A. schrieb: > Mir ist jetzt nicht ganz klar ob man überhaupt 2 Shields aufeinander > stapeln kann, da ja zumindest 3 Anschlüsse (13, 11, 10) von beiden > Shields verwendet werden? Eigentlich ist das möglich, da SPI mehr als einen Slave am Bus unterstützt. 11, 12 und 13 (MOSI, MISO, SCLK) dürfen also doppelt verwendet werden. Nur jedes Shield bzw. jeder SPI-Slave braucht mindestens seinen eigenen CS-Anschluss (Chip Select), damit der Arduino wählen kann, mit welchem Slave er spricht. Da leider beide Shields D10 als Chip Select nutzen, ist ohne eine Modifikation der Hardware ein direkter paralleler Betrieb nicht möglich. Du müsstest bei einem der Shields die Leiterbahn zu D10 auftrennen und zu einem anderen, freien Pin verdrahten.
:
Bearbeitet durch User
Ethernet wird sinnvoller Weise Interrupts verwenden. Da das SPI nicht reentrant ist, braucht man also 2 SPI. Beim ATmega328 kann man die UART als 2. SPI-Master benutzen. Die ist dann auch einen Zacken schneller, da mit Sendepuffer. Oder einen ATmega328PB mit 2 SPI und 2 UARTS.
Da solltest Du selbst drauf kommen. Was ist CS? Kann das funktionieren bei 2 unterschiedlichen SPI Endpunkten?
Jens B. schrieb: > Was ist CS Kartoffelschip Selektor https://www.derwesten.de/panorama/vermischtes/mcdonalds-getraenke-becher-rfid-chips-verpackung-mehrweg-id300580098.html Da hättest Du von selbst drauf kommen können. ciao gustav
Die SD Fassung auf dem Ethernet Shield verwendet Pin 4 als /CS Es sind also min. 4 SPI Buspartner. 1 Master, 3 Slave.
:
Bearbeitet durch User
Eric A. schrieb: > Könntet ihr mir da bitte weiterhelfen? Also ein Shield könnte man sich evtl. sparen wenn man einen Aruino Uno mit integrierten Ethernet-Controller verwendet. Den hier: https://www.ebay.de/itm/186450148015 Hängt natürlich davon ab was damit gemacht werden soll. Wenn man sich von dem Zwang löst alles einfach aufeinander stecken zu müssen dann kann man den W5500 auch losgelöst mit der gleichen "Lib" betreiben: https://www.ebay.de/itm/334512372979
Wastl schrieb: > Also ein Shield könnte man sich evtl. sparen wenn man einen > Aruino Uno mit integrierten Ethernet-Controller verwendet. > > Den hier: > > https://www.ebay.de/itm/186450148015 Das Problem bleibt bestehen: D10 ist der Chip Select bei diesem Board.
Sebastian R. schrieb: > Das Problem bleibt bestehen: D10 ist der Chip Select bei diesem Board. Ja und? Das ist in 5min geändert!
Sebastian R. schrieb: > An der Stelle waren wir vor 13 Stunden schon. Ja was gibt es dann noch zu reden? Man kann die beiden "Shields" vermutlich parallel benutzen. Es bleib die Frage, ob die Software da mitmacht, wenn zwei Komponenten auf das SPI zugreifen wollen. Kann sein, muss nicht. Probieren geht über studieren.
Danke für die vielen Antworten. Ich werde mal schauen das ich den CS auf einen anderen freien Pin lege. ggf. könnte man ja zeitlich dafür Sorgen dass nicht gleichzeitig auf Ethernet und das Display zugegriffen wird. Vielleicht genügt da einfach ein Delay(1000) ;-) Ich werde berichten...
Eric A. schrieb: > Vielleicht genügt da einfach ein Delay(1000) ;-) Nö. Wenn das Ethernet SPI und Interrupts benutzt, muß man dafür sorgen, daß dieser Interrupt immer gesperrt ist bei allen anderen Zugriffen auf das selbe SPI.
Eric A. schrieb: > Hallo zusammen, > ich würde gerne 2 Shilds auf einem Arduino Uno R3 betrieben. > Einmal das Ethernetshield DFRobot DFR0850 und dann das LCDShield DFRobot > LCD12864. > > Laut den jeweiligen Beispielprogrammen werden folgende Pins genutzt: > > Ethernet shield attached to pins 10, 11, 12, 13 > Display SPI Com: SCK = 13, MOSI = 11, CS = 10, CD = 9, RST = 8 > > Mir ist jetzt nicht ganz klar ob man überhaupt 2 Shields aufeinander > stapeln kann, da ja zumindest 3 Anschlüsse (13, 11, 10) von beiden > Shields verwendet werden? > > Könntet ihr mir da bitte weiterhelfen? > > Vielen Dank im Vorraus, > Eric "Elektronik ist kein Lego" Schreib das jetzt 100 mal!
Cyblord -. schrieb: > > "Elektronik ist kein Lego" > > Schreib das jetzt 100 mal! Naja, wenn man bedenkt das die Arduino Plattform genau dafür gedacht war, einen einfachen Einstieg in das Thema Mikrocontroller/Programmierung zu ermöglichen... (Auszug aus dem Wiki-Artikel: "Die Entwicklungsumgebung basiert auf Processing und soll auch technisch weniger Versierten den Zugang zur Programmierung und zu Mikrocontrollern erleichtern") ist es doch schon "ärgerlich" das man nicht mehrere Shields (mit unterschiedlicher Funktionalität) vom gleichen Hersteller miteinander kombinieren kann ohne sie modifizieren zu müssen. Aber ja, "Selbst ist der Mann bzw. die Frau"...
Peter D. schrieb: > reentrant Ich lerne hier noch Sachen, auf meine alten Tage. Noch nie gehört. Musste ich erstmal nachlesen.
Eric A. schrieb: > Naja, wenn man bedenkt das die Arduino Plattform genau dafür gedacht > war Gedacht war. naja. Deshalb sollte man das Denken den Pferden überlassen (wegen der größeren Köpfe).
:
Bearbeitet durch User
Der W5500 hat zwar Puffer und Protokollschrunz schon intern. Trotzdem wäre es schön, wenn man alles per Interrupt im Hintergrund abhandeln könnte und nicht in der Mainloop pollen müßte. Daher sollte er getrennt auf ein 2. SPI geroutet werden können. Vorzugsweise auf eine UART mit Puffer, d.h. 16 Bit je Interrupt.
Frank O. schrieb: > Peter D. schrieb: >> reentrant Gabs früher schon: In simpelster Form: Monoflop SN74122 zum Bleistift. Bevor Aktion durch- und zu Ende geführt wurde, kann Vorgang erneut gestartet werden. ciao gustav
Peter D. schrieb: > wäre es schön, wenn man alles per Interrupt im Hintergrund abhandeln > könnte und nicht in der Mainloop pollen müßte. Das wäre nicht nur schön sondern das ist schön, und wie auf diversen Bildern unschwer zu erkennen ist gibt es am Anschlusstecker einen INT-Pin der genau für Interrupts vorgesehen ist.
Wastl schrieb: > wie > auf diversen Bildern unschwer zu erkennen ist gibt es am > Anschlusstecker einen INT-Pin der genau für Interrupts > vorgesehen ist. Nur ist das erst 1/4 der Miete. Wenn das selbe SPI auch von anderen Shields oder der SD-Karte benutzt wird, wird das schnell recht kompliziert. Man darf ja nicht nur den einzelnen Byte SPI-Zugriff atomar kapseln, sondern muß es für das komplette Paket von /CS=0 bis /CS=1 des jeweiligen Slaves. Und der Ethernet-Interrupt rechnet nicht damit, daß ihm jemand dazwischen grätscht. Er will was gutes tun und gibt die Rechenzeit bis zum nächsten SPI-Byte frei und schwupps ist das SPI vom Main geklaut. Er muß also in seinem Interrupt hocken bleiben und das SPI-Ready pollen.
Wastl schrieb: >> wäre es schön, wenn man alles per Interrupt im Hintergrund abhandeln >> könnte und nicht in der Mainloop pollen müßte. > > Das wäre nicht nur schön sondern das ist schön, und wie > auf diversen Bildern unschwer zu erkennen ist gibt es am > Anschlusstecker einen INT-Pin der genau für Interrupts > vorgesehen ist. Jain. Ich habe auch schon Software gesehen, die den Interrupt per Software abfragt.
Falk B. schrieb: > Jain. Ich habe auch schon Software gesehen, die den Interrupt per > Software abfragt. Das mag durchaus sein, bei der Arduino "Lib" sogar wahrscheinlich. Aber ich habe ja nur darauf hingewiesen dass schaltungstechnisch der Interrupt-Machanismus vorhanden ist und damit genutzt werden kann. Also: wer will, der kann, es gibt keine Ausrede ...
Peter D. schrieb: > Nur ist das erst 1/4 der Miete. Wenn das selbe SPI auch von anderen > Shields oder der SD-Karte benutzt wird, wird das schnell recht > kompliziert. > Man darf ja nicht nur den einzelnen Byte SPI-Zugriff atomar kapseln, > sondern muß es für das komplette Paket von /CS=0 bis /CS=1 des > jeweiligen Slaves. Anstatt ewig und drei Tage zu schwadronieren KÖNNTE man ja mal die Software anschauen, oder? Das ist das Board https://www.dfrobot.com/product-2370.html Das ist kompatibel mit dem Original Arduino-Shield https://docs.arduino.cc/hardware/ethernet-shield-rev2/ Dessen Software liegt hier https://github.com/arduino-libraries/Ethernet Und wenn man sich das alles anschaut, sieht man, daß dort KEINERLEI Interrupts benutzt werden! Alles läuft über die Standardmethoden der SPI-Klasse. Damit gibt es keine Probleme bei der parallelen Nutzung von Ethernet, SD-Karte und LCD! Schoking! Peter, du solltest im Bundestag arbeiten, dort suchen sie Leute wie dich, die viel über eingebildete Probleme reden und sich selten mit der Realität beschäftigen.
Falk B. schrieb: > Dessen Software liegt hier Ich bin kein Arduino Experte und weiß daher nicht, wo zu jedem Shield die dazu passende Lib steht. Ich weiß nichtmal, ob es zu jedem IC nur eine Shieldvariante gibt oder mehrere. Falk B. schrieb: > Peter, du solltest im Bundestag arbeiten, dort suchen sie Leute wie > dich, die viel über eingebildete Probleme reden Entschuldige bitte, daß ich Probleme so betrachte, wie ich sie lösen würde. Natürlich muß niemand Interrupts benutzen. Ich benutze sehr gerne Interrupts für Interfaces, dann können die im Hintergrund arbeiten, ohne die Mainloop lange blockieren zu müssen.
Hi >Ich benutze sehr gerne Interrupts für Interfaces, dann können die im >Hintergrund arbeiten, ohne die Ich benutze sehr gerne Interrupts für Interfaces, dann können die im Hintergrund arbeiten, ohne die Mainloop lange blockieren zu müssen. zu müssen. Und was machen die 'im Hintergrund' außer die Mainloop blockieren? MfG Spess
Spess53 .. schrieb: > Und was machen die 'im Hintergrund' außer die Mainloop blockieren? Guter Hinweis, ich meinte natürlich das Gegenteil. Der Interrupt kann Pakete schnellst möglichst absenden, bzw. verliert keine Daten (Überlauf). Nichts ist unangenehmer, als der Verlust der Synchronisation.
:
Bearbeitet durch User
Eric A. schrieb: > Vielleicht genügt da einfach ein Delay(1000) ;-) Grober Unfug. Zwei Geräte auf dem selben CE sind nicht zulässig, da gibt es nichts zu diskutieren. Cyblord -. schrieb: > "Elektronik ist kein Lego" > Schreib das jetzt 100 mal! https://www.ranzey.com/generators/bart/index.html Peter D. schrieb: > Wenn das Ethernet SPI und Interrupts benutzt, muß man dafür sorgen, daß > dieser Interrupt immer gesperrt ist bei allen anderen Zugriffen auf > das selbe SPI. Wenn man in Arduino die Interrupts sperrt, laufen diverse Dinge nicht mehr. Eric A. schrieb: > Naja, wenn man bedenkt das die Arduino Plattform genau dafür gedacht > war, einen einfachen Einstieg in das Thema > Mikrocontroller/Programmierung zu ermöglichen... .. ist die Umgebung trotzdem an elektrotechnische Grundlagen gebunden. Peter D. schrieb: > Der W5500 hat zwar Puffer und Protokollschrunz schon intern. IP wird mit dem bisschen Speicher des Nano eh spaßig werden. Es kommen noch weitere Dinge wie SD-Karte dazu, ich sehe schwarz. Falk B. schrieb: > Dessen Software liegt hier > https://github.com/arduino-libraries/Ethernet > Und wenn man sich das alles anschaut, sieht man, daß dort KEINERLEI > Interrupts benutzt werden! > > Peter, du solltest im Bundestag arbeiten, dort suchen sie Leute wie > dich, die viel über eingebildete Probleme reden und sich selten mit der > Realität beschäftigen. +1 ! Peter D. schrieb: > Ich bin kein Arduino Experte und weiß daher nicht, Dann unterlasse doch einfach Deine klugen 'Ratschläge'.
Manfred P. schrieb: > Dann unterlasse doch einfach Deine klugen 'Ratschläge'. Tut mir leid, ich wußte nicht, daß Libs unter Arduino als von Gott gegeben und unantastbar zu gelten haben. Ich habe jedenfalls keine Angst, Interrupts zu benutzen.
Peter D. schrieb: > als von Gott gegeben Nix Gott! An der Stelle. Auch du nicht. Natürlich darfst du beleidigt sein, dich fühlen, wenn deine Interrupt Nebelkerzen nicht ankommen. Peter D. schrieb: > Ich bin kein Arduino Experte und weiß daher nicht, wo zu jedem Shield > die dazu passende Lib steht. Ich weiß nichtmal, ob es zu jedem IC nur > eine Shieldvariante gibt oder mehrere. Hmmm... Etwas nicht zu wissen, ist nicht schlimm. Übrigens: Das könntest du ändern.
Peter D. schrieb: > Manfred P. schrieb: >> Dann unterlasse doch einfach Deine klugen 'Ratschläge'. > Tut mir leid, ich wußte nicht, ... Schön sinnentstellend gequotet. Manfred P. schrieb: > Peter D. schrieb: >> Ich bin kein Arduino Experte und weiß daher nicht, Kein Experte, weiß daher nicht - also nochmal: Dann unterlasse Deine klugen 'Ratschläge'.
Beitrag #7865057 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.