Difference between revisions of "SD CARD"
(→Configuration) |
|||
| Line 12: | Line 12: | ||
|CODE=[https://github.com/ethersex/ethersex/tree/master/hardware/storage/sd_reader https://github.com/ethersex/ethersex/tree/master/hardware/storage/sd_reader] | |CODE=[https://github.com/ethersex/ethersex/tree/master/hardware/storage/sd_reader https://github.com/ethersex/ethersex/tree/master/hardware/storage/sd_reader] | ||
}} | }} | ||
| + | |||
| + | The module is based on Roland Riegel's [http://www.roland-riegel.de/sd-reader/ MMC/SD/SDHC card library] complemented by the connection to the Ethersex [[VFS|Virtual File System]]. | ||
== Connection == | == Connection == | ||
| + | |||
| + | [[File:Sdcard adapter schaltung.png|200px|thumb|right|SD-Card Adapter Schaltung]] | ||
| + | [[File:Sdcard adapter.jpg|200px|thumb|right|SD-Card Adapter Aufbau]] | ||
| + | [[File:Microsd_adapter.jpg|200px|thumb|right|MicroSD-Card Adapter mit Level-Shifter aus China]] | ||
== Configuration == | == Configuration == | ||
| Line 45: | Line 51: | ||
== [[ECMD|ECMD]] == | == [[ECMD|ECMD]] == | ||
| + | |||
| + | IRMP implements an [[ECMD]] interface. See [[ECMD_Reference|ECMD reference]]. | ||
== [[Control6|Control6]] == | == [[Control6|Control6]] == | ||
| + | |||
| + | The following example writes the date, time and temperature by VFS_LOG_ALLOCA (VFS_LOG requires UIP) in the file "temp.log" as soon as the temperature has changed by more than a degree to the last measurement. For date and time CLOCK_SUPPORT must be enabled. | ||
| + | |||
| + | <pre> | ||
| + | #include <stdlib.h> | ||
| + | |||
| + | int16_t Temperatur; | ||
| + | int16_t Temperatur_alt; | ||
| + | |||
| + | CONTROL_START | ||
| + | |||
| + | THREAD(read_temp) | ||
| + | Temperatur = ONEWIRE_GET(10d85594010800eb); | ||
| + | ON abs(Temperatur-Temperatur_alt)>10 DO | ||
| + | uint8_t sign = Temperatur<0; | ||
| + | div_t res = div(abs(Temperatur),10); | ||
| + | VFS_LOG_ALLOCA("temp.log", 50, "%2d.%2d.%4d %2d:%02d %S%d.%d", CLOCK_DAY, CLOCK_MONTH, CLOCK_YEAR, CLOCK_HOUR, CLOCK_MIN, sign?PSTR("-"):PSTR(""),res.quot,res.rem) | ||
| + | Temperatur_alt = Temperatur; | ||
| + | END | ||
| + | WAIT(15); | ||
| + | THREAD_END(read_temp) | ||
| + | |||
| + | ON STARTUP DO | ||
| + | Temperatur = Temperatur_alt = 0; | ||
| + | THREAD_START(read_temp); | ||
| + | END | ||
| + | |||
| + | CONTROL_END | ||
| + | </pre> | ||
Revision as of 09:39, 19 December 2013
| SD/MMC-Card Reader | |
|---|---|
| Status | Stable
|
| menuconfig | I/O->SD/MMC-Card Reader |
| Pinning | yes |
| Ecmd | yes |
| Control6 | yes |
| Depends on | ECMD |
| Code | https://github.com/ethersex/ethersex/tree/master/hardware/storage/sd_reader |
The module is based on Roland Riegel's MMC/SD/SDHC card library complemented by the connection to the Ethersex Virtual File System.
Contents
Connection
Configuration
| | I/O ---> | | ... │ │ Storage ---> │ │ ... | | [*] SD/MMC-Card Reader ---> | | ... | | [ ] SDHC support | | | | [*] VFAT LFN support | | | | [ ] Read-only mode | | | | [*] Use read-timeout | | | | [*] Ping-read SD card every 10s | | | | --- ECMD Support | | | | [*] info | | | | [*] dir | | | | [*] mkdir | | | | [*] rm | | | | --- Debugging Flags | | | | [*] FAT | | | | [*] RAW | | | | [*] VFS | | | | General Setup ---> | | ... | | [*] VFS (Virtual File System) support ---> | | ... | | [*] SD/MMC-Card Filesystem | |
ECMD
IRMP implements an ECMD interface. See ECMD reference.
Control6
The following example writes the date, time and temperature by VFS_LOG_ALLOCA (VFS_LOG requires UIP) in the file "temp.log" as soon as the temperature has changed by more than a degree to the last measurement. For date and time CLOCK_SUPPORT must be enabled.
#include <stdlib.h>
int16_t Temperatur;
int16_t Temperatur_alt;
CONTROL_START
THREAD(read_temp)
Temperatur = ONEWIRE_GET(10d85594010800eb);
ON abs(Temperatur-Temperatur_alt)>10 DO
uint8_t sign = Temperatur<0;
div_t res = div(abs(Temperatur),10);
VFS_LOG_ALLOCA("temp.log", 50, "%2d.%2d.%4d %2d:%02d %S%d.%d", CLOCK_DAY, CLOCK_MONTH, CLOCK_YEAR, CLOCK_HOUR, CLOCK_MIN, sign?PSTR("-"):PSTR(""),res.quot,res.rem)
Temperatur_alt = Temperatur;
END
WAIT(15);
THREAD_END(read_temp)
ON STARTUP DO
Temperatur = Temperatur_alt = 0;
THREAD_START(read_temp);
END
CONTROL_END