SPI Verzicht bei microSD - Herstellerabhängig ?

OP #1758648
Lesenswert?

Hallo,
hat jemand schon microSD Karten an AVR im SPI Mode erfolgreich 
eingesetzt?

Ich bekomme leider immer nur die Meldung, das keine Karte gefunden wird.
Folgenden Artikel habe ich gefunden.

Beitrag "Re: microSD Pinbelegung"

"Es soll auch microSD-Karten geben die keine SPI-Schnittstelle haben:
http://en.wikipedia.org/wiki/Secure_Digital_card#T...
...All memory cards must support all three modes, except for microSD
where SPI is optional...."

An Hardware habe ich einen ATmega32 (3,3V) mit 16 MHz, CS liegt auf P.D5 
mit ext. Pullup 10 K gegen VCC (3,3V) der microSD. Direkt am Adapter 
habe ich 100nF zwischen VCC+GND als Block C gelötet. Ob der 
Programmieradapter gesteckt ist oder nicht - das Ergebnis ändert sich 
nicht.

Die microSD hat 2 GB und ist mit FAT formatiert und steckt in so einem 
Adapter microSD auf SD. Die microSD selbst funktioniert über baugleichen 
Adapter am PC und in einer Digital Camera.
Ich benutze eine fertige LIB, wo ich die Sourcen dazu leider nicht sehen 
kann.

Zurück zu SPI: Kann es sein, das es verschiedene Hersteller / Modelle 
gibt von den microSD Cards, so das die einen SPI haben, andere nicht?

Danke schon mal für konstruktive Antworten. Viele Grüße Herbert
OP #1760515
Lesenswert?

Traurig mal wieder festzustellen, das so ein Fehler an einer nicht 
vernüftig getesteten Hersteller LIB liegt.

Wenn ich den /CS für die LIB auf einen unbenutzten PIN lege (sonst 
funktioniert die Hersteller LIB nicht) und den echten /CS selbst vor und 
hinter den Routinen setze funktioniert es bisher.
OP #1760738
Lesenswert?

Habe mal im LST File des Compilers geschaut und siehe da, tatsächlich 
ein Fehler in der LIB. Die Schalten den als /CS definierten PIN als 
Eingang (!!!). /CS wird als Signal dann in Folge richtig gesetzt, kommt 
aber nie Außen an, da ja Eingang. Super! Gilt zumindest wenn man für /CS 
Port "D5" oder "A3" benutzt.

Mikroelektronika mikroPascal PRO for AVR V 2.10 LIB vom 10.11.2009 ca. 
11 Uhr
falls jemand ähnliche Probleme hat. (gewählter Prozessor ATmega32, 16 
MHz)

so ist es falsch:
;__lib_mmc.mpas,182 ::
0x459A  0x002191B0    LDS        R27, Mmc_Chip_Select_Direction+0
0x459E  0x7FB7      CBR        R27, 8
0x45A0  0x002193B0    STS        Mmc_Chip_Select_Direction+0, R27

so wäre es richtig:
SBR        R27, 8

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