出力計の為に作成した。50ms毎に経過時間を取得して1000ms経過したらそれらの値をsdに保存する。これは何故か正常に作動する。
Dependencies: SDFileSystem mbed
Fork of Power_meter_kai_TP by
main.cpp
00001 #include "mbed.h" 00002 #include "SDFileSystem.h" 00003 00004 //SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board 00005 SDFileSystem sd(dp2,dp1,dp6,dp13,"sd"); 00006 Serial pc(dp16,dp15); 00007 Timer Time ; 00008 Ticker sd_write ; 00009 DigitalOut myled1(LED1); 00010 //Serial pc(dp16,dp15); 00011 00012 00013 int count =0;//最初はTimeLog[0]から始まる 00014 00015 //static unsigned long TimeLog[20];//20個の要素を「箱」を用意する 00016 static unsigned long TimeLog[20];//10個の要素を「箱」を用意する 00017 unsigned long nowTime = 0; 00018 00019 void SD(){//この関数を0.05秒ごとに呼び出して、その度に経過時間をTimeLog[]に代入する。 00020 //つまり、50ms毎の時間が配列に保存される。 00021 //1000ms経過するとそれらの値をまとめてsdカードに保存する。 00022 00023 __disable_irq();//この関数を最優先に割り込みする。 00024 myled1 = 0 ; 00025 00026 if(count<19){ 00027 00028 TimeLog[count]=nowTime; 00029 count++; 00030 00031 }else{ 00032 00033 TimeLog[19]=nowTime; 00034 00035 pc.printf("Hello World!\n"); 00036 00037 mkdir("/sd/mydir", 0777); 00038 00039 FILE *fp = fopen("/sd/mydir/sdtest_kai.csv", "a"); 00040 if(fp == NULL) { 00041 error("Could not open file for write\n"); 00042 } 00043 fprintf(fp, "%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n%d\r\n",TimeLog[0],TimeLog[1],TimeLog[2],TimeLog[3],TimeLog[4],TimeLog[5],TimeLog[6],TimeLog[7],TimeLog[8],TimeLog[9] 00044 ,TimeLog[10],TimeLog[11],TimeLog[12],TimeLog[13],TimeLog[14],TimeLog[15],TimeLog[16],TimeLog[17],TimeLog[18],TimeLog[19]); 00045 myled1 = 1 ; 00046 fclose(fp); 00047 free(fp); 00048 00049 pc.printf("Goodbye World!\n"); 00050 00051 count=0;//カウントをリセットする 00052 00053 }//if end 00054 00055 __enable_irq(); 00056 } 00057 00058 00059 int main(){ 00060 Time.start(); 00061 sd_write.attach(&SD,0.05);//0.05秒ごとにSDという関数を発動し、割り込みする。 00062 00063 while(1){ 00064 nowTime = Time.read_ms(); 00065 } 00066 }
Generated on Wed Aug 3 2022 14:56:35 by
1.7.2
