Hallo ich habe hier im Forum schon einen Thread gefunden zu diesem Thema, bin jedoch nicht ganz sicher, deshalb hier nochmals die Frage. ich möchte ein W5100-Ethernet-Modul zusammen mit einem SD-Card-Modul an meinem Mega 2560 verwenden Dabei benutzen ja beide Module den MISO und MOSI-Pin Ich habe mein W5100 Modul nach folgendem schem angeschlossen http://arduinoinfo.mywikis.net/wiki/Ethernet Miso = 50 Mosi = 51 Das SD-Card-Modul benutzt diese Pins auch Cann ich nun beide Modul daran anschliessen? wenn ja, muss ich dann bevor ich etwas auf die SD-Card schreibe oder von dort lese , die Ethernet-Card disablen ? Wie muss ich da vorgehen? Grüße Achim
Achim A. schrieb: > wenn ja, muss ich dann bevor ich etwas auf die SD-Card schreibe oder von > dort lese , die Ethernet-Card disablen ? Ja. Du kannst natürlich nicht der SD Karte per SPI Daten unterschieben, ohne Ethernet abzuschalten. Und umgekehrt. Achim A. schrieb: > Wie muss ich da vorgehen? Normalerweise haben SPI Peripheriebausteine einen /SS oder /CS Eingang, der sie aktiv schaltet. Jedes SPI Gerät wird nur angesprochen, wenn dieser Eingang aktiv ist (meistens mit logischem 0 Pegel). Das bedeutet, das du pro Chip einen Portpin des steuernden MC verbrätst zur Anwahl. Wenn deine Peripherie sowas nicht hat, wirst du per Multiplexer den SPI Bus auf die verschiedenen Chips leiten oder einen zweiten SPI Port benutzen müssen.
:
Bearbeitet durch User
Achim A. schrieb: > Kann ich nun beide Modul daran anschliessen? Wenn dein SD-karten Modul Tristate Treiber hat, dann geht das. Haben die meisten Billigteile leider nicht. Selbst wenn du alles mit 3,3V versorgst und die SD Karte direkt mit dem µC verbindest wird es nicht einfacher, da manche SD Karten sich leider nicht tot stellen (tristate) wenn ihre Chip-Select Leitung inaktiv ist. SD Karten kann man aber prima über separate I/O Pins per Bit-Banging (Soft-SPI) ansteuern.
Stefanus F. schrieb: > SD Karten kann man aber prima über separate I/O Pins per Bit-Banging > (Soft-SPI) ansteuern. Das klingt interessant wie geht das? gibt es dazu eine Anleitung?
Achim A. schrieb: > wie geht das? Bei dem Wissensstand würde ich eher vorschlagen die SD in den normalen SPI-Bus zu nehmen und das Vcc der Karte als /CS zu verwenden, oder? Ich halte es für sinnvoller erst einmal ein SPI Bus zu verstehen... VG Jörg
Achim A. schrieb: > ich möchte ein W5100-Ethernet-Modul zusammen mit einem SD-Card-Modul an > meinem Mega 2560 verwenden > Dabei benutzen ja beide Module den MISO und MOSI-Pin Das ist der Sinn der Sache, nennt sich SPI-Bus. > Cann ich nun beide Modul daran anschliessen? Ja. > wenn ja, muss ich dann bevor ich etwas auf die SD-Card schreibe oder von > dort lese , die Ethernet-Card disablen ? Nein! Aber jedes Modul, SD-Karte und Ethernet, brauchen einzelne Chip Select Leitungen. Damit wird festgelegt, mit welchem Modul dein Prozessor gerade kommuniziert. Wenn du auf die SD-Karte zugreifst, muss man das Ethernet natürlich NICHT abschalten, denn um diese Kommunikation zum Ethernet kümmert sich der entsprechende IC auf dem Modul schon. Und man muss auch auch kein Bit-Banging machen. Bit Banging ist das Nachbilden einer Schnittstelle in Software. Sprich, der Datenstrom wird durch Bitwackeln an IOs durch die CPU nachgebildet. Hat zwar den Vorteil, auf praktische jedem Pin des Mikrocontrollers machbar zu sein, ist aber meist langsamer und lastet die CPU zu 100% aus. Das brauchst du hier aber nicht.
Jörg B. schrieb: > Bei dem Wissensstand würde ich eher vorschlagen die SD in den normalen > SPI-Bus zu nehmen und das Vcc der Karte als /CS zu verwenden, oder? Ich > halte es für sinnvoller erst einmal ein SPI Bus zu verstehen... ok. gibt es eine andere Art daten zwischen zu speichern damit beim Absturz/Stromausfall der Arduino weiß wie der letzte Stand war? Situation: Das Ethernet-Modul verwendde ich damit ich später via MSQL-Connector die Daten in eine DB schreiben kann ich habe hier versch. Taster die Lichter schalten. Die Werte was nun an oder aus ist, schreibe ich in ein Array. je nachdem welche Kombination eingeschaltet wurde arbeitet der Arduino bestimmte Programmteile ab. Falls nun der Strom ausfällt weiß er ja nicht wie der letzte Stand war. Grund: Die DB läuft noch nicht. wird erst später realisiert Kann ich nun die Daten (sind ja nicht viele) irgendwo zwischenspeichern? damit beim erneuten Hochfahren des arduinos dieser die letzten daten wieder hat? z.B. EEprom
https://youtu.be/OV9hl6btkVU alles klar separate SS Leitungen.... beim klassischen Arduino pin 4 und 10
Falk B. schrieb: > Wenn du auf die SD-Karte zugreifst, muss > man das Ethernet natürlich NICHT abschalten, denn um diese Kommunikation > zum Ethernet kümmert sich der entsprechende IC auf dem Modul schon. Ok, hier klingt es wieder einfacher für mich dies zu realisieren kann ich nun das SD-Card-Modul am gleichen MISO/MOSI Pin hängen und ganz normal meine Daten dort auslagern. Das passiert auch nicht ständig sondern nur falls sich an meiner LED-Schaltung was ändert... Gelesen wird nur einmal , beim Hochfahren. So hätte der arduino stets die letzte Einstellung welche LED's zuletzt aktiv waren
Achim A. schrieb: > gibt es dazu (Soft-SPI) eine Anleitung? Die AVR FAT32 Library ist dafür bereits vorbereitet, dort ist es lediglich ein Konfigurationsparameter. https://www.mikrocontroller.net/articles/AVR_FAT32
Achim A. schrieb: > Jörg B. schrieb: >> Bei dem Wissensstand würde ich eher vorschlagen die SD in den normalen >> SPI-Bus zu nehmen und das Vcc der Karte als /CS zu verwenden, oder? Ich >> halte es für sinnvoller erst einmal ein SPI Bus zu verstehen... > > ok. > gibt es eine andere Art daten zwischen zu speichern damit beim > Absturz/Stromausfall der Arduino weiß wie der letzte Stand war? Warum das? Das ist doch ein total anderes Thema? > Kann ich nun die Daten (sind ja nicht viele) Wieviele? Siehe Netiquette. > irgendwo zwischenspeichern? > damit beim erneuten Hochfahren des arduinos dieser die letzten daten > wieder hat? > z.B. EEprom Genau. Da braucht man keine SD-Karte mit GB.
imkeller schrieb: > separate SS Leitungen.... > beim klassischen Arduino pin 4 und 10 PIN 10 wird aktuell vom SS des Ethernet-Moduls verwendet, kann hier nun Das SD-Card-Modul (SS) an PIN 4 hängen?
Achim A. schrieb: > gibt es eine andere Art daten zwischen zu speichern damit beim > Absturz/Stromausfall der Arduino weiß wie der letzte Stand war? > z.B. EEprom Sicher, dazu ist das EEProm da. Bei Stromausfall kannst dort schnell ein paar Bytes abspeichern, bevor der Strom, ganz weg ist. Bedenke aber, dass das EEprom verschleißt - nicht dass die Software bei defekten Daten ausrastet. > kann ich nun das SD-Card-Modul am gleichen MISO/MOSI Pin hängen Welches Modul denn? Wir sind keine Hellseher! Hast du geprüft, ob es Tristate fähige Schnittstellentreiber enthält?
Achim A. schrieb: > PIN 10 wird aktuell vom SS des Ethernet-Moduls verwendet, kann hier nun > Das SD-Card-Modul (SS) an PIN 4 hängen? Bitte sei so gut und lese Dich erst einmal inden SPI-Bus ein. Wikipedia erklärt das imho gut. Dann wirsr Du vermutlich Dir die Frage selberbeantworten können. VG Jörg
Stefanus F. schrieb: > Sicher, dazu ist das EEProm da. Bei Stromausfall kannst dort schnell ein > paar Bytes abspeichern, bevor der Strom, ganz weg ist. Helft mir mal bitte: Haben die AVRs nicht so ein Fusselbit budown, o.ä. und ist der nicht mit einem Interrupt verbunden? Ich mag mich täuschen... VG Jörg
Falk B. schrieb: > Wieviele? Siehe Netiquette. Es geht um folgende Daten die zwingend zwischengespeichert werden müssen - Laufzeit in Minuten seit dem Start (ich mache das über eine Timer-Funktion - Die daten eines mehrdimensionalen arrays[7][4] (hier stehen die zahlen welche LED's an/aus geschaltet wurden Die Startzeit habe ich im Programm selbst hinterlegt, die aktuelle Uhrzeit bekommt der Arduino über eine Abfrage eines RTC-Moduls Dieses RTC-Modul soll aber nur einmal beim Einschalten des Arduinos abgefragt werden. Grund: Wenn der Arduino mir das RTC-Modul zu oft abfrägt dann reagiert er mir auf Tastendruck nicht mehr korrekt. Deswegen frage ich nur einmal ab und zähle dann die Minuten wie lange der Arduino seit dem letzten Start läuft und was während dieser zeit zuletzt geschaltet wurde.
Stefanus F. schrieb: > Welches Modul denn? Wir sind keine Hellseher! > Hast du geprüft, ob es Tristate fähige Schnittstellentreiber enthält? Ich habe leider nur ein billiges China-SD-Card-Modul https://de.aliexpress.com/item/Free-Shipping-Smart-Electronics-Reading-and-Writing-Module-SD-Card-Module-Slot-Socket-Reader-ARM-MCU/32523666863.html?spm=a2g0s.9042311.0.0.27424c4d6jEf8D
Jörg B. schrieb: > Haben die AVRs nicht so ein Fusselbit budown, o.ä. und ist der nicht mit > einem Interrupt verbunden? Ich mag mich täuschen... Ja schon, aber wenn der Brown-Out Detektor anspricht ist es schon zu spät. Den Stromausfall muss man früher erkennen, um noch ein paar ms zeit für das Schreiben ins EEprom zu haben. Bei einem Klassischen Trafo-Netzteil würde ich die Wechselspannung des Trafos VOR dem Gleichrichter abgreifen und prüfen. Der dicke Elko VOR dem Spannungsregler gibt mir genug Zeit, ncoh schnell etwas abzuspeichern.
Achim A. schrieb: > Falk B. schrieb: >> Wieviele? Siehe Netiquette. > > Es geht um folgende Daten die zwingend zwischengespeichert werden müssen > > - Laufzeit in Minuten seit dem Start (ich mache das über eine > Timer-Funktion > > - Die daten eines mehrdimensionalen arrays[7][4] (hier stehen die zahlen > welche LED's an/aus geschaltet wurden Also nicht viel, dafür reicht das EEPROM. https://www.mikrocontroller.net/articles/Speicher#EEPROM-Schreibzugriffe_minimieren > abgefragt werden. Grund: Wenn der Arduino mir das RTC-Modul zu oft > abfrägt dann reagiert er mir auf Tastendruck nicht mehr korrekt. Dann ist dein Programm falsch strukturiert. Aber im Normalfall reicht es ja, wenn man die RTC in eher großen Abständen (Minuten bis Stunden) abfragt, zwischendrin läuft der Timer in der CPU und der ist dank Quarztakt meist genau genug.
Achim A. schrieb: > Ich habe leider nur ein billiges China-SD-Card-Modul > https://de.aliexpress.com/item/Free-Shipping-Smart-Electronics-Reading-and-Writing-Module-SD-Card-Module-Slot-Socket-Reader-ARM-MCU/32523666863.html?spm=a2g0s.9042311.0.0.27424c4d6jEf8D Das Ding ist der letzte Dreck! Es hat keine gescheiten Pegelwandler. Tu dir selber einen Gefallen und kauf dir was Solides. Für deine Anwendung hier brauchst du es sowieso nicht.
Achim A. schrieb: > - Die daten eines mehrdimensionalen arrays[7][4] (hier stehen die zahlen > welche LED's an/aus geschaltet wurden Also reden wir hier von vier bytes, denn ich würde das ganze in einen uint_32 packen und dann mit einer Bitmaske arbeiten. Dafür kannst du gut ein Flash nehmen, welches Du abwechselnd an verscheidene Speicherstellen beschreibst. Dann schreibe doch bei jedem Tastedruch (Eingabe) das Bitmuster ins Flash... VG Jörg
Falk B. schrieb: > Tu dir selber einen Gefallen und kauf dir was Solides Guter Hinweis, nur an was erkenne ich das es solide aufgebaut ist hast du eine Empfehlung für ein qualitativ gutes SD-Card-Modul?
Falk B. schrieb: > Tu dir selber einen Gefallen und kauf dir was Solides Guter Hinweis, nur an was erkenne ich das es solide aufgebaut ist hast du eine Empfehlung ?
Achim A. schrieb: > Falk B. schrieb: >> Tu dir selber einen Gefallen und kauf dir was Solides > > Guter Hinweis, nur an was erkenne ich das es solide aufgebaut ist > hast du eine Empfehlung für ein qualitativ gutes SD-Card-Modul? Daß es ECHTE Pegelwandler und einen Tristate-Treiber für MISO hat. Und natürlich einen echten Spannungsregler für die 3,3V der SD-Karte. Die Billigversionen ohne Pegelwandler sind bestenfalls für 3,3V IO gut, dann braucht man aber auch keine Längswiderstände.
Falk B. schrieb: > Die Billigversionen ohne Pegelwandler sind bestenfalls für 3,3V IO gut, > dann braucht man aber auch keine Längswiderstände. Du weisst doch selbst bestimmt auch das dies fast nirgends steht. die meisten Module die ich hier in D bekomme sind eh China-impotrte Hast du nicht einen Link für mich wenn du schon weisst welche Module hier qualitativ gut sind und nicht damit würdest du mir helfen... Danke!
Falk B. schrieb: > Die Billigversionen ohne Pegelwandler sind bestenfalls für 3,3V IO gut, > dann braucht man aber auch keine Längswiderstände. wie soll ich das nun verstehen? ich habe in keiner Zeichnung im Netz gesehen das hier jemand irgendwelche Widerstände noch dazu bauen musste sorry, aber da ich mich mit Elektronik nicht gut auskenne baue ich einfach die Module nach bekannten schaltplänen im Netz ein, schreibe meine Code dazu und es passte bis hier hin meist ganz gut... ich wäre hier aber sehr dankbar wenn man einfach eine Link posten würde und gut ist es... oder man sagt mir das mein vorhandenes Modul zwar funktioniert ich aber hier oder dort noch einen widerstand einlöten muss... das ginge auch
Achim A. schrieb: > Falk B. schrieb: >> Die Billigversionen ohne Pegelwandler sind bestenfalls für 3,3V IO gut, >> dann braucht man aber auch keine Längswiderstände. > > Du weisst doch selbst bestimmt auch das dies fast nirgends steht. > die meisten Module die ich hier in D bekomme sind eh China-impotrte Stimmt, aber das ist ein anderes Problem ;-) > Hast du nicht einen Link für mich wenn du schon weisst welche Module > hier qualitativ gut sind und nicht > damit würdest du mir helfen... Danke! Ich hab mal vor Urzeiten den TFT/SD-Card Shield vom Arduino gekauft, den gibt es aber nicht mehr. Der war OK, wenn gleich es auch da Verbesserungspotential gab. Was aktuell gut ist, weiß ich nicht, da muß ich auch erst suchen und prüfen. Vielleicht was von Adafruit? Dort sind gute Bilder und bisweilen sogar Schaltpläne dabei.
Achim A. schrieb: > Falk B. schrieb: >> Die Billigversionen ohne Pegelwandler sind bestenfalls für 3,3V IO gut, >> dann braucht man aber auch keine Längswiderstände. > > wie soll ich das nun verstehen? > ich habe in keiner Zeichnung im Netz gesehen das hier jemand > irgendwelche Widerstände noch dazu bauen musste Ja eben. Wenn man einen Mikrocontroller mit 3,3V IOs hat, kann man die SD-Karte direkt anschließen. D.h. wenn man deinen Billigadapter nutzt, kann man dort die Widerstände durch 0 Ohm ersetzen und gut.
Falk B. schrieb: > D.h. wenn man deinen Billigadapter nutzt, > kann man dort die Widerstände durch 0 Ohm ersetzen sorry das ich hier so darauf rumreite aber was meinst du mit " dort" wo soll ich welchen widerstand ersetzen bzw. auslöten 0 Ohm = kein widerstand oder?
Achim A. schrieb: > ich habe in keiner Zeichnung im Netz gesehen das hier jemand > irgendwelche Widerstände noch dazu bauen musste Eben, deswegen sind sie auf dem Modul, dass du dir gekauft hast auch fehl am Platz. Wenn auf dem Modul ein Mikrochip mit ca 16 Pins drauf ist, könnte das ein gutes sein. Dann schaust du noch im Datenblatt dieses Mikrochips nach, ob er Tristate Ausgänge hat, denn das brauchst du.
Dieses hier hat z.B. einen 74HC4050 als Pegelwandler drauf, aber der kann kein Tristate: https://www.amazon.de/Dolity-SD-Karte-Kartenadapter-Kartenleser-Arduino-Schwarz/dp/B0791CJYCV/ref=sr_1_4 Also nicht geeignet. Dieses hat den 74LVC125 als Pegelwandler drauf, der hat Tristate Ausgänge. https://www.amazon.de/Adapter-Speicherkarte-Storage-Schnittstelle-Arduino/dp/B07D3QZM25/ref=sr_1_14 Der könnte gehen. Ich würde aber gerne den Schaltplan davon sehen, bevor ich ihn empfehle.
Achim A. schrieb: > sorry das ich hier so darauf rumreite > > aber was meinst du mit " dort" wo soll ich welchen widerstand ersetzen > bzw. auslöten Das kann man erst dann genau sagen, wenn man das Ding in der Hand hat und ggf. auch mal durchgepiepst hat und weiß, was die Widerstände wirklich machen. Das ist natürlich was für Leute mit ausreichend wissen und nix für Leute wie dich. > 0 Ohm = kein widerstand oder? Oder. 0 Ohm = Kurzschluß.
Stefanus F. schrieb: > Dieses hat den 74LVC125 als Pegelwandler drauf, der hat Tristate > Ausgänge. Tja, aber LVC ist NICHT als Pegelwandler von 3,3 auf 5V tauglich, denn der hat eine Schaltschwelle von VCC/2, sprich 2,5V, ein HIGH ist offiziell aber erst ab ca. 0,7*VCC=3,5V gültig. Wenn schon, dann HCT, AHCT etc., siehe Pegelwandler.
Stefanus F. schrieb: > Dieses hat den 74LVC125 als Pegelwandler drauf, der hat Tristate > Ausgänge. > https://www.amazon.de/Adapter-Speicherkarte-Storage-Schnittstelle-Arduino/dp/B07D3QZM25/ref=sr_1_14 > Der könnte gehen. Ich würde aber gerne den Schaltplan davon sehen, > bevor ich ihn empfehle. Bei diesen ist (meist/immer) ein kleiner Umbau fällig, damit sie mit weiteren Slaves an einem Bus funktionieren. Leider ist einer der Enable Eingänge des 74X125 fest auf GND gelegt. Damit bleibt MISO ein Ausgang Ablöten und mit /CS verbinden.
Falk B. schrieb: >> Cann ich nun beide Modul daran anschliessen? > > Ja. Oben hast Du geschrieben das ich nun ein SD-card-modul mit ankoppeln kann zumindest wenn ich es richtig verstanden habe. kann ich es nun mit meinem SD-Card-Modul so machen oder brauche ich zwingend ein SD-Card-Modul mit Pegelwandler und Tristate? So ein SD-Card-Modul zu bekommen scheint ja fast unmöglich zu sein wenn ich das erstmal durchtesten müsste was ich nicht kann Wenn ich schon so ein Modul hier habe würde ich es natürlich auch gerne nutzen... schade wenn ich es in die Tonne werfen müsste
Achim A. schrieb: > brauche ich > zwingend ein SD-Card-Modul mit Pegelwandler und Tristate? Das brauchst du. > So ein SD-Card-Modul zu bekommen scheint ja fast unmöglich zu sein Da siehst du den Nachteil fertiger Module aus der Arduino Welt. Sobald du etwas anders machen willst, als vorgesehen, wird es kompliziert. Dazu kommt, dass die Hersteller der Module selten darauf achten, ob sie mit anderen Modulen zusammen kombinierbar sind. Das Modul das du hast ist auf jeden Fall mangels Treiber und wegen der Serien-Widerstände eine ganz schlechte Wahl. Fehlschläge sind damit quasi schon vorprogrammiert. Am besten ist es immer noch, den Mikrocontroller mit 3,3V zu betreiben und die SD Karte direkt an seine I/O Pins anzuschliessen. Dabei kann man nichts falsch machen und es funktioniert sicher. Die Schaltung aus dem Anhang funktioniert einwandfrei. Sie wird in der KFZ Industrie eingesetzt, soweit ich mich an die Erzählung seines Entwicklers erinnern kann.
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.