Forum: Mikrocontroller und Digitale Elektronik Wie fange ich am besten an (SD Karte am AVR mit FAT betreiben)


von Wiedereinsteiger (Gast)


Lesenswert?

Ein respektvolles "Hallo" an alle die Leute hier im Forum, über deren 
Beiträge und Projekte ich mich nun in die Verwendung von SD-Karten am 
AVR eingearbeitet habe.

Über das "GPS-Logger" Projekt nach Holger Klabunde und die 
Standard-Anwendungen von Ulrich Radig habe ich mir nun so viel 
angelesen, das die Programmierung einer SD-Karte am AVR klappen sollte.

Was ich aber nicht auf die Reihe kriege:

Aus eBay habe ich mir ein günstiges STK500 besorgt. Außerdem habe ich 
von meinem Sohn, der in der Schule am myAVR mit dem Mega8 in die Welt 
der µC eingeführt wird, dessen myAVR Board mal näher angeschaut.

Seit den Artikeln über die günstigen Boards von Pollin habe ich auch so 
ein Funk Board hier liegen.

Also die Basishardware ist da.

Weil ich ja die Pegel für die SD-Karten anpassen muß von 5 Volt auf 3,3 
Volt für die Spannung an der SD-Karte und auch die Pegel an der SD nur 
3,3 V sein dürfen, habe ich mir erst einmal die Lösung mit den 
Spannungsteilern angeschaut. Die Lösung mit dem 74Vxxx ist natürlich 
eleganter, aber den Käfer gibt es leider nur in SMD.

Soll ich mir mit der EAGLE Freeware erst einmal eine Platine mit 
Pegelwandler entwerfen und von den Schülern in der Schule, wo mein Sohn 
ist, ätzen lassen und dann loslegen oder einfach einen Drahtverhau an 
einen SD-Karten Halter löten und damit starten ???

Helft mir mal für den Einstieg, das Thema FAT auf SD am kleinen AVR ist 
einfach zu interessant für mich, als das ich mir da viele Rückschläge 
wegen Hardwaremängeln einhandeln will.

Danke euch schon einmal für ein "Getting Started".

Ach ja: Ich habe Radio Fernsehtechniker gelernt, zu einer Zeit, als 
Radios und Fernseher noch auf dem Tisch mit Oszi und Multimeter 
Repariert wurden und nicht durch Modultausch.

Der Wiedereinsteiger

von Hmm... (Gast)


Lesenswert?

Im STK500 kann man doch, wenn ich nicht irre, die Betriebsspannung für 
den Controller einstellen, oder? Wenn dein AVR mit 3.3V läuft, kannst 
die SD-Karte direkt anschliessen, da er dann passende Pegel an seinen 
Pins hat.

von Hmm... (Gast)


Lesenswert?

Achja, nochwas...der Atmega8 könnte für dein Vorhaben schon etwas Arg 
knapp bemessen sein.

Besorg dir besser mal einen größeren Controller, z.B. der ATmega16 hat 
doppelt soviel Flash. Wär doch schade wenn dein SD-Karten-Lib deinen 
ganzen Speicher belegt und nix mehr für deine Anwendung bleibt,oder? ;)

Und mit dem ATmega32 kannst du da durch das größere SRAM noch einige 
"Spielereien" wie FAT-Puffer usw. aktivieren, dadurch schonst du bei 
vielen Schreibzugriffen deine SD-Karte und um einiges fixer wird die 
Arbeit mit der Karte auch.

Viel Erfolg!

von senex24 (Gast)


Lesenswert?

Der Sohn verwendet den ATmega8, der Vater scheint noch unentschlossen - 
dann empfehle ich gleich den ATmega644 mit 4 kB SRAM für ca. 5 EUR.
Der 'Drahtverhau' wird bei durchgängig 3.3 V nicht so wild, und man 
bleibt flexibel.

von Wiedereinsteiger (Gast)


Lesenswert?

Der Vater hat schon bei der Bestellung der Widerstände und der anderen 
Sachen bei Reichelt einen ATmega 32 (3,3 V Version), einen ATmega16 
(Auch die 3,3 V taugliche Version) sowie 2 ATmega644 gekauft. Daran 
liegt es nicht.

