Moinmoin,
ich versuche seit geraumer Zeit eine SD-Karte mithilfe von FatFS und dem
angepassten AVR-Sample anzusteuern.
Hier erstmal die Checkliste aus dem Wiki: (
http://www.mikrocontroller.net/articles/MMC-_und_SD-Karten )
☑ andere SD-Karte probiert
☑ Taktfrequenz klein genug (57,xx kHz, mit Oszilloskop an CLK
nachgemessen)
☐ Pullup im AVR ist an, ich probier nachher mal nen richtigen, externen
aus (übliche Pull-Up-Größe ist okay, oder? so 3-10 K?)
☑ 3.3 V für das gesamte System kommt aus einem LDO, schwingt nicht, kein
Ripple
☑ SPI ist sauber angeschlossen, die Leitungen sind sogar mehr oder
weniger gleich lang (Und auf CLK und MOSI sehe ich auch "Bewegung")
☐ SS ist auf Low festgenagelt, ich brauche keine anderen Devices (aber
ich werde gleich mal probieren es erst vor der Initialisierung auf low
zu ziehen, vll. liegt da das Problem) -- kann das wirklich das Problem
sein? "Mögen" es SD-Karten nicht die ganze Zeit angesprochen zu sein?
☑ Deselektion wird nicht passieren
☑ Karte ist in einem richtigen SD-Kartenslot
disk_initialize() schlägt fehl mit STA_NOINIT, also habe ich mir,
nachdem ich geschaut habe, ob CLK und MOSI funzen (s.o.), MISO
angeschaut und festgestellt, dass da einfach gar nix passiert. Null.
Nada. Nix. Hängt permanent auf 3.3 V...
Bin jetzt ein bisschen ratlos und probier das erstmal mit einem externen
Pullup an MISO aus, auch wenn ich nicht so ganz glaube, dass das was
bringt. Der im AVR mag zwar relativ hochohmig sein, aber die Leitung
hochziehen schafft der ja offensichtlich und so ganz vorstellen, warum
es dann Probleme deswegen gibt, kann ich mir nicht. Naja. Mal schauen.
Deswegen vermute ich eher, dass es an SS liegt. Auch wenn das in meinen
Ohren nicht so ganz logisch klingt, oder muss ich etwa bei SS auf low
mehr oder weniger sofort Anfangen auch Daten durchzuschieben?
Random Daten die mir zu meinem Aufbau gerade noch einfallen:
-Controller ist ein ATmega328P
-Frequenz kommt aus einem Quarz (7,3728 MHz, schwingt stabil)
-Alles wird mit 3.3 V betrieben