PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vorhandene Schaltung mit SD Karte erweitern



MYTSS
31.10.2009, 10:32
Ich habe im Internet folgende Schaltung gefunden.

http://www.mikrocontroller.net/wikifiles/8/88/VNC_Stromlaufplan.png

Ist es möglich an diesem Versuchsaufbau/ dieser Schaltung noch eine SD
Karte anzusprechen ? Würde gerne Datein auf der SD Karte mit denen auf
dem USB Stick vergleichen.

Bin noch Anfänger ^^.

Habe mich schon belesen nur ist mein Problem das die SD Karte und der
USB Controller ja beide zB. MISO und MOSI benötigen.

Gibts nen Trick ?

Danke im Vorraus

recycle
31.10.2009, 11:47
Ist es möglich an diesem Versuchsaufbau/ dieser Schaltung noch eine SD
Karte anzusprechen ? Würde gerne Datein auf der SD Karte mit denen auf
dem USB Stick vergleichen.

Ich kenne die Schaltung bzw. das Gerät nicht, aber generell ist es möglich eine SD Karte mit einem Microcontroller zu lesen und schreiben.



Habe mich schon belesen nur ist mein Problem das die SD Karte und der
USB Controller ja beide zB. MISO und MOSI benötigen.

Wenn es wirklich nur mit diesen Pins geht, sollte es theoretisch möglich sein, die Pins über eine Art Umschalter zwischen SD Karte und USB Stick hi- und herzuschalten. Natürlich nicht von Hand, sondern über einen anderen Pin des Controllers.

Ob das ganze Vorhaben überhaupt sinnvoll ist, dürfte aber auch davon abhängen, was für Daten, bzw. Datemmengen du vergleichen willst.

Ein µC wird die Daten bei weitem nicht so schnelle lesen und schreiben können wie du es vom PC gewohnt bist.Er hat auch nicht so viel Speicher wie ein PC, wird also immer nur kleine Datenblöcke vergleichen können.

Um xGB an Daten zu vergleichen dürfte das alles etwas langsam werden.
Ausserdem könnte ich mir vorstellen, dass es Probleme mit den Dateisystemen gibt.
Um die Größe von heuteigen USB-Sticks und SD-Karten zu nutzen, werden die meist mit FAT32 oder NTFS formatiert.
Die Projekte die ich bisher zu Microcontroller + SD-Karte gesehen habe, arbeiteten meistens mit nur mit FAT.

PICture
31.10.2009, 13:30
Hallo!

Wenn es nur um Vergleich von Daten geht, wäre es wahrscheinlich am einfachstem auf einem PC mit Kartenleser gehen, wie der recycle schon angedeutet hat. Eigene Erweiterung der vorhandener Schaltung ist theoretisch möglich, aber praktisch sehr kompliziert.

MfG

recycle
31.10.2009, 14:02
Wenn es nur um Vergleich von Daten geht, wäre es wahrscheinlich am einfachstem auf einem PC mit Kartenleser gehen

Stimmt. Den bekommst du mit 60 Euro bei Pollin vermutlich sogar billiger als die die Karte mit dem USB-Port und Microcontroller:

http://www.pollin.de/shop/dt/MTAwOTkyOTk-/Computer_und_Zubehoer/Hardware/Komplett_Systeme/Desktop_PC_Fujitsu_Siemens_ESPRIMO_E5600.html

PICture
31.10.2009, 14:21
Ich habe mir zuletzt bei Pollin einen Card-Reader (Best.Nr.: 721443) für 3,95 € gekauft, obwohl ich schon genug Taschenrechner habe... :)

MfG

recycle
31.10.2009, 14:35
Ich habe mir zuletzt bei Pollin einen Card-Reader (Best.Nr.: 721443) für 3,95 € gekauft, obwohl ich schon genug Taschenrechner habe...

Ich habe mir im Frühjahr ein Netbook gekauft, weil mein alter Cardreader die neuen Karten > 2GB nicht unterstützt hat. Von dem Windows-Taschenrechner der da drauf ist, hatte ich allerdings auch schon genug ;-)

MYTSS
31.10.2009, 15:33
Also ich hab nen PC und auch genug Cardreader ^^

Es geht darum es eben nicht am PC zu machen !!

Die idee mit dem Umschalten klingt gut ^^

Nur wie löse ich das Schaltungstechnisch ?

Kann ja nicht einfach den USB und SD parrallel an den Mik. anschließen.

recycle
31.10.2009, 17:28
Es geht darum es eben nicht am PC zu machen !!

Dass du das nicht manuell an deinem PC machen willst, war eigentlich klar.
Die Frage ist halt nur, wofür du es brauchst.
Wenn es nicht nur ums basteln geht und das Dingen die Daten zuverlässig und schnell vergleichen können soll, könnte es ja trotzdem Sinn machen PC-Technik dafür zu verwenden. Damit könnte man ja trotzdem eine Lösung basteln, die die Daten automatisch vergleicht.
Gibt ja inzwischen schon für ab 50€ recht kleine sparsame Mainboards mit Atom und vergleichbaren Prozessoren.

