Hi, ich möchte mit der Libery von mikro-control http://www.mikro-control.de/Joomla/index.php?option=com_weblinks&catid=20&Itemid=29 einen Datenlogger bauen. Zuvor hatte ich die Ulrich - Radig Libery verwendet. das funtionierte auch ganz gut. Mein Problem ist, dass diese halt nur lesen unterstützt. Karte wurde erkannt und funktionierte. Jetzt möchte ich die oben erwähnte verwenden. Das in der Doku steht beschreiben, dass der low-level- Treiber angepasst werden muss. Die Libery verwendet Hadware SPI. (ich verwende einen AtMega16 bzw. 32) Die Anpassung funktioniert eingentlich auch schon über Präprozessoranweisungen:
1 | #if defined (__AVR_ATmega16__)
|
2 | #define SPI_DI 6 //Port Pin an dem Data Output der MMC/SD-Karte angeschlossen ist
|
3 | #define SPI_DO 5 //Port Pin an dem Data Input der MMC/SD-Karte angeschlossen ist
|
4 | #define SPI_Clock 7 //Port Pin an dem die Clock der MMC/SD-Karte angeschlossen ist (clk)
|
5 | #define MMC_Chip_Select 3 //Port Pin an dem Chip Select der MMC/SD-Karte angeschlossen ist
|
6 | #define SPI_SS 4 //Nicht Benutz muß aber definiert werden
|
7 | #endif
|
das hab ich nachkontrolliert und passt soweit (stimmt auch mit ulrich radig libery zusammen) Das Programm hängt am ersten Kartenzugriff:
1 | for (b=0;b<0x0f;b++) // sending 74Clocks brings the sdcard into spimode. |
2 | {
|
3 | _delay_us(1); // wait at least 1us between the characters. |
4 | SSC_PutChar(0xff); |
5 | }
|
6 | |
7 | |
8 | while(SDC_PutCommand (CMD) !=1) // Sending CMD0 (Reset) to the sdcard. |
9 | {
|
10 | if (Timeout++ > 200) |
11 | {
|
12 | return(1); |
13 | }
|
14 | }
|
An was könnte das liegen? Hat jemand schon mal diese Libery verwendet? mfg J.K