mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SD Karte - Programm


Autor: Richi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich verzweifle jetzt wirklich noch...

Will Daten auf eine SD-Karte schreiben und es will einfach nicht 
klappen.
Zuerst habe ich es mit Spannungsteilern und Dioden an der SD-Karte 
probiert - ging nicht. Jetzt hab ich mir bei Reichelt nen Pegelwandler 
(74HC4050) und nen anständigen Spannungswandler gekauft, angeschlossen, 
ewig herumprobiert - geht immer noch nicht.
Habs jetzt mit Pull-Up Wiederständen versucht, geht allerdings auch 
nicht.

Jetzt wollte ich wissen, ob mir jemand einen Code geben könnte, der 
wirklich 100%ig funktioniert, damit zumindest ich mal einen 
Softwarefehler ausschließen kann.
Oder weiß irgendjemand, woran es sonst noch liegen könnte?

(Benutze Atmega32 - Fat wird nicht unbedingt benötigt)


Gruß
Richi

Autor: gast2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die forumsuche ist dein freund ;)

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Oder weiß irgendjemand, woran es sonst noch liegen könnte?

Am Code oder an der Hardware. Könnte auch beides sein.
Was benutzt du denn so?

>Zuerst habe ich es mit Spannungsteilern und Dioden an der SD-Karte
>probiert - ging nicht.

Dann ist sie vieleicht schon kaputt?

Autor: Richi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ gast2: Hab jetzt ja schon so vieles probiert und binn nicht weiter 
gekommen.


@ holger:

Ich benutze den Atmega32 (5V) mit Software-SPI. Die 3 Output-Leitungen 
lasse ich über den 74HC4050 laufen, die Output-Leitung Direkt.
Bei der Direkt-Verbindung hatte ich schon Zweifel, habs aber überprüft, 
da dürfte nicht der Fehler liegen. Alle Leitungen sind mit 
PullUp-Wiederständen versehen (10k). Die Spannungsversorgung erfolgt mit 
3,3V aus einem Spannungsregler.

holger schrieb:
> Dann ist sie vieleicht schon kaputt?


mit dem PC kann ich die Karte lesen/schreiben


Zur Software habe ich Ulrich Radigs Quellcode probiert, allerdings 
scheitere ich dort anscheinend immer bei CMD1.
In
http://www.uni-koblenz.de/~physik/informatik/ECC/sd.pdf
steht aber, dass CMD1 nur für MMCs gültig ist, also habe ich den Code 
ein wenig abgewandelt, dass die Karte über ACMD41 initialisiert wird.

Deshalb wollte ich auch einen Code, der zu 100% funktioniert.

Autor: gast2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
richi... das glaub ich dir...

was ich damit meine ist such nach sd-karte und schau in den artikel da 
gibts ein source von microchip (mdd) in c dort in sd-spi.c -> 
MDD_SDSPI_MediaInitialize.
das funktioniert. jedoch nur mit normalen sd karten. die sdhc anpassung 
musste ich selbst einbauen... ist aber schon bisschen her... cmd41 ist 
meines wissens nur fuer sdhc karten... die initialisierung und 
adressierung der bloecke ist bei diesen karten ist anders...

ansonsten http://elm-chan.org/docs/mmc/mmc_e.html da steht auch noch 
bisschen was.

sofern du sdhc karten benutzt. vielleicht kann deine karte kein spi 
modus mehr. hab ich div. male gelesen das das teilweise weggelassen 
wird. aber bisher ging jede sdhc karte bei mir mit spi.

um sicher zu gehen nimm mal ne normale 1gb sd karte. die ist auf jeden 
fall nicht sdhc. ob das klappt.

Autor: Richi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wo genau hast du den code gefunden.
habe ihn ehrlich gesagt in der Suche nicht gefunden.

Autor: Richi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
???

Autor: gast1 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
moin,

sorry hab dein post nicht gesehen...

anbei findest du ein paar sourcen von mdd. ich weiss nich ob das alle 
sind aber egal... der spi source mit der initialisierung sollte dabei 
sein..

ich hatte im netz auch ein wesendlich besseren source gefunden... ich 
weiss aber leider nicht mehr wo der ist :/

vielleicht hilft der ja schon... viel glueck ;)

lg ;)

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
>da dürfte nicht der Fehler liegen. Alle Leitungen sind mit
>PullUp-Wiederständen versehen (10k)
"Do" der SD ist meist sehr hochohmig, 10K sind da viel zu viel.
Versuche mal aktiv von 3,3V_SDO->µC_In. Daran bin ich mal fast 
verzweifelt weil die SD-Flanke so ab 2,5V abgerundet wird.

Viel Erfolg, Uwe

Autor: Richi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Uwe

Direktverbindung geht nicht.
Habs jetzt die Widerstände auf 4,7k reduziert, geholfen hats nicht viel.

Autor: Gebhard Raich (geb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du mal die Signale an der SD Karte mit einem Oszi gemessen? Ist im 
Regelfall das einzige was einen Aufschluß über solch ein Problem gibt.

Grüße

Autor: Richi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab jetzt das Problem gefunden.
Wahrscheinlich wahren es Fehlende Abblockkondensatoren.
Jetzt gehts auf jeden Fall.

Danke an alle!


Viele Grüße
Richi

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.