SD

Dependencies:   mbed SDFileSystem ds3231 AQM1602

Committer:
mbedfujimura
Date:
Mon Mar 23 11:53:38 2020 +0000
Revision:
0:9aa1fc6fba40
SD & LCD

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedfujimura 0:9aa1fc6fba40 1 #include "mbed.h"
mbedfujimura 0:9aa1fc6fba40 2 #include "AQM1602.h"
mbedfujimura 0:9aa1fc6fba40 3 #include "SDFileSystem.h"
mbedfujimura 0:9aa1fc6fba40 4 #include "ds3231.h"
mbedfujimura 0:9aa1fc6fba40 5 #define ESC 0x1B
mbedfujimura 0:9aa1fc6fba40 6
mbedfujimura 0:9aa1fc6fba40 7 //-------LCD Setting------
mbedfujimura 0:9aa1fc6fba40 8 I2C i2c(PB_7, PB_6);//sda,scl
mbedfujimura 0:9aa1fc6fba40 9 AQM1602 lcd(i2c);
mbedfujimura 0:9aa1fc6fba40 10
mbedfujimura 0:9aa1fc6fba40 11 //-------SD Setting-------
mbedfujimura 0:9aa1fc6fba40 12 SDFileSystem sd(PE_6, PE_5, PE_2, PE_3 , "sd");//mosi.miso,sck,cs,mount
mbedfujimura 0:9aa1fc6fba40 13
mbedfujimura 0:9aa1fc6fba40 14 //------AE Data(SPI)------
mbedfujimura 0:9aa1fc6fba40 15 SPI spi(PF_9, PF_8, PF_7); // mosi, miso, sclk
mbedfujimura 0:9aa1fc6fba40 16 DigitalOut IO_CS(PF_13);
mbedfujimura 0:9aa1fc6fba40 17
mbedfujimura 0:9aa1fc6fba40 18 //-----------RTC----------
mbedfujimura 0:9aa1fc6fba40 19 void get_user_input(char* message, uint8_t min, uint8_t max, uint32_t* member);
mbedfujimura 0:9aa1fc6fba40 20 void get_user_input(char* message, uint8_t min, uint8_t max, bool* member);
mbedfujimura 0:9aa1fc6fba40 21
mbedfujimura 0:9aa1fc6fba40 22 //--------IO Enable--------
mbedfujimura 0:9aa1fc6fba40 23 DigitalOut IO_Enable(PD_9);
mbedfujimura 0:9aa1fc6fba40 24
mbedfujimura 0:9aa1fc6fba40 25 //-----AE Interrupt--------
mbedfujimura 0:9aa1fc6fba40 26 InterruptIn DE(PG_8);//IO10 Analog Bord IO9
mbedfujimura 0:9aa1fc6fba40 27
mbedfujimura 0:9aa1fc6fba40 28 //---------------------------------
mbedfujimura 0:9aa1fc6fba40 29 // HPF Setting
mbedfujimura 0:9aa1fc6fba40 30 // 0:THRU 1:30kHz 2:100kHz 3:200kHz
mbedfujimura 0:9aa1fc6fba40 31 //---------------------------------
mbedfujimura 0:9aa1fc6fba40 32 BusInOut IO_HPF(PD_10,PD_14);
mbedfujimura 0:9aa1fc6fba40 33
mbedfujimura 0:9aa1fc6fba40 34 //---------------------------------
mbedfujimura 0:9aa1fc6fba40 35 // Gain Setting
mbedfujimura 0:9aa1fc6fba40 36 // 0:0dB 1:10dB 2:20dB 3:30dB 4:40dB
mbedfujimura 0:9aa1fc6fba40 37 //---------------------------------
mbedfujimura 0:9aa1fc6fba40 38 BusInOut IO_Gain(PD_15,PE_14,PE_15,PG_2);//IO1,IO2,IO3 Analog Bord IO0,IO1,IO2,IO3
mbedfujimura 0:9aa1fc6fba40 39
mbedfujimura 0:9aa1fc6fba40 40 //-----I/O Setting--------
mbedfujimura 0:9aa1fc6fba40 41 DigitalOut IO5(PG_3);//Analog Bord IO4
mbedfujimura 0:9aa1fc6fba40 42 DigitalOut IO6(PG_4);//Analog Bord IO5
mbedfujimura 0:9aa1fc6fba40 43 DigitalOut IO7(PG_5);//Analog Bord IO6
mbedfujimura 0:9aa1fc6fba40 44 DigitalOut IO8(PG_6);//Analog Bord IO7
mbedfujimura 0:9aa1fc6fba40 45 DigitalOut IO9(PG_7);//Analog Bord IO8
mbedfujimura 0:9aa1fc6fba40 46
mbedfujimura 0:9aa1fc6fba40 47 //-----------Alarm---------
mbedfujimura 0:9aa1fc6fba40 48 DigitalOut Ararm(PF_14);
mbedfujimura 0:9aa1fc6fba40 49 //---------Encoder---------
mbedfujimura 0:9aa1fc6fba40 50 DigitalIn Encorder_SW(PA_15); //SW
mbedfujimura 0:9aa1fc6fba40 51 //DigitalIn Encorder_A(PD_0); //A
mbedfujimura 0:9aa1fc6fba40 52 DigitalIn Encorder_B(PD_1); //B
mbedfujimura 0:9aa1fc6fba40 53 InterruptIn Encorder_A(PD_0); //A
mbedfujimura 0:9aa1fc6fba40 54
mbedfujimura 0:9aa1fc6fba40 55
mbedfujimura 0:9aa1fc6fba40 56 //-----Serial Setting------
mbedfujimura 0:9aa1fc6fba40 57 Serial rs232 (PB_10, PB_11);
mbedfujimura 0:9aa1fc6fba40 58
mbedfujimura 0:9aa1fc6fba40 59 uint16_t WaveData1[32768];
mbedfujimura 0:9aa1fc6fba40 60 uint16_t WaveData2[32768];
mbedfujimura 0:9aa1fc6fba40 61 int DataEnable;
mbedfujimura 0:9aa1fc6fba40 62 int EncAEnable;
mbedfujimura 0:9aa1fc6fba40 63 int EncCount;
mbedfujimura 0:9aa1fc6fba40 64
mbedfujimura 0:9aa1fc6fba40 65 //------AE Interrupt Main------
mbedfujimura 0:9aa1fc6fba40 66 void GetData(){
mbedfujimura 0:9aa1fc6fba40 67 DataEnable=1;
mbedfujimura 0:9aa1fc6fba40 68 }
mbedfujimura 0:9aa1fc6fba40 69
mbedfujimura 0:9aa1fc6fba40 70 //-------Encoder Interrupt------
mbedfujimura 0:9aa1fc6fba40 71 void EncCheck(){
mbedfujimura 0:9aa1fc6fba40 72 EncAEnable=1;
mbedfujimura 0:9aa1fc6fba40 73 //wait_ms(2);
mbedfujimura 0:9aa1fc6fba40 74 }
mbedfujimura 0:9aa1fc6fba40 75
mbedfujimura 0:9aa1fc6fba40 76 void menu1(){
mbedfujimura 0:9aa1fc6fba40 77 switch(EncCount){
mbedfujimura 0:9aa1fc6fba40 78 case(1):
mbedfujimura 0:9aa1fc6fba40 79 lcd.locate(0,0);lcd.printf(" 1.Mode ");
mbedfujimura 0:9aa1fc6fba40 80 break;
mbedfujimura 0:9aa1fc6fba40 81 case(2):
mbedfujimura 0:9aa1fc6fba40 82 lcd.locate(0,0);lcd.printf(" 2.Gain ");
mbedfujimura 0:9aa1fc6fba40 83 break;
mbedfujimura 0:9aa1fc6fba40 84 case(3):
mbedfujimura 0:9aa1fc6fba40 85 lcd.locate(0,0);lcd.printf(" 3.HPF ");
mbedfujimura 0:9aa1fc6fba40 86 break;
mbedfujimura 0:9aa1fc6fba40 87 case(4):
mbedfujimura 0:9aa1fc6fba40 88 lcd.locate(0,0);lcd.printf(" 4.Interval ");
mbedfujimura 0:9aa1fc6fba40 89 break;
mbedfujimura 0:9aa1fc6fba40 90 case(5):
mbedfujimura 0:9aa1fc6fba40 91 lcd.locate(0,0);lcd.printf(" 5.EXIT ");
mbedfujimura 0:9aa1fc6fba40 92 break;
mbedfujimura 0:9aa1fc6fba40 93 }
mbedfujimura 0:9aa1fc6fba40 94 }
mbedfujimura 0:9aa1fc6fba40 95
mbedfujimura 0:9aa1fc6fba40 96 void menu2(){
mbedfujimura 0:9aa1fc6fba40 97 switch(EncCount){
mbedfujimura 0:9aa1fc6fba40 98 case(1):
mbedfujimura 0:9aa1fc6fba40 99 lcd.locate(0,0);lcd.printf(" Gain=0dB ");
mbedfujimura 0:9aa1fc6fba40 100 break;
mbedfujimura 0:9aa1fc6fba40 101 case(2):
mbedfujimura 0:9aa1fc6fba40 102 lcd.locate(0,0);lcd.printf(" Gain=10dB ");
mbedfujimura 0:9aa1fc6fba40 103 break;
mbedfujimura 0:9aa1fc6fba40 104 case(3):
mbedfujimura 0:9aa1fc6fba40 105 lcd.locate(0,0);lcd.printf(" Gain=20dB ");
mbedfujimura 0:9aa1fc6fba40 106 break;
mbedfujimura 0:9aa1fc6fba40 107 case(4):
mbedfujimura 0:9aa1fc6fba40 108 lcd.locate(0,0);lcd.printf(" Gain=30dB ");
mbedfujimura 0:9aa1fc6fba40 109 break;
mbedfujimura 0:9aa1fc6fba40 110 case(5):
mbedfujimura 0:9aa1fc6fba40 111 lcd.locate(0,0);lcd.printf(" Gain=40dB ");
mbedfujimura 0:9aa1fc6fba40 112 break;
mbedfujimura 0:9aa1fc6fba40 113 case(6):
mbedfujimura 0:9aa1fc6fba40 114 lcd.locate(0,0);lcd.printf(" EXIT ");
mbedfujimura 0:9aa1fc6fba40 115 break;
mbedfujimura 0:9aa1fc6fba40 116 }
mbedfujimura 0:9aa1fc6fba40 117 }
mbedfujimura 0:9aa1fc6fba40 118
mbedfujimura 0:9aa1fc6fba40 119 int main()
mbedfujimura 0:9aa1fc6fba40 120 {
mbedfujimura 0:9aa1fc6fba40 121 //------Serial Setting------
mbedfujimura 0:9aa1fc6fba40 122 rs232.baud(230400);
mbedfujimura 0:9aa1fc6fba40 123 //---------Init LCD---------
mbedfujimura 0:9aa1fc6fba40 124 lcd.init();
mbedfujimura 0:9aa1fc6fba40 125 //---Mount the filesystem---
mbedfujimura 0:9aa1fc6fba40 126 sd.mount();
mbedfujimura 0:9aa1fc6fba40 127 //--------IO Power ON-------
mbedfujimura 0:9aa1fc6fba40 128 wait_ms(100);
mbedfujimura 0:9aa1fc6fba40 129 IO_Enable=1;
mbedfujimura 0:9aa1fc6fba40 130 //------Initial Display-----
mbedfujimura 0:9aa1fc6fba40 131 lcd.clear();
mbedfujimura 0:9aa1fc6fba40 132 lcd.setDispFlag(1,0,0); //Cursole消す
mbedfujimura 0:9aa1fc6fba40 133 //-------SPI Setting-------
mbedfujimura 0:9aa1fc6fba40 134 IO_CS = 1;
mbedfujimura 0:9aa1fc6fba40 135 spi.format(16,0);
mbedfujimura 0:9aa1fc6fba40 136 spi.frequency(1000000);
mbedfujimura 0:9aa1fc6fba40 137
mbedfujimura 0:9aa1fc6fba40 138 //-----------------------------SD test------------------------------
mbedfujimura 0:9aa1fc6fba40 139 lcd.clear();
mbedfujimura 0:9aa1fc6fba40 140 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 141 lcd.printf("WR to SD card ");
mbedfujimura 0:9aa1fc6fba40 142 wait_ms(100);
mbedfujimura 0:9aa1fc6fba40 143
mbedfujimura 0:9aa1fc6fba40 144 //----------SD書き込み試験--------
mbedfujimura 0:9aa1fc6fba40 145 FILE *fp = fopen("/sd/sdtest.txt", "w"); // 追加書き込み
mbedfujimura 0:9aa1fc6fba40 146
mbedfujimura 0:9aa1fc6fba40 147 if (fp != NULL)
mbedfujimura 0:9aa1fc6fba40 148 {
mbedfujimura 0:9aa1fc6fba40 149 fprintf(fp, "SD カードのテストファイルです.\r\n");
mbedfujimura 0:9aa1fc6fba40 150 fclose(fp);
mbedfujimura 0:9aa1fc6fba40 151
mbedfujimura 0:9aa1fc6fba40 152 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 153 lcd.printf(" SDWR SUCCESS! ");
mbedfujimura 0:9aa1fc6fba40 154 wait_ms(100);
mbedfujimura 0:9aa1fc6fba40 155 }
mbedfujimura 0:9aa1fc6fba40 156 else{
mbedfujimura 0:9aa1fc6fba40 157 lcd.clear();
mbedfujimura 0:9aa1fc6fba40 158 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 159 lcd.printf(" SD FAILED! ");
mbedfujimura 0:9aa1fc6fba40 160 while(1);
mbedfujimura 0:9aa1fc6fba40 161 }
mbedfujimura 0:9aa1fc6fba40 162
mbedfujimura 0:9aa1fc6fba40 163 //----------SD読み出し試験--------
mbedfujimura 0:9aa1fc6fba40 164 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 165 lcd.printf("Reading from SD ");
mbedfujimura 0:9aa1fc6fba40 166 fp = fopen("/sd/sdtest.txt", "r");
mbedfujimura 0:9aa1fc6fba40 167 if (fp != NULL)
mbedfujimura 0:9aa1fc6fba40 168 {
mbedfujimura 0:9aa1fc6fba40 169 char str[256];
mbedfujimura 0:9aa1fc6fba40 170 while (fgets(str, 256, fp) != NULL)
mbedfujimura 0:9aa1fc6fba40 171 //rs232.printf("%s", str);
mbedfujimura 0:9aa1fc6fba40 172 fclose(fp);
mbedfujimura 0:9aa1fc6fba40 173 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 174 lcd.printf(" SDRD SUCCESS! ");
mbedfujimura 0:9aa1fc6fba40 175 wait_ms(100);
mbedfujimura 0:9aa1fc6fba40 176 }
mbedfujimura 0:9aa1fc6fba40 177 else{
mbedfujimura 0:9aa1fc6fba40 178 lcd.clear();
mbedfujimura 0:9aa1fc6fba40 179 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 180 lcd.printf(" SD FAILED! ");
mbedfujimura 0:9aa1fc6fba40 181 while(1);
mbedfujimura 0:9aa1fc6fba40 182 }
mbedfujimura 0:9aa1fc6fba40 183
mbedfujimura 0:9aa1fc6fba40 184 //--------チェック結果の表示--------
mbedfujimura 0:9aa1fc6fba40 185 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 186 lcd.printf(" CHECK All OK! ");
mbedfujimura 0:9aa1fc6fba40 187 wait(1);
mbedfujimura 0:9aa1fc6fba40 188 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 189 lcd.printf(" FUJIMURA CREST");
mbedfujimura 0:9aa1fc6fba40 190 lcd.locate(0,1);
mbedfujimura 0:9aa1fc6fba40 191 lcd.printf(" FCAS-M101 ");
mbedfujimura 0:9aa1fc6fba40 192 wait(1);
mbedfujimura 0:9aa1fc6fba40 193
mbedfujimura 0:9aa1fc6fba40 194 //-----------------------------RTCセッティング------------------------------
mbedfujimura 0:9aa1fc6fba40 195 //Ds3231 rtc(PB_7, PB_6);
mbedfujimura 0:9aa1fc6fba40 196 Ds3231 rtc(PF_0, PF_1);
mbedfujimura 0:9aa1fc6fba40 197 time_t epoch_time;
mbedfujimura 0:9aa1fc6fba40 198
mbedfujimura 0:9aa1fc6fba40 199 //default, use bit masks in ds3231.h for desired operation
mbedfujimura 0:9aa1fc6fba40 200 ds3231_cntl_stat_t rtc_control_status = {0,0};
mbedfujimura 0:9aa1fc6fba40 201 ds3231_time_t rtc_time;
mbedfujimura 0:9aa1fc6fba40 202 ds3231_calendar_t rtc_calendar;
mbedfujimura 0:9aa1fc6fba40 203
mbedfujimura 0:9aa1fc6fba40 204 //******************************* メインルーチン *******************************
mbedfujimura 0:9aa1fc6fba40 205 uint16_t spi_data[16];
mbedfujimura 0:9aa1fc6fba40 206 uint16_t Amplitude;
mbedfujimura 0:9aa1fc6fba40 207 char TxDataChar1,TxDataChar2;
mbedfujimura 0:9aa1fc6fba40 208 char moji[36];
mbedfujimura 0:9aa1fc6fba40 209 uint32_t n,i;
mbedfujimura 0:9aa1fc6fba40 210 int Gain; //Gain
mbedfujimura 0:9aa1fc6fba40 211 int StartFlag=1;
mbedfujimura 0:9aa1fc6fba40 212 int menuFlag =1;
mbedfujimura 0:9aa1fc6fba40 213 int EncCount2;
mbedfujimura 0:9aa1fc6fba40 214
mbedfujimura 0:9aa1fc6fba40 215 //---------BUS(ゲイン)の設定-----------
mbedfujimura 0:9aa1fc6fba40 216 IO_Gain.output();
mbedfujimura 0:9aa1fc6fba40 217 IO_Gain=2;
mbedfujimura 0:9aa1fc6fba40 218
mbedfujimura 0:9aa1fc6fba40 219 //---------------HPF 30kHz------------
mbedfujimura 0:9aa1fc6fba40 220 IO_HPF.output();
mbedfujimura 0:9aa1fc6fba40 221 IO_HPF=0;
mbedfujimura 0:9aa1fc6fba40 222
mbedfujimura 0:9aa1fc6fba40 223 //---------------割り込みON------------
mbedfujimura 0:9aa1fc6fba40 224 DE.rise(&GetData);
mbedfujimura 0:9aa1fc6fba40 225 Encorder_A.rise(&EncCheck);
mbedfujimura 0:9aa1fc6fba40 226
mbedfujimura 0:9aa1fc6fba40 227
mbedfujimura 0:9aa1fc6fba40 228
mbedfujimura 0:9aa1fc6fba40 229
mbedfujimura 0:9aa1fc6fba40 230 while(1) {
mbedfujimura 0:9aa1fc6fba40 231 //----------------------------------------------------------------
mbedfujimura 0:9aa1fc6fba40 232 while(StartFlag){
mbedfujimura 0:9aa1fc6fba40 233 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 234 lcd.printf(" Wait START! ");
mbedfujimura 0:9aa1fc6fba40 235 lcd.locate(0,1);
mbedfujimura 0:9aa1fc6fba40 236 lcd.printf(" Menu>Push long");
mbedfujimura 0:9aa1fc6fba40 237
mbedfujimura 0:9aa1fc6fba40 238 if(Encorder_SW==0){
mbedfujimura 0:9aa1fc6fba40 239 wait_ms(300);
mbedfujimura 0:9aa1fc6fba40 240 StartFlag=0;
mbedfujimura 0:9aa1fc6fba40 241 //----------menu選択--------
mbedfujimura 0:9aa1fc6fba40 242 if(Encorder_SW==0){
mbedfujimura 0:9aa1fc6fba40 243 StartFlag=1;
mbedfujimura 0:9aa1fc6fba40 244 lcd.clear();
mbedfujimura 0:9aa1fc6fba40 245 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 246 lcd.printf(" -----Menu----- ");
mbedfujimura 0:9aa1fc6fba40 247 wait_ms(500);
mbedfujimura 0:9aa1fc6fba40 248
mbedfujimura 0:9aa1fc6fba40 249 //---------------------Select menu-----------------
mbedfujimura 0:9aa1fc6fba40 250 while(menuFlag){
mbedfujimura 0:9aa1fc6fba40 251 //----------Encoder Check--------
mbedfujimura 0:9aa1fc6fba40 252 if(EncAEnable==1){
mbedfujimura 0:9aa1fc6fba40 253 wait_us(100);
mbedfujimura 0:9aa1fc6fba40 254 if(Encorder_B==0){
mbedfujimura 0:9aa1fc6fba40 255 EncCount=EncCount+1;
mbedfujimura 0:9aa1fc6fba40 256 }else{
mbedfujimura 0:9aa1fc6fba40 257 if(EncCount!=0){
mbedfujimura 0:9aa1fc6fba40 258 EncCount=EncCount-1;
mbedfujimura 0:9aa1fc6fba40 259 }
mbedfujimura 0:9aa1fc6fba40 260 }
mbedfujimura 0:9aa1fc6fba40 261 menu1();
mbedfujimura 0:9aa1fc6fba40 262 EncAEnable=0;
mbedfujimura 0:9aa1fc6fba40 263 }
mbedfujimura 0:9aa1fc6fba40 264 if(EncCount>5){
mbedfujimura 0:9aa1fc6fba40 265 EncCount=5;
mbedfujimura 0:9aa1fc6fba40 266 }
mbedfujimura 0:9aa1fc6fba40 267 //----------Encoder End--------
mbedfujimura 0:9aa1fc6fba40 268
mbedfujimura 0:9aa1fc6fba40 269 if(Encorder_SW==0){
mbedfujimura 0:9aa1fc6fba40 270 if(EncCount==2){
mbedfujimura 0:9aa1fc6fba40 271 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 272 lcd.printf(" Select Gain ");
mbedfujimura 0:9aa1fc6fba40 273 EncCount=1;
mbedfujimura 0:9aa1fc6fba40 274 while(1){
mbedfujimura 0:9aa1fc6fba40 275 //----------Encoder Check--------
mbedfujimura 0:9aa1fc6fba40 276 if(EncAEnable==1){
mbedfujimura 0:9aa1fc6fba40 277 wait_us(100);
mbedfujimura 0:9aa1fc6fba40 278 if(Encorder_B==0){
mbedfujimura 0:9aa1fc6fba40 279 EncCount=EncCount+1;
mbedfujimura 0:9aa1fc6fba40 280 if(EncCount>6){
mbedfujimura 0:9aa1fc6fba40 281 EncCount=6;
mbedfujimura 0:9aa1fc6fba40 282 }
mbedfujimura 0:9aa1fc6fba40 283 }else{
mbedfujimura 0:9aa1fc6fba40 284 if(EncCount!=0){
mbedfujimura 0:9aa1fc6fba40 285 EncCount=EncCount-1;
mbedfujimura 0:9aa1fc6fba40 286 }
mbedfujimura 0:9aa1fc6fba40 287 }
mbedfujimura 0:9aa1fc6fba40 288 menu2();
mbedfujimura 0:9aa1fc6fba40 289 EncAEnable=0;
mbedfujimura 0:9aa1fc6fba40 290 }
mbedfujimura 0:9aa1fc6fba40 291 //----------Encoder End--------
mbedfujimura 0:9aa1fc6fba40 292 if(Encorder_SW==0){
mbedfujimura 0:9aa1fc6fba40 293 if(EncCount!=6){
mbedfujimura 0:9aa1fc6fba40 294 switch(EncCount){
mbedfujimura 0:9aa1fc6fba40 295 case(1):
mbedfujimura 0:9aa1fc6fba40 296 IO_Gain=0;
mbedfujimura 0:9aa1fc6fba40 297 lcd.locate(0,0);lcd.printf(" Set Gain=0dB ");
mbedfujimura 0:9aa1fc6fba40 298 break;
mbedfujimura 0:9aa1fc6fba40 299 case(2):
mbedfujimura 0:9aa1fc6fba40 300 IO_Gain=1;
mbedfujimura 0:9aa1fc6fba40 301 lcd.locate(0,0);lcd.printf(" Set Gain=10dB ");
mbedfujimura 0:9aa1fc6fba40 302 break;
mbedfujimura 0:9aa1fc6fba40 303 case(3):
mbedfujimura 0:9aa1fc6fba40 304 IO_Gain=2;
mbedfujimura 0:9aa1fc6fba40 305 lcd.locate(0,0);lcd.printf(" Set Gain=20dB ");
mbedfujimura 0:9aa1fc6fba40 306 break;
mbedfujimura 0:9aa1fc6fba40 307 case(4):
mbedfujimura 0:9aa1fc6fba40 308 IO_Gain=3;
mbedfujimura 0:9aa1fc6fba40 309 lcd.locate(0,0);lcd.printf(" Set Gain=30dB ");
mbedfujimura 0:9aa1fc6fba40 310 break;
mbedfujimura 0:9aa1fc6fba40 311 case(5):
mbedfujimura 0:9aa1fc6fba40 312 IO_Gain=4;
mbedfujimura 0:9aa1fc6fba40 313 lcd.locate(0,0);lcd.printf(" Set Gain=40dB ");
mbedfujimura 0:9aa1fc6fba40 314 break;
mbedfujimura 0:9aa1fc6fba40 315 }
mbedfujimura 0:9aa1fc6fba40 316 }
mbedfujimura 0:9aa1fc6fba40 317 if(EncCount==6){ //menu終了
mbedfujimura 0:9aa1fc6fba40 318 menuFlag=0;
mbedfujimura 0:9aa1fc6fba40 319 StartFlag=1;
mbedfujimura 0:9aa1fc6fba40 320 wait_ms(50);
mbedfujimura 0:9aa1fc6fba40 321 break;
mbedfujimura 0:9aa1fc6fba40 322 }
mbedfujimura 0:9aa1fc6fba40 323 }
mbedfujimura 0:9aa1fc6fba40 324 }
mbedfujimura 0:9aa1fc6fba40 325 }
mbedfujimura 0:9aa1fc6fba40 326
mbedfujimura 0:9aa1fc6fba40 327 if(EncCount==5){ //menu終了
mbedfujimura 0:9aa1fc6fba40 328 menuFlag=0;
mbedfujimura 0:9aa1fc6fba40 329 StartFlag=1;
mbedfujimura 0:9aa1fc6fba40 330 wait_ms(50);
mbedfujimura 0:9aa1fc6fba40 331 }
mbedfujimura 0:9aa1fc6fba40 332 }
mbedfujimura 0:9aa1fc6fba40 333 }
mbedfujimura 0:9aa1fc6fba40 334 //-----------------Select menu End------------------
mbedfujimura 0:9aa1fc6fba40 335 }
mbedfujimura 0:9aa1fc6fba40 336 menuFlag=1;
mbedfujimura 0:9aa1fc6fba40 337 EncCount=0;
mbedfujimura 0:9aa1fc6fba40 338 }
mbedfujimura 0:9aa1fc6fba40 339 }
mbedfujimura 0:9aa1fc6fba40 340 //----------------------------------------------------------------
mbedfujimura 0:9aa1fc6fba40 341
mbedfujimura 0:9aa1fc6fba40 342
mbedfujimura 0:9aa1fc6fba40 343 if(n==0){
mbedfujimura 0:9aa1fc6fba40 344 //----------データ保存SDオープン--------
mbedfujimura 0:9aa1fc6fba40 345 //new epoch time fx
mbedfujimura 0:9aa1fc6fba40 346 epoch_time = rtc.get_epoch();
mbedfujimura 0:9aa1fc6fba40 347 strftime(moji, 32, "/sd/%m%d_%I%M%S.csv", localtime(&epoch_time));
mbedfujimura 0:9aa1fc6fba40 348 fp = fopen(moji, "a+"); // 追加書き込み
mbedfujimura 0:9aa1fc6fba40 349 }
mbedfujimura 0:9aa1fc6fba40 350
mbedfujimura 0:9aa1fc6fba40 351 if(DataEnable==1){
mbedfujimura 0:9aa1fc6fba40 352 IO_CS=0;
mbedfujimura 0:9aa1fc6fba40 353 spi_data[0] = spi.write(Gain);
mbedfujimura 0:9aa1fc6fba40 354 IO_CS=1;
mbedfujimura 0:9aa1fc6fba40 355
mbedfujimura 0:9aa1fc6fba40 356 TxDataChar1=(spi_data[0] & 0x007f); //0-6
mbedfujimura 0:9aa1fc6fba40 357 TxDataChar2=(spi_data[0] & 0xff80)>>7; //7-12
mbedfujimura 0:9aa1fc6fba40 358 //SDカードへ包絡線検波波形データ書き込み
mbedfujimura 0:9aa1fc6fba40 359 Amplitude=TxDataChar2*128+TxDataChar1;
mbedfujimura 0:9aa1fc6fba40 360
mbedfujimura 0:9aa1fc6fba40 361 if(n==0){
mbedfujimura 0:9aa1fc6fba40 362 lcd.clear();
mbedfujimura 0:9aa1fc6fba40 363 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 364 lcd.printf(" ----START----");
mbedfujimura 0:9aa1fc6fba40 365 }
mbedfujimura 0:9aa1fc6fba40 366
mbedfujimura 0:9aa1fc6fba40 367 if(n<4096){
mbedfujimura 0:9aa1fc6fba40 368 WaveData1[n]=Amplitude;
mbedfujimura 0:9aa1fc6fba40 369 }
mbedfujimura 0:9aa1fc6fba40 370
mbedfujimura 0:9aa1fc6fba40 371 DataEnable=0;
mbedfujimura 0:9aa1fc6fba40 372 n=n+1;
mbedfujimura 0:9aa1fc6fba40 373 }
mbedfujimura 0:9aa1fc6fba40 374
mbedfujimura 0:9aa1fc6fba40 375 if(n==4096){
mbedfujimura 0:9aa1fc6fba40 376 //new epoch time fx
mbedfujimura 0:9aa1fc6fba40 377 epoch_time = rtc.get_epoch();
mbedfujimura 0:9aa1fc6fba40 378
mbedfujimura 0:9aa1fc6fba40 379 strftime(moji, 32, "%m/%d %I:%M:%S \r\n", localtime(&epoch_time));
mbedfujimura 0:9aa1fc6fba40 380 fprintf(fp, moji);
mbedfujimura 0:9aa1fc6fba40 381
mbedfujimura 0:9aa1fc6fba40 382 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 383 lcd.printf(" --Save Data-- ");
mbedfujimura 0:9aa1fc6fba40 384
mbedfujimura 0:9aa1fc6fba40 385 while(i<4096){
mbedfujimura 0:9aa1fc6fba40 386 if (fp != NULL){
mbedfujimura 0:9aa1fc6fba40 387 sprintf(moji,"%d\r\n",WaveData1[i]);
mbedfujimura 0:9aa1fc6fba40 388 fprintf(fp, moji);
mbedfujimura 0:9aa1fc6fba40 389 }else{
mbedfujimura 0:9aa1fc6fba40 390 lcd.clear();
mbedfujimura 0:9aa1fc6fba40 391 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 392 lcd.printf(" SD FAILED! ");
mbedfujimura 0:9aa1fc6fba40 393 while(1);
mbedfujimura 0:9aa1fc6fba40 394 }
mbedfujimura 0:9aa1fc6fba40 395 i=i+1;
mbedfujimura 0:9aa1fc6fba40 396 }
mbedfujimura 0:9aa1fc6fba40 397 fclose(fp);
mbedfujimura 0:9aa1fc6fba40 398 lcd.locate(0,0);
mbedfujimura 0:9aa1fc6fba40 399 lcd.printf("Data Save END!");
mbedfujimura 0:9aa1fc6fba40 400 wait_ms(500);
mbedfujimura 0:9aa1fc6fba40 401 n=0;
mbedfujimura 0:9aa1fc6fba40 402 i=0;
mbedfujimura 0:9aa1fc6fba40 403 StartFlag=1;
mbedfujimura 0:9aa1fc6fba40 404 }
mbedfujimura 0:9aa1fc6fba40 405
mbedfujimura 0:9aa1fc6fba40 406
mbedfujimura 0:9aa1fc6fba40 407 }
mbedfujimura 0:9aa1fc6fba40 408
mbedfujimura 0:9aa1fc6fba40 409
mbedfujimura 0:9aa1fc6fba40 410
mbedfujimura 0:9aa1fc6fba40 411 /*
mbedfujimura 0:9aa1fc6fba40 412 rtc.set_cntl_stat_reg(rtc_control_status);
mbedfujimura 0:9aa1fc6fba40 413
mbedfujimura 0:9aa1fc6fba40 414 //get day from user
mbedfujimura 0:9aa1fc6fba40 415 get_user_input("\n\rPlease enter day of week, 1 for Sunday (1-7): ", 1,
mbedfujimura 0:9aa1fc6fba40 416 7, &rtc_calendar.day);
mbedfujimura 0:9aa1fc6fba40 417
mbedfujimura 0:9aa1fc6fba40 418 //get day of month from user
mbedfujimura 0:9aa1fc6fba40 419 get_user_input("\n\rPlease enter day of month (1-31): ", 1, 31,
mbedfujimura 0:9aa1fc6fba40 420 &rtc_calendar.date);
mbedfujimura 0:9aa1fc6fba40 421
mbedfujimura 0:9aa1fc6fba40 422 //get month from user
mbedfujimura 0:9aa1fc6fba40 423 get_user_input("\n\rPlease enter the month, 1 for January (1-12): ", 1,
mbedfujimura 0:9aa1fc6fba40 424 12, &rtc_calendar.month);
mbedfujimura 0:9aa1fc6fba40 425
mbedfujimura 0:9aa1fc6fba40 426 //get year from user
mbedfujimura 0:9aa1fc6fba40 427 get_user_input("\n\rPlease enter the year (0-99): ",0, 99,
mbedfujimura 0:9aa1fc6fba40 428 &rtc_calendar.year);
mbedfujimura 0:9aa1fc6fba40 429
mbedfujimura 0:9aa1fc6fba40 430 //Get time mode
mbedfujimura 0:9aa1fc6fba40 431 get_user_input("\n\rWhat time mode? 1 for 12hr 0 for 24hr: ", 0, 1,
mbedfujimura 0:9aa1fc6fba40 432 &rtc_time.mode);
mbedfujimura 0:9aa1fc6fba40 433
mbedfujimura 0:9aa1fc6fba40 434 if(rtc_time.mode)
mbedfujimura 0:9aa1fc6fba40 435 {
mbedfujimura 0:9aa1fc6fba40 436 //Get AM/PM status
mbedfujimura 0:9aa1fc6fba40 437 get_user_input("\n\rIs it AM or PM? 0 for AM 1 for PM: ", 0, 1,
mbedfujimura 0:9aa1fc6fba40 438 &rtc_time.am_pm);
mbedfujimura 0:9aa1fc6fba40 439 //Get hour from user
mbedfujimura 0:9aa1fc6fba40 440 get_user_input("\n\rPlease enter the hour (1-12): ", 1, 12,
mbedfujimura 0:9aa1fc6fba40 441 &rtc_time.hours);
mbedfujimura 0:9aa1fc6fba40 442 }
mbedfujimura 0:9aa1fc6fba40 443 else
mbedfujimura 0:9aa1fc6fba40 444 {
mbedfujimura 0:9aa1fc6fba40 445 //Get hour from user
mbedfujimura 0:9aa1fc6fba40 446 get_user_input("\n\rPlease enter the hour (0-23): ", 0, 23,
mbedfujimura 0:9aa1fc6fba40 447 &rtc_time.hours);
mbedfujimura 0:9aa1fc6fba40 448 }
mbedfujimura 0:9aa1fc6fba40 449
mbedfujimura 0:9aa1fc6fba40 450 //Get minutes from user
mbedfujimura 0:9aa1fc6fba40 451 get_user_input("\n\rPlease enter the minute (0-59): ", 0, 59,
mbedfujimura 0:9aa1fc6fba40 452 &rtc_time.minutes);
mbedfujimura 0:9aa1fc6fba40 453
mbedfujimura 0:9aa1fc6fba40 454
mbedfujimura 0:9aa1fc6fba40 455 //Get seconds from user
mbedfujimura 0:9aa1fc6fba40 456 get_user_input("\n\rPlease enter the second (0-59): ", 0, 59,
mbedfujimura 0:9aa1fc6fba40 457 &rtc_time.seconds);
mbedfujimura 0:9aa1fc6fba40 458
mbedfujimura 0:9aa1fc6fba40 459
mbedfujimura 0:9aa1fc6fba40 460
mbedfujimura 0:9aa1fc6fba40 461 //Set the time, uses inverted logic for return value
mbedfujimura 0:9aa1fc6fba40 462 if(rtc.set_time(rtc_time))
mbedfujimura 0:9aa1fc6fba40 463 {
mbedfujimura 0:9aa1fc6fba40 464 printf("\n\rrtc.set_time failed!!\n\r");
mbedfujimura 0:9aa1fc6fba40 465 exit(0);
mbedfujimura 0:9aa1fc6fba40 466 }
mbedfujimura 0:9aa1fc6fba40 467
mbedfujimura 0:9aa1fc6fba40 468
mbedfujimura 0:9aa1fc6fba40 469
mbedfujimura 0:9aa1fc6fba40 470 //Set the calendar, uses inverted logic for return value
mbedfujimura 0:9aa1fc6fba40 471 if(rtc.set_calendar(rtc_calendar))
mbedfujimura 0:9aa1fc6fba40 472 {
mbedfujimura 0:9aa1fc6fba40 473 rs232.printf("\n\rrtc.set_calendar failed!!\n\r");
mbedfujimura 0:9aa1fc6fba40 474 exit(0);
mbedfujimura 0:9aa1fc6fba40 475 }
mbedfujimura 0:9aa1fc6fba40 476 */
mbedfujimura 0:9aa1fc6fba40 477 char buffer[32];
mbedfujimura 0:9aa1fc6fba40 478
mbedfujimura 0:9aa1fc6fba40 479
mbedfujimura 0:9aa1fc6fba40 480 while(1){
mbedfujimura 0:9aa1fc6fba40 481
mbedfujimura 0:9aa1fc6fba40 482 rs232.printf("%c[2J", ESC); //clear screen
mbedfujimura 0:9aa1fc6fba40 483 rs232.printf("%c[H", ESC); //move cursor to Home
mbedfujimura 0:9aa1fc6fba40 484
mbedfujimura 0:9aa1fc6fba40 485 //new epoch time fx
mbedfujimura 0:9aa1fc6fba40 486 epoch_time = rtc.get_epoch();
mbedfujimura 0:9aa1fc6fba40 487
mbedfujimura 0:9aa1fc6fba40 488
mbedfujimura 0:9aa1fc6fba40 489 //lcd.printf("\n\r%s", ctime(&epoch_time));
mbedfujimura 0:9aa1fc6fba40 490 rs232.printf("\n\r%s", ctime(&epoch_time));
mbedfujimura 0:9aa1fc6fba40 491
mbedfujimura 0:9aa1fc6fba40 492 //strftime(buffer, 32, "%I:%M %p\n\r", localtime(&epoch_time));
mbedfujimura 0:9aa1fc6fba40 493
mbedfujimura 0:9aa1fc6fba40 494 strftime(buffer, 32, "%m/%d %I:%M:%S", localtime(&epoch_time));
mbedfujimura 0:9aa1fc6fba40 495 lcd.locate(0,1);
mbedfujimura 0:9aa1fc6fba40 496 lcd.printf("%s", buffer);
mbedfujimura 0:9aa1fc6fba40 497 //rs232.printf("%s", buffer);
mbedfujimura 0:9aa1fc6fba40 498
mbedfujimura 0:9aa1fc6fba40 499 wait(1);
mbedfujimura 0:9aa1fc6fba40 500 } //loop
mbedfujimura 0:9aa1fc6fba40 501
mbedfujimura 0:9aa1fc6fba40 502
mbedfujimura 0:9aa1fc6fba40 503
mbedfujimura 0:9aa1fc6fba40 504 }
mbedfujimura 0:9aa1fc6fba40 505
mbedfujimura 0:9aa1fc6fba40 506
mbedfujimura 0:9aa1fc6fba40 507
mbedfujimura 0:9aa1fc6fba40 508 /**********************************************************************
mbedfujimura 0:9aa1fc6fba40 509 * Function: get_user_input()
mbedfujimura 0:9aa1fc6fba40 510 * Parameters: message - user prompt
mbedfujimura 0:9aa1fc6fba40 511 * min - minimum value of input
mbedfujimura 0:9aa1fc6fba40 512 * max - maximum value of input
mbedfujimura 0:9aa1fc6fba40 513 * member - pointer to struct member
mbedfujimura 0:9aa1fc6fba40 514 * Returns: none
mbedfujimura 0:9aa1fc6fba40 515 *
mbedfujimura 0:9aa1fc6fba40 516 * Description: get time/date input from user
mbedfujimura 0:9aa1fc6fba40 517 *
mbedfujimura 0:9aa1fc6fba40 518 **********************************************************************/
mbedfujimura 0:9aa1fc6fba40 519 void get_user_input(char* message, uint8_t min, uint8_t max, uint32_t* member)
mbedfujimura 0:9aa1fc6fba40 520 {
mbedfujimura 0:9aa1fc6fba40 521 uint32_t temp;
mbedfujimura 0:9aa1fc6fba40 522
mbedfujimura 0:9aa1fc6fba40 523 do
mbedfujimura 0:9aa1fc6fba40 524 {
mbedfujimura 0:9aa1fc6fba40 525 rs232.printf("\n\r%s", message);
mbedfujimura 0:9aa1fc6fba40 526
mbedfujimura 0:9aa1fc6fba40 527 //for some reason mbed doesn't like a pointer to a member in scanf
mbedfujimura 0:9aa1fc6fba40 528 //term.scanf("%d", member); works with gcc on RPi
mbedfujimura 0:9aa1fc6fba40 529 rs232.scanf("%d", &temp);
mbedfujimura 0:9aa1fc6fba40 530
mbedfujimura 0:9aa1fc6fba40 531 *member = temp;
mbedfujimura 0:9aa1fc6fba40 532
mbedfujimura 0:9aa1fc6fba40 533 if((*(member)< min) || (*(member) > max))
mbedfujimura 0:9aa1fc6fba40 534 {
mbedfujimura 0:9aa1fc6fba40 535 rs232.printf("\n\rERROR-RTI");
mbedfujimura 0:9aa1fc6fba40 536 }
mbedfujimura 0:9aa1fc6fba40 537 }
mbedfujimura 0:9aa1fc6fba40 538 while((*(member) < min) || (*(member) > max));
mbedfujimura 0:9aa1fc6fba40 539 }
mbedfujimura 0:9aa1fc6fba40 540
mbedfujimura 0:9aa1fc6fba40 541
mbedfujimura 0:9aa1fc6fba40 542 void get_user_input(char* message, uint8_t min, uint8_t max, bool* member)
mbedfujimura 0:9aa1fc6fba40 543 {
mbedfujimura 0:9aa1fc6fba40 544 uint32_t temp;
mbedfujimura 0:9aa1fc6fba40 545
mbedfujimura 0:9aa1fc6fba40 546 do
mbedfujimura 0:9aa1fc6fba40 547 {
mbedfujimura 0:9aa1fc6fba40 548 rs232.printf("\n\r%s", message);
mbedfujimura 0:9aa1fc6fba40 549
mbedfujimura 0:9aa1fc6fba40 550 //for some reason mbed doesn't like a pointer to a member in scanf
mbedfujimura 0:9aa1fc6fba40 551 //term.scanf("%d", member); works with gcc on RPi
mbedfujimura 0:9aa1fc6fba40 552 rs232.scanf("%d", &temp);
mbedfujimura 0:9aa1fc6fba40 553
mbedfujimura 0:9aa1fc6fba40 554 *member = temp;
mbedfujimura 0:9aa1fc6fba40 555
mbedfujimura 0:9aa1fc6fba40 556 if((*(member)< min) || (*(member) > max))
mbedfujimura 0:9aa1fc6fba40 557 {
mbedfujimura 0:9aa1fc6fba40 558 rs232.printf("\n\rERROR-RTI");
mbedfujimura 0:9aa1fc6fba40 559 }
mbedfujimura 0:9aa1fc6fba40 560 }
mbedfujimura 0:9aa1fc6fba40 561 while((*(member) < min) || (*(member) > max));
mbedfujimura 0:9aa1fc6fba40 562 }
mbedfujimura 0:9aa1fc6fba40 563
mbedfujimura 0:9aa1fc6fba40 564
mbedfujimura 0:9aa1fc6fba40 565