main.c 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /*
  2. Copyright: Radig Ulrich mailto: mail@ulrichradig.de
  3. Author: Radig Ulrich
  4. Remarks:
  5. known Problems: none
  6. Version: 28.05.2004
  7. Description: Dieses Programm dient als Beispiel zur Ansteuerung einer MMC/SD-Memory-Card.
  8. Zum Zugriff auf eine MMC/SD-Karte, muß man nur die Datei mmc.c
  9. in sein eigenes Programm einfügen.
  10. */
  11. #include <stdio.h>
  12. #include <string.h>
  13. #include <avr/io.h>
  14. #include <avr/eeprom.h>
  15. #include "mmc.h"
  16. #include "fat.h"
  17. #include "usart.h"
  18. //Hauptprogramm
  19. int main (void)
  20. {
  21. //SYSCLK defined in usart.h
  22. //Initzialisierung der seriellen Schnittstelle
  23. usart_init(9600);
  24. //Initialisierung der MMC/SD-Karte
  25. usart_write("System Ready!\r\n");
  26. while ( mmc_init() !=0) //ist der Rückgabewert ungleich NULL ist ein Fehler aufgetreten
  27. {
  28. usart_write("** Keine MMC/SD Karte gefunden!! **\n");
  29. }
  30. usart_write("Karte gefunden!!\n");
  31. fat_init();//laden Cluster OFFSET und Size
  32. //Initialisierung der MMC/SD-Karte ENDE!
  33. unsigned char Buffer[512];
  34. unsigned int tmp;
  35. mmc_read_csd (Buffer);
  36. for (tmp = 0;tmp<16;tmp++)
  37. {
  38. usart_write("%x ",Buffer[tmp]);
  39. };
  40. //Ausgabe des Root Directory
  41. unsigned int Clustervar;
  42. unsigned char Dir_Attrib = 0;
  43. unsigned long Size = 0;
  44. usart_write("\r\nDirectory\r\n");
  45. for (char a = 1;a < 240;a++)
  46. {
  47. Clustervar = fat_read_dir_ent(0,a,&Size,&Dir_Attrib,Buffer);
  48. if (Clustervar == 0xffff)
  49. {
  50. break;
  51. }
  52. tmp = (Size & 0x0000FFFF);
  53. usart_write("Cluster = %4x DirA = %2x FileName = ",Clustervar,Dir_Attrib);
  54. usart_write("%s",Buffer);
  55. usart_write("\r\n");
  56. }
  57. usart_write("\r\nDirectory Ende\r\n");
  58. //Lade Cluster für das index.htm File in den Speicher
  59. Clustervar = 0;//suche im Root Verzeichnis
  60. if (fat_search_file((unsigned char *)"mmc.txt",&Clustervar,&Size,&Dir_Attrib,Buffer) == 1)
  61. {
  62. usart_write("\nFile Found!!\r\n");
  63. //Lese File und gibt es auf der seriellen Schnittstelle aus
  64. for (int b = 0;b<52;b++)
  65. {
  66. fat_read_file (Clustervar,Buffer,b);
  67. for (int a = 0;a<512;a++)
  68. {
  69. usart_write("%c",Buffer[a]);
  70. }
  71. }
  72. }
  73. usart_write("FERTIG!!\r\n");
  74. //Hauptprogramm läuft ständig in einer schleife und macht nichts
  75. while (1)
  76. {
  77. }
  78. return (1);
  79. }