2 µC an eine SD-Karte

OP #1827735
Lesenswert?

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
Moderator (Firma: Titel) Persönliche Seite #1827766
Lesenswert?

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.
OP #1827886
Lesenswert?

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.
Moderator (Firma: Titel) Persönliche Seite #1827905
Lesenswert?

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...
#1827920
Lesenswert?

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
Moderator (Firma: Titel) Persönliche Seite #1827968
Lesenswert?

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?
#1827991
Lesenswert?

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.
Moderator (Firma: Titel) Persönliche Seite #1828018
Lesenswert?

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   ;-)
#1828021
Lesenswert?

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
Moderator (Firma: Titel) Persönliche Seite #1828025
Lesenswert?

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...
OP #1828128
Lesenswert?

@ 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?
Persönliche Seite #1828218
Lesenswert?

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.
Persönliche Seite #1828258
Lesenswert?

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).
#1828641
Lesenswert?

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
#1828694
Lesenswert?

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
#1828698
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren