SD Karte mit 2 Mikrokontrollern auslesen

OP #6412227
Lesenswert?

Hallo zusammen,
ich habe mal eine Frage und finde darauf nicht so recht eine Antwort. 
Ich würde gerne eine SD Karte mit 2 mC auslesenen (nacheinander 
natürlich) und wollte fragen, ob ich dafür einfach alle Datenleitungen 
von beiden mC auf die SD Karte legen kann, oder ob es dann zu Problemen 
kommt. Ich würde natürlich den Lese Vorgang so setzen, dass sich beide 
mC nicht in die Quere kommen, aber trotzdem würde der eine mC die Pins 
des anderen mC mit Spannung beschalten.
Hat so etwas jemand schonmal gemacht und kann mir da weiterhelfen?
Danke schonmal!
Moderator (Firma: Titel) Persönliche Seite #6412281
Lesenswert?

Kevin M. schrieb:
> Die Datenleitungen sind meine ich alle open drain
Sicher nicht, denn "Open Irgendwas" taugt nur für grauenhaft langsame 
Signale. Denn der "inaktive" Pegel muss mit Pullwiderständen erreicht 
werden.

> die Clock Leitung aber nicht soweit ich informiert bin.
Die Clock-Leitung geht ja zum Glück nur vom µC zur SD-Karte. Wenn da 
also der eine µC die Finger weglässt, darf der andere schalten und 
walten wie er will.

Jumper M. schrieb:
> würde natürlich den Lese Vorgang so setzen, dass sich beide mC nicht
> in die Quere kommen
Dafür sollten natürlich die Pins des inaktiven µC hochohmig geschaltet 
werden.

> aber trotzdem würde der eine mC die Pins des
> anderen mC mit Spannung beschalten.
Aber hoffentlich nicht, ohne dass der jeweils "Andere" ohne 
Versorgungsspannung wäre.
Gast #6412299
Lesenswert?

Jumper M. schrieb:
> Danke schonmal!
> ich habe leider an dem Atmega 328P nicht so viele SPI Schnitstellen
> dran, daher wollte ich das über eine regeln. Und ich verwende NUR SPI
> und keinen SD-Bus.

Du benötigst an und für sich auch nicht mehrere SPI-Schnittstellen, 
falls Du  das im SPI-Bus übliche Chip-Select-Signal verwendest.
SD-Speicherkarten und AVRs haben ein CS-Signal.
Gast #6412303
Lesenswert?

An Stelle irgendwelcher Multiplexer würde ich lieben einen Euro für 
einen zusätzlichen µC investieren, der die Verwaltung der Karte 
übernimmt.

Dieser kann über eine beliebige Schnittstelle angesprochen werden und 
enthält die Dateiverwaltung der Karte, die so auch nicht doppelt 
vorhanden sein muss.
#6412378
Lesenswert?

Jumper M. schrieb:
> ich habe mal eine Frage und finde darauf nicht so recht eine Antwort.
> Ich würde gerne eine SD Karte mit 2 mC auslesenen (nacheinander
> natürlich)

Das halte ich für ein zweifelhaftes Konzept. Sieh zu, daß nur ein 
Mikrocontroller auf die SD-Karte zugreifen muss. Und warum überhaupt 2 
Controller? Machst du SOOOOO viel, daß das einer nicht schafft? Meistens 
liegt das eher am schlechten Konzept bzw. der schlechten Umsetzung als 
an der verfügbaren CPU-Leistung.

> und wollte fragen, ob ich dafür einfach alle Datenleitungen
> von beiden mC auf die SD Karte legen kann, oder ob es dann zu Problemen
> kommt. Ich würde natürlich den Lese Vorgang so setzen, dass sich beide
> mC nicht in die Quere kommen, aber trotzdem würde der eine mC die Pins
> des anderen mC mit Spannung beschalten.

Wenn man mit SPI arbeitet kann man das schon machen, allerdings muss der 
inaktive Controller ALLE SPI-IOs deaktiveren und auf Tristate bzw. 
Eingang schalten.

> Hat so etwas jemand schonmal gemacht

Ich nicht. Siehe oben.
(Firma: Vescomp) #6412382
Lesenswert?

Jumper M. schrieb:
> Ich würde gerne eine SD Karte mit 2 mC auslesenen (nacheinander
> natürlich) und wollte fragen, ob ich dafür einfach alle Datenleitungen
> von beiden mC auf die SD Karte legen kann, oder ob es dann zu Problemen
> kommt. Ich würde natürlich den Lese Vorgang so setzen, dass sich beide
> mC nicht in die Quere kommen, aber trotzdem würde der eine mC die Pins
> des anderen mC mit Spannung beschalten.

 Beim Reset oder Coldstart sind alle Pins inputs, von daher hast du
 keine Probleme, also die SPI-Pins (MISO, MOSI, SCK, SS) ruhig parallel
 schalten. SS und PortB.1 bei beiden miteinander verbinden und Pullup
 einschalten.
 Wenn einer von beiden uC SD-Karte auslesen will, prüft er zuerst PB.1,
 falls auf Log.1, prüft er danach SS und falls beide auf Log.1 sind,
 setzt er PB.1 als Ausgang und schaltet diesen auf Log.0.
 Falls aber einer von beiden Pins auf Log.0 ist bedeutet das, daß der
 andere uC schon die SD-Karte benutzt, also warten...

 Setzt natürlich voraus, daß die SPI-Schnitstelle nach beenden des
 Lese- oder Schreibvorgangs als erstes wieder deaktiviert wird, alle
 SPI-Pins wieder als Eingänge definiert werden und erst danach PB.1
 als Input mit Pullup gesetzt wird.

 P.S.
 Allerdings ist der Vorschlag von pegel:
 Beitrag "Re: SD Karte mit 2 Mikrokontrollern auslesen"
 weitaus besser und vorallem sicherer und codesparender.

 Oder, wie Falk vorgeschlagen hat:
 Beitrag "Re: SD Karte mit 2 Mikrokontrollern auslesen"
 lass einen uC die ganze Arbeit mit SD-Karte machen...
Moderator (Firma: Titel) Persönliche Seite #6413070
Lesenswert?

Anita H. schrieb:
> Wie wäre es wenn man den CS-Pin nicht nur setzt, sondern vorher abfrägt
> ob er auch schon gesetzt wurde?
Was, wenn beide µC diese Abfrage gleichzeitig machen?
Und zudem ist der CS-Pin ja nicht dauerhaft aktiv, sondern kann 
während eines Filetranfsers und/oder eines Kommandos auch mal wieder 
inaktiv werden. Und dann wirds interessant, wenn mittendrin der "Andere" 
mit seinem Zugriff anfängt.

Dieses "Aushandeln", welchem der beiden Delinquenten denn jetzt auf die 
Karte "gehört", muss auf einem anderen Weg erfolgen. Stupides "Mithören" 
auf der CS-Leitung wird da sicher nicht reichen.

Wolfgang schrieb:
> "Finger weglassen" heißt dann aber wirklich High-Z und nicht einfach
> ruhig sein.
Ja, so war das gemeint...  ;-)
Sonst gibts die klassische Buskollision mit undefinierten Pegeln und 
überraschenden Auswirkungen.

oszi40 schrieb:
> Weiterhin wäre zu klären was DER ANDERE überhaupt dort darf. Auf den
> gleichen Speicher schreiben kann auch "viel Spaß" zur Folge haben?
Das muss nicht mal das Schreiben auf den gleichen Speicher sein. Es 
reicht schon aus, wenn einer der beiden µC die gesamte oder auch nur 
Teile der FAT in seinem Speicher cached und der andere dann die FAT auf 
der Karte ändert. Mit ganz wenig Aufwand lassen sich da beliebige 
eigenartige, urige Effekte erzielen.

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