Forum: Mikrocontroller und Digitale Elektronik SD/MMC-Karte reagiert nicht


von Lukas (Gast)


Lesenswert?

hallo,
ich versuche jetzt schon seit 4 tagen, eine SD bzw. MMC-Karte mit dem 
ATMega32 zu verbinden. Der Rest des Projekts (PS/2, LCD, FT232) läuft 
einwandfrei, nur die Karte verweigert jede Zusammenarbeit. Ich habe es 
mit den Librarys von Ulrich Radig, Roland Riegel, Captain usw. probiert, 
kein Erfolg. Der Chip lief anfangs auf +5V, die SD-Karte war über 1,8k 
und 3,3k Spannungsteiler angeschlossen, MISO direkt. Die +3.3V über 
dioden. kein erfolg. Daraufhin habe ich den VCC der SD-Karte mit zwei 
Mono-Akkus verbunden, natürlich den AUCH auf GND gelegt. auch kein 
erfolg. anschließend habe ich die ganze schaltung bis auf die versorgung 
des LCD auf 3v gelegt, auch den atmega. auch kein erfolg. getestet hab 
ich das ganze mit einer 16 MB mmc, einer 512 MB SD, einer 2 GB SD und 
einer 2 GB MicroSD + Adapter. Nix geht. Manchmal sagt er "Karte 
verbunden", aber dann nix mehr. das liegt vermutlich an einem 
kurzschluss von MISO mit GND.
Frage 1:
Gehören bei 3V auf allen Anschlüssen Pullup-, Pulldown- oder gar keine 
Widerstände hin? wenn ja, welche stärke? ich hab mit 1k getestet.
Frage 2:
Was kann ich tun, um es zum Laufen zu bringen?
Ich bräuchte die Schaltung noch diese Woche, deshalb frage ich hier.
Zum Rumprobieren fehlt mir leider die zeit.
Danke im voraus,
Lukas

von Olaf (Gast)


Lesenswert?

> ich versuche jetzt schon seit 4 tagen, eine SD bzw. MMC-Karte mit dem
> ATMega32 zu verbinden.

Nur 4Tage? Ein bisschen wenig. Frag doch nochmal nach 4Wochen 
rumprockeln. :-)

> Ich habe es mit den Librarys von Ulrich Radig, Roland Riegel,
> Captain usw. probiert, kein Erfolg.

Und der Libarie von Lucas? Kann doch nicht jeder ohne Eigeninitiative 
geboren sein.

> Der Chip lief anfangs auf +5V, die SD-Karte war über 1,8k
> und 3,3k Spannungsteiler angeschlossen,

Schlecht. Das vermindert die Flankensteilheit der Signale. Ich koennte 
mir vorstellen das dies insbesondere bei modernen schnellen SD-Karten zu 
Problemen fuehrt. Ich will auch nicht ausschliessen das man es damit 
hinbekommen kann aber wenn man Probleme hat dann sorgt man erstmal fuer 
einen vernuenftigen Pegelwandler. Zum Beispiel 74LVX125.

> Die +3.3V über dioden. kein erfolg.

Das ist ein Witz oder? Was glaubst du wie sich deine selbstgebaute 
Spannungsquelle verhaelt wenn ihre Last sehr gering ist weil die 
Speicherkarte gerade inaktiv ist und was die Karte wohl zu der 
Ueberspannung sagt?

> Manchmal sagt er "Karte
> verbunden", aber dann nix mehr. das liegt vermutlich an einem
> kurzschluss von MISO mit GND.

Dann musst du dich beim Debuggen stueckweise durch durch den Source 
kaempfen bis du die Stelle gefunden hast wo es zu einer Fehlermeldung 
kommt.

> Gehören bei 3V auf allen Anschlüssen Pullup-, Pulldown- oder gar keine
> Widerstände hin? wenn ja, welche stärke? ich hab mit 1k getestet.

Pullup sind ueblich. Gebraucht werden die im inaktiven Zustand wenn dein 
Controller nicht mit der Karte redet. 47k sollten reichen. 1k wuerden 
bei anderen Leuten mit richtigen Pegelconverter auch gehen, aber wenn du 
nur einen popeligen Spannungsteiler  in derselben Groessenordnung hast, 
was glaubst du wohl macht der 1k dann mit deinen Signalpegeln? .-)

> Was kann ich tun, um es zum Laufen zu bringen?

Grundlagen Etechnik lernen und etwas mehr debuggen. Es kann z.B nicht 
schaden mal seinen Oszi an den die Signalleitungen zu haengen. Und wenn 
man noch ein armer beduerftiger Schueler ist dann schaltet man den 
SPI-Takt auf 1kHz runter und haengt seine Soundkarte dran.