Es ist nur so, das ich hier bei fast jedem Thread zum Thema SD-Karte am 
ATmega lese, das es Probleme gibt, wenn man mit hohen Taktraten arbeitet 
und z.B. nur die Radig Widerstand-Version benutzt. Fast jede erste 
Antwort beginnt mit: ... Wie hast Du Deine SD-Karte an den Controller 
angeschlossen ?

Das ich mit FAT Buffer nur in größeren Mega arbeiten kann steht sehr 
ausführlich auf den Seiten von Holger Klabunde.

Die Ulrich Radig Version ist einfacher, macht aber zur Bedingung, das 
ich meine SD-Karte nur mit einer einzigen Datei beschreiben kann. (Die 
muß dann vorher sogar achon auf der Karte sein.)

Ich werde dann mal die 2 alten SD-Karten (128 MB Karten) aus den 
Digitalkameras rauspulen und an die SD-Kartensockel die Spannungsteiler 
anlöten.

Außerdem werde ich noch einmal ganz gründlich die Anleitung zum STK500 
durchlesen müssen, weil mit 3,3 V als Vtarget der ISP über RS232 (Alter 
Dell inspiron3800 Lappy ist mit Win98 als Entwicklungssystem da dran) 
nicht mehr klappt. Erst bei Vtarget ab 4,5 V kann ich wieder mit dem 
Controller kommunizieren.

Der Wiedereinsteiger

von senex24 (Gast)


Lesenswert?

Ich kenne Ihre Ansprüche nicht - ich kam mit Widerständen problemlos auf 
5 MHz, und das reichte mir für den Anfang.

von holger (Gast)


Lesenswert?

>Ich kenne Ihre Ansprüche nicht - ich kam mit Widerständen problemlos auf
>5 MHz, und das reichte mir für den Anfang.

Ist schon ein bisschen merkwürdig das immer nur die
Jungs mit den Spannungsteilern hier rumjammern!
Von denen die es richtig machen hört man kaum was.

Spannungsteiler kann funktionieren, muss aber nicht.
Das hängt auch extrem von den verwendeten Karten ab.

Also entweder Pegelkonverter oder gleich uC auch
mit 3,3V laufen lassen. Das macht am wenigsten Ärger.
Bei 3,3V kann man dann aber nicht mehr Vollgas geben
weil der uC nur mit niedrigerer Taktfrequenz laufen
kann. Was man verwendet hängt als auch davon ab
wie schnell das ganze sein soll. Wobei sich das wieder
relativiert wenn man sich die Busy Zeiten von so manch
einer SD/MMC anschaut.

von senex24 (Gast)


Lesenswert?

an Holger

Spannungsteiler funktioniert immer; man muss nur einen Kompromiss 
schließen bezüglich des Taktes. Und um schnell, einfach und ohne Aufwand 
zu ersten Erfahrungen und Resultaten zu kommen, kann das der richtige 
Weg sein.

"The pursuit of excellence is gratifying and healthy. The pursuit of 
perfection is frustrating, neurotic and a terrible waste of time."

von holger (Gast)


Lesenswert?

>Spannungsteiler funktioniert immer; man muss nur einen Kompromiss
>schließen bezüglich des Taktes. Und um schnell, einfach und ohne Aufwand
>zu ersten Erfahrungen und Resultaten zu kommen, kann das der richtige
>Weg sein.

Träum weiter! Irgend ein Vollidiot hat das mit den Spannungsteilern
irgendwann mal ins Netz gestellt. Man kann SD Karten ja auch mit
Dioden als Spannungsregler betreiben. Aber geht das auch mit JEDER
Karte?

Sowohl Spannungsteiler als auch Dioden als Spannungsregler
für SD Karten sind Urban Legends. Dieser Mist sollte
aus dem Netz gelöscht werden. Bei ein paar Karten geht
das vieleicht sogar. Es geht aber nicht mit allen Karten.

