www.mikrocontroller.net

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


Autor: Herbert K. (avr-herbi)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Herbert K. (avr-herbi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Herbert K. (avr-herbi)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na schreib halt mal an den "Hersteller" der Lib...

Autor: Herbert K. (avr-herbi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

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

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Herbert K. (avr-herbi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Herbert K. (avr-herbi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Herbert K. (avr-herbi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.