Suche einfache SD-Bibliothek für atmega8

Gast #798768
Lesenswert?

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 ;)
Gast #798853
Lesenswert?

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.
#798858
Lesenswert?

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.
Gast #799110
Lesenswert?

> 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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren