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
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.
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
Na schreib halt mal an den "Hersteller" der Lib...
Habe ich bereits mikroe mitgeteilt. Mal sehen, was da für eine Reaktion kommt. Workarount: /CS aus der LIB auf einen unbenutzen PIN legen (oder dauerenden Eingang oder ähnlich) und eigenen /CS vor und hinter die MMC Routinen programmieren. Klappt bei mir jedenfalls erstmal so.
Klappt es nicht einfach den Pin nachträglich auf Ausgang zu programmieren?
Oder eine andere Bibliothek nehmen ;-) Gibt da ein, zwei Stück (hier bei mikrocontroller.net) die schon öfter gebugfixt wurden und deswegen eine gute Chance auf Fehlerfreiheit haben (Holger Klabunde, Roland Riegel fällt mir da ein).
Hallo lieber Simon K., mit den LIBs für C kann ich in Pascal nicht viel anfangen. Trotzdem Danke und einen sonnigen Tag noch. @Läubi: Ist sicher auch eine Möglichkeit. Danke für den Hinweis. Auch Dir einen sonnigen Tag noch.
Herbert K. schrieb: > Hallo lieber Simon K., > mit den LIBs für C kann ich in Pascal nicht viel anfangen. > Trotzdem Danke und einen sonnigen Tag noch. Das habe ich glatt übersehen. Ist ja nicht so üblich, Pascal auf AVR.
mikroe hat den Bug bestätigt und auch noch 2 weitere, die ich gefunden habe. Soll demnächst ein neues Release 2.5 geben.
Falls jemand "mikroBasic für AVR" verwendet, der BUG ist dort auch drin. Eine LIB mit Bugfix ist verfügbar von mikroe seit 29.6.2010 für mikroBasic für AVR und mikroPascal für AVR.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.