Forum: Mikrocontroller und Digitale Elektronik Schon wieder: SD-Card ansteuern


von keiner (Gast)


Lesenswert?

Hallo

Ich weiß, das Thema gab es schon hundert mal, aber ich komm einfach
nicht weiter.
Ich möchte eine SD-Karte  mit Daten über einen Avr beschreiben und
wieder lesen. Ein Datensystem ist also nicht nötig. Ich habe auch schon
enige Datenblätter gelesen, in denen war aber immer nur von
Schriftbefehlen die Rede, nie von Binärcodes. Das zweite Problem ist,
dass ich mit dem ISP Interface noch keine Erfahrung habe.

Wo soll ich anfangen?

Vielen Dank für eure Hilfe!

von Ulrich (Gast)


Lesenswert?

mit einem Taster und einer LED ==>
http://www.mikrocontroller.net/tutorial/

von keiner (Gast)


Lesenswert?

Sorry,
aber an dem Punkt bin ich schon vorbei

von Sven D. (breaky)


Lesenswert?

Hast Du mit dem ISP oder mit dem SPI ein Problem?

von keiner (Gast)


Lesenswert?

mit SPI

von Hannes L. (hannes)


Lesenswert?

Und was konkret ist (bei SPI) Dein Problem?

...

von keiner (Gast)


Lesenswert?

ich bräuchte enfach mal eine adresse die das spi grundlegend erklärt,
auf dieer seite steht nur dass es kein genormtes protokoll gibt,
deshalb habe ich keine idee wie ich die sd-Karte ansteuern kann, also
wie die speiceradresse und die daten, was senden zum initialisieren

von Olaf (Gast)


Lesenswert?

SPI ist einfach nur eine syncrone (es gibt eine eigene Taktleitung)
serielle Uebertragung. Damit waer eigentlich alles gesagt.

Mit etwas Ueberlegung solltest du dahinterkommen das es verschiedene
Moeglichkeiten gibt etwas so zu uebertragen. Naemlich mit steigender
Flanke, fallender Flanke, unterschiedlichen Ruhepegel. Highbit zuerst,
oder Lowbit zuerst, verschieden schnellen Takt, usw.

Jetzt liesst du also das Datenblatt einer SD oder MMC Karte durch damit
du weisst wie sie es gerne haette, danach das Datenblatt deines
Prozessors und dann stellst du dort ein was du brauchst.

Und wenn du glaubst das waer jetzt schwer, dann fange lieber mal damit
an das du erstmal nur ein Schieberegister an die SPI Leitungen
anschliesst bevor du mit einer Speicherkarte ankommst.

Olaf

von Sven Der Schreckliche (Gast)


Lesenswert?

@olaf
wow...das war ein kräftiger Schlag...

von Hannes L. (hannes)


Lesenswert?

> wow...das war ein kräftiger Schlag...

Nein, war es nicht. Der vorgeschlagene Weg ist schon der Richtige...

Immer einen Schritt nach dem Anderen.

...

von keiner (Gast)


Lesenswert?

ich finde die Idee auch nicht so schlecht, weil ich ja eher Anfänger
bin. Das blöde ist nur, dass ich kein richtiges Experimentier Board
habe und jede schaltung löten muss. Aber mein Problem ist eigentlich,
das ich gar keine angaben finde, was ich wirklich senden muss. Ich lese
immer nur zur initialisierung cmd1 (oder so ähnlich) senden usw.. Kann
aber im Datenblatt nicht entdecken welche Folge von einsen und nullen
ich senden muss.

Villeicht bin ich auch nur zu blind, oder vestehe ich irgentetwas
falsch?

von keiner (Gast)


Lesenswert?

sorry für den doppelten Beitrag, ich habe ausversehen auf aktualisieren
dedrückt auf der Seite auf der steht: "ihr beitrag wurde gesendet"

von Andy (Gast)


Lesenswert?

welche Erfahrungen hast du den mit µCs?

von Hannes L. (hannes)


Lesenswert?

> Aber mein Problem ist eigentlich,
> das ich gar keine angaben finde, was ich wirklich senden muss. Ich
> lese
> immer nur zur initialisierung cmd1 (oder so ähnlich) senden usw..
> Kann
> aber im Datenblatt nicht entdecken welche Folge von einsen und
> nullen
> ich senden muss.

Also die Kommandos heißen so wie ihre Bitmuster. Für CMD1 schickst Du
eine (dezimale) 1, für CMD16 eine 16. Wo ist das Problem?

...

von Martin Thomas (Gast)


Lesenswert?

Es gibt (mindestens) zwei Moeglichkeiten: man will sich alles ganz genau
"von null" selbst erarbeiten oder man schaut, wie es andere schonmal
gemacht haben und versucht es nachzuvollziehen und daraus zu lernen
oder einfach nur zu nutzen. ("Von null" ist meiner Meinung
Zeitverschwendung, aber hier nicht der richtig Platz dies
ausdiskutieren.)

Es gibt viele fertige Ansteuerfunktionen fuer MMC und SD-Karten an AVR
SPI, manchmal etwas versteckt in Dateisystem-Bibliotheken, aber die
Low-Level-Funktionen braucht man dort auch (und den Rest kann man
weglassen).

Google-Futter fuer den Anfang:
- embedded filesystem library efsl (Dateien sd.c/atmega128.c)
- elm-chan ffat (mmc.c im AVR "sample")
- Holger Klabunde
- Ulrich Radig

Dazu noch das SanDisk SD Product Manual (die aelteren Versionen sind
recht ausfuehrlich, google findet) als Referenz zum nachlesen.

Martin Thomas

von keiner (Gast)


Lesenswert?

danke für die Info mit dem cmd, jetzt erscheint mir das ganze schon viel
logischer. Mit Cmd konnte ich einfach nichts anfangen. Ich binn leider
kein c Programierer, aber die mmc.c von Ulrich Radig kann man doch
theoretisch in jedes Programm einbauen und die darin definierten
Funktionen verwenden, dann würde ich nähmlich zum Anfang dieses Modul
verwenden.

von Hannes L. (hannes)


Lesenswert?

Ich bin auch kein C-Programmierer und werde es vermutlich auch nie
werden. Ich schreibe meine Programme in Assembler. Und ich nutze nur
Code, den ich selbst auch verstehe und den ich meist (wenige Ausnahmen)
selbst geschrieben habe. Das (unverstandene) Benutzen fremden Codes mag
ich nicht.

Man muss das Rad zwar nicht immer neu erfinden, aber es ist schon ganz
gut, wenn man seine Funktion versteht.

...

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
Noch kein Account? Hier anmelden.