Hallo! Hoffe ich mach hier alles richtig, ist mein erster Beitrag, wenn nicht bitte ich um Aufklärung ;) Also, ich versuche grade über einen Atmega8 eine SD-Karte anzusteuern. Die Karte ist an der IPS Schnitstelle angeschlossen. Dabei werden nur SCK, MISO, MOSI und SS verwendet, also irgendwas wie locked oder so gibs nicht! Habe dafür die eine oder andere Lib ausprobiert, aber keine war so einfach wie ich es haben wollte. Ich möchte einfach nur Blocks lesen und schreiben können. Ich will nichts mit FAT oder sonst was. Ich möchte einfach die Karte initialisieren, und dann zwei Funktionen haben um einen Block zu lesen bzw zu schreiben. Gibts da was einfaches? Ich arbeite mit WinAVR-20071221rc1. PS: Ich habe natürlich eine Schaltung zwischen µC und der Karte für das Level-Shifting. Besteht aus drei Spannungsteilern und zwei Mosfets mit zwei Pullups für die Aufwärtskonvertierung ;)
Schau mal bei Ulrich Radig vorbei. Der hat eine SD/MMC-FAT-Library geschrieben. die hilft dir sicher. Lorenz
Google nach chan fat module, auf Chans Seite die Beispiele (ffsample.zip oder ähnlich) runterladen, in den Beispielen fuer AVR findet sich eine Datei mmc.c, darin die low-level-Funktionen für SD/SDHC/MMC init, block-read, block-write. Ist recht ordenlicher Code und man muss lediglich einen "10ms-Systemtick" bereitstellen.
Lorenz .. wrote: > Schau mal bei Ulrich Radig vorbei. Der hat eine SD/MMC-FAT-Library > geschrieben. die hilft dir sicher. > Lorenz Jo, schaue ich mir grade an und versuche den reinen SD/MMC Part zu extrahieren, ist gar nicht so einfach. Andere Farge: Mach ich was falsch oder ist irgendwie jeder, der sowas schreib zu b**d C zu programmieren? Es wird dauerhaft sowas wie "for(int i=0; .." verwendet, was aber meines Wissens nach in C nicht erlaubt ist und mein Compiler hauts mir auch um die Ohren. Edit: Glaube die Lib ist nicht für einen Atmega8 geeignet, denn er meint, dass alles mögliche wie z.B. SPI_DI undefiniert sind... wenn ich in die .h schaue wird SPI_DI für einen mega32 und mega128 definiert, nicht aber für atmega8. Ganz abgesehen davon, wofür brauche ich das, wenn ich im Hardware Modus betreiben will? > ...in den Beispielen fuer AVR findet sich eine > Datei mmc.c, darin die low-level-Funktionen für SD/SDHC/MMC init, > block-read, block-write. Öhh... welche Beispiele? bei meinem WinAVR waren wohl keine dabei, zumindest kann ich im gesamten Installationsordner keine mmc.c finden.
> Andere Farge: Mach ich was falsch oder ist irgendwie jeder, der sowas > schreib zu b**d C zu programmieren? Es wird dauerhaft sowas > wie "for(int i=0; .." verwendet, was aber meines Wissens nach in C > nicht erlaubt ist und mein Compiler hauts mir auch um die Ohren. Kommt darauf an, in der C99 Spezifikation ist das erlaubt. Ein neuerer Compiler sollte das unterstützen, evtl. musst du das aber erst aktiviern. Bei gcc z.B. durch -std=c99 Siehe http://de.wikipedia.org/wiki/Varianten_der_Programmiersprache_C
Ahh cool, danke. Dann werde ich das doch glatt mal Aktivieren ;)
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.