Guten Abend, Nachdem nun meine SD Karte ohne Probleme läuft mit der FatFs Library. Wollte ich es nun nach vielen ausprobieren der ganzen Befehle die, die Library mit sich bringt, in mein eigentlich's Projekt einbinden. Mein Projekt ist eine Art Home Server. Mit dem kann man Daten über Temperatur, Licht etc.. ablesen. Da ich die ganzen Daten nicht auf einem EEPROM(externes 2Kbits, i2c) speichern wollte. Wollte ich auf die SD Karte zurückgreifen und dann es auch möglich machen diese am PC auszulesen. Jedoch scheint sich die SD Karte nicht mit dem ENC28J60 zu vertragen. Denn ich wenn ich alles angeschlossen habe(external i2c eeprom, 2x ds18b20, lux sensoren, tft display) und dann meine 2GB SD Karte lesen will. Geht das er zeigt mir ohne Probleme denn freien Speicher auf der Karte an. Stecke ich nun denn ENC28J60 hinzu. Dann sagt er immer das der Freie Speicher 0 MB beträgt. Sowie alles andere auch fehl schlägt. Wenn ich ihn wieder wegnehme(Also abklemme, SPI Verbindung), dann geht wieder alles ohne Probleme. Es reicht übrigens auch schon nur das Abklemmen der MISO Leitung, dann funktioniert die SD Karte auch. Es werden bei mir als erstes alle I/O gesetzt(Input, Output), dann die SPI Verbindung hergestellt, dann TFT, SD und ENC CS Leitung auf HIGH gesetzt. Dann wird das TFT Display initialisiert und der Start Bildschirm erscheint, dann kommt die SD Karte und danach der ENC. Auch wenn der ENC nicht initialisiert ist funktioniert die SD Karte nicht(wenn ENC angeklemmt). Jeder Abschnitt hat seine eigene Spannung Versorgung also der ENC28J60 bekommt 5V vom LM7805, der ATMega644, ds18b20, eeprom bekommen von einen anderen 5V Regler Spannung, und das TFT mit SD Karte bekommt auch von sein eigenen 5V Regler die Spannung. Es sind nur die GND's verbunden. Woran könnt das liegen? Hardware oder doch ehr Software Problem? Lg Jan.
Jan H. schrieb: > Es werden bei mir als erstes alle I/O gesetzt(Input, Output), dann die > SPI Verbindung hergestellt, dann TFT, SD und ENC CS Leitung auf HIGH > gesetzt. Heißt das, dass du MISO von SD und ENC am selben MISO deines Servers angeschlossen hast und beide CS Leitungen gleichzeitig aktivierst? Zeige mal einen Schaltplan
Jan H. schrieb: > Bildschirm erscheint, dann kommt die SD Karte und danach der ENC. Auch > wenn der ENC nicht initialisiert ist funktioniert die SD Karte > nicht(wenn ENC angeklemmt). Failsafe pullups an MISO/MOSI ? SPI Mode stimmt bei allen ? Versuche mal ENC zuerst zu initialisieren.
:
Bearbeitet durch User
Marc V. schrieb: > Failsafe pullups an MISO/MOSI ? Ein 10K(3V3) Pullup Widerstand an MISO ist der SD Karte dran. Jedoch ist ein 10K Pullup Widerstand(5V) am ENC28J60. Kann das was mit denn Spannung unterschieden zutun haben. Denn die ENC ist ja 5V Tolerant(ENC28j60 spi anschlüsse) SD Karte jedoch nicht
Jan H. schrieb: > Kann das was mit denn Spannung unterschieden zutun haben. Denn die ENC > ist ja 5V Tolerant(ENC28j60 spi anschlüsse) SD Karte jedoch nicht Ja. MISO hat üblicherweise keinen Pegelwandler für die SD Karte, wird aber vom ENC auf 5V hochgezogen. Damit verbrätst Du die Karte, denn die vertragt nur maximal 3V6 auf dieser Leitung. Zurück zum Zeichenbrett für neuen Schaltplan...
Jim M. schrieb: > Ja. MISO hat üblicherweise keinen Pegelwandler für die SD Karte, wird > aber vom ENC auf 5V hochgezogen. Damit verbrätst Du die Karte, denn die > vertragt nur maximal 3V6 auf dieser Leitung. Nein. Daran liegt es nicht. Der ENC bekommt nur 3V3 Versorgungsspannung kann also auch nur 3V3 auf der MISO Leitung ausgeben. Das stimmt auch jedoch steht die Leitung dauerhaft unter "Strom" damit meine ich das dauerhaft Signale da durchgesendet werden. So konnte man das auf dem Oszi sehen. Es gehen auch Signale durch wenn der Chip gar nicht angesprochen wird. lg jan.
Jan H. schrieb: > Nein. Daran liegt es nicht. Der ENC bekommt nur 3V3 Versorgungsspannung Marc V. schrieb: > Versuche mal ENC zuerst zu initialisieren.
Marc V. schrieb: > Versuche mal ENC zuerst zu initialisieren. Dann wäre die SD Karte aber im SD Modus, und würde die Bussignale ebenfalls versuchen zu interpretieren. Das knallt also auch. Die SD Karte muss zuerst in den SPI Mode geschickt werden, erst dann ist CS wirksam - Dummy Clocks beim Deselect beachten!
Jim M. schrieb: > Dann wäre die SD Karte aber im SD Modus, und würde die Bussignale > ebenfalls versuchen zu interpretieren. Das knallt also auch. Nein. SD wird sowieso mit CS = Deselect und Dummy clocks initialisiert. Das passt schon.
Welcher Prozessor? avrs haben usart-spi. Damit kannst du eine separate Schnittstelle schaffen.
Marc V. schrieb: > Jim M. schrieb: >> Dann wäre die SD Karte aber im SD Modus, und würde die Bussignale >> ebenfalls versuchen zu interpretieren. Das knallt also auch. > > Nein. > SD wird sowieso mit CS = Deselect und Dummy clocks initialisiert. > Das passt schon. Nur zur Klarstellung: Das is solange SD Mode, bis das Kommando CMD0 mit CS=Low durch ist und die Karte korrekt antwortet. Erst ab dann kann man die Karte mit CS=High deselektieren.
Jim M. schrieb: > Nur zur Klarstellung: Das is solange SD Mode, bis das Kommando CMD0 mit > CS=Low durch ist und die Karte korrekt antwortet. Erst ab dann kann man > die Karte mit CS=High deselektieren. Nein. Karte braucht erst mal etwa 80 Clocks (minimum) mit CS=High. Das macht man deswegen weil die Karte sich vielleicht noch in einem undefiniertem Zustand befindet (voriges Befehl war falsch / irgendein Fehler aufgetreten / Powerup nicht richtig etc.) Erst nach diesen 80 Clocks setzt man CS auf Low und sendet CMD0. P.S. Allerdings bin ich mir nicht sicher, ob während dieser Zeit MISO tatsächlich freigegeben wird oder auf LOW gezogen wird - insofern könntest du Recht haben...
:
Bearbeitet durch User
Jan Hampel schrieb: >Jedoch ist ein 10K Pullup Widerstand(5V) am ENC28J60. >Der ENC bekommt nur 3V3 Versorgungsspannung kann also auch nur 3V3 auf >der MISO Leitung ausgeben. AHA !
Hallo Leute, Sorry für denn späten Beitrag, hatte ein paar Problem mit mein Internet. Marc V. schrieb: >> Versuche mal ENC zuerst zu initialisieren. Nein das Funktion leider nicht. Wenn ich denn ENC als erstes initialisiere, und dann die SD Karte lesen will in meinen Fall denn freien Speicher kommt immer der Error Code 13 zurück(Kein Dateisystem gefunden). Entferne ich denn ENC von der Hardware sagt der ja nach SD Karte 975 MB Freier Speicher oder 7574 MB Freien Speicher. Jan H. schrieb: > MISO Leitung ausgeben. Das stimmt auch > jedoch steht die Leitung dauerhaft unter "Strom" Das sind meine Websites Requests die ich mit denn ENC in der while Schleife ausführe. Diese werden jedoch gar nicht aufgerufen solange er noch im Init Teil ist. lg Jan.
Jan H. schrieb: > Marc V. schrieb: >>> Versuche mal ENC zuerst zu initialisieren. > > Nein das Funktion leider nicht. Wenn ich denn ENC als erstes > initialisiere, und dann die SD Karte lesen will in meinen Fall denn > freien Speicher kommt immer der Error Code 13 zurück(Kein Dateisystem > gefunden). > > Entferne ich denn ENC von der Hardware sagt der ja nach SD Karte 975 MB > Freier Speicher oder 7574 MB Freien Speicher. Dann stimmt irgendetwas nicht mit CS bei ENC. Höchstwahrscheinlich wird der ENC nicht deselektiert und blockiert die MISO Leitung.
Marc V. schrieb: > Höchstwahrscheinlich wird der ENC nicht deselektiert und blockiert > die MISO Leitung. Hallo, Okay, die Library und der Schaltplan für denn ENC28J60 habe ich von Tuxgraphics: Hier mal das Schaltbild: http://tuxgraphics.org/common/src2/article06061/eth-remote-device.pdf Ich habe nur clkout, WOL und Int nicht angeschlossen. Was macht der 220 Ohm Widerstand in der MISO Leitung muss der dahin? Denn habe ich nämlich nicht an der MISO Leitung. //EDIT: Was man gut auch am Display sehen kann ist das die SPI Geschwindigkeit auf F_CPU / 64 gesetzt wird. Aber nicht zurück auf F_CPU / 2. lg jan.
:
Bearbeitet durch User
Jan H. schrieb: > Was macht der 220 Ohm Widerstand in der MISO Leitung muss der dahin? > Denn habe ich nämlich nicht an der MISO Leitung. Ermöglicht, dass MEGA über ISP programmiert wird. Ohne Widerstand würde wahrscheinlich dasselbe passieren was dir jetzt auch passiert...
Jan H. schrieb: > TFT mit SD Karte Welches genau und wie sieht der Schaltplan dazu aus? Wäre jetzt nicht das erste Mal, dass die Chinesen da Schrott abliefern und einen Pegel-Wandler schnitzen der nur ein Gerät am SPI zulässt...
Rudolph R. schrieb: > Jan H. schrieb: >> TFT mit SD Karte > > Welches genau und wie sieht der Schaltplan dazu aus? > Wäre jetzt nicht das erste Mal, dass die Chinesen da Schrott abliefern > und einen Pegel-Wandler schnitzen der nur ein Gerät am SPI zulässt... Nenne ein paar Beispiele, um deine Behauptung zu untermauern?
Rudolph R. schrieb: > Welches genau und wie sieht der Schaltplan dazu aus? > Wäre jetzt nicht das erste Mal, dass die Chinesen da Schrott abliefern > und einen Pegel-Wandler schnitzen der nur ein Gerät am SPI zulässt... Das ist ein QVGA 2.2 TFT SPI 240x320 Display. Die Pegelwandler für 3,3 Volt habe ich selber gebaut. Die SD Karte funktioniert ja auch mit dem TFT Display zusammen. Nur wenn der ENC28J60 noch bei ist geht die SD karte nicht. Der ENC lässt sich ohne Probleme ansprechen reagiert auch auf pings. Und das TFT Display was als Benutzeroberfläche dient, funktioniert auch nur die Initzalisierung der SD Karte schlägt immer fehl. lg jan.
Jason schrieb: > Nenne ein paar Beispiele, um deine Behauptung zu untermauern? Nein, keinen Bock drauf das zu suchen. Vor ein paar Monaten war hier jemand der ein Problem mit einem bei EBay gekauften SD-Modul hatte bei dem wie sich herausstellte die Chinesen MISO nicht in Abhängigkeit von CS auf Tristate geschaltet haben. Jan H. schrieb: > Das ist ein QVGA 2.2 TFT SPI 240x320 Display. Die Pegelwandler für 3,3 > Volt habe ich selber gebaut. > > Die SD Karte funktioniert ja auch mit dem TFT Display zusammen. Okay, dass das TFT auch am SPI hängt habe ich überlesen. Geht der MISO auf der Controller-Seite denn in Abhängigkeit der beiden CS in Tristate? Ist ja zu vermuten wenn TFT und ENC laufen. Ein Schaltplan würde übrigens ungemein helfen das stochern im Nebel einzudämmen. Kann ja auf den SPI beschränkt sein, der Ausschnitte sollte dann aber vollständig und korrekt sein.
Rudolph R. schrieb: > Jason schrieb: >> Nenne ein paar Beispiele, um deine Behauptung zu untermauern? > > Nein, keinen Bock drauf das zu suchen. Hättest du nicht zu schreiben brauchen. Mit ging es nur darum, einen Sprüchemacher zu entlarven.
Rudolph R. schrieb: > Ein Schaltplan würde übrigens ungemein helfen das stochern im Nebel > einzudämmen. Klar sorry, ich habe mich mal hingesetzt und ein Schaltplan dafür entworfen Für meine RJ45 Buchse(MagJack) konnte ich keine passende Library finden. Habe dann einfach Magjack+/- ctr dran geschrieben lg Jan.
:
Bearbeitet durch User
Jason schrieb: >>> Nenne ein paar Beispiele, um deine Behauptung zu untermauern? >> >> Nein, keinen Bock drauf das zu suchen. > > Hättest du nicht zu schreiben brauchen. Mit ging es nur darum, einen > Sprüchemacher zu entlarven. Gähn. Hier, das erste Modul das ich auf EBay finden konnte wo der Schaltplan dabei war: http://www.ebay.de/itm/3pc-Micro-SD-TF-Memory-Modul-Karte-slot-Kartenadapter-cardreader-Arduino-TE417-/311575381934?hash=item488b5707ae:g:Qa4AAOSwnFZXVZzO Viel Spass damit am SPI mit dem fest auf GND verdrahtetem OE für MISO.
R17 und R18 sind auf der falschen Seite von den 4050 angeschlossen. Am Ausgang bewirken die gar nichts. Die müssen an den Eingang.
holger schrieb: > R17 und R18 sind auf der falschen Seite von den 4050 > angeschlossen. Am Ausgang bewirken die gar nichts. > Die müssen an den Eingang. Hi holger. Danke wusste ich nicht. Die Widerstände kommen dann auf 5V?
@Jan Hampel (jan_h865) >Klar sorry, ich habe mich mal hingesetzt und ein Schaltplan dafür >entworfen Der ECHTE HEF4050 ist bei 3,3V schnarchlangsam, da sollte man kaum 1 MHz SPI-Takt drüber schieben. Der moderne 74HC4050 ist locker Faktor 10 schneller! Der wird auch meistens eingebaut! Was soll denn der Mischmasch am SPI? Warum wird dein ENC, der anscheinend mit 3,3V betrieben wird, direkt an deinen 5V AVR angeschlossen? Sollte der nicht auch wie die SD-Karte am 3,3V SPI NACH den Pegelwandlern angeschlossen werden? Für MISO fehlt ein Pegelwandler von 3,3 auf 5V, 74HCT125 ist dein Freund. Wenn dann noch die OE Pins mit dem zugehörigen CS verbunden werden, wird das auch was.
Falk B. schrieb: > Der ECHTE HEF4050 ist bei 3,3V schnarchlangsam, da sollte man kaum 1 MHz > SPI-Takt drüber schieben. Der moderne 74HC4050 ist locker Faktor 10 > schneller! Der wird auch meistens eingebaut! Es ist ein 74HC4050 verbaut. Falk B. schrieb: > Warum wird dein ENC, der > anscheinend mit 3,3V betrieben wird, direkt an deinen 5V AVR > angeschlossen? Die Eingänge des ENC28J60 sind 5V Tolerant, die brauchen nicht umbedingt ein Pegelwandler. Falk B. schrieb: > Für MISO fehlt ein Pegelwandler von 3,3 auf 5V, 74HCT125 ist dein > Freund. Soweit wie ich weiß erkennt der Avr 3,3 Volt als High pegel Falk B. schrieb: > Wenn dann noch die OE Pins mit dem zugehörigen CS verbunden > werden, wird das auch was. Das verstehe ich nicht so ganz //EDIT 22:34 Was ich aber immer noch nicht so ganz verstehe, die initzalsierung der SD Karte schlägt wenn der ENC angeschlossen ist fehl also die disk_init(); Funktion. Wenn der ENC nicht angeschlossen ist schlägt nix fehl. Irgendwie mysteriös Lg Jan.
:
Bearbeitet durch User
Jan H. schrieb: > //EDIT 22:34 Was ich aber immer noch nicht so ganz verstehe, die > initzalsierung der SD Karte schlägt wenn der ENC angeschlossen ist fehl > also die disk_init(); Funktion. Wenn der ENC nicht angeschlossen ist > schlägt nix fehl. Irgendwie mysteriös Antworten lesen und wenigstens versuchen zu verstehen: Marc V. schrieb: > Jan H. schrieb: >> Was macht der 220 Ohm Widerstand in der MISO Leitung muss der dahin? >> Denn habe ich nämlich nicht an der MISO Leitung. > > Ermöglicht, dass MEGA über ISP programmiert wird. > Ohne Widerstand würde wahrscheinlich dasselbe passieren was dir jetzt > auch passiert... Wenn du keinen Pegelwandler auf MISO hast, dann schaltet der ENC den MISO anscheinend nicht auf HiZ bzw. auf Eingang wenn deselektiert. Wenn du einen Pegelwandler hast, dann kannst du höchstwahrscheinlich die ganze Sache mit mehreren SPI-Modulen gleichzeitig vergessen. Aber probiere es erstmal mit einem Widerstand zwischen ENC-MISO und AVR-MISO.
@Jan Hampel (jan_h865) >> Für MISO fehlt ein Pegelwandler von 3,3 auf 5V, 74HCT125 ist dein >> Freund. >Soweit wie ich weiß erkennt der Avr 3,3 Volt als High pegel NEIN! Damit sind schon viele andere Leute auf's Maul gefallen! Mach es einfach richtig! >> Wenn dann noch die OE Pins mit dem zugehörigen CS verbunden >> werden, wird das auch was. >Das verstehe ich nicht so ganz Das OE vom MISO Pegelwandler gehört an das CS für die SD-Karte. Damit ist diese auf MISO inaktiv, wenn sie deselktiert ist. >//EDIT 22:34 Was ich aber immer noch nicht so ganz verstehe, die >initzalsierung der SD Karte schlägt wenn der ENC angeschlossen ist fehl >also die disk_init(); Funktion. Wenn der ENC nicht angeschlossen ist >schlägt nix fehl. Irgendwie mysteriös Dann ist das CS vom ENC nicht sauber auf high. IO nicht richtig initialisiert?
Falk B. schrieb: > NEIN! Damit sind schon viele andere Leute auf's Maul gefallen! Mach es > einfach richtig! Aha, okay. Der 74HCT124 hat ja 2 Eingänge und 1 Ausgang. Also würde ich jetzt mein CS Signal an denn 1OE Pin anschließen von der SD Karte. Und dann die MISO Leitung an 1A und dann mit 1Y auf denn Avr MISO Pin. http://codeandlife.com/wp-content/uploads/2012/04/74hct125.png Vcc ist dabei dann 5V an dem Chip? Kann man auch ein SN74AHCT125N verwenden? LG Jan.
:
Bearbeitet durch User
@Jan Hampel (jan_h865) >> NEIN! Damit sind schon viele andere Leute auf's Maul gefallen! Mach es >> einfach richtig! >Aha, okay. Der 74HCT124 hat ja 2 Eingänge und 1 Ausgang. Also würde ich 74HCT125! Der hat einen Signaleingang und einen Steuereingang (OE). >jetzt mein CS Signal an denn 1OE Pin anschließen von der SD Karte. Und >dann die MISO Leitung an 1A und dann mit 1Y auf denn Avr MISO Pin. Genau. >http://codeandlife.com/wp-content/uploads/2012/04/... >Vcc ist dabei dann 5V an dem Chip? Ja. >Kann man auch ein SN74AHCT125N verwenden? Ja. Vergiss den Pull-Up am CS Signal nicht, 10k gegen +5V. Dann kann man den AVR auch ohne Probleme uns sinnlose Längswiderstände am SPI programmieren. https://www.mikrocontroller.net/articles/AVR_In_System_Programmer#ISP-Pins_am_AVR_auch_f.C3.BCr_andere_Zwecke_nutzen
Falk B. schrieb: > Dann kann man den AVR auch ohne Probleme uns sinnlose Längswiderstände > am SPI programmieren. Schade, dass ATMEL so einen Genie wie dich nicht beschäftigt. Anscheinend arbeiten dort nur Idioten mit sinnlosen Ideen.
Falk B. schrieb: > Vergiss den Pull-Up am CS Signal nicht, 10k gegen +5V. Okay. Also kommt je ein Buffer vom 74hct125 an denn ENC und an die SD Karte(TFT MISO nicht verbunden - nicht benötigt). Dann 10K Widerstand gegen 5V an der CS Leitung und so wie im Schaltbild angeschlossen. Falk B. schrieb: >>Soweit wie ich weiß erkennt der Avr 3,3 Volt als High pegel > > NEIN! Damit sind schon viele andere Leute auf's Maul gefallen! Mach es > einfach richtig! Aber die CS, SCK, und MOSI Leitungen brauchen kein Pegelwandler von 5V zu 3.3V Lg Jan.
@Jan Hampel (jan_h865) >Okay. Also kommt je ein Buffer vom 74hct125 an denn ENC und an die SD >Karte(TFT MISO nicht verbunden - nicht benötigt). Dann 10K Widerstand >gegen 5V an der CS Leitung und so wie im Schaltbild angeschlossen. Fast. Das CS zur SD-Card muss noch über den 74HC4050 Pegelwandler laufen! >> NEIN! Damit sind schon viele andere Leute auf's Maul gefallen! Mach es >> einfach richtig! >Aber die CS, SCK, und MOSI Leitungen brauchen kein Pegelwandler von 5V >zu 3.3V Für die SD-Karte schon! Ich würde auch den ENC an den 3,3V Bus klemmen, auch wenn der 5V tolerant ist. Macht die Sache irgendwie einheitlicher. Zeichne einen vollständigen Schaltplan, dann kann man darüber sinnvoll reden. Schaltungslyrik ist selten sinnvoll.
Falk B. schrieb: > Fast. Das CS zur SD-Card muss noch über den 74HC4050 Pegelwandler > laufen! Okay, ja der 4050 ist hinter dem 10K Widerstand. Habe ich dort aber nicht mit eingezeichnet. Die reihen folgende wäre dann so: 1) SD Karten Widerstand gegen 5V 2) Pegelwandler von 5V auf 3V3 fürs SD Karten Signal.(Hinter OE Pin) 3) MISO Signal von der SD karte durch denn 125 jagen 4) MISO Signal vom 125 auf denn AVR(PORTB6 - ATMega644) Falk B. schrieb: > Zeichne einen vollständigen Schaltplan Dieser ist so ziemlich vollständig was mein aktuellen Aufbau betrifft. Habe im Schaltplan zeichnen grade mit Eagle noch nicht so viel Erfahrungen Danke dir. Wäre mir morgen/übermorgen mal ein paar Chips davon besorgen. Lg Jan.
@Jan Hampel (jan_h865) >> Fast. Das CS zur SD-Card muss noch über den 74HC4050 Pegelwandler >> laufen! >Okay, ja der 4050 ist hinter dem 10K Widerstand. > Habe ich dort aber >nicht mit eingezeichnet. Die reihen folgende wäre dann so: >1) SD Karten Widerstand gegen 5V Nö, gegen 3,3V. >2) Pegelwandler von 5V auf 3V3 fürs SD Karten Signal.(Hinter OE Pin) >3) MISO Signal von der SD karte durch denn 125 jagen >4) MISO Signal vom 125 auf denn AVR(PORTB6 - ATMega644) Eben solche Lyrik ist voll für die Katz! SCHALTPLAN!!! >Falk B. schrieb: >> Zeichne einen vollständigen Schaltplan >Dieser ist so ziemlich vollständig was mein aktuellen Aufbau betrifft. Du willst den ja verändern! Bevor man das tut, zeichnet man einen VOLLSTÄNDIGEN, LESBAREN Schaltplan. >Habe im Schaltplan zeichnen grade mit Eagle noch nicht so viel >Erfahrungen Dann hast du JETZT die perfekte Gelegenheit, daran was zu ändern! Go for it! >Danke dir. Wäre mir morgen/übermorgen mal ein paar Chips davon besorgen. Aber HEUTE solltest und kannst du einen Schaltplan zeichnen. Schaltplan richtig zeichnen
Falk B. schrieb: > Nö, gegen 3,3V. holger schrieb: > R17 und R18 sind auf der falschen Seite von den 4050 > angeschlossen. Im meinen jetzigen Schaltplan sind die Pullup Widerstände gegen 3,3 Volt gezogen hinter dem 4050. Wenn diese davor aber kommen dann müssen die Widerstände doch gegen 5V gezogen werden, denn es kommt ja ein 5V Signal vom Avr. Hier ist nur ein Ausschnitt damit ich weis wie ich das dann im späteren Schaltplan zeichnen muss Falk B. schrieb: > Aber HEUTE solltest und kannst du einen Schaltplan zeichnen. > > Schaltplan richtig zeichnen Danke lg jan.
@Jan Hampel (jan_h865) >Im meinen jetzigen Schaltplan sind die Pullup Widerstände gegen 3,3 Volt >gezogen hinter dem 4050. Wenn diese davor aber kommen dann müssen die >Widerstände doch gegen 5V gezogen werden, denn es kommt ja ein 5V Signal >vom Avr. Ja. >Hier ist nur ein Ausschnitt damit ich weis wie ich das dann im späteren >Schaltplan zeichnen muss Ist fast OK. Dein 4050 ist ein 74HC4050, schreib das in deinen Schaltplan!!! Denn die beiden IC unterscheiden sich WESENTLICH in der Geschwindigkeit! Wenn du einen Porsche hast, nennst du ihn doch auch Porsche und nicht nur Automobil.
Falk B. schrieb: > Ja. Okay, hatte mich erst nur verwirrt. Falk B. schrieb: > Ist fast OK. Dein 4050 ist ein 74HC4050, schreib das in deinen > Schaltplan!!! Denn die beiden IC unterscheiden sich WESENTLICH in der > Geschwindigkeit! Wenn du einen Porsche hast, nennst du ihn doch auch > Porsche und nicht nur Automobil. Jo werde ich machen Danke.
Jan H. schrieb: > Dein 4050 ist ein 74HC4050, Hallo, meine bestellen ICs sind heute von Reichelt angekommen. Ich nun auch denn SD Karten IC von ein HEF4050 gegen ein 74HC4050 ausgetauscht. Jedoch schlägt mit diesen IC immer die Initialisierung fehl. Die Pegel werden richtig von 5V auf 3V3 umgesetzt. Mit dem HCF4050BE funktioniert die SD Karte. Das Pinout beim 74hc4050 ist identisch mit dem hcf4050. Ist der IC zu schnell? Lg Jan.
@ Jan Hampel (jan_h865) >Hallo, meine bestellen ICs sind heute von Reichelt angekommen. Ich nun >auch denn SD Karten IC von ein HEF4050 gegen ein 74HC4050 ausgetauscht. >Jedoch schlägt mit diesen IC immer die Initialisierung fehl. Schlecht. >Die Pegel >werden richtig von 5V auf 3V3 umgesetzt. Gut. >Mit dem HCF4050BE funktioniert >die SD Karte. Das Pinout beim 74hc4050 ist identisch mit dem hcf4050. >Ist der IC zu schnell? Naja, er ist schon deutlich schneller, vor allem bei 3,3V. Möglicherweise hast du ein schlechtes Layout/Leitungsfühung und das Taktsignal klingelt, siehe Wellenwiderstand. Zeig mal ein Bild von deinem Aufbau. https://www.mikrocontroller.net/attachment/318645/homeserver.png In deinem Schaltplan fehlt der WICHTIGE 10K Pull Up Widerstand an SD_MISO nach 3,3V. Es fehlt auch der Pegelwandler von 3,3V auf 5V. Wie sieht dein Aufbau im Moment WIRKLICH aus?
Warum der ganze Aufwand? d0 und d1 sind eh frei. wie oben vorgeschlagen separate uart-spi-Schnittstelle und sd-Karte/enc kommen sich nicht mehr in die Quere.
@grundschüler (Gast)
>Warum der ganze Aufwand?
Weil man irgendwann mal aufhören muss, nur mit Workarounds zu arbeiten
und eine Schaltung solide zum laufen bringen sollte. Denn sonst wird man
immer nur urban legends produzieren und mit esoterischen Lösungen den
Mangel an soliden Grundfertigkeiten nur mäßig kompensieren können. Ich
habe schon mindestens DREI verschiedene Platinen mit SD-Karte + andere
ICs an einem SPI-Bus zum laufen bekommen, es gab dort keinerlei
Probleme. Der TFT-Shield vom Arduino hat auch TFT+SD-Karte an einem
SPI-Bus. Und es gibt noch Dutzende andere Boards, wo das so
funktioniert. Also geht es auch hier! Der OP muss "nur" mal solide
arbeiten und die Hinweise umsetzen.
Falk B. schrieb: > eine Schaltung solide zum laufen bringen mit Pegelwandlern? Die Megas haben zwei vollwertige spi-Schnittstellen. Die zu nutzen ist keine Esoterik.
Falk B. schrieb: > In deinem Schaltplan fehlt der WICHTIGE 10K Pull Up Widerstand an > SD_MISO nach 3,3V. Es fehlt auch der Pegelwandler von 3,3V auf 5V. Wie > sieht dein Aufbau im Moment WIRKLICH aus? Dieser MISO Pullup Widerstand nach 3,3 Volt ist bereits auf dem Display verlötet worden. Falk B. schrieb: > Zeig mal ein Bild von > deinem Aufbau. Klar, wenn es hilft. Ich musst das leider mit der SCK leitung mit Kabeln lösen. Da ich mich damals beim bauen vertan mit dem Platz habe. Der 74HC4050 funktioniert am TFT Display ohne Probleme. Wahrscheinlich werde ich heute oder morgen ein neue Apdater Platine basteln. Diese wahr als Arduino Shield gedacht Lg Jan.
grundschüler schrieb: > Die Megas haben zwei vollwertige spi-Schnittstellen. > Die zu nutzen ist keine Esoterik. Vor allem Dingen, es gibt kein Geld zurueck fuer nicht genutzte Hardware. Ausserdem kann man dann gleichzeitig auf Display u. Karte zugreifen.
@grundschüler (Gast) >> eine Schaltung solide zum laufen bringen >mit Pegelwandlern? JA! Ist das ein Problem für dich? > Die Megas haben zwei vollwertige spi-Schnittstellen. >Die zu nutzen ist keine Esoterik. Die brauchen aber auch Pegelwandler, wenn der AVR mit 5V läuft! Und nun?
@Helmut Lenzen (helmi1) >> Die Megas haben zwei vollwertige spi-Schnittstellen. >> Die zu nutzen ist keine Esoterik. >Vor allem Dingen, es gibt kein Geld zurueck fuer nicht genutzte >Hardware. Bla! Aber es gibt Lobeshymnen für schlechtes Design? >Ausserdem kann man dann gleichzeitig auf Display u. Karte zugreifen. Theoretisch ja, praktisch kaum. Denn dazu bräuchte man eine SD-Lib, welche NICHT bis zum Ende diverser Dateioperationen die CPU benötigt (präemtives Multitaking), davon gibt es verdammt wenige. Und der OP ist damit auch überfordert. Allso mal wieder alles nur akademische Argumente, nur damit die Schaltung nicht aufgeräumt wird? Leute gibt's . . .
@Jan Hampel (jan_h865) >Dieser MISO Pullup Widerstand nach 3,3 Volt ist bereits auf dem Display >verlötet worden. OK. >> Zeig mal ein Bild von >> deinem Aufbau. >Klar, wenn es hilft. PATSCH Und schon hast du dir eine virtuelle Ohrfeige eingefangen! Wo ist der verdammte Entkoppelkondensator für den Pegelwandler? https://www.mikrocontroller.net/articles/Kondensator#Entkoppelkondensator >Ich musst das leider mit der SCK leitung mit Kabeln lösen. Da ich mich >damals beim bauen vertan mit dem Platz habe. Hmm, da könnte ein Problem in der Masseführung drinstecken, das sieht man auf die Schnelle aber nicht. Markiere mal die gesammte Masse auf der Unterseite. >Der 74HC4050 funktioniert am TFT Display ohne Probleme. Das ist halt deutlich unempfindlicher gegen ein gestörtes SCK SIgnal.
Falk B. schrieb: > Und schon hast du dir eine virtuelle Ohrfeige eingefangen! Wo ist der > verdammte Entkoppelkondensator für den Pegelwandler? reichen 100 nF? Falk B. schrieb: > Hmm, da könnte ein Problem in der Masseführung drinstecken, das sieht > man auf die Schnelle aber nicht. Markiere mal die gesammte Masse auf der > Unterseite. Ok. Das SCK Signal geht knapp über einer GND Leitung her. Berührt diese aber nicht. An diesen Teil ist das Kabel nicht isoliert. Zum 74HCT125: An denn OE Pin kommt die CS Leitung mit einen 10K Pullup nach 5V. Danach geht die CS Leitung auf SD_CS. Die MISO Leitung von der SD Karte geht auf denn 2 Pin des 125 und vom dritten Pin geht es dann zum MISO Pin des AVR's. Wie in mein Schaltbild Schnippels gezeigt oben. Jedoch sagt die SD Karte beim alten HCF4050BE "Disk Error FRESULT Code 1" Vcc ist bei dem Chip 5V Falsch angeschlossen? Lg Jan.
:
Bearbeitet durch User
@Jan Hampel (jan_h865) >> Und schon hast du dir eine virtuelle Ohrfeige eingefangen! Wo ist der >> verdammte Entkoppelkondensator für den Pegelwandler? >reichen 100 nF? Vorerst schon. >> man auf die Schnelle aber nicht. Markiere mal die gesammte Masse auf der >> Unterseite. >Ok. >Das SCK Signal geht knapp über einer GND Leitung her. Berührt diese aber >nicht. An diesen Teil ist das Kabel nicht isoliert. Nichtg schön, sollte abwr gehen. >Zum 74HCT125: An denn OE Pin kommt die CS Leitung mit einen 10K Pullup >nach 5V. Danach geht die CS Leitung auf SD_CS. Vorher auf den Pegelwandler! Schaltplan! > Die MISO Leitung von der >SD Karte geht auf denn 2 Pin des 125 und vom dritten Pin geht es dann >zum MISO Pin des AVR's. Wie in mein Schaltbild Schnippels gezeigt oben. Ja. >Jedoch sagt die SD Karte beim alten HCF4050BE "Disk Error FRESULT Code >1" >Vcc ist bei dem Chip 5V >Falsch angeschlossen? Wahrscheinlich. VCC/GND angeschlossen? Entkoppelkondensator?
Falk B. schrieb: > Die brauchen aber auch Pegelwandler, wenn der AVR mit 5V läuft! Und nun? Mega bis 8Mhz läuft mit 3,3 V schnell genug und braucht dann keinen Pegelwandler.
Falk B. schrieb: > Vorher auf den Pegelwandler! Schaltplan! Okay. Also doch denn Pullup Widerstand auf 3,3V. Ich werde mich morgen mal hinsetzten und ein Board basteln für tft und sd. So das ich alles ohne Kabel verlöteten kann. Dann kommt auch der Pegelwandler und hct125 direkt mit drauf. Hier ist mal der Schaltplan. Lg Jan.
Die 10k Pullups an den Ausgängen der 4050 sind schon wieder Müll. Die gehören an die Eingänge.
Falk B. schrieb: >>Zum 74HCT125: An denn OE Pin kommt die CS Leitung mit einen 10K Pullup >>nach 5V. Danach geht die CS Leitung auf SD_CS. > > Vorher auf den Pegelwandler! Schaltplan! holger schrieb: > Die 10k Pullups an den Ausgängen der 4050 sind schon > wieder Müll. Die gehören an die Eingänge. Vorher auf den Pegelwandler, damit ist denk ich gemeint das erst der Wandler kommt dann der Pullup Widerstand @holger Ist bearbeitet wäre das so nun richtig? Lg Jan.
:
Bearbeitet durch User
@Jan Hampel (jan_h865) >Vorher auf den Pegelwandler, damit ist denk ich gemeint das erst der >Wandler kommt dann der Pullup Widerstand Ohje. Schaltplan richtig zeichnen Das Geschmiere oben am Spannungsregler ist grausam. IC2A Pin 1 gehört an IC1F Pin 14, auch wenn es so auch funktioniert. Wozu D1? Dort kommen 5V rein, die will man nicht um 0,7V senken. Der Rest ist soweit OK.
Falk B. schrieb: > Ohje. > > Schaltplan richtig zeichnen Sorry, bin noch dabei. Falk B. schrieb: > Der Rest ist soweit OK. Du beziehst dich auf denn zweiten Schaltplan richtig? Also mit denn Widerständen vor den Pegelwandlern Lg Jan.
Falk B. schrieb: > Ja Okay super dank dir @holger Dank dir auch Werde morgen nach dem zweiten Schaltplan(HCT125 gefixt) ein neues Board bauen. Werde dann mal posten ob es dann so funktioniert. Lg Jan.
Jan H. schrieb: > Werde dann mal posten ob es dann so funktioniert. Hallo nochmal, Ich habe nun mein neues Board fertig mit dem 74HC4050 und 74HCT125. Die Ansteuerung des Displays und der SD Karte funktioniert auch. Was mir auf gefallen ist beim Lesen des Freien Speichers(8GB Karte) brauchte der 74HC4050 circa 3 Sekunden weniger als der HEF4050. Ich kann nun die SD Karte lesen und gleichzeitig denn ENC laufen lassen. Da gibt es jedoch noch einen Haken, ich initialisiere erst die SD Karte und lese dann denn Freien Speicher aus. Geht ohne Probleme. Dann initialisiere ich denn ENC28J60. Danach öffne ich kurz eine Datei und Schließe sie wieder -> Kein Fehler. Danach geht der Code in die Dauerschleife über. Wo dauerhaft geprüft wird ob der ENC28J60 angesprochen wird(IP Adresse im Browser oder angepingt). Ich starte mit Windows ein ping XXX -t. Vordem Init des ENC28J60 reagiert er nicht ist auch richtig. Ab dem Punkt wo der in der Dauerschleife ist reagiert er. Und Antwortet auf denn Ping mit <1ms. Nach 15 Sekunden öffne und schließe ich wieder die gleiche Datei auf der SD karte. Jedoch bleibt der ENC28J60 an der stelle hängen(Zeitüberschreitung). SD Karte führt die Aufgabe erfolgreich aus ohne ein Fehler. Könnte es daran liegen das der ENC28J60 wenn in der Dauerschleife prüft. Und wenn ich dort die SD Karte anspreche, das kurz beide CS Leitungen auf LOW sind? Und er sich dadurch aufhängt. Andernfalls spreche ich das TFT Display ja auch während der Dauerschleife über ein Overflow Timer(Benutzeroberfläche) an, und dort hängt der ENC ja sich auch nicht auf. Der ENC28J60 hat kein Pegelwandler. Und auch kein 74HCT125. Lg Jan.
@ Jan Hampel (jan_h865) >Ich habe nun mein neues Board fertig mit dem 74HC4050 und 74HCT125. Die >Ansteuerung des Displays und der SD Karte funktioniert auch. HALLELUJA!!! > Was mir auf >gefallen ist beim Lesen des Freien Speichers(8GB Karte) brauchte der >74HC4050 circa 3 Sekunden weniger als der HEF4050. Das sollte eher nicht so sein. Denn wenn gleich beide ICs unterschiedlich schnell sind, so bestimmt der uC den SPI-Takt. >Ich kann nun die SD Karte lesen und gleichzeitig denn ENC laufen lassen. TATA!!!! >gleiche Datei auf der SD karte. Jedoch bleibt der ENC28J60 an der stelle >hängen(Zeitüberschreitung). SD Karte führt die Aufgabe erfolgreich aus >ohne ein Fehler. Dann hast du wohl einen Fehler im Programm. >Könnte es daran liegen das der ENC28J60 wenn in der Dauerschleife prüft. >Und wenn ich dort die SD Karte anspreche, das kurz beide CS Leitungen >auf LOW sind? Ist das eine Vermutung oder weißt du sicher, daß irgendwann die beiden CS gleichzeitig auf LOW sind. Das darf denfinitv NICHT sein! > Und er sich dadurch aufhängt. >Andernfalls spreche ich das TFT Display ja auch während der >Dauerschleife über ein Overflow Timer(Benutzeroberfläche) an, und dort >hängt der ENC ja sich auch nicht auf. AUA!!! Das geht schief!!! Deine Interrupts können jederzeit aktiv werden. Wenn währenddessen gerade ein SD-Kartenzugriff läuft, krachts! Das mindestes was du tun musst, ist in deinem Interrupt zu prüfen, ob das gerade ein aktiver Zugriff auf deine SD-Karte im Hauptprogramm erfolgt. Dazu reich es aber NICHT, einfach das IO-Bit für das SD-CS rückzulesen! Denn eine Besonderheit der SD-Karte ist es, daß sie NACH dem Deaktivieren von CS noch ein paar Takte braucht, um MISO wieder freizugeben. Du braucht ein Flag, das einen SD-Zugriff signalisiert, das muss man auswerten. Etwa so.
1 | volatile flagSDaccess; |
2 | |
3 | ...
|
4 | |
5 | flagSDaccess = 1; |
6 | |
7 | // mach was mit der SD-Karte
|
8 | |
9 | flagSDaccess = 0; |
10 | |
11 | ISR(whatever) { |
12 | |
13 | |
14 | if (!flagSDaccess) { |
15 | // nur hier darf auf das TFT zugegriffen werden
|
16 | }
|
17 | }
|
Wenn man in den Interrupts keinerlei Zugriffe auf SD oder TFT macht, braucht man das nicht. Dann kann man mit den normalen Funktionen im Hauptprogramm arbeiten, ohne gegenseitige Prüfung. Denn am Ende JEDER SD- bzw. TFT Funktion ist das jeweilige CS Signal wieder high. >Der ENC28J60 hat kein Pegelwandler. Und auch kein 74HCT125. Du hast es IMMER noch nicht verstanden!!! Der ENC ist zwar 5V tolerant, d.h. man kann 5V an dessen Eingänge anlegen, ohne daß es zu negativen Effekten kommen, aber dessen MISO Ausgang liefert nur 3,3V!!! Das ist als HIGH für einen AVR mit 5V zu knapp!! Der will offiziell min. 3,5V sehen (0,7*VCC). Also tu dir den Gefallen und verpass auch dem ENC einen Pegelwandler für MISO!!! Dann ist das SICHER und stabil! In dem IC sind schließlich 4 Stück drin und für unbenutzte Gatter gibt es kein Geld zurück!
Falk B. schrieb: > aber dessen MISO Ausgang liefert nur 3,3V!!! > Das ist als HIGH für einen AVR mit 5V zu > knapp!! Der will offiziell min. 3,5V sehen (0,7*VCC). Mindestens der hier benutzte M644 braucht bei 5V Versorgung mindestens 0,6*VCC um High zu erkennen, das wären 3,0V. Falk B. schrieb: > Also tu dir den Gefallen und verpass auch dem ENC einen Pegelwandler > für MISO!!! Dann ist das SICHER und stabil! Dem stimmt ich dennoch voll zu, auch wenn eben noch "drin" sind 0,3V etwas knapp.
Falk B. schrieb: > AUA!!! Das geht schief!!! Ich habe grade nochmal mein Code geprüft. Es ist doch nicht so. Also die Benutzeroberfläche wird mit 5 Buttons gesteuert(OK, LEFT, RIGHT, UP, DOWN). Da ich die _delay_ms() Funktion nicht nutzen um eine kurze Pause zwischen denn Knopf drücken. Also ich frage ob ein Knopf gedrückt wurde falls ja wird ein Counter bis 250 hochgezählt(250 ms Wartezeit) dann wirt ein Boolean auf True gesetzt das wieder ein Knopf gedrückt werden kann. Und der Counter zurück auf null. In der Dauerschleife frage ich dann die Buttons ab. Dort steht dann halt am Anfang drin if(nextButton) { //Button Funktion und nextButton = false}; Dann kann man für die nächsten 250ms kein Button drücken und die ISR setzt denn Boolean wieder auf false nach 250ms. Falk B. schrieb: > Gefallen und verpass auch dem ENC einen Pegelwandler für MISO Ist. Falk B. schrieb: > Jedoch bleibt der ENC28J60 an der stelle >>hängen(Zeitüberschreitung) Das muss ich mal beobachten. Denn zurzeit ist dieser Fehler nicht mehr da. Lg Jan.
@Jan Hampel (jan_h865) >> AUA!!! Das geht schief!!! >Ich habe grade nochmal mein Code geprüft. Es ist doch nicht so. Also die >Benutzeroberfläche wird mit 5 Buttons gesteuert(OK, LEFT, RIGHT, UP, >DOWN). Da ich die _delay_ms() Funktion nicht nutzen um eine kurze Pause >zwischen denn Knopf drücken. >Also ich frage ob ein Knopf gedrückt wurde falls ja wird ein Counter bis >250 hochgezählt(250 ms Wartezeit) dann wirt ein Boolean auf True gesetzt >das wieder ein Knopf gedrückt werden kann. Und der Counter zurück auf >null. Glaubst du, daß ein AUßENSTEHENDER, welcher nicht neben dir sitzt und den Code sieht, damit großartig was anfangen kann? https://www.mikrocontroller.net/articles/Netiquette#Klare_Beschreibung_des_Problems >false}; Dann kann man für die nächsten 250ms kein Button drücken und die >ISR setzt denn Boolean wieder auf false nach 250ms. Die Frage ist schlicht und ergreifend, ob du in einer ISR einen SD, TFT oder ENC Zugriff machst oder nicht. Wenn nein, dann finden alle Zugriffe im Hauptprogramm statt und wenn deine Funktionen fehlerfrei sind, wird auch das entsprechende CS am Ende der Funktion wieder HIGH. Wenn nicht, siehe mein vorheriger Beitrag. >> Gefallen und verpass auch dem ENC einen Pegelwandler für MISO >Ist. Gut. >> Jedoch bleibt der ENC28J60 an der stelle >>>hängen(Zeitüberschreitung) >Das muss ich mal beobachten. Denn zurzeit ist dieser Fehler nicht mehr >da. Möglicherweise war es ein Problem mit dem fehlenden Pegelwandler, beim Lesezugriff kammen durch Störsignale soradisch falsche Daten im AVR an und die Software hat Unsinn gemacht. Möglicherweise ist der Fehler aber noch drin, tritt aber nur sporadisch auf. Siehe https://www.mikrocontroller.net/articles/Fehlersuche#Allgemeine_Hinweise
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.