Forum: Mikrocontroller und Digitale Elektronik Ethernet Shield anstatt externer SD reader


von Wolfgang (Gast)


Lesenswert?

Hallo,
Ich bin gerade dabei Version 2 von dem hier 
(Beitrag "arduino display geht aus") zu bauen, Version eins 
geht schon ganz gut. Aber um es mit weniger externer Verkabelung zu 
machen wollte ich anstatt dem externen SD Karten Modul ein 
EthernetShield mit internem Modul verwenden.
Also dass der Pin10 vom LCD nicht angeschlossen sein darf hab ich schon 
gelernt. Dann kann ich mit dem SDCARDinfo Beispiel auch mit 
aufgestecktem LCD Display die SD Karte abfragen.
Aber ich komme nicht weiter mit dem ursprünglichen Code

Auch wenn ich CS in der SD KArten Initialisierung auf 4 lege (mit dem 
funktioniert es ja bei dem SDcard Beispiel) meldet mir das Programm auf 
dem Dispay immer noch SD Init Failure.

hier ist der originalcode: 
http://mrossphoto.com/DigitalLightWand/DLW_DUAL_LPD8806_LCD_SD_MRR_v1_1.ino

Das ganze müsste doch so zum verbiegen sein dass man das ethernetshield 
als "SD Kartenhalter" verwenden kann oder ?

Ich binnoch ziemlich neu in dem Arduino Zeugs... von daher falls die 
Lösung dem einen oder anderen doch so klar zu sein scheint... bitte ich 
um Nachsicht... Ich seh gerade den Wald vor lauter Bäumen nicht mehr


Gruß
Wolfgang

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wolfgang schrieb:
> Das ganze müsste doch so zum verbiegen sein dass man das ethernetshield
> als "SD Kartenhalter" verwenden kann oder ?

Hä? Ein Netzwerkinterface ist etwas grundlegend und komplett anderes als 
eine SD-Karte.

von Wolfgang (Gast)


Lesenswert?

Ok, hab mich vielleicht unglücklich ausgedrückt und ganz so fremd ist es 
mir nicht dass ich den Unterschied nicht kenne *g

Ich möchte anstatt der externen SD KArte, also dem kleinen Modul in das 
man die SD KArte stecken kann ein EthernetShiled verwenden, dieses 
Ethernetshield hat ja den MicroSD Slot mit an Board, d.h. ich habe es 
kompakter in Bezug auf Verkabelung.

von Marco H. (damarco)


Lesenswert?

Da du wenig über die Hardware schreibst kann man nur mutmaßen. Ich ahne 
aber folgendes.

Schon mal in den Schaltplan vom Ethernet Shield geschaut ?  Wenn es die 
Version 2 von Arduino ist dann fällt auf das der CS über einen Buffer 
läuft.

Das hat folgende Ursachen die im Card Detect der SD-Card zu suchen sind.

Es gibt mehre Möglichkeiten zu erkennen ob eine Karte im Slot steckt.

Mechanisch über einen Switch oder mit den CD/DAT3 Pin. Im SPI Mode ist 
dies auch der CS ! Intern ist dieser Pin mit einen Pullup verbunden. 
Steckt man eine Karte ein ist je nach Außenbeschaltung (Pullup/down) 0 
oder 1 am Port sichtbar.

Man hat einen Bufferdriver zwischen gebaut und damit verhindert das der 
Pin D4 mit Shield auch mit gesteckter und nicht initialisierter SD 
benutzbar bleibt.

Nun gibt es aber ein Problem ! Bei vielen SD-Libs schaut man beim 
Initialisieren nach dem Pegel des Ports. Der Pin wird als Input 
konfiguriert und dann die Karte initialisiert. Jetzt hängt aber der 
Buffer zwischen womit der Mechanismus so nicht mehr funktioniert.

Entweder der Code berücksichtigt diesen Umstand und löst dies anderes ob 
eine Karte gesteckt ist.

Die Ursache ist also das der Pin D4 eingelesen wird und 0 ist, die folge 
SPI etc. wird nicht initialisiert.


Das blöde am SPI Mode ist das dieser bei der Spannungsunterbrechung 
deaktiviert ist. Heißt zieht man die Karte muss sie wieder in den SPI 
Mode initialisiert werden. Man muss sich also was einfallen lassen z.Bsp 
bei jeden Schreiben etc prüfen ob die Karte noch da ist und ggf. dann 
neu initialisieren.

Mit gefixten CD funktioniert der Mechanismus über den CD nicht mehr der 
in vielen Libs implementiert ist.

Das wird aber so noch nicht funktionieren ;) Da du auch dafür sorgen 
musst das die SPI Funktionen den CS auf Pin D4 betätigen.

p.s lieber Mode leider bekommt man selbst mit richtig detaillierten 
Fragen manchmal Antworten die alles andere als Hilfreich sind. Die 
Diskussionskultur ist hier nicht sehr freundlich....

von Wolfgang (Gast)


Lesenswert?

Hallo Marco,

was für Angaben zur Hardware wären noch hilfreich das du  oder jemand 
mir auf die Sprünge helfen könnte?

Also das Displayshield ist so ein DFRobot Teil
Arduino ist ein  Mega 2560 clone aus dem fernen Osten
Das Shield ist so eins: http://www.ebay.de/itm/like/231761112806
Also nicht dieses, ichhabe es vor langer Zeit mal bestellt aber es 
schaut genauso aus.

Wie schon im Eingngspost geschrieben wenn ich alles zusammen gesteckt 
lasse und dann das Beispiel Cardinfo ausführe, funktioniert es und ich 
bekomme über den seriell Monitor angezeigt dass die Karte initialisiert 
wurde und auch deren Inhalt wird mir gezeigt.
 Benutze ich dagegen den originalcode, auch oben verlinkt, dann bekomme 
ich jetzt ganz kurz im Display angezeigt SD Init Done, sobald ich aber 
dann eine taste drücke kommt sofort SD INIT Failed und auch mit dem 
reset bekomme ich es nicht mehr hin dass die SD KArte anständig 
initialisiert wird. Power ON/OFF bringt mich wieder ganz kurz dazu dass 
es wohl mal kursfristig funktioniert.

von Wolfgang (Gast)


Lesenswert?

mal hochstupsen

keiner ne Idee ?

also Spannungsversorgung habe ich überprüft, die ist ausreichend

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
Noch kein Account? Hier anmelden.