Hallo Forum, ich möchte eine SD-Karte mit zwei Mikrocontrollern betreiben. CS, GND und VCC sind kein Problem. Meine erste Idee ist die Signale MISO (DO), MOSI (DI) und SCK (CLK) mit Reedrelais durch die CS Signale der Mikrocontroller um zu schalten. Gibt es dafür noch eine einfachere Lösung? Mein Problem ist, dass ich keine Reedrelais für 3,3 V VCC mit Wechselkontakt finden kann. Gruß Andi
Andi S. schrieb: > Meine erste Idee ist die Signale MISO (DO), MOSI (DI) und SCK (CLK) > mit Reedrelais durch die CS Signale der Mikrocontroller um zu schalten. Diese Idee ist wie die allermeisten allerersten Ideen Unsinn. Du mußt zuallererst mal festlegen, wann einer der beiden uCs auf die SD-Karte darf. Und wie sich die beiden uCs das gegenseitig mitteilen... Denn wenn die Karte gerade im Schreibmodus befindet, wäre es eine ausgesprochen dumme Sache, wenn einfach so die Steuerleitungen umgeschaltet werden und der 2. uC zu Lesen beginnt... Und wenn du jetzt weißt, welcher der beiden uC gerade auf die Karte darf, dann kannst du beim anderen ganz einfach die Portpins MISO (DO), MOSI (DI) und SCK (CLK) per Software auf "Eingang" schalten. Dann ist der hochohmig und nicht an der Kommunikation beteiligt.
Alternativ kannst du einen der Controller an die SD-Karte anbinden, der zweite sendet und empfängt nur über den ersten Controller. Wird etwas langsamer, ist aber definitiv die sicherste Methode.
Sorry, aber ich muss das wohl etwas genauer beschreiben. Der erste µC ist ein ATMega, den ich natürlich frei programmieren kann. An den zweiten µC komme ich nicht ran, da sich dieser in einer Kamera befindet. Dazu stecke stecke ich einfach eine Dummy-SD Karte mit Kabel in den SD-Karten Schacht. Mit dem ATMega schalte ich die Kamera ein, löse sie aus, warte bis das Bild auf die Karte geschrieben ist und Möchte dann wieder mit dem ATMega auf die Karte zugreifen. Deshalb greifen zwei µC auf eine Karte zu, deren SCK, MOSI und MISO Leitungen nicht einfach verbunden werden können sondern umgeschaltet werden müssen.
Andi S. schrieb: > Sorry, aber ich muss das wohl etwas genauer beschreiben. Ja, das ist besser so. Dann hat die Raterei ein Ende. Du kannst also irgendwie verhindern, dass beide gleichzeitig auf die Karte zugreifen. Das ist schon mal gut. Warum nimmst du dann nicht einfach einen Multiplexer in der Art eines CD4053 bzw. neuere/aktuellere Nachfolgekandidaten? Der hätte genau 3 Umschaltkontakte...
Hallo! Mache es doch so, wie von f-baer vorgeschlagen. Lasse den "Kamera-µC" durch Deinen ATMega auf die Speicherkarte zugreifen, vorausgesetzt deine Kamera macht die Signallaufzeitverzögerung mit. Dann hast Du die volle Kontrolle und weißt ja sofort, was der "Kamera-µC" mit der Karte machen möchte. Wenn Du nur von der Karte lesen möchtest kannst Du der Kamera ja auch eine höhere Priorität geben, sprich Deine Aktivität unterbrechen wenn die Kamera zugreifen möchte. Viele Grüße Marcel
Marcel Sz schrieb: > vorausgesetzt deine Kamera macht die Signallaufzeitverzögerung mit. Das möchte ich sehr sehr ernsthaft bezwiefeln. SPI funktioniert so, dass wenn ein SCLK kommt schnellstmöglich die Datenleitungen reagieren. Ich würde schätzen, dass die Verzögerung durch einen uC hindurch etwa den Faktor 1000 zu lang ist. Insbesondere bei den aktuellen HiSpeed-Karten. > Lasse den "Kamera-µC" durch den ATMega auf die Speicherkarte zugreifen Wie stellst du dir das vor? > Wenn Du nur von der Karte lesen möchtest kannst Du der Kamera ja > auch eine höhere Priorität geben, sprich Deine Aktivität unterbrechen > wenn die Kamera zugreifen möchte. Wie stellst du dir das vor?
Lothar Miller schrieb: > Marcel Sz schrieb: >> vorausgesetzt deine Kamera macht die Signallaufzeitverzögerung mit. > Das möchte ich sehr sehr ernsthaft bezwiefeln. SPI funktioniert so, dass > wenn ein SCLK kommt schnellstmöglich die Datenleitungen reagieren. Ich > würde schätzen, dass die Verzögerung durch einen uC hindurch etwa > den Faktor 1000 zu lang ist. Insbesondere bei den aktuellen > HiSpeed-Karten. Das müsste man ausprobieren. In so einer Kamera erwarte ich eigentlich nicht einen Hochleistungsrechner zur Kommunikation mit der Karte >> Lasse den "Kamera-µC" durch den ATMega auf die Speicherkarte zugreifen > Wie stellst du dir das vor? So wie ich das vestanden habe, löst der Mega die Kamera aus. D.h. der Mega weiß wann die Karte zugreifen wird. Ab diesem Zeitpunkt kümmert er sich nur noch um Portweiterleitung von der Kamera zur Karte und umgekehrt. Sollte eine enge Schleife sein, in der sonst nichts Gravierendes gemacht wird. Pin hier - Port dort Kehrt nach einiger Zeit wieder Ruhe auf den Leitungen ein, dann holt sich der Mega selbst das Bild von der Karte Ob sichs mit dem Timing ausgeht? Hmmmmmmmmm Vielleicht mit der Problembeschreibung noch weiter ausholen, damit man sich das zu lösende Problem noch besser vorstellen kann.
Karl heinz Buchegger schrieb: > In so einer Kamera erwarte ich eigentlich nicht einen > Hochleistungsrechner zur Kommunikation mit der Karte Ich auch nicht, aber irgendwie erwarte ich eine spezialisierte Hardware für die wenigen Aufgaben (Bild aufnehmen und Abspeichern)... > Ob sichs mit dem Timing ausgeht? > Hmmmmmmmmm Mal überschlägig und gefühlt: auch eine "langsame Kamera" bekommt ein 3MB großes Bild in 5sec weggespeichert. Das ist also 0,6MB/sec oder 5MBit/sec. Da müsste (um irgendwelche Setup- und Hold-Zeiten nicht allzusehr zu verletzen) das Signal mindestens mit dem Faktor 5 überabgetastet werden. Das wären dann 25MHz "Durchreicherate" vom jeweiligen Eingangs- zum Ausgangspin... Fazit: Ich bleibe vorerst weiter bei meiner Mux-Lösung ;-)
Hallo zusammen, ein erster Versuch sollte klären, ob man den Zugriff durch den µC hindurch hinbekommt. Ich vermute, dass die Hardware (SD-Karten-Dummy mit Leitungen, echte SD-Karte, µC etc.) vorhanden ist. Wenn die Kamera dann ordentlich lesen und schreiben kann und keinen Speicherkartenfehler anzeigt, kann man sich über den weiteren Weg Gedanken machen. Eine Multiplexlogik aufzubauen wäre auch eine gute Idee, die aber eben zusätzliche Hardware erfordert. Diese würde ich aber als nächstes testen. Viele Grüße Marcel
Karl heinz Buchegger schrieb: > Das müsste man ausprobieren. Marcel Sz schrieb: > ein erster Versuch ... Dann ist bei Ausprobieren und einem Versuch nur bewiesen, dass es genau zu diesem Zeitpunkt funktioniert hat. Ich würde nicht versuchen das auszuprobieren, sondern erst mal die SCLK-Frequenz beim Speichern messen... :-o Und die max. Updaterate von Pin zu Pin lässt sich anhand der Maschinenzyklen berechnen...
Erstmal vielen Dank für die Anregungen. Ich möchte die "SPI durch ATMega" Diskussion nicht abbrechen, aber eine MUX bzw. Umschalt- Lösung ist für meine Verhältnisse die einfachere Lösung.
Andi S. schrieb: > Ich möchte die "SPI durch ATMega" Diskussion nicht abbrechen, aber eine > MUX bzw. Umschalt- Lösung ist für meine Verhältnisse die einfachere > Lösung. Das schon, aber Du bist Dir darüber im Klaren, daß Dein außerhalb der Kamera untergebrachter µC nur lesend auf die Speicherkarte zugreifen darf?
@ Karl heinz Buchegger > Vielleicht mit der Problembeschreibung noch weiter ausholen, damit man > sich das zu lösende Problem noch besser vorstellen kann. Bei diesem Projekt handelt es sich um das AVR-Webmodul von Ulrich Radig. Das ist für eine Kamera vorgesehen, an die nicht mehr dran zu kommen ist. Es wäre toll, wenn man über die Kartenlösung Kameratyp unabhängig werden könnte. @Rufus t. Firefly >daß Dein außerhalb der Kamera untergebrachter µC nur lesend auf die Speicherkarte >zugreifen darf? Nein, ist mir nicht klar. Warum sollte das so sein?
Andi S. schrieb: > Nein, ist mir nicht klar. Warum sollte das so sein? Weil evtl. die FAT oder Teile davon lokal in der Kamera gespeichert werden? Und wenn du die dann extern änderst, passt das nicht mehr so richtig zusammen...
Um das zu vermeiden schalte ich die Kamera ein und aus. Dann sollte eigentlich alles auf die Karte übertragen werden (meiner naiven Vorstellung nach). Schließlich kann ich die Karte ja auch aus der Kamera heraus holen und z.B. in einem Kartenlesegerät weiter verwenden.
Andi S. schrieb: > Um das zu vermeiden schalte ich die Kamera ein und aus. Dann sollte > eigentlich alles auf die Karte übertragen werden (meiner naiven > Vorstellung nach). Schließlich kann ich die Karte ja auch aus der Kamera > heraus holen und z.B. in einem Kartenlesegerät weiter verwenden. Wenn Du so vorgehst, sollte es das Problem nicht geben. Würdest Du die Kamera jedoch nicht abschalten bzw. den Kartenslot-Kontakt* betätigen, dann bestünde die Gefahr, daß das Dateisystem durcheinanderkommt. Eine alternative Vorgehensweise übrigens bestünde darin, die Kamera per USB anzusteuern, das geht z.B. mit einem USB-Host wie dem Vinculum. Vorteil wäre hier, daß Du dich nicht um das Abschalten der Kamera kümmern müsstest, und daß Du auch nicht an das Kameramodell und die Art der Speicherkarte gebunden bist. Einzige Voraussetzung ist, daß die Kamera das "Mass Storage Device"-Protokoll unterstützt, aber das tut so gut wie jede Kamera. *) Viele Kameras werten entweder den Kontakt im SD-Kartenslot aus, oder nutzen einen Taster, der beim Öffnen des Deckels vor dem SD-Kartenfach betätigt wird.
Rufus t. Firefly schrieb: > Einzige Voraussetzung ist, daß die > Kamera das "Mass Storage Device"-Protokoll unterstützt, aber das tut so > gut wie jede Kamera. Jepp, aber je nach Kamera musst Du an der Kamera dann noch bestätigen oder sogar auswählen wie die Kamera sich verhalten soll.
U.R. Schmitt schrieb: > Jepp, aber je nach Kamera musst Du an der Kamera dann noch bestätigen > oder sogar auswählen wie die Kamera sich verhalten soll. Nun, die kann man dann natürlich in die Kategorie "unbrauchbar" einsortieren, ebenso wie die, die kein "Mass Storage Device" sind. Glücklicherweise ist mir so eine Kamera noch nicht untergekommen (bis auf meine erste Digitalkamera, aber die hatte noch nicht einmal einen USB-Anschluss, sondern eine serielle(!) Schnittstelle).
Nichts für ungut, aber USB Host ist für meine Anwendung wie mit Kanonen auf Spatzen geschossen. Alleine das Vinculum Modul kostet wahrscheinlich mehr als der Webserver (von der Programmierarbeit mal ganz abgesehen).
Rufus t. Firefly schrieb: > Glücklicherweise ist mir so eine Kamera noch nicht untergekommen Meine Ein Jahr alte Olympus Spiegelreflex bietet mir 3 oder 4 Optionen, wie sie sich am USB verhalten soll. Aber vieleicht könnte man ja im Setup irgendwo einen Default eintragen.
Meine alpha100 macht solange der USB angeschlossen ist keine Bilder. frank
Lothar Miller schrieb: > Karl heinz Buchegger schrieb: >> Das müsste man ausprobieren. > Marcel Sz schrieb: >> ein erster Versuch ... > Dann ist bei Ausprobieren und einem Versuch nur bewiesen, dass es genau > zu diesem Zeitpunkt funktioniert hat. Ich würde nicht versuchen das > auszuprobieren, sondern erst mal die SCLK-Frequenz beim Speichern > messen... :-o > > Und die max. Updaterate von Pin zu Pin lässt sich anhand der > Maschinenzyklen berechnen... Hallo! Sicher kann man das erst einmal nachmessen und ausrechnen. Aber dann ist auch nur ausgemssen, wie schnell diese Kamera mit dieser Speicherkarte kommuniziert. Interessant ist in diesem Zusammenhang eher, was die Spezifikationen hergeben. Sprich: Wie langsam darf die Kommunikation zu einer SD-Card überhaupt werden? Und jetzt kann man sich ausrechnen, obs mit dem ATMegaXX überhaupt gehen kann. Viele Grüße Marcel
>Sprich: Wie langsam darf die Kommunikation zu >einer SD-Card überhaupt werden? Das ist beliebig. Bei SPI jedenfalls. Ich wüsste nicht das es da Timeouts gibt.
Andi S. schrieb: > Sorry, aber ich muss das wohl etwas genauer beschreiben. > Der erste µC ist ein ATMega, den ich natürlich frei programmieren kann. > An den zweiten µC komme ich nicht ran, da sich dieser in einer Kamera > befindet. Dazu stecke stecke ich einfach eine Dummy-SD Karte mit Kabel > in den SD-Karten Schacht. Mit dem ATMega schalte ich die Kamera ein, > löse sie aus, warte bis das Bild auf die Karte geschrieben ist und > Möchte dann wieder mit dem ATMega auf die Karte zugreifen. > Deshalb greifen zwei µC auf eine Karte zu, deren SCK, MOSI und MISO > Leitungen nicht einfach verbunden werden können sondern umgeschaltet > werden müssen. Stop! Das geht so nicht! Um die SD-Karte per SPI benutzen zu können, musst Du die Karte vom MMC-Modus in den SPI-Modus schalten. Aus dem SPI-Modus kommt die Karte nur wieder über ein Poweroff-Poweron wieder heraus. Dann gibts da nur den 4-Bit Modus. Das heißt: Du brauchst einen Controller mit einem kompletten MCI-Interface (CLK, CMD, DAT0-DAT3) mit allen Features. Umschalten musst Du dann mit Analogschaltern, zumindest die vier Datenleitungen, weil die bidirektional sind. Analog Devices hat solche Teile. fchk
holger schrieb: >>Sprich: Wie langsam darf die Kommunikation zu >>einer SD-Card überhaupt werden? > > Das ist beliebig. Bei SPI jedenfalls. > Ich wüsste nicht das es da Timeouts gibt. Hallo! Ja, ich habe gerade auch mal genauer nachgelesen. Die SD-Karten können wohl von "0" bis 25MHz getaktet werden. Da allerdings der Host, in diesem Fall die Kamera, den Takt vorgibt (der sich irgendwo im Bereich von 0-25Mhz bewegt), muss man nachmessen. Streng genommen müsste die externe Schaltung allerdings bis 25Mhz mitmachen können, damit sie kompatibel zu verschiedenen Kameras bleibt. Da würde ich dann wohl auch Abstand von der "Durchreichemethode" nehmen :-) Hier mal ein Link: http://elm-chan.org/docs/mmc/mmc_e.html
@ Frank K. > Um die SD-Karte per SPI benutzen zu können, musst Du die Karte vom > MMC-Modus in den SPI-Modus schalten. Sehr guter Einwand. Das sollte man nicht vernachlässigen. Dadurch wird das Ganze wesentlich aufwendiger als geplant :-(
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.