Forum: Mikrocontroller und Digitale Elektronik SPI Verzicht bei microSD - Herstellerabhängig ?


von Herbert K. (avr-herbi)


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

von Herbert K. (avr-herbi)


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.

von Herbert K. (avr-herbi)


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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Na schreib halt mal an den "Hersteller" der Lib...

von Herbert K. (avr-herbi)


Lesenswert?

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.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Klappt es nicht einfach den Pin nachträglich auf Ausgang zu 
programmieren?

von Simon K. (simon) Benutzerseite


Lesenswert?

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).

von Herbert K. (avr-herbi)


Lesenswert?

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.

von Simon K. (simon) Benutzerseite


Lesenswert?

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.

von Herbert K. (avr-herbi)


Lesenswert?

mikroe hat den Bug bestätigt und auch noch 2 weitere, die ich gefunden 
habe. Soll demnächst ein neues Release 2.5 geben.

von Herbert K. (avr-herbi)


Lesenswert?

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
Noch kein Account? Hier anmelden.