mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit SD-Karte


Autor: Andreas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, und schonwider eine SD-Karte........Sorry, aber ich komm nicht 
weiter.
Ich habe mir ein Board wie im Anhang gebaut, und wollte nun die SD-Karte 
Testen. Die Anschlüße sind nur auf Stifftleisten gezohgen, die wie bei 
dem STK-500 über brücken mit dem AVR-Port verbunden werden. Benutzt wird 
ein Mega644 mit 3,3V und 16 Mhz. Ich habe die Lib von Ulrich Radig 
genommen und habe folgendes Problem. Es wird manchmal angezeigt, das die 
Karte gefunden wurde, obwohl noch garkeine im Slot steckt. Das passiert 
aber nicht immer. Wenn eine Karte im Slot steckt, wird sie nicht sicher 
oder garnicht , weil er ja auch eine findet, wenn keine drinn ist. 
Hättet Ihr einen ansatz wo der fehler liegen könnte ?

Danke !!!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>weil er ja auch eine findet, wenn keine drinn ist

Mach einen Pullup an den Ausgang der Karte.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An "DO" ?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe auch gelesen, das ein Pullup an CS sollte. Ist das richtig ?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist auf jeden Fall nicht verkehrt, u.a. auch damit die SD Karte dem 
ISP nicht in die Quere kommt wenn sich diese die SPI Schnittstelle 
teilen.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, danke. Werde ich mal ranlöten..........

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat leider nix gebracht, spielt immernoch verrückt.................

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Clever wären auch noch 100nF direkt an der Versorgung der Karte.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin am verzweifeln, auch der C in der versorgung der SD-Karte 
brachte keine verbesserung..........................

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hätte bitte jemand ein file für mich, das nur die SD-Karte 
initiallisiert, damit ich das mal richtig testen kann ? Wäre echt 
super!!!

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Library sollte doch alles drin sein...

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, ich habe nun je einen 10K pullup am CS,DO und CLK , 2X100nF an der 
versorgung, und es spinnt immernoch. Ist mein Code überhaupt richtig ???
P.S. ist mein erster ............

#include <avr/io.h>
#include <stdlib.h>
#include <util/delay.h>
#include "lcd.h"
#include "mmc.h"
#include "fat.h"
#include "usart.h"


int main()
{
     usart_init(9600);
     lcd_init(LCD_DISP_ON);


   while ( mmc_init() !=0)
    {
    lcd_clrscr();
    lcd_puts("Keine Karte!!");
    }


   lcd_clrscr();
   lcd_puts("Karte gefunden!!");



   while(1);


   return 0;


}

Autor: Oje (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht solltest du dir erst mal ein Buch über C-Programmierung 
zulegen...

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ist es komplett falsch???

Autor: Peter F. (piet)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas schrieb:
> Also ist es komplett falsch???

Sagen wir es mal so, es ist alles andere als richtig...

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wo habe ich denn einen Fehler gemacht ?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ist das ein "normaler" Mega 644? Im Datenblatt ist eine Grafik, die die 
maximale Frequenz bezogen auf die Versorgungsspannung darstellt. Ganz 
genau genommen dürftest du bei 3,3V mit max. 13MHz takten... Ich halte 
es für eher unwahrscheinlich, dass das dein Problem ist, aber du 
solltest vielleicht mal einen Test mit einer kleineren Taktfrequenz 
machen um sicher zu gehen.

Viele Grüße

Autor: Oje (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wo habe ich denn einen Fehler gemacht ?

Dein gepostetes Programm macht folgendes:

USART wird initialisiert
LCD wird initialisiert

bis hierher ist noch alles OK

Dann startest du eine Endlosschleife, die erst dann abgebrochen wird, 
wenn die Funktion mmc_init eine "0" zurückliefert. Solange diese 
Schleife läuft, wird tausende male pro Sekunde das Display gelöscht und 
gleich danach wieder mit "Keine Karte!!" wieder beschrieben. Ist das 
sinnvoll?

Der Hauptfehler kommt aber erst danach:

Wenn die Funktion mmc_init das erste mal eine 0 liefert, die Schleife 
also verlassen wird, schreibst du ein einziges mal "Karte gefunden!!" 
ins Display. Gleich danach kommt mit while(1); eine Endlosschleife, die 
nie mehr verlassen wird, dein µC hängt sich auf und macht gar nichts 
mehr.

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja den µC "aufhängen" mach ich bei tests genauso... entweder er darf 
noch mit einer LED blinken um zu zeigen, daß er "am ende" ist oder eben 
einfach einfrieren wenn das programm durchlaufen ist.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte ja auch erst nur wissen, ob die sd-karte erkannt und die ini 
ok ist. Ich beckomme aber auch ein "Karte gefunden", obwohl keine karte 
eingesteckt ist........

Autor: Chris H. (wuselwutz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vor einiger Zeit hatte ich ein ähnliches Problem. Dabei ging es darum, 
die SD-Karte sektorenweise auszulesen und als PWM Audio abzuspielen. 
Manchmal tat das Ding, was es sollte und nach irgendeiner 
Softwareänderung (an einer ganz anderen Stelle) plötzlich nicht mehr. 
Nach stundenlangem suchen bin ich dann darauf gekommen, mal dem GCC auf 
den Zahn zu fühlen. Mit -O0 bis -O3 lief es, mit -Os nicht. Ich habe 
dann nicht weiter hinterfragt, was dahinter steckt sondern einfach die 
mmc-Library mit -O3 und den Rest mit -Os kompiliert und gut war.

Gruß
Chris

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie compeliere ich denn einzelne libs unterschiedlich ? So gut kenn ich 
mich noch nicht mit AVR-Studio aus......

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wie compeliere ich denn einzelne libs unterschiedlich ? So gut kenn ich
>mich noch nicht mit AVR-Studio aus......

Brauchst du nicht zu machen.

>Ich möchte ja auch erst nur wissen, ob die sd-karte erkannt und die ini
>ok ist. Ich beckomme aber auch ein "Karte gefunden", obwohl keine karte
>eingesteckt ist........

Das dürfte ein Software oder Hardwareproblem sein.

Wenn an MISO ein Pullup hängt und keine Karte drin ist,
dann bekommst du immer 0xFF über SPI. Klares Zeichen
für keine Karte drin.

Autor: Chris H. (wuselwutz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Komipliere doch einfach mal das ganze Projekt mit anderen 
Optimierungseinstellungen. Nur um zu sehen, ob's hilft...

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Komipliere doch einfach mal das ganze Projekt mit anderen
>Optimierungseinstellungen. Nur um zu sehen, ob's hilft...

Bringt nichts.

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist 16 Mhz bei 3,3V nicht etwas viel für den 644? Laut Datenblatt ist 
das außerhalb der Spezifikation.

Hast Du die Möglichkeit es mit einem kleineren Quarz zu testen (evtl. 
auch dem internen Quarz)?

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.