Liebe Mit-Bastler, ich habe eine SD-Karte per SPI an einen AVR Mega8 angeschlossen, funktioniert auch, bis auf diesen Effekt: In meiner Lösung ist es ab und zu notwendig, die SD-Karte neu zu initialisieren. Dazu verwende ich immer die gleiche Routine (Dummy Clocks senden, Chip select auf Low, CMD0 senden und Ergebnis abfragen). Das funktioniert nach Übertragung des Programms auf den Chip so für ca. 5 Sekunden, und zwar egal wie oft ich CMD0 sende - danach aber nicht mehr, d.h. nach 5-10 Sekunden erhalte ich von der Karte keine Antwort mehr, nur noch "FF". Es müßte doch egal sein, wie lange die Karte schon in Betrieb ist und was vorher passiert ist, wenn ich CMD0 sende? Spannungspegel sind alle in Ordnung.. grübel Auch sonst ist der Protokollaufwand nicht unerheblich, und es stört mich in meinem Programm etwas, daß ich nach 512 Byte immer warten und zwischenpuffern muß.. Gibt es denn eine gute Alternative zur SD-Karte (so 32MB reichen mir, per SPI)?
lach habe es selbst herausgefunden - es gab einige schlechte Verbindungen in meiner Freiluft-Verdrahtung. Einmal ordentlich neu aufgebaut - und schon geht es .. Was lehrt mich dies? lieber gleich ordentlich bauen.. da bekomme ich jetzt mit 25 cm Leitung zwischen Controller und Karte einen SPI-Takt von über 7 MHz problemlos übertragen.. (ATMEGA8 mit 14,7 MHz Quarz, Spi-Clock = AVR-Takt/2). Jetzt gefällt mir die SD-Karte auch wieder viel besser :-)
hallo, kannst du deine sourcecode mal reinstellen. ich habe schon einen aus dem forum hier, der läuft aber nicht. kriege meien karte nicht in gang. mfg karlheinz
ICh hab nichts Neues anzubieten, was nicht hier im Forum schon stehen würde bzw. auch unter http://www.cc5x.de/MMC oder http://www.ulrichradig.de (auf beiden Seiten gibt es funktionierende Quelltextbeispiele)
ich habe auch einen avr-8 16. könntest du deinen code mal reinstellen. ich tue mich beim umsetzen des anderen code für den avr8 sehr schwer. wäre sehr hilfreich von dir. ich hatte das projekt eine zeit auf halde gelegt, weil ich schon frust hatte, es läuft einfach nicht. dein artikel hat mir wieder hoffnung gemacht für meinem avr8. werde mir den anderen quarz noch kaufen müssen. mfg karlheinz
Hallo papa_of_t, schön das es wieder läuft. Nur als Hinweis: Die offiziell einzig garantierte Methode um einen reset bei der SD/MMC Karte durchzuführen ist schalten der Power supply. D.h. wenn sich die Karte mal aufhängt oder sonst nicht korrekt arbeitet hast du sonst keine andere Wahl. => Jeder SD-Karten Sockel braucht eine schaltbare Power Supply (zumindest für Serien-Geräte bzw. mehr ambitionierte Bastlerprojekte)
der Quarz ist egal, SPI ist nicht zeitkritisch, es ginge sogar ohne Quarz. Mein Programm ist in Basic (BasCom) geschrieben - der Initialisierungsteil siehe Anlage. Ich hoffe, es hilft Dir beim Portieren.
hallo, ich habe dein ersten teil in fastavrbasic umgesetzt. wie kann ich jetzt die 512byte schreiben und lesen in basic. danke mfg karlheinz
dafür gibt es spezielle Kommandos (CMD17, CMD24 zum Beispiel) - welche Du verwenden willst, hängt von Deinem Zweck ab. Schau in die o.g. Codebeispiele an (da wird demonstriert, wie man Daten liest und schreibt), bau sie nach und vor allem: Lies das Datenblatt für SD-Karten, da ist sehr genau beschrieben, was man tun muß. Funktioniert denn die Initialisierung mit FastAVRBasic? Viel Spaß beim Basteln!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.