Es geht manchmal, aber nicht immer. Und genau aus diesem
Grund ist es für Anfänger absolut ungeeignet.
Anfänger brauchen eine stabile Basis.

von Rudolph R. (rudolph)


Lesenswert?

Das mit den Spannungsteilern funktioniert am SPI schon, wenn man es denn 
nicht ganz so blöd anstellt.

Was ist denn erstmal für Euch langsam?

Ich betreibe ein DOGM-128 Display an einem 90CAN32 ohne jedes Problem 
bei den Signalen mit 8 MHz, wobei mein SLCK und MOSI erst über einen 0R0 
in 0603 und dann noch über eine Steckverbindung gehen, bevor dann auf 
der Display-Adapter-Platine die Spannungsteiler sitzen.
Das sind Widerstände in 0805, 4k7 in Reihe, 6k8 gegen GND.
Das Display läuft auf 3,0V.

Die Anstiegs-Zeit liegt bei etwa 15 ns.
Das sollte auch bei 15 MHz noch laufen, dafür müsste ich den 90CAN32 
aber auch mit 30 MHz Takten...


Wenn man das in einem Frickel-Aufbau mit bedrahteten Teilen und 20 cm 
Leitung am SD-Sockel macht, sieht die Sache halt anders aus.


Edit:
>Man kann SD Karten ja auch mit Dioden als Spannungsregler betreiben.
>Aber geht das auch mit JEDER Karte?

Die Frage war ja wohl eher rethorisch gemeint aber was soll's.
Dioden funktionieren garnicht mit SD-Karten da deren Durchlass-Spannung 
vom Strom abhängig ist und die Stromaufnahme der Karten zwischen ein 
paar µA in Ruhe und etwa maximal 100mA beim Schreiben liegt.
Also verletzt man ziemlich sicher eine der Spannungs-Grenzen.

von Erik Lins (Gast)


Lesenswert?

Hallo Wiedereinsteiger,

falls eine Fertiglösung in Betracht kommt: 
http://www.chip45.com/Savvy128

ATmega128, SD-Karte und Pegelwandler sind drauf, dazu USB, RS232, 
Spannungsregler, etc.

Ein paar Beispielprogramme gibt's als Download.

Viele Grüße,
ER!K

--
http://www.chip45.com

von senex24 (Gast)


Lesenswert?

> Dioden funktionieren garnicht mit SD-Karten da deren Durchlass-Spannung
> vom Strom abhängig ist ...

Die LED mit einer Grundlast versehen, sagen wir 1 kOhm parallel zur 
SDCard, und schon funktioniert sogar das, und man hat gratis einen 
simplen Aktivitäts-Indikator.
Aber für unseren Rundfunk/Fernsehtechniker sind das alles sicher 
Trivialitäten.

von Rudolph R. (rudolph)


Lesenswert?

>Die LED mit einer Grundlast versehen,

Und die LED hält die 100 mA aus?

von senex24 (Gast)


Lesenswert?

> Und die LED hält die 100 mA aus?

Laut Datenblatt sollte sie - und hat es jedenfalls ausgehalten während 
der paar Tage, in denen ich die ersten Gehversuche machte.

Was ich zum Ausdruck bringen wollte: Es ist ein Unterschied, ob ich 
Samstag nachmittags im Hobbykeller vor der Bastelkiste stehe oder Montag 
morgens im Labor sitze mit einem Budget, das die Anlieferung per Kurier 
erlaubt.

Oder allgemein: ich muss abwägen, über welche Resourcen ich verfüge und 
welche Ziele ich verfolge - angesichts der vielen möglichen Varianten 
auf einem bestimmten Lösungsweg als dem einzig wahren zu beharren, zeugt 
von einer gewissen geistigen Schlichtheit.


Und über all dem scheint uns unser 'Gastgeber', der Wiedereinsteiger, 
abhanden gekommen zu sein.

von Hmm... (Gast)


Lesenswert?

Tja, ohne Oszi und mit minimaler Beschaltung fält dann dummerweise auch 
die Diagnose im Fehlerfall recht schwer.