Du hast leider noch nicht gesagt, welche Datenmengen du vergleichen willst.
Der Controller in dem Schaltplan ist mit 11 MHz getaktet.
Selbst die kleinsten gängigen USB-Sticks und SD-Karten haben sind heute 1 GByte = 8G Bit gross.
Du müsstest beide lesen, USB und SD-karten werden soweit ich weiss seriell gelesen.

D.h. ein µC der maximal 11 Mio einfache Operationen pro Sekunde durchführen kann, soll 16000 Mio bits + Protokoll-Overhead lesen und vergleichen.

Alleine aus dem Verhältnis 16000 / 11 ergeben sich schon 1454 Sekunden.
Tatsächlich wird das selbst bei sehr guter Programmierung wohl eher eine Aktion für mehrere Stunden werden.



Nur wie löse ich das Schaltungstechnisch ?

Im Prinzip mit einem elektronischen Relais. Ich vermute mal für deinen Anwendungsfall nennen die Teile sich nur etwas anders. Du brauchst ja keine Lasten zu schlaten, dafür darf es dann aber gerne etwas schneller sein.
Ein Umschlater wäre schöner, zur Not sollten aber auch jeweils zwei Schalter funktionien, z.B. so was wie der 74HC/HCT4066.



Kann ja nicht einfach den USB und SD parrallel an den Mik. anschließen.

Klar, damit ist dann sichergestellt, dass dein Controller immer zu dem Schluss kommen, dass die Daten auf der SD-Kate und dem USB-Stick identisch sind ;-)

MYTSS
31.10.2009, 18:21
Danke das Hilft mir echt weiter !!

Im moment gehts mir nur ums basteln. Ist ein versuch für die Schule.
Ich will eigentlich nur den Inhalt von 2 Textdateien vergleichen.
Und Abweichungen sollen eben auf dem Display ausgegeben werden.

wenn du mir ein Beispiel geben könntest wie der CMOS geschaltet wird, dann hätte sich mein problem gelöst ^^

nflatjor555
31.10.2009, 19:06
Hi MYTSS,

meiner Meinung nach sollte es schon gehen das USB-Interface und dem SD-card an den gleichen Pins zu betreiben.
Der SPI-bus (http://de.wikipedia.org/wiki/Serial_Peripheral_Interface), den sowohl das USB-Interface als auch das SD-Card benutzen, hat insgesamt 4 Pins: SDI, SDO, SCL und CS.

CS bedeutet "Chip Select", der Teilnehmer dessen CS aktiviert ist, kommunisiert dann an SDI, SDO (und SCL), der andere Teilnehmer verhaelt sich passiv. Wenn also der CS vom USB-Interface aktiviert (Low?) ist, kommunisiert dein Microcontroller mit dem, wenn der CS von der SD-Karte aktiviert ist, kommunisiert der Microcontroller mit der Karte.

Du musst also SDI (MISO), SDO (MOSI) und SCL vom Microcontroller an BEIDEN Teilnehmer anschliessen, aber jeder Teilnehmer bekommt ein eigener CS, und du kannst getrennt mit USB-interface und SD-Karte ueber den gleichen Pins reden.

Pass bei der SD-Karte auf, ich meine es gibt welche die mit 5V betrieben werden muessen, und welche mit 3.3V. Da musst du ggf. einen Pegelwandler oder Spannungsteiler (2 Widerstaende) benutzen um von 5V auf 3.3V umzusetzen. Da gibt es bei mikrocontroller.net einiges was man sich anschauen kann.

Der SW-Aufwand um ein richtiges Dateisystem auf dem USB-Stick und der SD-Karte lesen zu koennen ist erheblich aber ich denke es gibt schon einiges was man sich Downloaden kann... Ist ein ordentliches Projekt fuer ein Versuch fuer die Schule, Respekt...

MYTSS
31.10.2009, 19:17
Also meinst du das ich nur cs trennen muss ? das wäre ja super ^^

ports habe ich noch genug frei ^^

Danke nochmal, den Spannungsteiler habe ich schon drin ^^.

Noch eine Frage ^^

Habe hier ein SCK SCLK und SCL

SCK = SCLK das SCL vom SPI

SCL != SCK

was ist SCL ?

CS = SS ?

nflatjor555
01.11.2009, 17:59
Hi,

du nimmst zwei verschiedene Portpins die "CS" sind:
1x CS fuer USB
1x CS fuer SD-card
Oft gibt es in den .c und .h-Dateien fuer USB oder SD-Karte
einen #define der besagt welcher Portpin in der SW als CS fuer
dieser Einheit benutzt werden soll.
Hier musst du nachschauen und ggf. anpassen.

Die Clock-pins sollten gleich sein: SCK=SCLK=SCL
Man kann halt "Serial Clock" unterschiedlich abkuerzen...

CS=SS, ja (Chip Select, System Select)