> Ich bräuchte die Schaltung noch diese Woche, deshalb frage ich hier.
> Zum Rumprobieren fehlt mir leider die zeit.

Dann ist es am einfachsten du holst dir ein Angebot von einem 
Ingenieurbuero ein. Koennte aber auch schon knapp werden.

Olaf

von XMEGA (Gast)


Lesenswert?

Servus,

versuch es mal hier: Beitrag "MMC SD library FAT16 FAT32 read write"

Der Code ist einfach, aber er funktioniert tadellos!

Stimmt die Anbindung an den Karten-Slot? Da kann man schon mal einen 
Fehler machen.
3,3 Volt wären  zum Experimentieren  besser. Besorg dir zB. einen
3,3 Volt  Atmega644 und teste die Karte ohne zusätzlicher Hardware.
Sollte alles funktionieren, kannst du das mal mit der 5 Volt Geschichte 
probieren und die anderen Komponenten dazu fügen.

Gruß XMEGA

von Lukas (Gast)


Lesenswert?

>> Gehören bei 3V auf allen Anschlüssen Pullup-, Pulldown- oder gar keine
>> Widerstände hin? wenn ja, welche stärke? ich hab mit 1k getestet.
>
> Pullup sind ueblich. Gebraucht werden die im inaktiven Zustand wenn dein
> Controller nicht mit der Karte redet. 47k sollten reichen. 1k wuerden
> bei anderen Leuten mit richtigen Pegelconverter auch gehen, aber wenn du
> nur einen popeligen Spannungsteiler  in derselben Groessenordnung hast,
> was glaubst du wohl macht der 1k dann mit deinen Signalpegeln? .-)

die pullup bzw. -downs hab ich verhendet, als der chip auf 3V lag. 
deshalb hab ich gar keine spannungsteiler verwendet. der low-drop-regler 
auf 3.3V kommt bald, bis dahin habe ich die Monos benutzt.

> Und wenn man noch ein armer beduerftiger Schueler ist

triffts genau ;-)

> Stimmt die Anbindung an den Karten-Slot? Da kann man schon mal einen
> Fehler machen.

sollte stimmen. ich hab den widerstand mit eimen digitalmultimeter 
durchgemessen. kurz hatte ich mal nen kurzschluss zwischen gnd und vcc. 
hab mich schon gefragt warum der 5V regler so heiß ist...

Bei mir hat der ATMega32 mit 3V tadellos funktioniert (LCD, ISP ...)

von Lukas (Gast)


Lesenswert?

> Und der Libarie von Lucas? Kann doch nicht jeder ohne Eigeninitiative
> geboren sein.

eine eigene Library wäre nicht so stabil wie erprobte und 
vielverwendete. so kann ich mir sicher sein dass der fehler nicht im 
programm liegt.

von Olaf (Gast)


Lesenswert?

> eine eigene Library wäre nicht so stabil wie erprobte und
> vielverwendete. so kann ich mir sicher sein dass der fehler nicht im
> programm liegt.

Man kann einige dumme Fehler nicht machen, da stimme ich zu. Aber man 
kann halt auch ein paar dumme Fehler nie finden weil man immer alles als 
gegeben annimmt.

Du solltes dir zumindest bis auf Commandoebene genau klar sein was da 
ablaeuft. Und dann hilft leider nur noch Oszi oder eben notfalls eine 
Soundkarte. Notfalls musst du mal jedes Bit einzeln im Singlestep 
raustakten und mit einem Multimeter schauen ob wenigsten da die Pegel 
richtig sind. Oder haeng mal eine Low-Current-LED an die jeweiligen 
Leitungen und schau mal ob sie brauchbar blinken.

Und achte auf kurze Kabel. Kein 30cm FLachbandkabel quer ueber den 
Basteltisch!

Olaf

von Thomas M. (thomaswm)


Lesenswert?

Code von anderen einfach übernehmen ist Mist.

Ich habs folgendermaßen gmacht und innerhalb von 4 Tagen hinbekommen:

- myAVR LPT Board mit ATmega8 (5V)
- Ulrich Radigs minimaler Versuchsaufbau auf Steckbrett
(ja, das mit den Dioden)
- 2 alte MMCs (16 und 32MB)
- "Floppy-Adapter"

http://www.uni-koblenz.de/~physik/informatik/ECC/sd.pdf
lesen und VERSTEHEN!

- eigenes Programm schreiben und mit Radigs Code vergleichen
- damit auch den Code von Radig verstehen
- und schliesslich auch das Ansprechen der Karte verstehen

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.