- Läuft der Controller?
- Ist die SPI richtig initialisiert?
- Gibt es kalte Lötstellen?
- Schwingt mein Regler?
- Sind Signalflanken vielleicht verschliffen?
- ...

Einfach aufgrund der großen Zahl von schwer findbaren Fehlern bei den 
ersten Schritten sollte man sich das Leben nicht unnötig schwer machen. 
Sonst passiert es schnell das aufgrund von Frust die ersten Schritte 
auch die letzten werden. ;)

von senex24 (Gast)


Lesenswert?

>Einfach aufgrund der großen Zahl von schwer findbaren Fehlern bei den
>ersten Schritten sollte man sich das Leben nicht unnötig schwer machen.
>Sonst passiert es schnell das aufgrund von Frust die ersten Schritte
>auch die letzten werden. ;)

Wahr, wahr.
Und auch hier gilt die Frage nach der Zielsetzung: will (oder muss) ich 
möglichst schnell und einfach etwas zum Laufen bringen, oder will ich, 
auf der anderen Seite des Spektrums, mir eine breite Basis von 
Grundwissen und -fähigkeiten aneignen, wozu es dann auch gehört, mit 
einem gerüttelt Maß an Frustration umzugehen.

Letzteres scheint der ICH-ALLES-SOFORT-Generation besonders schwer zu 
fallen, aber, wie gesagt, schlussendlich eine Frage der Zielsetzung.

von Patrick W. (seennoob)


Lesenswert?

senex24 wrote:

> Letzteres scheint der ICH-ALLES-SOFORT-Generation besonders schwer zu
> fallen, aber, wie gesagt, schlussendlich eine Frage der Zielsetzung.

Wenn man sich vor augen führt was heute so auf dem Markt kommt täglich 
überschätzt man sich leicht. Man muss echt so ein Vorhaben genau 
durchdenken. Es gibt hunderte Wege zum Ziel aber jeder birgt einen 
Hplperstein. Wie oft hab ich mir schon gedacht scheiße auf das Konzept 
usw. An dem Punkt muss man sich hald einfach mit einem Fachbuch(wer 
keine Bibliothek mit solchen Büchern hat kann im inet schauen) 
zurückziehen oder jemanden Fragen wie er das anpacken würde.
Da fällt mir wieder ein einer meiner Freunde wollte mal ne SATA 
Festplatte mit einem PIC ansteuern.

MFG Patrick

von Hmm... (Gast)


Lesenswert?

@Senex:

Das ist nicht nur im Hobby-Bereich so. Oft kommen Entwickler die schnell 
etwas zusammen frickeln, was sie nicht verstanden haben, gerade in 
Firmen wo Fliessband-Arbeit vorherrscht besser an als welche die sich 
zunächst mit den Grundlagen beschäftigen.

Man kann schnell etwas vorzeigen um Kunden azulocken und wenn dann 
irgendwann das Böse erwachen kommt, wechselt man einfach den 
Frickel-Knecht. ;)

von Wiedereinsteiger (Gast)


Lesenswert?

Die Versorgungsspannung der SD-Karte habe ich nun mit einem LM317T (Lag 
hier noch so rum) gemacht.

Auch wenn es viele nicht für möglich / gut halten, ich habe erst einmal 
auf einer Lochraster den Spannungsteiler gebaut und den Mega16 auf dem 
STK 500 mit 11,0592 MHz und Quarz im Sockel des STK500 gemacht.

Ich habe dann mal mit dem Oszi die Flanken nachgeschaut (Irgendwer 
weiter oben hat das ja beschrieben, das man da nachschauen soll beim 
Spannungsteiler). Die sehen ja nach 5 cm Leitungslänge mit 10pol. 
Stecker am STK 500 suamäßig bis sinusförmig aus.

Also muß ich wohl doch nach Klabunde (Ich glaube, da war es) diese 
Adapterplatine mit den 2 74ern bauen.

Ich melde mich dann (hoffentlich) später mal mit Codefragen und 
sonstigen Problemchen mit der SD-Karte bei euch.

Der WIedereinsteiger

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.