Mein Versuch einen Temperatur-Logger zubauen bereitet mir etwas Kopf
zerbrechen. Ich scheitere an dem richtigen schreiben auf die SD-Karte.
Da ich für meinen Zweck ein FAT-FS für etwas oversized halte, will ich
was eigenes schreiben. Da ich gelesen hab, dass man den Sektor 0 nicht
überschreiben soll, schreib ich jetzt in das 1. und 2. Byte eine
zusammengesetzte 16bit Zahl die den aktuellen Sektor angibt, in den der
Controller schreiben soll. In die anderen Sektoren soll der Controller
dann immer seine Messwerte speichern im Format 'dd.MM|hh:mm|ttt\n'. Das
macht der Controller auch aber etwas zuhäufig. Im angehängten Quelltext
soll er eigentlich das einmal in den betreffenden Sektor schreiben und
dann nichts mehr machen, bzw eine Kontrolled blinken lassen. Aber egal
was ich mach es landet immer folgendes auf der Karte:
1 | dd.MM|hh:mm|ttt.
|
2 | dd.MM|hh:mm|ttt.
|
3 | dd.MM|hh:mm|ttt.
|
4 | dd.MM|hh:mm|ttt.
|
5 | dd.MM|hh:mm|ttt.
|
6 | dd.MM|hh:mm|ttt.
|
7 | dd.MM|hh:mm|ttt.
|
8 | dd.MM|hh:mm|ttt.
|
9 | dd.MM|hh:mm|ttt.
|
10 | dd.MM|hh:mm|ttt.
|
11 | dd.MM|hh:mm|ttt.
|
12 | dd.MM|hh:mm|ttt.
|
13 | dd.MM|hh:mm|ttt.
|
14 | dd.MM|hh:mm|ttt.
|
15 | dd.MM|hh:mm|ttt.
|
16 | dd.MM|hh:mm|ttt.
|
17 | dd.MM|hh:mm|ttt.
|
18 | dd.MM|hh:mm|ttt.
|
19 | dd.MM|hh:mm|ttt.
|
20 | dd.MM|hh:mm|ttt.
|
21 | dd.MM|hh:mm|ttt.
|
22 | dd.MM|hh:mm|ttt.
|
23 | dd.MM|hh:mm|ttt.
|
24 | dd.MM|hh:mm|ttt.
|
25 | dd.MM|hh:mm|ttt.
|
26 | dd.MM|hh:mm|ttt.
|
27 | dd.MM|h.¬X....ÿH
|
28 | ...ñ............
|
29 | ................
|
30 | ................
|
31 | ................
|
32 | ................
|
Wenn ich die aktuelle Sektornummer ändere schreibt er das auch in den
angegebenen Sektor aber eben nicht einmal sondern xmal und bricht dann
anscheinend ab.
Die Schaltung ist aufgebaut mit einem TS2940 für die 3,3V, zwischen
IN-GND und OUT-GND ist ein 10µF Elko, die SD-Karte hängt am Hardware-SPI
des ATmega8, der mit 3,3V läuft, angesteuert mit der mmc-lib von Ulrich
Radig. Controllertakt ist 1MHz(interner Takt), Blockkondensator mit
100nF direkt an GND und VCC des Controllers, Pullup am CS und DO der
SD-Karte und 2 LEDs an PB0 und PD7 zur Diagnose. Das ganze ist auf einem
Steckbrett aufgebaut. SD-Karte ist eine Canon mit 32MB(SDC-32M).
Ich hoffe ihr habt eine Idee wo hier der Fehler versteckt ist.