Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SDFileSystem mbed
Fork of Seeed_SDCard_Shield by
Diff: main.cpp
- Revision:
- 5:951ccd32598e
- Parent:
- 3:5edc67dee8b7
--- a/main.cpp Fri Feb 13 09:40:18 2015 +0000
+++ b/main.cpp Wed Apr 05 13:37:53 2017 +0000
@@ -16,6 +16,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+/*
#include "mbed.h"
#include "SDFileSystem.h"
@@ -23,8 +24,69 @@
SDFileSystem sd(D11, D12, D13, D10, "sd"); // MOSI, MISO, SCK, CS
FILE *fp;
+AnalogIn ain(A0);
+Ticker casovac; //timer s prerusenim
+Ticker casovac2; //timer s prerusenim
+float perioda=0.001; // 4khz
+volatile int poc=0;
+
+void init_sd()
+{
+ wait(2);
+ pc.printf("Initializing\r\n");
+
+ fp = fopen("/sd/hello.txt", "r");
+ if (fp != NULL) {
+ fclose(fp);
+ remove("/sd/hello.txt");
+ pc.printf("Remove an existing file with the same name\r\n");
+ }
+
+ fp = fopen("/sd/hello.txt", "w");
+ if (fp == NULL) {
+ pc.printf("Unable to write the file\r\n");
+ }
+ fclose(fp);
+}
+
+void fun(void) {
+ __disable_irq(); // Disable Interrupts
+ // pc.printf("%3.8f\r\n", ((ain.read()*2)-1));
+ // pc.printf("blabla\r\n");
+ fp = fopen("/sd/hello.txt", "a");
+// pc.printf("otvoreny\r\n");
+ fprintf(fp, "%3.4f\r\n", ain.read());
+// pc.printf("zapisany\r\n");
+ fclose(fp);
+// pc.printf("zatvoreny\r\n");
+ poc++;
+ __enable_irq(); // Enable Interrupts
+}
+
+void pocitadlo(void){
+ poc++;
+// pc.printf("Hodnota pocitadla: %d\r\n", poc );
+}
+
int main() {
- wait(2);
+ pc.baud(921600);
+ __disable_irq(); // Disable Interrupts
+ init_sd();
+ casovac.attach(&fun, perioda);
+// casovac2.attach(&pocitadlo, 1.0);
+// pc.printf("Cakam 5 s \r\n");
+ __enable_irq(); // Enable Interrupts
+ while(poc<3000)
+ {
+ pc.printf("Hodnota pocitadla: %d\r\n", poc );
+ wait(0.1);
+ }
+// fclose(fp);
+ pc.printf("File successfully written!\r\n");
+}
+
+
+/* wait(2);
pc.printf("Initializing\r\n");
fp = fopen("/sd/hello.txt", "r");
@@ -42,4 +104,82 @@
fclose(fp);
pc.printf("File successfully written!\r\n");
}
+*/
+
+#include "mbed.h"
+#include "SDFileSystem.h"
+SDFileSystem sd(D11, D12, D13, D10, "sd"); // MOSI, MISO, SCK, CS
+FILE *myLogFile;
+Ticker sampleTicker;
+AnalogIn sensor(A0);
+Timer fileOpenTimer;
+
+#define bufferSize 8192
+float sensorReading[bufferSize];
+unsigned int readPointer = 0;
+volatile unsigned int writePointer = 0; // volatile so that the main loop knows to check for changes.
+volatile unsigned int poc=0;
+
+// opens the next unused file name in the format set.
+// This can be a little slow the first time if there are already lots of log files
+// since it tries each number in turn but the second call on will be fairly quick.
+FILE *nextLogFile(void)
+{
+ static unsigned int fileNumber = 0;
+ char fileName[32];
+ FILE *filePtr = NULL;
+ do {
+ if (filePtr != NULL)
+ fclose(filePtr);
+ sprintf(fileName,"/sd/log%04u.csv",fileNumber++);
+ filePtr = fopen(fileName,"r");
+ } while (filePtr != NULL);
+ return fopen( fileName,"w");
}
+
+void onSampleTick(void)
+{
+ sensorReading[writePointer++] = sensor*3.2; // scale to give a voltage rather than value from 0 to 1.
+ if (writePointer == bufferSize)
+ writePointer = 0;
+ if (writePointer == readPointer) {
+ // BUFFER OVERFLOW. You may want to print an error message or turn an LED on
+ }
+ poc++;
+}
+
+ main()
+{
+ printf("ZACIATOK\r\n");
+ myLogFile = nextLogFile();
+ if (!myLogFile) {
+ // ERROR failed to open the first log file for writing.
+ // The SD card is missing, not working, read only or full?
+
+ return 1; // probably want to exit the program in this situation
+ }
+
+ fileOpenTimer.start();
+ sampleTicker.attach(&onSampleTick,0.000125); // sets the sample period in seconds
+
+ while (true) {
+
+ while (writePointer != readPointer) { // write any waiting data to the SD card
+ fprintf(myLogFile,"%.2f\r\n",sensorReading[readPointer++]);
+ if(poc>40000)
+ {
+ fclose(myLogFile);
+ printf("KONIEC\r\n");
+ exit(0);
+ }
+ if (readPointer == bufferSize)
+ readPointer = 0;
+ }
+ }
+}
+
+
+
+
+
+
