Forum: Mikrocontroller und Digitale Elektronik PetitFS SD DatenLogger


von Daniel E. (danebn)


Lesenswert?

Hallo Leute,

ich versuche gerade bei einem meiner Projekte ein Logfile auf einer 
SD-Karte zu implementieren.
Alles läuft auf einem Arduino Pro Mini 3,3V (ATmega328) und für einen 
größeren Controller ist leider kein Platz.
Ich kann leider nicht die Standard SD-Library verwenden, da nicht mehr 
viel Flash-Speicher zur Verfügung steht.

Ich habe diese PetitFS Library gefunden:
http://elm-chan.org/fsw/ff/00index_p.html

Hiermit schaffe ich es Daten von der SD-Karte zu lesen und habe auch 
schon etwas auf die SD geschrieben. Allerdings schaffe ich es nicht 
Zeile für Zeile in ein File zu schreiben.
Bei jedem Log-Eintrag soll einfach eine neue Zeile im File geschrieben 
werden.

Kennt sich jemand bei dieser Library aus und kann mir helfen?
Ist es hiermit eigentlich möglich?
Falls nicht. Kennt jemand eine Library mit der das möglich ist, welche 
aber möglichst wenig Speicher am Controller benötigt?

Danke für eure Antworten

von Mitlesa (Gast)


Lesenswert?

Daniel E. schrieb:
> Danke für eure Antworten

Schreib doch mal was du bisher versucht hast und nicht klappt.

von Mitlesa (Gast)


Lesenswert?

Daniel E. schrieb:
> Danke für eure Antworten

Wenn ich mir genau diese Seite durchlese

http://elm-chan.org/fsw/ff/pf/write.html

bleibt eigentlich kein Wunsch offen. Es ist klar und deutlich
beschrieben in welcher Abfolge was zu tun ist und welche
Funktionsaufrufe welche Parameter benötigen.

Dass vielleicht vorher irgendwann mal

    pf_mount - Mount a Volume
    pf_open - Open a File

aufgerufen sein muss dürfte sich aus dem Zusammenhang der
Benutzung eines Filesystems ergeben bzw aus den Fehlercodes
die bei pf_write auftreten können.

von Daniel E. (danebn)


Lesenswert?

Ich habe das Beispiel der Library verändert, um ins File zu schreiben, 
allerdings wird jedes Mal das vorhandene im File überschrieben.
Ich verstehe nicht ganz, wie ich in die erste freie Zeile springen kann, 
um das Vorhandene nicht zu überschreiben.
1
// Petit FS test.   
2
// For minimum flash use edit pffconfig.h and only enable
3
// _USE_READ and either _FS_FAT16 or _FS_FAT32
4
5
#include "PetitFS.h"
6
#include "PetitSerial.h"
7
8
PetitSerial PS;
9
// Use PetitSerial instead of Serial.
10
#define Serial PS
11
12
// The SD chip select pin is currently defined as 10
13
// in pffArduino.h.  Edit pffArduino.h to change the CS pin.
14
15
FATFS fs;     /* File system object */
16
//------------------------------------------------------------------------------
17
void errorHalt(char* msg) {
18
  Serial.print("Error: ");
19
  Serial.println(msg);
20
  while(1);
21
}
22
//------------------------------------------------------------------------------
23
void test() {
24
  uint8_t buf[32];
25
  
26
  // Initialize SD and file system.
27
  if (pf_mount(&fs)) errorHalt("pf_mount");
28
  
29
  // Open test file.
30
  if (pf_open("TEST.TXT")) errorHalt("pf_open");
31
32
  UINT nr;  
33
  pf_write("Hallo",sizeof("Test"),&nr);
34
35
  // Dump test file to Serial.
36
  /*while (1) {
37
    if (pf_read(buf, sizeof(buf), &nr)) errorHalt("pf_read");
38
    if (nr == 0) break;
39
    Serial.write(buf, nr);
40
  }*/
41
}
42
//------------------------------------------------------------------------------
43
void setup() {
44
  Serial.begin(9600);
45
  test();
46
  Serial.println("\nDone!");
47
}
48
void loop() {}

von Horst M. (horst)


Lesenswert?

Daniel E. schrieb:
> Ich verstehe nicht ganz, wie ich in die erste freie Zeile springen kann,
> um das Vorhandene nicht zu überschreiben.

Du hast Dir die Restriktionen von pf_write durchgelesen und sie auch 
verstanden?

http://elm-chan.org/fsw/ff/pf/write.html

The write function has some restrictions listed below:
Cannot create file. Only existing file can be written.
Cannot expand file size.
Cannot update time stamp of the file.
Write operation can start/stop on the sector boundary only.
Read-only attribute of the file cannot block write operation.

von Daniel E. (danebn)


Lesenswert?

Ok das habe ich leider übersehen.

Kennt jemand eine kleine Library, um ein Logfile auf einer SD-Karte zu 
erstellen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.