Forum: Projekte & Code Pico; SD, Zeitstempel, PlatformIO


von Harald P. (haraldp)


Angehängte Dateien:

Lesenswert?

Benutzt man den Pico mit der Original Arduino-Platform (mbed), so stehen 
einige Funktionen/Bibliotheken nicht ohne Zutun zur Verfügung.
Benötigt man die SD-Funktionen für eine per SPI angeschaltete SD-Karte,
so hat man eine gute Library, die von Bill Greiman's SdFat abgeleitet 
wurde:
https://github.com/khoih-prog/RP2040_SD
Die Library wird bei einem vorhandenen PlatformIO-Projekt direkt 
hinzugefüügt, wenn man die Zeile
lib_deps = khoih-prog/RP2040_SD
in platform.ini einfügt.
Beim nächsten Build werden die notwendigen Dateien aus dem Internet 
heruntergeladen, und stehen dann unter
 ... \PlatformIO\<Ordner>\.pio\libdeps\pico\RP2040_SD,
wenn die Zeile unter [env:pico] eingefügt wurde.
Leider kann man nicht direkt die Zeitstempel der Dateien herausbekommen. 
Es fehlen die Funktionen getLastWrite() und getCreationTime() in 
RP2040_SD.h.
Ich habe diese Funktionen hinzugefügt und dazu entsprechend RP2040_SD.h 
und File.hpp angepaßt.
Sollen neue Dateien mit Zeitstempel erzeugt werden, so muß man noch eine 
CallBack Funktion erstellen und den folgenden Aufruf machen:
RP2040_SdFile::dateTimeCallback(DateTimeCallbackSD);

Die Funktion DateTimeCallbackSD sieht z.B. so aus:
1
void DateTimeCallbackSD(uint16_t* date, uint16_t* time)
2
{
3
  *date = FAT_DATE(Jhr+2000,Monat,Tag); 
4
  *time = FAT_TIME(Std,Min,Sek);
5
}
Die Variablen Tag,Monat,.. müssen natürlich die aktuellen Zeitwerte 
enthalten.
Die geänderten Dateien der Lib befinden sich in der beigefügten 
zip-Datei und dazu ein Beispiel, wie sie genutzt werden können. Das 
Beipiel ist nicht vollständig, sondern soll nur das Prinzip darstellen.

Harald

von J. S. (jojos)


Lesenswert?

Die gemeinsamen Libs zu modifizieren ist keine gute Lösung. Besser einen 
fork von der originalen Lib anlegen, den dann ändern und diesen über die 
pio.ini in eigene Projekte einbinden.

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.