v1

Dependencies:   Nichrome_lib mbed mpu9250_i2c IM920 INA226_lib PQLPS22HB EEPROM_lib GPS_interrupt

Committer:
imadaemi
Date:
Thu Jul 29 16:38:36 2021 +0000
Revision:
0:4e38f8b1c183
Child:
1:3151936d9c55
v1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
imadaemi 0:4e38f8b1c183 1 #include "mbed.h"
imadaemi 0:4e38f8b1c183 2 #include "IM920.h"
imadaemi 0:4e38f8b1c183 3 #include "GPS_interrupt.h"
imadaemi 0:4e38f8b1c183 4 #include "PQLPS22HB.h"
imadaemi 0:4e38f8b1c183 5 #include "mpu9250_i2c.h"
imadaemi 0:4e38f8b1c183 6 #include "INA226.h"
imadaemi 0:4e38f8b1c183 7 #include "Nichrome_lib.h"
imadaemi 0:4e38f8b1c183 8 #include "EEPROM_lib.h"
imadaemi 0:4e38f8b1c183 9
imadaemi 0:4e38f8b1c183 10 #define CURRENT_LOCATION_PRESS 1022.624268//投下前に設定
imadaemi 0:4e38f8b1c183 11 #define CURRENT_LOCATION_TEMP 10.650000//投下前に設定
imadaemi 0:4e38f8b1c183 12 #define ACC_RANGE _16G
imadaemi 0:4e38f8b1c183 13 #define GYRO_RANGE _2000DPS
imadaemi 0:4e38f8b1c183 14
imadaemi 0:4e38f8b1c183 15 // ***************************************************
imadaemi 0:4e38f8b1c183 16 // コンストラクタ
imadaemi 0:4e38f8b1c183 17 // ***************************************************
imadaemi 0:4e38f8b1c183 18 Serial pc(USBTX, USBRX, 115200);
imadaemi 0:4e38f8b1c183 19 Serial gps_serial(p9, p10, 115200);
imadaemi 0:4e38f8b1c183 20 Serial im920_serial(p13, p14, 115200);
imadaemi 0:4e38f8b1c183 21
imadaemi 0:4e38f8b1c183 22 I2C i2c(p28, p27);
imadaemi 0:4e38f8b1c183 23
imadaemi 0:4e38f8b1c183 24 IM920 im920(im920_serial, pc, 115200);
imadaemi 0:4e38f8b1c183 25 GPS_interrupt gps(&gps_serial);
imadaemi 0:4e38f8b1c183 26 LPS22HB lps22hb(i2c, LPS22HB::SA0_LOW);
imadaemi 0:4e38f8b1c183 27 mpu9250 mpu9250(i2c,AD0_HIGH);
imadaemi 0:4e38f8b1c183 28 myINA226 ina226_main(i2c, myINA226::A1_GND, myINA226::A0_GND);
imadaemi 0:4e38f8b1c183 29 myINA226 ina226_sep(i2c, myINA226::A1_VDD, myINA226::A0_VDD);
imadaemi 0:4e38f8b1c183 30 Nichrome_lib nich(p20);
imadaemi 0:4e38f8b1c183 31 EEPROM_lib EEPROM(i2c, 1);
imadaemi 0:4e38f8b1c183 32
imadaemi 0:4e38f8b1c183 33 DigitalOut pinA(p21);
imadaemi 0:4e38f8b1c183 34 DigitalOut pinB(p22);
imadaemi 0:4e38f8b1c183 35 DigitalOut pinC(p23);
imadaemi 0:4e38f8b1c183 36
imadaemi 0:4e38f8b1c183 37 // ***************************************************
imadaemi 0:4e38f8b1c183 38 // 関数の宣言
imadaemi 0:4e38f8b1c183 39 // ***************************************************
imadaemi 0:4e38f8b1c183 40 void uplink();
imadaemi 0:4e38f8b1c183 41 void echoIM();
imadaemi 0:4e38f8b1c183 42 void Separate();
imadaemi 0:4e38f8b1c183 43 void StopSeparate();
imadaemi 0:4e38f8b1c183 44 void SetSensor();
imadaemi 0:4e38f8b1c183 45 void GetData();
imadaemi 0:4e38f8b1c183 46 void WriteEEPROM();
imadaemi 0:4e38f8b1c183 47 void setEEPROMGroup(int group_num);
imadaemi 0:4e38f8b1c183 48
imadaemi 0:4e38f8b1c183 49 // ***************************************************
imadaemi 0:4e38f8b1c183 50 // 無線のヘッダまとめ
imadaemi 0:4e38f8b1c183 51 // ***************************************************
imadaemi 0:4e38f8b1c183 52 const char HEADER_SETUP = 0x01;
imadaemi 0:4e38f8b1c183 53 // 0xA1
imadaemi 0:4e38f8b1c183 54
imadaemi 0:4e38f8b1c183 55 const char HEADER_DATA = 0xA2;
imadaemi 0:4e38f8b1c183 56 // 0xA2
imadaemi 0:4e38f8b1c183 57 //
imadaemi 0:4e38f8b1c183 58
imadaemi 0:4e38f8b1c183 59 const char HEADER_ECHO = 0xA5;
imadaemi 0:4e38f8b1c183 60 // 0xA5,コマンド
imadaemi 0:4e38f8b1c183 61 // 1 1
imadaemi 0:4e38f8b1c183 62
imadaemi 0:4e38f8b1c183 63 // ***************************************************
imadaemi 0:4e38f8b1c183 64 // 変数の宣言
imadaemi 0:4e38f8b1c183 65 // ***************************************************
imadaemi 0:4e38f8b1c183 66 bool header_set = false;
imadaemi 0:4e38f8b1c183 67 char im_buf[55];//16なのって意味ある?
imadaemi 0:4e38f8b1c183 68 int im_buf_n = 0;
imadaemi 0:4e38f8b1c183 69
imadaemi 0:4e38f8b1c183 70 float lat, lon, height;
imadaemi 0:4e38f8b1c183 71 float press, temp, altitude;
imadaemi 0:4e38f8b1c183 72
imadaemi 0:4e38f8b1c183 73 float imu[6], mag[3];
imadaemi 0:4e38f8b1c183 74 float mag_geo[3];
imadaemi 0:4e38f8b1c183 75
imadaemi 0:4e38f8b1c183 76 float voltage_main, voltage_sep;
imadaemi 0:4e38f8b1c183 77 float current_main, current_sep;
imadaemi 0:4e38f8b1c183 78
imadaemi 0:4e38f8b1c183 79 // ***************************************************
imadaemi 0:4e38f8b1c183 80 // メイン関数
imadaemi 0:4e38f8b1c183 81 // ***************************************************
imadaemi 0:4e38f8b1c183 82 int main() {
imadaemi 0:4e38f8b1c183 83 pc.printf("Hello Main!\r\n");
imadaemi 0:4e38f8b1c183 84 SetSensor();
imadaemi 0:4e38f8b1c183 85 im920.attach(&uplink, 0xF0);
imadaemi 0:4e38f8b1c183 86
imadaemi 0:4e38f8b1c183 87 while(1){
imadaemi 0:4e38f8b1c183 88 GetData();
imadaemi 0:4e38f8b1c183 89 wait(0.5f);
imadaemi 0:4e38f8b1c183 90 }
imadaemi 0:4e38f8b1c183 91 }
imadaemi 0:4e38f8b1c183 92 // ***************************************************
imadaemi 0:4e38f8b1c183 93 // アップリンク(地上局から)
imadaemi 0:4e38f8b1c183 94 // ***************************************************
imadaemi 0:4e38f8b1c183 95 void uplink(){
imadaemi 0:4e38f8b1c183 96 echoIM();
imadaemi 0:4e38f8b1c183 97 switch(im920.data[1]){
imadaemi 0:4e38f8b1c183 98 case 0x01:
imadaemi 0:4e38f8b1c183 99 pc.printf("********************\r\n");
imadaemi 0:4e38f8b1c183 100 pc.printf("SEPARATE\r\n");
imadaemi 0:4e38f8b1c183 101 pc.printf("********************\r\n\r\n");
imadaemi 0:4e38f8b1c183 102 Separate();
imadaemi 0:4e38f8b1c183 103 break;
imadaemi 0:4e38f8b1c183 104
imadaemi 0:4e38f8b1c183 105 case 0x00:
imadaemi 0:4e38f8b1c183 106 pc.printf("********************\r\n");
imadaemi 0:4e38f8b1c183 107 pc.printf("STOP SEPARATE\r\n");
imadaemi 0:4e38f8b1c183 108 pc.printf("********************\r\n\r\n");
imadaemi 0:4e38f8b1c183 109 StopSeparate();
imadaemi 0:4e38f8b1c183 110 break;
imadaemi 0:4e38f8b1c183 111 }
imadaemi 0:4e38f8b1c183 112 }
imadaemi 0:4e38f8b1c183 113
imadaemi 0:4e38f8b1c183 114 // ***************************************************
imadaemi 0:4e38f8b1c183 115 // 無線信号の送り返し
imadaemi 0:4e38f8b1c183 116 // ***************************************************
imadaemi 0:4e38f8b1c183 117 void echoIM(){
imadaemi 0:4e38f8b1c183 118 im920.header(HEADER_ECHO);
imadaemi 0:4e38f8b1c183 119 im920.write(im920.data[1]);
imadaemi 0:4e38f8b1c183 120 im920.send();
imadaemi 0:4e38f8b1c183 121 }
imadaemi 0:4e38f8b1c183 122
imadaemi 0:4e38f8b1c183 123 // ***************************************************
imadaemi 0:4e38f8b1c183 124 // 分離実行
imadaemi 0:4e38f8b1c183 125 // ***************************************************
imadaemi 0:4e38f8b1c183 126 void Separate(){
imadaemi 0:4e38f8b1c183 127 nich.fire(3.0f);
imadaemi 0:4e38f8b1c183 128 }
imadaemi 0:4e38f8b1c183 129
imadaemi 0:4e38f8b1c183 130 void StopSeparate(){
imadaemi 0:4e38f8b1c183 131 nich.fire_off();
imadaemi 0:4e38f8b1c183 132 }
imadaemi 0:4e38f8b1c183 133
imadaemi 0:4e38f8b1c183 134 // ***************************************************
imadaemi 0:4e38f8b1c183 135 // センサーのセットアップ
imadaemi 0:4e38f8b1c183 136 // ***************************************************
imadaemi 0:4e38f8b1c183 137 void SetSensor(){
imadaemi 0:4e38f8b1c183 138 pc.printf("\r\n");
imadaemi 0:4e38f8b1c183 139 for(int i = 0; i < 20; i++){
imadaemi 0:4e38f8b1c183 140 pc.printf("*");
imadaemi 0:4e38f8b1c183 141 }
imadaemi 0:4e38f8b1c183 142 pc.printf("\r\n");
imadaemi 0:4e38f8b1c183 143 pc.printf("Start Setting\r\n");
imadaemi 0:4e38f8b1c183 144
imadaemi 0:4e38f8b1c183 145 if(!header_set){
imadaemi 0:4e38f8b1c183 146 im920.header((char)HEADER_SETUP);
imadaemi 0:4e38f8b1c183 147 header_set = true;
imadaemi 0:4e38f8b1c183 148 }
imadaemi 0:4e38f8b1c183 149
imadaemi 0:4e38f8b1c183 150 //GPS
imadaemi 0:4e38f8b1c183 151 if(gps.gps_readable == true){
imadaemi 0:4e38f8b1c183 152 pc.printf("GPS : OK!\r\n");
imadaemi 0:4e38f8b1c183 153 im920.write((char)0x01);
imadaemi 0:4e38f8b1c183 154 im_buf[im_buf_n] = '1';
imadaemi 0:4e38f8b1c183 155 im_buf_n ++;
imadaemi 0:4e38f8b1c183 156 }else{
imadaemi 0:4e38f8b1c183 157 pc.printf("GPS : NG...\r\n");
imadaemi 0:4e38f8b1c183 158 im920.write((char)0x00);
imadaemi 0:4e38f8b1c183 159 im_buf[im_buf_n] = '0';
imadaemi 0:4e38f8b1c183 160 im_buf_n ++;
imadaemi 0:4e38f8b1c183 161 }
imadaemi 0:4e38f8b1c183 162
imadaemi 0:4e38f8b1c183 163 //LPS22HB
imadaemi 0:4e38f8b1c183 164 lps22hb.begin();
imadaemi 0:4e38f8b1c183 165 if(lps22hb.test() == true){
imadaemi 0:4e38f8b1c183 166 pc.printf("LPS22HB : OK!\r\n");
imadaemi 0:4e38f8b1c183 167 im920.write((char)0x01);
imadaemi 0:4e38f8b1c183 168 im_buf[im_buf_n] = '1';
imadaemi 0:4e38f8b1c183 169 im_buf_n ++;
imadaemi 0:4e38f8b1c183 170 }else{
imadaemi 0:4e38f8b1c183 171 pc.printf("LPS22HB : NG...\r\n");
imadaemi 0:4e38f8b1c183 172 im920.write((char)0x00);
imadaemi 0:4e38f8b1c183 173 im_buf[im_buf_n] = '0';
imadaemi 0:4e38f8b1c183 174 im_buf_n ++;
imadaemi 0:4e38f8b1c183 175 }
imadaemi 0:4e38f8b1c183 176
imadaemi 0:4e38f8b1c183 177 //MPU9250
imadaemi 0:4e38f8b1c183 178 if(mpu9250.sensorTest() == true){
imadaemi 0:4e38f8b1c183 179 pc.printf("MPU9250 : OK!\r\n");
imadaemi 0:4e38f8b1c183 180 im920.write((char)0x01);
imadaemi 0:4e38f8b1c183 181 im_buf[im_buf_n] = '1';
imadaemi 0:4e38f8b1c183 182 im_buf_n ++;
imadaemi 0:4e38f8b1c183 183 }else{
imadaemi 0:4e38f8b1c183 184 pc.printf("MPU9250 : NG...\r\n");
imadaemi 0:4e38f8b1c183 185 im920.write((char)0x00);
imadaemi 0:4e38f8b1c183 186 im_buf[im_buf_n] = '0';
imadaemi 0:4e38f8b1c183 187 im_buf_n ++;
imadaemi 0:4e38f8b1c183 188 }
imadaemi 0:4e38f8b1c183 189 if(mpu9250.mag_sensorTest() == true){
imadaemi 0:4e38f8b1c183 190 pc.printf("MPU9250 MAG : OK!\r\n");
imadaemi 0:4e38f8b1c183 191 im920.write((char)0x01);
imadaemi 0:4e38f8b1c183 192 im_buf[im_buf_n] = '1';
imadaemi 0:4e38f8b1c183 193 im_buf_n ++;
imadaemi 0:4e38f8b1c183 194 }else{
imadaemi 0:4e38f8b1c183 195 pc.printf("MPU9250 MAG : NG...\r\n");
imadaemi 0:4e38f8b1c183 196 im920.write((char)0x00);
imadaemi 0:4e38f8b1c183 197 im_buf[im_buf_n] = '0';
imadaemi 0:4e38f8b1c183 198 im_buf_n ++;
imadaemi 0:4e38f8b1c183 199 }
imadaemi 0:4e38f8b1c183 200 mpu9250.setAcc(ACC_RANGE);
imadaemi 0:4e38f8b1c183 201 mpu9250.setGyro(GYRO_RANGE);
imadaemi 0:4e38f8b1c183 202 mpu9250.setOffset(0.528892327, -0.660206211, 0.757105891, -0.011691362, 0.025688783, 1.087885322, -159.750004, 121.425005, -392.700012);
imadaemi 0:4e38f8b1c183 203
imadaemi 0:4e38f8b1c183 204 //INA226
imadaemi 0:4e38f8b1c183 205 ina226_main.set_callibretion();
imadaemi 0:4e38f8b1c183 206 ina226_sep.set_callibretion();
imadaemi 0:4e38f8b1c183 207 ina226_main.setup(1);
imadaemi 0:4e38f8b1c183 208 ina226_sep.setup(1);
imadaemi 0:4e38f8b1c183 209
imadaemi 0:4e38f8b1c183 210 if(ina226_main.Connection_check()==0){
imadaemi 0:4e38f8b1c183 211 pc.printf("INA226 Main : OK!\r\n");
imadaemi 0:4e38f8b1c183 212 im920.write((char)0x01);
imadaemi 0:4e38f8b1c183 213 im_buf[im_buf_n] = '1';
imadaemi 0:4e38f8b1c183 214 im_buf_n ++;
imadaemi 0:4e38f8b1c183 215 }else{
imadaemi 0:4e38f8b1c183 216 pc.printf("INA226 Main : NG...\r\n");
imadaemi 0:4e38f8b1c183 217 im920.write((char)0x00);
imadaemi 0:4e38f8b1c183 218 im_buf[im_buf_n] = '0';
imadaemi 0:4e38f8b1c183 219 im_buf_n ++;
imadaemi 0:4e38f8b1c183 220 }
imadaemi 0:4e38f8b1c183 221 if(ina226_sep.Connection_check()==0){
imadaemi 0:4e38f8b1c183 222 pc.printf("INA226 Sep : OK!\r\n");
imadaemi 0:4e38f8b1c183 223 im920.write((char)0x01);
imadaemi 0:4e38f8b1c183 224 im_buf[im_buf_n] = '1';
imadaemi 0:4e38f8b1c183 225 im_buf_n ++;
imadaemi 0:4e38f8b1c183 226 }else{
imadaemi 0:4e38f8b1c183 227 pc.printf("INA226 Sep : NG...\r\n");
imadaemi 0:4e38f8b1c183 228 im920.write((char)0x00);
imadaemi 0:4e38f8b1c183 229 im_buf[im_buf_n] = '0';
imadaemi 0:4e38f8b1c183 230 im_buf_n ++;
imadaemi 0:4e38f8b1c183 231 }
imadaemi 0:4e38f8b1c183 232
imadaemi 0:4e38f8b1c183 233 if(header_set){
imadaemi 0:4e38f8b1c183 234 im920.send();
imadaemi 0:4e38f8b1c183 235 pc.printf("Send : %s\r\n", im_buf);
imadaemi 0:4e38f8b1c183 236 header_set = false;
imadaemi 0:4e38f8b1c183 237 for(int i = 0; i < im_buf_n; i ++){
imadaemi 0:4e38f8b1c183 238 im_buf[i] = '\0';
imadaemi 0:4e38f8b1c183 239 }
imadaemi 0:4e38f8b1c183 240 im_buf_n = 0;
imadaemi 0:4e38f8b1c183 241 }
imadaemi 0:4e38f8b1c183 242
imadaemi 0:4e38f8b1c183 243 pc.printf("\r\n");
imadaemi 0:4e38f8b1c183 244 for(int i = 0; i < 20; i++){
imadaemi 0:4e38f8b1c183 245 pc.printf("*");
imadaemi 0:4e38f8b1c183 246 }
imadaemi 0:4e38f8b1c183 247 pc.printf("\r\n");
imadaemi 0:4e38f8b1c183 248 }
imadaemi 0:4e38f8b1c183 249
imadaemi 0:4e38f8b1c183 250 // ***************************************************
imadaemi 0:4e38f8b1c183 251 // センサーのデータ取得
imadaemi 0:4e38f8b1c183 252 // ***************************************************
imadaemi 0:4e38f8b1c183 253 void GetData(){
imadaemi 0:4e38f8b1c183 254 if(!header_set){
imadaemi 0:4e38f8b1c183 255 im920.header((char)HEADER_DATA);
imadaemi 0:4e38f8b1c183 256 header_set = true;
imadaemi 0:4e38f8b1c183 257 }
imadaemi 0:4e38f8b1c183 258
imadaemi 0:4e38f8b1c183 259 //GPS
imadaemi 0:4e38f8b1c183 260 lat = gps.Latitude();
imadaemi 0:4e38f8b1c183 261 lon = gps.Longitude();
imadaemi 0:4e38f8b1c183 262 height = gps.Height();
imadaemi 0:4e38f8b1c183 263 pc.printf("%f\t%f\t%f\t\r\n", lat, lon, height);
imadaemi 0:4e38f8b1c183 264 im920.write((float)lat);
imadaemi 0:4e38f8b1c183 265 im_buf_n ++;
imadaemi 0:4e38f8b1c183 266 im920.write((float)lon);
imadaemi 0:4e38f8b1c183 267 im_buf_n ++;
imadaemi 0:4e38f8b1c183 268 im920.write((float)height);
imadaemi 0:4e38f8b1c183 269 im_buf_n ++;
imadaemi 0:4e38f8b1c183 270
imadaemi 0:4e38f8b1c183 271 //LPS22HB
imadaemi 0:4e38f8b1c183 272 lps22hb.read_press(&press);
imadaemi 0:4e38f8b1c183 273 lps22hb.read_temp(&temp);
imadaemi 0:4e38f8b1c183 274 altitude = (CURRENT_LOCATION_TEMP + 273.15)/0.0065*(1 - powf(press/CURRENT_LOCATION_PRESS, 287 * 0.0065/9.80665));
imadaemi 0:4e38f8b1c183 275 pc.printf("%f\t%f\t%f\r\n",press, temp, altitude);
imadaemi 0:4e38f8b1c183 276 im920.write((float)press);
imadaemi 0:4e38f8b1c183 277 im_buf_n ++;
imadaemi 0:4e38f8b1c183 278 im920.write((float)temp);
imadaemi 0:4e38f8b1c183 279 im_buf_n ++;
imadaemi 0:4e38f8b1c183 280 im920.write((float)altitude);
imadaemi 0:4e38f8b1c183 281 im_buf_n ++;
imadaemi 0:4e38f8b1c183 282
imadaemi 0:4e38f8b1c183 283 //MPU9250
imadaemi 0:4e38f8b1c183 284 /*
imadaemi 0:4e38f8b1c183 285 mpu9250.getAll(imu, mag);
imadaemi 0:4e38f8b1c183 286 pc.printf("%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t\r\n",imu[0], imu[1], imu[2], imu[3], imu[4], imu[5], mag[0], mag[1], mag[2]);
imadaemi 0:4e38f8b1c183 287
imadaemi 0:4e38f8b1c183 288 im920.write((float)imu[0]);
imadaemi 0:4e38f8b1c183 289 im_buf_n ++;
imadaemi 0:4e38f8b1c183 290 im920.write((float)imu[1]);
imadaemi 0:4e38f8b1c183 291 im_buf_n ++;
imadaemi 0:4e38f8b1c183 292 im920.write((float)imu[2]);
imadaemi 0:4e38f8b1c183 293 im_buf_n ++;
imadaemi 0:4e38f8b1c183 294 im920.write((float)imu[3]);
imadaemi 0:4e38f8b1c183 295 im_buf_n ++;
imadaemi 0:4e38f8b1c183 296 im920.write((float)imu[4]);
imadaemi 0:4e38f8b1c183 297 im_buf_n ++;
imadaemi 0:4e38f8b1c183 298 im920.write((float)imu[5]);
imadaemi 0:4e38f8b1c183 299 im_buf_n ++;
imadaemi 0:4e38f8b1c183 300 im920.write((float)mag[0]);
imadaemi 0:4e38f8b1c183 301 im_buf_n ++;
imadaemi 0:4e38f8b1c183 302 im920.write((float)mag[1]);
imadaemi 0:4e38f8b1c183 303 im_buf_n ++;
imadaemi 0:4e38f8b1c183 304 im920.write((float)mag[2]);
imadaemi 0:4e38f8b1c183 305 im_buf_n ++;
imadaemi 0:4e38f8b1c183 306 */
imadaemi 0:4e38f8b1c183 307 //INA226
imadaemi 0:4e38f8b1c183 308 ina226_main.get_Voltage_current(&voltage_main, &current_main);
imadaemi 0:4e38f8b1c183 309 ina226_sep.get_Voltage_current(&voltage_sep, &current_sep);
imadaemi 0:4e38f8b1c183 310 pc.printf("MainVol : %.2f, SepVol : %.2f, MainCur : %.2f, SepCur : %.2f\r\n", voltage_main*(1/1000), voltage_sep, current_main, current_sep);
imadaemi 0:4e38f8b1c183 311 //pc.printf("MainVol : %f, SepVol : %f, MainCur : %f, SepCur : %f\r\n", voltage_main*(1/1000), voltage_sep, current_main, current_sep);
imadaemi 0:4e38f8b1c183 312 im920.write((float)voltage_main);
imadaemi 0:4e38f8b1c183 313 im_buf_n ++;
imadaemi 0:4e38f8b1c183 314 im920.write((float)current_main);
imadaemi 0:4e38f8b1c183 315 im_buf_n ++;
imadaemi 0:4e38f8b1c183 316 im920.write((float)voltage_sep);
imadaemi 0:4e38f8b1c183 317 im_buf_n ++;
imadaemi 0:4e38f8b1c183 318 im920.write((float)current_sep);
imadaemi 0:4e38f8b1c183 319 im_buf_n ++;
imadaemi 0:4e38f8b1c183 320
imadaemi 0:4e38f8b1c183 321 if(header_set){
imadaemi 0:4e38f8b1c183 322 im920.send();
imadaemi 0:4e38f8b1c183 323 pc.printf("Send : %s\r\n", im_buf);
imadaemi 0:4e38f8b1c183 324 header_set = false;
imadaemi 0:4e38f8b1c183 325 for(int i = 0; i < im_buf_n; i ++){
imadaemi 0:4e38f8b1c183 326 im_buf[i] = '\0';
imadaemi 0:4e38f8b1c183 327 }
imadaemi 0:4e38f8b1c183 328 im_buf_n = 0;
imadaemi 0:4e38f8b1c183 329 }
imadaemi 0:4e38f8b1c183 330 }
imadaemi 0:4e38f8b1c183 331
imadaemi 0:4e38f8b1c183 332 // ***************************************************
imadaemi 0:4e38f8b1c183 333 // EEPROMにデータを書き込むプログラム
imadaemi 0:4e38f8b1c183 334 // ***************************************************
imadaemi 0:4e38f8b1c183 335 void WriteEEPROM(){
imadaemi 0:4e38f8b1c183 336 int ptr, n = 0;
imadaemi 0:4e38f8b1c183 337 int eeprom_ptr = 0;
imadaemi 0:4e38f8b1c183 338
imadaemi 0:4e38f8b1c183 339 for(int i = 0; i < 4; i++){
imadaemi 0:4e38f8b1c183 340 pc.printf("Start to write %d EEPROM\r\n", i);
imadaemi 0:4e38f8b1c183 341 setEEPROMGroup(i);
imadaemi 0:4e38f8b1c183 342 EEPROM.setWriteAddr(1, 0, 0x00, 0x00);
imadaemi 0:4e38f8b1c183 343
imadaemi 0:4e38f8b1c183 344 while(1){
imadaemi 0:4e38f8b1c183 345 ptr = EEPROM.chargeBuff((int)n++);
imadaemi 0:4e38f8b1c183 346 //ptr = EEPROM.chargeBuff((char)0xff);
imadaemi 0:4e38f8b1c183 347 //ptr = EEPROM.chargeBuff((int)0);
imadaemi 0:4e38f8b1c183 348 if(ptr == 128){
imadaemi 0:4e38f8b1c183 349 EEPROM.writeBuff();
imadaemi 0:4e38f8b1c183 350 //ptr = EEPROM.setNextPage();
imadaemi 0:4e38f8b1c183 351 eeprom_ptr = EEPROM.setNextPage();
imadaemi 0:4e38f8b1c183 352 //pc.printf("eeprom_ptr: %08x\r\n", eeprom_ptr);
imadaemi 0:4e38f8b1c183 353 }
imadaemi 0:4e38f8b1c183 354
imadaemi 0:4e38f8b1c183 355 if(eeprom_ptr == 0x01000000){
imadaemi 0:4e38f8b1c183 356 ptr = 0;
imadaemi 0:4e38f8b1c183 357 eeprom_ptr = 0;
imadaemi 0:4e38f8b1c183 358 break;
imadaemi 0:4e38f8b1c183 359 }
imadaemi 0:4e38f8b1c183 360 }
imadaemi 0:4e38f8b1c183 361 }
imadaemi 0:4e38f8b1c183 362 }
imadaemi 0:4e38f8b1c183 363
imadaemi 0:4e38f8b1c183 364 // ***************************************************
imadaemi 0:4e38f8b1c183 365 // マルチプレクサで使うEEPROMを変更する
imadaemi 0:4e38f8b1c183 366 // ***************************************************
imadaemi 0:4e38f8b1c183 367 void setEEPROMGroup(int group_num){
imadaemi 0:4e38f8b1c183 368 switch(group_num){
imadaemi 0:4e38f8b1c183 369 case 0:
imadaemi 0:4e38f8b1c183 370 pinA = 0;
imadaemi 0:4e38f8b1c183 371 pinB = 0;
imadaemi 0:4e38f8b1c183 372 pinC = 0;
imadaemi 0:4e38f8b1c183 373 break;
imadaemi 0:4e38f8b1c183 374
imadaemi 0:4e38f8b1c183 375 case 1:
imadaemi 0:4e38f8b1c183 376 pinA = 1;
imadaemi 0:4e38f8b1c183 377 pinB = 0;
imadaemi 0:4e38f8b1c183 378 pinC = 0;
imadaemi 0:4e38f8b1c183 379 break;
imadaemi 0:4e38f8b1c183 380
imadaemi 0:4e38f8b1c183 381 case 2:
imadaemi 0:4e38f8b1c183 382 pinA = 0;
imadaemi 0:4e38f8b1c183 383 pinB = 1;
imadaemi 0:4e38f8b1c183 384 pinC = 0;
imadaemi 0:4e38f8b1c183 385 break;
imadaemi 0:4e38f8b1c183 386
imadaemi 0:4e38f8b1c183 387 case 3:
imadaemi 0:4e38f8b1c183 388 pinA = 1;
imadaemi 0:4e38f8b1c183 389 pinB = 1;
imadaemi 0:4e38f8b1c183 390 pinC = 0;
imadaemi 0:4e38f8b1c183 391 break;
imadaemi 0:4e38f8b1c183 392 }
imadaemi 0:4e38f8b1c183 393 }