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
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.
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!
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.
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
>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.
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."
>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.
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.
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
> 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.
> 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.
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. ;)
>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.
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
@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. ;)
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