Gast
#1397614
Ich beschäftige mich im Moment mit dem Bau eines MP3 Players. Im wesentlichen hab ich mich ans Layout des Daisy MP3 gehalten und dementsprechend benutze ich auch dessen Code (Anhang), schreibe diesen für C18 um und füge noch ein GLCD ein. Ich kann problemlos mit dem VS1011 komunizieren und ich kann die Details der SD auslesen. Das Programm soll dann aber etwas mir nicht nachvollziebares machen. Wichtig zum Verständnis sind folgende 4 Funktionen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
125 | |
126 | |
In Main wird die Funktion find_highest_song() aufgerufen. Diese ruft Funktion readfat() auf und übergibt ihr BPB_RootClus (welche den Wert 2 hat). Dort wird der Wert verdoppelt, dann durch 256 dividiert und mit Fatstart summiert um dann mit dem Ergebnis die Funktion mmc_open_block aufzurufen. Dabei werd ich schon mal stutzig, wenn ich bedenke, dass 2*2/256 berechnet wird... Das Ergebnis ist folglich 0, mit fatstart addiert 271. In Sector 271 werden dann durch "los" die ersten 8 Byte übersprungen und die nächsten 4 als 4byte Variabel übertragen. Secotor 271 faängt so an: "øÿÿ.ÿÿÿÿÿÿÿ........" Da kann was nicht stimmen, hat jemand einen Plan? Die Daten der SD aluten wie folgt: BPB_BytsPerSec: 512 BPB_SecPerCluster:8 BPB_RsvdSecCnt: 38 BPB_NumFATs: 2 fatstart: 271 FirstDataSector: 1992 Root_dir_cluster: 2 BPB_FatSz32: 977 datsec: 2225 Gruß BS