ILF / Mbed 2 deprecated mbed_ILF

Dependencies:   mbed SDFileSystem

Committer:
Kujira
Date:
Fri Jan 21 08:40:08 2022 +0000
Revision:
3:639e05fcfa0b
Parent:
1:f6a9410c46d2
Child:
4:24481ebef1c4
ver1.2.5 YL00 FOR LJP

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kujira 0:1977c2310ef7 1 #include "mbed.h"
Kujira 0:1977c2310ef7 2 #include "SDFileSystem.h"
Kujira 0:1977c2310ef7 3 //#include "MODSERIAL.h"
Kujira 0:1977c2310ef7 4
Kujira 0:1977c2310ef7 5 //difine_mbed_LPC1768
Kujira 0:1977c2310ef7 6
Kujira 0:1977c2310ef7 7 /*******************************************************************************
Kujira 0:1977c2310ef7 8
Kujira 0:1977c2310ef7 9 2018.8.31
Kujira 0:1977c2310ef7 10 ILF Iop汎用器
Kujira 0:1977c2310ef7 11
Kujira 0:1977c2310ef7 12 仕様
Kujira 0:1977c2310ef7 13 電圧/抵抗測定:12bit
Kujira 0:1977c2310ef7 14 電流測定:14bit
Kujira 0:1977c2310ef7 15
Kujira 0:1977c2310ef7 16 割込みはP0~P2で可能
Kujira 0:1977c2310ef7 17 シーケンサスタート信号は、回路図「seq_yobi]で対応
Kujira 0:1977c2310ef7 18
Kujira 3:639e05fcfa0b 19 ver1.2.5
Kujira 3:639e05fcfa0b 20 IOP測定値にO.L追加 ±100uA
Kujira 3:639e05fcfa0b 21
Kujira 1:f6a9410c46d2 22 ver1.2.4
Kujira 1:f6a9410c46d2 23 ver1.2.3のDEB_EN=0としたもの。
Kujira 1:f6a9410c46d2 24 公開用。
Kujira 1:f6a9410c46d2 25
Kujira 0:1977c2310ef7 26 ver1.2.3
Kujira 0:1977c2310ef7 27 EEPROM通信のコードを修正。
Kujira 0:1977c2310ef7 28 debug mode の追加
Kujira 0:1977c2310ef7 29
Kujira 0:1977c2310ef7 30 ver1.2.2
Kujira 0:1977c2310ef7 31 過充電防止検査の上限規格の判定追加
Kujira 0:1977c2310ef7 32 CAL情報登録画面において、登録項目の順序入替え(過充電防止上限規格の挿入)
Kujira 0:1977c2310ef7 33 過充電防止上限規格ゼロの場合、判定しない
Kujira 0:1977c2310ef7 34
Kujira 0:1977c2310ef7 35 ver1.2.1
Kujira 0:1977c2310ef7 36 過充電防止検査の上限規格を新たに設置。
Kujira 0:1977c2310ef7 37 それに伴い、規格値のメモリ割り当てと、上限規格設定画面を追加。
Kujira 0:1977c2310ef7 38
Kujira 0:1977c2310ef7 39 ver1.2.0
Kujira 0:1977c2310ef7 40
Kujira 0:1977c2310ef7 41 2021.9.7
Kujira 0:1977c2310ef7 42
Kujira 0:1977c2310ef7 43 CAL.LJ21(A1098A05)専用
Kujira 0:1977c2310ef7 44 発電検出時、高照度条件下でVSS電圧がIC耐圧超える為、VHD-VDD短絡する仕様へ変更(A05)
Kujira 0:1977c2310ef7 45 200lx下でもVHD-VDD短絡の電圧条件を満たす為、ILFも対応。
Kujira 0:1977c2310ef7 46 VSS端子でVOC測定をする。その為、VOC測定時以外はVSS端子と測定器を切り離すリレーを
Kujira 0:1977c2310ef7 47 サブ基板へ取り付け、制御プログラムを追加した。
Kujira 0:1977c2310ef7 48 CH1:P1_23(LPC1768) (led3_on)
Kujira 0:1977c2310ef7 49 CH2:P1_22(LPC1768) (led3_off)
Kujira 0:1977c2310ef7 50
Kujira 0:1977c2310ef7 51 アンテナ測定時にアンテナ測定端子切り離し用リレーのON/OFF制御を追加
Kujira 0:1977c2310ef7 52 (led4_on)
Kujira 0:1977c2310ef7 53 (led4_off)
Kujira 0:1977c2310ef7 54
Kujira 0:1977c2310ef7 55 ver1.1.0
Kujira 0:1977c2310ef7 56 1)VFD_SW23 SW31がタッチ感度故障の為、配置替え
Kujira 0:1977c2310ef7 57 CAL登録画面とMANUAL測定画面
Kujira 0:1977c2310ef7 58 2)DELETE EEPROM ボタンの配置変更
Kujira 0:1977c2310ef7 59 3)シーケンサ判定IOの変更
Kujira 0:1977c2310ef7 60
Kujira 0:1977c2310ef7 61 ver1.1.1
Kujira 0:1977c2310ef7 62 void auto_meas において初期 R[i]の値をクリアすることを追加
Kujira 0:1977c2310ef7 63 自動測定時、タッチパネルでスタートをやめる(外部IO入力のみ)
Kujira 0:1977c2310ef7 64
Kujira 0:1977c2310ef7 65 ver1.1.2
Kujira 0:1977c2310ef7 66 過充電防止検査時の電源電圧:VOC検査時の電圧となっていたのを修正。
Kujira 0:1977c2310ef7 67
Kujira 0:1977c2310ef7 68 ver1.1.3
Kujira 0:1977c2310ef7 69 1)SDカード未挿入の表示を削除
Kujira 0:1977c2310ef7 70
Kujira 0:1977c2310ef7 71 2)R=Hの時間を0.2sから1sへ変更
Kujira 0:1977c2310ef7 72
Kujira 0:1977c2310ef7 73 R5186 ver2.0.3の内容を反映。
Kujira 0:1977c2310ef7 74
Kujira 0:1977c2310ef7 75 未)フラグでR5186系と切替え
Kujira 0:1977c2310ef7 76 未)測定部ごとにクラス分け(過充電防止のところだけでも)
Kujira 0:1977c2310ef7 77
Kujira 0:1977c2310ef7 78 *******************************************************************************/
Kujira 0:1977c2310ef7 79 //
Kujira 0:1977c2310ef7 80 //各種定数
Kujira 3:639e05fcfa0b 81 #define O_L 100 //[uA]電流測定値のオーバーロード値 //ver1.2.5
Kujira 3:639e05fcfa0b 82 /*
Kujira 3:639e05fcfa0b 83 #define CAP 20 //[uF] 積分回路のコンデンサ容量
Kujira 3:639e05fcfa0b 84 #define TIME_INT 2 //[s]積分時間
Kujira 3:639e05fcfa0b 85 #define GAIN_I 0.2 //電流測定プリアンプのGAIN
Kujira 3:639e05fcfa0b 86 #define LSB_I 0.00025 //[V] MCP3424 LSB size of 14bit conversion rate setting
Kujira 3:639e05fcfa0b 87 #define MINCODE_I -8192 //Minimum output code of MCP3424
Kujira 3:639e05fcfa0b 88 #define MAXCODE_I 8191 //Maximum output code of MCP3424
Kujira 3:639e05fcfa0b 89 #define GAIN_V 0.2 //電流測定プリアンプのGAIN
Kujira 3:639e05fcfa0b 90 */
Kujira 1:f6a9410c46d2 91 #define DEB_EN 0 //デバッグイネーブル:1 ディスイネーブル:0 ver1.2.3
Kujira 0:1977c2310ef7 92 #define RL_EN 1 //1:io[]を外付けのリードリレー制御用に使用する場合は1.以外は0. ver1.2.3
Kujira 0:1977c2310ef7 93 #define SEQ_EN 0 //1:シーケンサ接続仕様 0:シーケンサ未接続仕様
Kujira 0:1977c2310ef7 94 #define period_pwm 200 //*us
Kujira 0:1977c2310ef7 95 #define COP 0.005 //pwm_duty(%) = COP * DATA(0~255)
Kujira 0:1977c2310ef7 96 #define rsense 1000 //抵抗測定回路のプルアップ抵抗値 1kΩ
Kujira 0:1977c2310ef7 97 #define res_vref 0x800 //抵抗測定回路のリファレンス電圧 2.048V
Kujira 0:1977c2310ef7 98 #define dac_vref 2500 //DACのリファレンス電圧 単位[mV]
Kujira 0:1977c2310ef7 99 #define number_of_channels 2 //測定チャンネル数(MAX 4)
Kujira 0:1977c2310ef7 100 #define time_discharge 0.5 //discharging time(s)
Kujira 0:1977c2310ef7 101 #define time_integral 2 //integral time(s)
Kujira 0:1977c2310ef7 102 #define touch 5 //GU-D タッチパネル感度 0~7で設定。低いほど敏感。
Kujira 0:1977c2310ef7 103 #define wait_voc 0.5 //[s]VOC測定電圧設定後からリセットまでの時間
Kujira 0:1977c2310ef7 104 #define wait_reset 0.3 //[s]リセット解除からVOC測定までの時間
Kujira 0:1977c2310ef7 105 #define wait_poweron 4 //[s]電源投入からリセットまでの時間
Kujira 0:1977c2310ef7 106 #define time_reset 0.5 //reset Hの時間 ver1.1.3
Kujira 0:1977c2310ef7 107 #define TIME_RELAY_ON 0.5 //外付けリードリレー用 Ton[s]
Kujira 0:1977c2310ef7 108 #define TIME_RELAY_OFF 0.2 //外付けリードリレー用 Toff[s]
Kujira 0:1977c2310ef7 109
Kujira 0:1977c2310ef7 110 /***************************************
Kujira 0:1977c2310ef7 111 RESOLUTION SETTINGS VS. LSB
Kujira 0:1977c2310ef7 112 -----------------------------------
Kujira 0:1977c2310ef7 113 |Resolution Setting | LSB |
Kujira 0:1977c2310ef7 114 -----------------------------------
Kujira 0:1977c2310ef7 115 | 12bits(00) | 1mv |
Kujira 0:1977c2310ef7 116 | 14bits(01) | 250uV |
Kujira 0:1977c2310ef7 117 | 16bits(10) | 62.5uV |
Kujira 0:1977c2310ef7 118 | 18bits(11) | 15.625uV |
Kujira 0:1977c2310ef7 119 -----------------------------------
Kujira 0:1977c2310ef7 120 ****************************************/
Kujira 0:1977c2310ef7 121 //ver1.2.0
Kujira 0:1977c2310ef7 122 const int version_major = 1; //ソフトバージョン
Kujira 0:1977c2310ef7 123 const int version_minor = 2; //ソフトバージョン
Kujira 3:639e05fcfa0b 124 const int version_build = 5; //ソフトバージョン
Kujira 0:1977c2310ef7 125
Kujira 0:1977c2310ef7 126 //
Kujira 0:1977c2310ef7 127 //繰り返しタイマー割り込み
Kujira 0:1977c2310ef7 128 Ticker flipper; /* 初期化 */
Kujira 0:1977c2310ef7 129 //one shot timer
Kujira 0:1977c2310ef7 130 Timeout oneshot1;
Kujira 0:1977c2310ef7 131 Timeout oneshot2;
Kujira 0:1977c2310ef7 132 Timeout oneshot3;
Kujira 0:1977c2310ef7 133 Timeout oneshot4;
Kujira 0:1977c2310ef7 134 //
Kujira 0:1977c2310ef7 135 //SD-CARD
Kujira 0:1977c2310ef7 136 SDFileSystem sd(P0_9, P0_8, P0_7, P0_6, "sd"); //SDFileSystem name(mosi, miso, sck, cs, mount);
Kujira 0:1977c2310ef7 137 //
Kujira 0:1977c2310ef7 138 //interruput
Kujira 0:1977c2310ef7 139 InterruptIn seq_yobi(P0_19);
Kujira 0:1977c2310ef7 140 //
Kujira 0:1977c2310ef7 141 //start sw
Kujira 0:1977c2310ef7 142 DigitalIn sw_start(P0_4);
Kujira 0:1977c2310ef7 143 //
Kujira 0:1977c2310ef7 144 //DigitalOut
Kujira 0:1977c2310ef7 145 DigitalOut houden[] = { // 配列を用意します
Kujira 0:1977c2310ef7 146 DigitalOut( P2_1 ), //houden1 配列の1番目の要素を**で初期化したDigitalOutに
Kujira 0:1977c2310ef7 147 DigitalOut( P2_0 ), //houden2
Kujira 0:1977c2310ef7 148 DigitalOut( P1_28 ), //houden3
Kujira 0:1977c2310ef7 149 DigitalOut( P1_29 ) //houden4
Kujira 0:1977c2310ef7 150 };
Kujira 0:1977c2310ef7 151
Kujira 0:1977c2310ef7 152 DigitalOut io[] = { // 配列を用意します
Kujira 0:1977c2310ef7 153 DigitalOut( P0_25 ), //io1 配列の1番目の要素をP0_25で初期化したDigitalOutに
Kujira 0:1977c2310ef7 154 DigitalOut( P0_26 ), //io2
Kujira 0:1977c2310ef7 155 DigitalOut( P0_23 ), //io3
Kujira 0:1977c2310ef7 156 DigitalOut( P0_24 ), //io4
Kujira 0:1977c2310ef7 157 DigitalOut( P1_22 ), //io5
Kujira 0:1977c2310ef7 158 DigitalOut( P1_23 ), //io6
Kujira 0:1977c2310ef7 159 DigitalOut( P1_24 ), //io7
Kujira 0:1977c2310ef7 160 DigitalOut( P1_25 ) //io8
Kujira 0:1977c2310ef7 161 };
Kujira 0:1977c2310ef7 162
Kujira 0:1977c2310ef7 163 DigitalOut range[] = { // 配列を用意します
Kujira 0:1977c2310ef7 164 DigitalOut( P2_3 ), //range1 配列の1番目の要素を**で初期化したDigitalOutに
Kujira 0:1977c2310ef7 165 DigitalOut( P2_2 ), //range2
Kujira 0:1977c2310ef7 166 DigitalOut( P1_26 ), //range3
Kujira 0:1977c2310ef7 167 DigitalOut( P1_27 ) //range4
Kujira 0:1977c2310ef7 168 };
Kujira 0:1977c2310ef7 169
Kujira 0:1977c2310ef7 170 /*
Kujira 0:1977c2310ef7 171 DigitalOut led1_green(P0_17);
Kujira 0:1977c2310ef7 172 DigitalOut led2_green(P1_31);
Kujira 0:1977c2310ef7 173 DigitalOut led1_red(P0_18);
Kujira 0:1977c2310ef7 174 DigitalOut led2_red(P1_30);
Kujira 0:1977c2310ef7 175 */
Kujira 0:1977c2310ef7 176
Kujira 0:1977c2310ef7 177 DigitalOut led_green[] = {
Kujira 0:1977c2310ef7 178 DigitalOut( P0_17 ),
Kujira 0:1977c2310ef7 179 DigitalOut( P1_31 ),
Kujira 0:1977c2310ef7 180 DigitalOut( P2_11 ),
Kujira 0:1977c2310ef7 181 DigitalOut( P1_18 )
Kujira 0:1977c2310ef7 182 };
Kujira 0:1977c2310ef7 183
Kujira 0:1977c2310ef7 184 DigitalOut led_red[] = {
Kujira 0:1977c2310ef7 185 DigitalOut( P0_18 ),
Kujira 0:1977c2310ef7 186 DigitalOut( P1_30 ),
Kujira 0:1977c2310ef7 187 DigitalOut( P2_12 ),
Kujira 0:1977c2310ef7 188 DigitalOut( P1_19 )
Kujira 0:1977c2310ef7 189 };
Kujira 0:1977c2310ef7 190 //ver1.1.0
Kujira 0:1977c2310ef7 191 DigitalOut seq_hantei[] = {
Kujira 0:1977c2310ef7 192 DigitalOut( P0_21 ),
Kujira 0:1977c2310ef7 193 DigitalOut( P0_22 ),
Kujira 0:1977c2310ef7 194 DigitalOut( P3_25 ),
Kujira 0:1977c2310ef7 195 DigitalOut( P3_26 )
Kujira 0:1977c2310ef7 196 };
Kujira 0:1977c2310ef7 197
Kujira 0:1977c2310ef7 198 DigitalOut seq_busy(P0_20);
Kujira 0:1977c2310ef7 199 //DigitalIn
Kujira 0:1977c2310ef7 200 DigitalIn seq_start(P4_28);
Kujira 0:1977c2310ef7 201 DigitalIn seq_cal_a(P2_6);
Kujira 0:1977c2310ef7 202 DigitalIn seq_cal_b(P2_7);
Kujira 0:1977c2310ef7 203 DigitalIn seq_cal_c(P2_8);
Kujira 0:1977c2310ef7 204 DigitalIn seq_kosuu_a(P2_13);
Kujira 0:1977c2310ef7 205 DigitalIn seq_kosuu_b(P2_9);
Kujira 0:1977c2310ef7 206 //DigitalIn seq_yobi(P0_19);
Kujira 0:1977c2310ef7 207
Kujira 0:1977c2310ef7 208 //
Kujira 0:1977c2310ef7 209 //PWM
Kujira 0:1977c2310ef7 210 PwmOut leds[] = { //配列を用意
Kujira 0:1977c2310ef7 211 PwmOut(P2_5), //LED1
Kujira 0:1977c2310ef7 212 PwmOut(P2_4), //LED2
Kujira 0:1977c2310ef7 213 PwmOut(P1_21), //LED3
Kujira 0:1977c2310ef7 214 PwmOut(P1_20) //LED4
Kujira 0:1977c2310ef7 215 };
Kujira 0:1977c2310ef7 216
Kujira 0:1977c2310ef7 217 //
Kujira 0:1977c2310ef7 218 //I2C
Kujira 0:1977c2310ef7 219 I2C i2c(P0_10,P0_11); //(PinName sda, PinName scl) I2Cを定義
Kujira 0:1977c2310ef7 220 //
Kujira 0:1977c2310ef7 221 /******************:
Kujira 0:1977c2310ef7 222 SD Card
Kujira 0:1977c2310ef7 223 *******************/
Kujira 0:1977c2310ef7 224 void sd_writetext(char* text);
Kujira 0:1977c2310ef7 225 /******************:
Kujira 0:1977c2310ef7 226 gu-D(表示器) addr:50H
Kujira 0:1977c2310ef7 227 *******************/
Kujira 0:1977c2310ef7 228 //parameter_gu256X128C-D903M
Kujira 0:1977c2310ef7 229 const int addr_gu = 0x50 << 1; // Address of gu256X128C-D903M
Kujira 0:1977c2310ef7 230 //
Kujira 0:1977c2310ef7 231 //prototype
Kujira 0:1977c2310ef7 232 const int Proportional1 = 0x02;
Kujira 0:1977c2310ef7 233 //const int Proportional2 = 0x03;
Kujira 0:1977c2310ef7 234 //const int Proportional3 = 0x04;
Kujira 0:1977c2310ef7 235 //
Kujira 0:1977c2310ef7 236 void gu_cls();
Kujira 0:1977c2310ef7 237 void gu_drawButton(int x, int y, int w, int h, const char *data);
Kujira 0:1977c2310ef7 238 void gu_cursor(int x, int y);
Kujira 0:1977c2310ef7 239 void gu_fontsize(const char code);
Kujira 0:1977c2310ef7 240 void gu_print_dot(int x, int y, const char *ptext);
Kujira 0:1977c2310ef7 241 void gu_fontWidth(const char fontWidth);
Kujira 0:1977c2310ef7 242 void gu_print(const char t[] );
Kujira 0:1977c2310ef7 243 void gu_fontReverse(int code);
Kujira 0:1977c2310ef7 244 void gu_RealTimeImage_dot(int x, int y, int w, int h, const char data[]);
Kujira 0:1977c2310ef7 245 void gu_RealTimeImage(int w, int h, char data[]);
Kujira 0:1977c2310ef7 246 void gu_magnify(int x, int y);
Kujira 0:1977c2310ef7 247 //
Kujira 0:1977c2310ef7 248 //オリジナルgu用関数
Kujira 0:1977c2310ef7 249 void gu_print1(const char* ptext);
Kujira 0:1977c2310ef7 250 void gu_luminance(const char* cl);
Kujira 0:1977c2310ef7 251 void gu_touchPara(int x,int y);
Kujira 0:1977c2310ef7 252 void gu_sendOneByte(char data);
Kujira 0:1977c2310ef7 253 void utility(); //輝度調整サブルーチン
Kujira 0:1977c2310ef7 254 void gu_CRLF();
Kujira 0:1977c2310ef7 255 void gu_reverse(char x);
Kujira 0:1977c2310ef7 256 void gu_drawbutton_cursor(char x,char y);
Kujira 0:1977c2310ef7 257 void gu_onebyte(char data);
Kujira 0:1977c2310ef7 258 //
Kujira 0:1977c2310ef7 259 //Button Trig Function
Kujira 0:1977c2310ef7 260 void adjust_illumination();//LED輝度調整サブ
Kujira 0:1977c2310ef7 261 void gu_initial();//初期設定サブ
Kujira 0:1977c2310ef7 262 void gu_set_button(char sw_num,char* text);//SWナンバーと表示テキストを指定
Kujira 0:1977c2310ef7 263 void gu_set_button_font1(char sw_num,char* text);//fontsize = 1
Kujira 0:1977c2310ef7 264 void gu_button_up(char sw_num); //upボタン表示
Kujira 0:1977c2310ef7 265 void gu_button_down(char sw_num);//downボタン表示
Kujira 0:1977c2310ef7 266 void gu_Button_up1();
Kujira 0:1977c2310ef7 267 void gu_Button_up2();
Kujira 0:1977c2310ef7 268 void gu_Button_up3();
Kujira 0:1977c2310ef7 269 void gu_Button_up4();
Kujira 0:1977c2310ef7 270 void gu_button_up_on(char sw_num);
Kujira 0:1977c2310ef7 271 void gu_Button_up_on2();
Kujira 0:1977c2310ef7 272 void gu_Button_down1();
Kujira 0:1977c2310ef7 273 void gu_Button_down2();
Kujira 0:1977c2310ef7 274 void gu_Button_down3();
Kujira 0:1977c2310ef7 275 void gu_Button_down4();
Kujira 0:1977c2310ef7 276 void gu_button_down_on(char sw_num);
Kujira 0:1977c2310ef7 277 void gu_Button_down_on2();
Kujira 0:1977c2310ef7 278 void gu_Button_power_on();
Kujira 0:1977c2310ef7 279 void gu_Button_power_off();
Kujira 0:1977c2310ef7 280
Kujira 0:1977c2310ef7 281 /***************************
Kujira 0:1977c2310ef7 282 LCP1768(EEPROM) addr:15H
Kujira 0:1977c2310ef7 283 ***************************/
Kujira 0:1977c2310ef7 284 //parameter_PCAS08A(EEPROM)
Kujira 0:1977c2310ef7 285 //const int addr_EEPROM = 0x15 << 3; // Address of PCAS08A(EEPROM) コメント化 ver1.2.1
Kujira 0:1977c2310ef7 286 char rdata[17]; //EEPROMからのリードデータ
Kujira 0:1977c2310ef7 287 char wdata[17]; //EEPROMへのライトデータ
Kujira 0:1977c2310ef7 288 int Jyushin; //受信成功時 Jyushin=0
Kujira 0:1977c2310ef7 289 int Soushin; //送信成功時 Soushin=0
Kujira 0:1977c2310ef7 290 const int fixed_adrs = 0x15 << 3; // Address of PCAS08A(EEPROM) 始めの5bit ver1.2.1
Kujira 3:639e05fcfa0b 291 int adrs_eeprom; //slave address ver1.2.1
Kujira 0:1977c2310ef7 292 /***************************
Kujira 0:1977c2310ef7 293 MCP3424(ADC)
Kujira 0:1977c2310ef7 294 ***************************/
Kujira 0:1977c2310ef7 295 //parameter_ADC(MCP3424)
Kujira 0:1977c2310ef7 296 const int addr_ADC1 = 0x6C <<1;//電圧抵抗測定No.1,No.2用ADC
Kujira 0:1977c2310ef7 297 const int addr_ADC2 = 0x6A <<1;//電圧抵抗測定No.3,No.4用ADC
Kujira 0:1977c2310ef7 298 const int addr_ADC3 = 0x68 <<1;//電流測定No.1,No.2
Kujira 0:1977c2310ef7 299 const int addr_ADC4 = 0x6E <<1;//電流測定No.3,No.4
Kujira 0:1977c2310ef7 300 //
Kujira 0:1977c2310ef7 301 char hd[] = "0123456789ABCDEF" ;
Kujira 0:1977c2310ef7 302 //
Kujira 0:1977c2310ef7 303 //関数
Kujira 0:1977c2310ef7 304 void general_call(char com); //power on reset
Kujira 0:1977c2310ef7 305 char adc_config(char ch, char rate);
Kujira 0:1977c2310ef7 306 //
Kujira 0:1977c2310ef7 307 /***************************
Kujira 0:1977c2310ef7 308 AD5625RBUZ(DAC) addr:1F
Kujira 0:1977c2310ef7 309 ***************************/
Kujira 0:1977c2310ef7 310 const char addr_dac = 0x1F <<1;
Kujira 0:1977c2310ef7 311 void dac_out(short mvolt, char addr);
Kujira 0:1977c2310ef7 312 void dac_init();
Kujira 0:1977c2310ef7 313 //
Kujira 0:1977c2310ef7 314 /***************************
Kujira 0:1977c2310ef7 315 表示
Kujira 0:1977c2310ef7 316 関数
Kujira 0:1977c2310ef7 317 ***************************/
Kujira 0:1977c2310ef7 318 void select_cal();//CAL選択画面
Kujira 0:1977c2310ef7 319 void setup_cal_information(char cal_num);//CAL情報登録画面
Kujira 0:1977c2310ef7 320 void manual_int_hyouji();
Kujira 0:1977c2310ef7 321 void auto_int_hyouji();
Kujira 0:1977c2310ef7 322 /***************************
Kujira 0:1977c2310ef7 323 測定関係
Kujira 0:1977c2310ef7 324 関数
Kujira 0:1977c2310ef7 325 ***************************/
Kujira 0:1977c2310ef7 326 void set_pullup();//シーケンサからの入力ピンのプルアップ設定
Kujira 0:1977c2310ef7 327 void trigger();//シーケンサからのスタート信号割込みサブ
Kujira 0:1977c2310ef7 328 void calibration();
Kujira 0:1977c2310ef7 329 void compute_adc(int adc_con, long *avg);//(ADCのCONFIG, 計算結果)
Kujira 0:1977c2310ef7 330 void gu_putdec(short* x);//2byteを10進で表示
Kujira 0:1977c2310ef7 331 void gu_putdeck(short* x);//2byteを10進で表示。1/1000.
Kujira 0:1977c2310ef7 332 void gu_putdeci(float* x);// ver1.1.4
Kujira 0:1977c2310ef7 333 void gu_putdeci_mA(float* x);// ver1.1.4
Kujira 0:1977c2310ef7 334 void meas_current_automode(char amount);//AutoMOdeの電流測定サブ iop ocp共通
Kujira 0:1977c2310ef7 335 void auto_run();//自動測定モード
Kujira 0:1977c2310ef7 336 void auto_meas(char noc);//一括測定。ch:測定する総チャンネル数
Kujira 0:1977c2310ef7 337 void meas_sub();//自動測定モード内の繰り返し処理
Kujira 0:1977c2310ef7 338 void manual();//手動測定モード
Kujira 0:1977c2310ef7 339 void hantei(char noc);//規格値比較エラーフラグ立てる
Kujira 0:1977c2310ef7 340 void select_ich(char ch);//電流測定chの選択と設定
Kujira 0:1977c2310ef7 341 short read_adc(char addr);//指定addressから2byte読込み
Kujira 0:1977c2310ef7 342 short meas_voltage(char ch);//測定チャンネルを指定して、測定値(2byte)を返す
Kujira 0:1977c2310ef7 343 short meas_resistor(char ch);//測定チャンネルを指定して、測定値(2byte)を返す
Kujira 0:1977c2310ef7 344 void display_resistor(short sdata);//測定値を表示する。
Kujira 0:1977c2310ef7 345 void led_off();//判定用LED全消灯
Kujira 0:1977c2310ef7 346 void read_syoudo(char* c);//EEPROMから照度データ(PwmDuty)を読み込んでセットする
Kujira 0:1977c2310ef7 347
Kujira 0:1977c2310ef7 348 //
Kujira 0:1977c2310ef7 349 /***************************
Kujira 0:1977c2310ef7 350 測定関係
Kujira 0:1977c2310ef7 351 変数
Kujira 0:1977c2310ef7 352 ***************************/
Kujira 0:1977c2310ef7 353 char io_voc; //VOC測定時のIO操作。ON(=VDD)の場合は”0x01"OFF(=OPEN)は"0x00"
Kujira 0:1977c2310ef7 354 char err_f[4];//ch1~4 規格外発生時のフラグ 0or1
Kujira 0:1977c2310ef7 355 short V[4];//ADC入力値を3倍した値 測定値[V] 16進数
Kujira 0:1977c2310ef7 356 float I[4];//電流測定値チャンネル毎の
Kujira 0:1977c2310ef7 357 short R[4];//抵抗測定値
Kujira 0:1977c2310ef7 358 short voc[4];//ADC入力値を3倍した値 測定値[mV] 16進数
Kujira 0:1977c2310ef7 359 short vocp[4];//過充電防止確認用電圧
Kujira 0:1977c2310ef7 360 float iop[4];//2byte 補数あり 測定値 1bit 0.01uA
Kujira 0:1977c2310ef7 361 float ocp[4];//2byte 補数あり 測定値
Kujira 0:1977c2310ef7 362 char ch_num ;//選択中の測定チャネル(0~3)
Kujira 0:1977c2310ef7 363
Kujira 0:1977c2310ef7 364 /**********************
Kujira 0:1977c2310ef7 365 暫定
Kujira 0:1977c2310ef7 366 **********************/
Kujira 0:1977c2310ef7 367 /*
Kujira 0:1977c2310ef7 368 #define vss_voc 3600
Kujira 0:1977c2310ef7 369 #define vss_iop 2800
Kujira 0:1977c2310ef7 370 #define vss_ocp 3600
Kujira 0:1977c2310ef7 371 #define wait_vss 4
Kujira 0:1977c2310ef7 372 #define wait_io 2
Kujira 0:1977c2310ef7 373 #define low_limit_voc 0xCE4//[mv] HEX
Kujira 0:1977c2310ef7 374 #define low_limit_iop 0x44C//11uA換算:1100*0.01
Kujira 0:1977c2310ef7 375 #define low_limit_ocp 0xFFE2//-0.3uA換算
Kujira 0:1977c2310ef7 376 */
Kujira 0:1977c2310ef7 377 /******************************
Kujira 0:1977c2310ef7 378
Kujira 0:1977c2310ef7 379 CAL情報登録 -> EEPROM
Kujira 0:1977c2310ef7 380
Kujira 0:1977c2310ef7 381 *******************************/
Kujira 0:1977c2310ef7 382 #define caliber_number 6 /* CAL登録数 */
Kujira 0:1977c2310ef7 383 #define addr_calnum 0x20 /* 起動時に選択するCALnumber */
Kujira 0:1977c2310ef7 384 #define addr_cal1 0x80 /* CAL.No1の情報を保存しているEEPROMのアドレス PCA24S08A BLOCK1 */
Kujira 0:1977c2310ef7 385 #define addr_cal2 0x90 /* CAL.No2の情報を保存しているEEPROMのアドレス PCA24S08A BLOCK1*/
Kujira 0:1977c2310ef7 386 #define addr_cal3 0xA0 /* CAL.No3の情報を保存しているEEPROMのアドレス PCA24S08A BLOCK1*/
Kujira 0:1977c2310ef7 387 #define addr_cal4 0xB0 /* CAL.No4の情報を保存しているEEPROMのアドレス PCA24S08A BLOCK1*/
Kujira 0:1977c2310ef7 388 #define addr_cal5 0xC0 /* CAL.No5の情報を保存しているEEPROMのアドレス PCA24S08A BLOCK1*/
Kujira 0:1977c2310ef7 389 #define addr_cal6 0xD0 /* CAL.No6の情報を保存しているEEPROMのアドレス PCA24S08A BLOCK1*/
Kujira 0:1977c2310ef7 390 //ver1.2.1
Kujira 0:1977c2310ef7 391 //EEPROM BLOCK2へのアドレッシングは、別で初期8bitも制御する必要がある。
Kujira 0:1977c2310ef7 392 #define addr_cal1_2 0x00 /* CAL.No1の情報を保存しているEEPROMのアドレス 追加分 PCA24S08A BLOCK2*/
Kujira 0:1977c2310ef7 393 #define addr_cal2_2 0x10 /* CAL.No2の情報を保存しているEEPROMのアドレス 追加分 PCA24S08A BLOCK2*/
Kujira 0:1977c2310ef7 394 #define addr_cal3_2 0x20 /* CAL.No3の情報を保存しているEEPROMのアドレス 追加分 PCA24S08A BLOCK2*/
Kujira 0:1977c2310ef7 395 #define addr_cal4_2 0x30 /* CAL.No4の情報を保存しているEEPROMのアドレス 追加分 PCA24S08A BLOCK2*/
Kujira 0:1977c2310ef7 396 #define addr_cal5_2 0x40 /* CAL.No5の情報を保存しているEEPROMのアドレス 追加分 PCA24S08A BLOCK2*/
Kujira 0:1977c2310ef7 397 #define addr_cal6_2 0x50 /* CAL.No6の情報を保存しているEEPROMのアドレス 追加分 PCA24S08A BLOCK2*/
Kujira 0:1977c2310ef7 398 //up to here
Kujira 0:1977c2310ef7 399
Kujira 0:1977c2310ef7 400 //structure
Kujira 0:1977c2310ef7 401 struct cal_info {
Kujira 0:1977c2310ef7 402 short number; /* CAL.No. */
Kujira 0:1977c2310ef7 403 short vss_iop; /* IOP測定時のVss電圧 1bit * 0.01uA*/
Kujira 0:1977c2310ef7 404 short vss_ocp; /* 過充電防止(over charge protection)測定時のVss電圧 */
Kujira 0:1977c2310ef7 405 short vss_voc; /* VOC測定時のVss電圧 */
Kujira 0:1977c2310ef7 406 short low_limit_voc; //1bit * 1mv
Kujira 0:1977c2310ef7 407 short low_limit_iop; //1bit * 0.01uA
Kujira 0:1977c2310ef7 408 short low_limit_ocp; //過充電防止検査の上限規格値(プラス側)
Kujira 0:1977c2310ef7 409 short up_limit_ocp; //過充電防止検査の上限規格値(マイナス側)ver1.2.1追加
Kujira 0:1977c2310ef7 410 float wait_iop; /* [s]Iop測定前の待機時間 1bit 1s 換算*/
Kujira 0:1977c2310ef7 411 float wait_ocp; /* [s]過充電防止時消電測定前の待機時間 1bit 1s換算*/
Kujira 0:1977c2310ef7 412 short low_limit_resistor; /* アンテナ抵抗規格 1bit 10Ω*/
Kujira 0:1977c2310ef7 413 short up_limit_resistor; /* アンテナ抵抗規格 1bit 10Ω*/
Kujira 0:1977c2310ef7 414 } ;
Kujira 0:1977c2310ef7 415 //parameter
Kujira 0:1977c2310ef7 416 struct cal_info calinfo;
Kujira 0:1977c2310ef7 417 char reg_num; /* 選択中の登録CALナンバー */
Kujira 0:1977c2310ef7 418 //function
Kujira 0:1977c2310ef7 419 void erace_calinfo();
Kujira 0:1977c2310ef7 420 void read_regnum();
Kujira 0:1977c2310ef7 421 void read_caliber(cal_info *cal, int num);
Kujira 0:1977c2310ef7 422 void write_caliber_information(cal_info *cal, int num);
Kujira 0:1977c2310ef7 423
Kujira 3:639e05fcfa0b 424
Kujira 3:639e05fcfa0b 425 /*******************************
Kujira 3:639e05fcfa0b 426
Kujira 3:639e05fcfa0b 427 ver1.2.5
Kujira 3:639e05fcfa0b 428 convert code to Ampare
Kujira 3:639e05fcfa0b 429
Kujira 3:639e05fcfa0b 430 *******************************
Kujira 3:639e05fcfa0b 431 float cul_ADC(short code){
Kujira 3:639e05fcfa0b 432
Kujira 3:639e05fcfa0b 433 float analog_data;
Kujira 3:639e05fcfa0b 434
Kujira 3:639e05fcfa0b 435 analog_data = code * LSB_I / GAIN_I / TIME_INT * CAP ;
Kujira 3:639e05fcfa0b 436
Kujira 3:639e05fcfa0b 437 return( analog_data );
Kujira 3:639e05fcfa0b 438
Kujira 3:639e05fcfa0b 439 }
Kujira 3:639e05fcfa0b 440 */
Kujira 3:639e05fcfa0b 441
Kujira 0:1977c2310ef7 442 /*******************************
Kujira 0:1977c2310ef7 443
Kujira 0:1977c2310ef7 444 set mode interruptin/degitalin
Kujira 0:1977c2310ef7 445
Kujira 0:1977c2310ef7 446 *******************************/
Kujira 0:1977c2310ef7 447 void set_pullup()
Kujira 0:1977c2310ef7 448 {
Kujira 0:1977c2310ef7 449 sw_start.mode(PullUp);
Kujira 0:1977c2310ef7 450 seq_start.mode(PullUp);//シーケンサからのスタート信号
Kujira 0:1977c2310ef7 451 seq_cal_a.mode(PullUp);
Kujira 0:1977c2310ef7 452 seq_cal_b.mode(PullUp);
Kujira 0:1977c2310ef7 453 seq_cal_c.mode(PullUp);
Kujira 0:1977c2310ef7 454 seq_kosuu_a.mode(PullUp);
Kujira 0:1977c2310ef7 455 seq_kosuu_b.mode(PullUp);
Kujira 0:1977c2310ef7 456 }
Kujira 0:1977c2310ef7 457 /*******************************
Kujira 0:1977c2310ef7 458
Kujira 0:1977c2310ef7 459 Sequence Mode main screen
Kujira 0:1977c2310ef7 460
Kujira 0:1977c2310ef7 461 *******************************/
Kujira 0:1977c2310ef7 462 void seq()
Kujira 0:1977c2310ef7 463 {
Kujira 0:1977c2310ef7 464 gu_cls();//clear screen
Kujira 0:1977c2310ef7 465 gu_fontsize(2);
Kujira 0:1977c2310ef7 466 gu_print1("Sequenser Mode");
Kujira 0:1977c2310ef7 467
Kujira 0:1977c2310ef7 468 //seq_start.fall(&trigger);//スタート信号立下りで割込み
Kujira 0:1977c2310ef7 469
Kujira 0:1977c2310ef7 470 //シーケンサのトリガ以外は受け付けない
Kujira 0:1977c2310ef7 471 while(1) {
Kujira 0:1977c2310ef7 472
Kujira 0:1977c2310ef7 473 if( seq_start == 0 ) {
Kujira 0:1977c2310ef7 474
Kujira 0:1977c2310ef7 475 trigger();
Kujira 0:1977c2310ef7 476
Kujira 0:1977c2310ef7 477 }
Kujira 0:1977c2310ef7 478
Kujira 0:1977c2310ef7 479 wait(0.3);
Kujira 0:1977c2310ef7 480
Kujira 0:1977c2310ef7 481 }//while(1)
Kujira 0:1977c2310ef7 482 }
Kujira 0:1977c2310ef7 483
Kujira 0:1977c2310ef7 484
Kujira 0:1977c2310ef7 485 /*******************************
Kujira 0:1977c2310ef7 486
Kujira 0:1977c2310ef7 487 Strart Sequence
Kujira 0:1977c2310ef7 488
Kujira 0:1977c2310ef7 489 *******************************/
Kujira 0:1977c2310ef7 490 void trigger()
Kujira 0:1977c2310ef7 491 {
Kujira 0:1977c2310ef7 492 char meas_num;//測定個数
Kujira 0:1977c2310ef7 493 char cal_num; //CAL選択ナンバー
Kujira 0:1977c2310ef7 494 //char cmd_gu[2];
Kujira 0:1977c2310ef7 495
Kujira 0:1977c2310ef7 496 gu_cls();//clear screen
Kujira 0:1977c2310ef7 497 gu_fontsize(2);
Kujira 0:1977c2310ef7 498 gu_print1("Sequenser Mode");
Kujira 0:1977c2310ef7 499 gu_fontsize(1);
Kujira 0:1977c2310ef7 500 gu_cursor(0,3);
Kujira 0:1977c2310ef7 501 gu_print1("start ");
Kujira 0:1977c2310ef7 502 gu_cursor(128,0);
Kujira 0:1977c2310ef7 503 gu_print1("CAL.");
Kujira 0:1977c2310ef7 504
Kujira 0:1977c2310ef7 505 //シーケンサからCAL選択bit読込と表示
Kujira 0:1977c2310ef7 506 cal_num = ( seq_cal_c << 2 ) + ( seq_cal_b << 1 ) + seq_cal_a;
Kujira 0:1977c2310ef7 507
Kujira 0:1977c2310ef7 508 cal_num = ( ~ cal_num ) & 0x7 ; //3bit入力の負論理
Kujira 0:1977c2310ef7 509
Kujira 0:1977c2310ef7 510 //read caliber infomation from eeprom
Kujira 0:1977c2310ef7 511 if( cal_num >= 1 && cal_num <= 6 ) {
Kujira 0:1977c2310ef7 512 read_caliber(&calinfo, cal_num);
Kujira 0:1977c2310ef7 513 gu_onebyte( cal_num + 0x30 );//CAL.No.確認用
Kujira 0:1977c2310ef7 514 } else {
Kujira 0:1977c2310ef7 515 gu_cls();
Kujira 0:1977c2310ef7 516 gu_fontsize(1);
Kujira 0:1977c2310ef7 517 gu_print1("Cal number error");
Kujira 0:1977c2310ef7 518 wait(1);
Kujira 0:1977c2310ef7 519
Kujira 0:1977c2310ef7 520 }
Kujira 0:1977c2310ef7 521
Kujira 0:1977c2310ef7 522 meas_num = ( ~(( seq_kosuu_b << 1 ) + seq_kosuu_a )) & 0x3; //2bit負論理
Kujira 0:1977c2310ef7 523
Kujira 0:1977c2310ef7 524 gu_cursor(128,1);
Kujira 0:1977c2310ef7 525 gu_print1("n=");
Kujira 0:1977c2310ef7 526 gu_onebyte( meas_num + 0x30 );//測定個数確認用
Kujira 0:1977c2310ef7 527
Kujira 0:1977c2310ef7 528 seq_busy = 1;//DegitalOut busy
Kujira 0:1977c2310ef7 529
Kujira 0:1977c2310ef7 530 auto_meas( meas_num );
Kujira 0:1977c2310ef7 531
Kujira 0:1977c2310ef7 532 //判定結果をシーケンサへ出力
Kujira 0:1977c2310ef7 533 hantei( meas_num );
Kujira 0:1977c2310ef7 534
Kujira 0:1977c2310ef7 535 wait(0.1);
Kujira 0:1977c2310ef7 536
Kujira 0:1977c2310ef7 537 //測定終了
Kujira 0:1977c2310ef7 538 seq_busy = 0;//DegitalOut busy
Kujira 0:1977c2310ef7 539
Kujira 0:1977c2310ef7 540 //終了表示
Kujira 0:1977c2310ef7 541 gu_fontsize(1);
Kujira 0:1977c2310ef7 542 gu_cursor(0,3);
Kujira 0:1977c2310ef7 543 gu_print1("ready ");
Kujira 0:1977c2310ef7 544
Kujira 0:1977c2310ef7 545 }
Kujira 0:1977c2310ef7 546
Kujira 0:1977c2310ef7 547 /*******************************
Kujira 0:1977c2310ef7 548
Kujira 0:1977c2310ef7 549 EEPROMへCAL情報(struct)を保存
Kujira 0:1977c2310ef7 550
Kujira 0:1977c2310ef7 551 *******************************/
Kujira 0:1977c2310ef7 552 void write_caliber_information(cal_info *cal, int num)
Kujira 0:1977c2310ef7 553 {
Kujira 0:1977c2310ef7 554 char cdata[17];//1byte
Kujira 0:1977c2310ef7 555
Kujira 0:1977c2310ef7 556 //EEPROM書込み 先頭アドレス
Kujira 0:1977c2310ef7 557 cdata[0] = addr_cal1 + 0x10 * ( num - 1 );
Kujira 0:1977c2310ef7 558
Kujira 0:1977c2310ef7 559 //データ分割 EEPROM_BYTE 0x00~0x0Bまで
Kujira 0:1977c2310ef7 560 cdata[1] = calinfo.vss_iop & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 561 cdata[2] = ( calinfo.vss_iop >> 8 ) & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 562
Kujira 0:1977c2310ef7 563 cdata[3] = calinfo.vss_ocp & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 564 cdata[4] = ( calinfo.vss_ocp >> 8 ) & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 565
Kujira 0:1977c2310ef7 566 cdata[5] = calinfo.vss_voc & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 567 cdata[6] = ( calinfo.vss_voc >> 8 ) & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 568
Kujira 0:1977c2310ef7 569 cdata[7] = calinfo.low_limit_voc & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 570 cdata[8] = ( calinfo.low_limit_voc >> 8 ) & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 571
Kujira 0:1977c2310ef7 572 cdata[9] = calinfo.low_limit_iop & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 573 cdata[10] = ( calinfo.low_limit_iop >> 8 ) & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 574
Kujira 0:1977c2310ef7 575 cdata[11] = calinfo.low_limit_ocp & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 576 cdata[12] = ( calinfo.low_limit_ocp >> 8 ) & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 577
Kujira 0:1977c2310ef7 578 //ver1.1.0
Kujira 0:1977c2310ef7 579 cdata[13] = calinfo.wait_iop; //1bitあたり 1s
Kujira 0:1977c2310ef7 580 cdata[14] = calinfo.wait_ocp; //1bitあたり 1s
Kujira 0:1977c2310ef7 581 /*ver1.1.0
Kujira 0:1977c2310ef7 582 cdata[13] = calinfo.wait_iop * 10; //1bitあたり0.1s
Kujira 0:1977c2310ef7 583 cdata[14] = calinfo.wait_ocp * 10; //1bitあたり0.1s
Kujira 0:1977c2310ef7 584 */
Kujira 0:1977c2310ef7 585
Kujira 0:1977c2310ef7 586 cdata[15] = calinfo.low_limit_resistor / 10; //1bitあたり10ohm
Kujira 0:1977c2310ef7 587 cdata[16] = calinfo.up_limit_resistor / 10; //1bitあたり10ohm
Kujira 0:1977c2310ef7 588
Kujira 0:1977c2310ef7 589 Soushin = i2c.write (fixed_adrs, cdata, 17);
Kujira 0:1977c2310ef7 590
Kujira 0:1977c2310ef7 591 //ver1.2.1
Kujira 0:1977c2310ef7 592 wait(0.1);
Kujira 0:1977c2310ef7 593
Kujira 0:1977c2310ef7 594 char cdata_2[3];
Kujira 0:1977c2310ef7 595
Kujira 0:1977c2310ef7 596 adrs_eeprom = fixed_adrs + 0x2; //BLOCK2の選択
Kujira 0:1977c2310ef7 597
Kujira 0:1977c2310ef7 598 cdata_2[0] = addr_cal1_2 + 0x10 * ( num - 1 ); //PAGE選択
Kujira 0:1977c2310ef7 599 cdata_2[1] = calinfo.up_limit_ocp & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 600 cdata_2[2] = ( calinfo.up_limit_ocp >> 8 ) & 0xFF;//1byte分割
Kujira 0:1977c2310ef7 601
Kujira 0:1977c2310ef7 602 Soushin = i2c.write (adrs_eeprom, cdata_2, 3);
Kujira 0:1977c2310ef7 603 //up to here
Kujira 0:1977c2310ef7 604
Kujira 0:1977c2310ef7 605 }
Kujira 0:1977c2310ef7 606 /*******************************
Kujira 0:1977c2310ef7 607
Kujira 0:1977c2310ef7 608 EEPROMからCAL情報を
Kujira 0:1977c2310ef7 609 読み出して構造体へ代入する
Kujira 0:1977c2310ef7 610
Kujira 0:1977c2310ef7 611 *******************************/
Kujira 0:1977c2310ef7 612 void read_caliber(cal_info *cal, int num)
Kujira 0:1977c2310ef7 613 {
Kujira 0:1977c2310ef7 614 signed short sdata[16]; //CAL設定条件
Kujira 0:1977c2310ef7 615 int i;
Kujira 0:1977c2310ef7 616
Kujira 0:1977c2310ef7 617 //EEPROMからnumで指定したナンバーのCAL情報を読み出し
Kujira 0:1977c2310ef7 618 wdata[0] = addr_cal1 + 0x10 * ( num - 1 );
Kujira 0:1977c2310ef7 619 Soushin = i2c.write (fixed_adrs, wdata, 1,true); //読込先頭アドレス指定 ReStart
Kujira 0:1977c2310ef7 620 Jyushin = i2c.read ((fixed_adrs + 0x01), rdata, 16);//read 1byte
Kujira 0:1977c2310ef7 621
Kujira 0:1977c2310ef7 622 //データ合成 EEPROM_BYTE 0x00~0x0Bまで2byte結合
Kujira 0:1977c2310ef7 623 for ( i = 0; i <= 5; i++ ) {
Kujira 0:1977c2310ef7 624 sdata[i] = rdata[i*2] | ( rdata[ i*2 + 1 ] << 8 );
Kujira 0:1977c2310ef7 625 }
Kujira 0:1977c2310ef7 626 sdata[6] = rdata[12];
Kujira 0:1977c2310ef7 627 sdata[7] = rdata[13];
Kujira 0:1977c2310ef7 628 sdata[8] = rdata[14];
Kujira 0:1977c2310ef7 629 sdata[9] = rdata[15];
Kujira 0:1977c2310ef7 630
Kujira 0:1977c2310ef7 631 cal -> number = num;
Kujira 0:1977c2310ef7 632 cal -> vss_iop = sdata[0];
Kujira 0:1977c2310ef7 633 cal -> vss_ocp = sdata[1];
Kujira 0:1977c2310ef7 634 cal -> vss_voc = sdata[2];
Kujira 0:1977c2310ef7 635 cal -> low_limit_voc = sdata[3];
Kujira 0:1977c2310ef7 636 cal -> low_limit_iop = sdata[4];
Kujira 0:1977c2310ef7 637 cal -> low_limit_ocp = sdata[5];
Kujira 0:1977c2310ef7 638 //ver1.1.0
Kujira 0:1977c2310ef7 639 cal -> wait_iop = sdata[6];
Kujira 0:1977c2310ef7 640 cal -> wait_ocp = sdata[7];
Kujira 0:1977c2310ef7 641 /*
Kujira 0:1977c2310ef7 642 cal -> wait_iop = sdata[6] / 10;
Kujira 0:1977c2310ef7 643 cal -> wait_ocp = sdata[7] / 10;
Kujira 0:1977c2310ef7 644 */
Kujira 0:1977c2310ef7 645 cal -> low_limit_resistor = sdata[8] * 10;
Kujira 0:1977c2310ef7 646 cal -> up_limit_resistor = sdata[9] * 10;
Kujira 0:1977c2310ef7 647
Kujira 0:1977c2310ef7 648 //ver1.2.3
Kujira 0:1977c2310ef7 649 //EEPROMからnumで指定したナンバーのCAL情報を読み出し
Kujira 0:1977c2310ef7 650 char rdata2[2];
Kujira 0:1977c2310ef7 651
Kujira 0:1977c2310ef7 652 adrs_eeprom = fixed_adrs + 0x02; //BLOCK2
Kujira 0:1977c2310ef7 653
Kujira 0:1977c2310ef7 654 wdata[0] = addr_cal1_2 + 0x10 * ( num - 1 );
Kujira 0:1977c2310ef7 655 Soushin = i2c.write (adrs_eeprom, wdata, 1,true); //読込先頭アドレス指定 ReStart
Kujira 0:1977c2310ef7 656 Jyushin = i2c.read ((adrs_eeprom + 0x01), rdata2, 2);//read 1byte
Kujira 0:1977c2310ef7 657
Kujira 0:1977c2310ef7 658 //BYTE0~1
Kujira 0:1977c2310ef7 659 i = 0;
Kujira 0:1977c2310ef7 660 sdata[10] = rdata2[i*2] | ( rdata2[ i*2 + 1 ] << 8 );
Kujira 0:1977c2310ef7 661
Kujira 0:1977c2310ef7 662 cal -> up_limit_ocp = sdata[10];
Kujira 0:1977c2310ef7 663 //ver1.2.1 up to here
Kujira 0:1977c2310ef7 664
Kujira 0:1977c2310ef7 665 }
Kujira 0:1977c2310ef7 666 /*******************************
Kujira 0:1977c2310ef7 667
Kujira 0:1977c2310ef7 668 EEPROMからCAL登録番号を読出し
Kujira 0:1977c2310ef7 669
Kujira 0:1977c2310ef7 670 *******************************/
Kujira 0:1977c2310ef7 671 void read_regnum()
Kujira 0:1977c2310ef7 672 {
Kujira 0:1977c2310ef7 673 wdata[0] = addr_calnum;
Kujira 0:1977c2310ef7 674 Soushin = i2c.write (fixed_adrs, wdata, 1,true); //読込先頭アドレス指定 ReStart
Kujira 0:1977c2310ef7 675 Jyushin = i2c.read ((fixed_adrs + 0x01), rdata, 1);//read 1byte
Kujira 0:1977c2310ef7 676
Kujira 0:1977c2310ef7 677 reg_num = rdata[0];
Kujira 0:1977c2310ef7 678 }
Kujira 0:1977c2310ef7 679 /*******************************
Kujira 0:1977c2310ef7 680
Kujira 0:1977c2310ef7 681 EEPROMからCAL登録情報全消去
Kujira 0:1977c2310ef7 682
Kujira 0:1977c2310ef7 683 *******************************/
Kujira 0:1977c2310ef7 684 void erace_calinfo()
Kujira 0:1977c2310ef7 685 {
Kujira 0:1977c2310ef7 686 int i;
Kujira 0:1977c2310ef7 687
Kujira 0:1977c2310ef7 688 reg_num = 0x01;
Kujira 0:1977c2310ef7 689 wdata[0] = addr_calnum; //word address 書込み先頭アドレス指定
Kujira 0:1977c2310ef7 690 wdata[1] = reg_num;
Kujira 0:1977c2310ef7 691 Soushin = i2c.write (fixed_adrs, wdata, 2);
Kujira 0:1977c2310ef7 692
Kujira 0:1977c2310ef7 693 wait(0.2);
Kujira 0:1977c2310ef7 694
Kujira 0:1977c2310ef7 695 wdata[0] = addr_cal1;
Kujira 0:1977c2310ef7 696 for( i = 1; i <= 16; i++) { //1page全消去
Kujira 0:1977c2310ef7 697 wdata[i] = 0x00;
Kujira 0:1977c2310ef7 698 }
Kujira 0:1977c2310ef7 699 Soushin = i2c.write (fixed_adrs, wdata, 17);
Kujira 0:1977c2310ef7 700
Kujira 0:1977c2310ef7 701 wait(0.2);
Kujira 0:1977c2310ef7 702
Kujira 0:1977c2310ef7 703 wdata[0] = addr_cal2;
Kujira 0:1977c2310ef7 704 for( i = 1; i <= 16; i++) { //1page全消去
Kujira 0:1977c2310ef7 705 wdata[i] = 0x00;
Kujira 0:1977c2310ef7 706 }
Kujira 0:1977c2310ef7 707 Soushin = i2c.write (fixed_adrs, wdata, 17);
Kujira 0:1977c2310ef7 708
Kujira 0:1977c2310ef7 709 wait(0.2);
Kujira 0:1977c2310ef7 710
Kujira 0:1977c2310ef7 711 wdata[0] = addr_cal3;
Kujira 0:1977c2310ef7 712 for( i = 1; i <= 16; i++) { //1page全消去
Kujira 0:1977c2310ef7 713 wdata[i] = 0x00;
Kujira 0:1977c2310ef7 714 }
Kujira 0:1977c2310ef7 715 Soushin = i2c.write (fixed_adrs, wdata, 17);
Kujira 0:1977c2310ef7 716
Kujira 0:1977c2310ef7 717 wait(0.2);
Kujira 0:1977c2310ef7 718
Kujira 0:1977c2310ef7 719 wdata[0] = addr_cal4;
Kujira 0:1977c2310ef7 720 for( i = 1; i <= 16; i++) { //1page全消去
Kujira 0:1977c2310ef7 721 wdata[i] = 0x00;
Kujira 0:1977c2310ef7 722 }
Kujira 0:1977c2310ef7 723 Soushin = i2c.write (fixed_adrs, wdata, 17);
Kujira 0:1977c2310ef7 724
Kujira 0:1977c2310ef7 725 wait(0.2);
Kujira 0:1977c2310ef7 726
Kujira 0:1977c2310ef7 727 wdata[0] = addr_cal5;
Kujira 0:1977c2310ef7 728 for( i = 1; i <= 16; i++) { //1page全消去
Kujira 0:1977c2310ef7 729 wdata[i] = 0x00;
Kujira 0:1977c2310ef7 730 }
Kujira 0:1977c2310ef7 731 Soushin = i2c.write (fixed_adrs, wdata, 17);
Kujira 0:1977c2310ef7 732
Kujira 0:1977c2310ef7 733 wait(0.2);
Kujira 0:1977c2310ef7 734
Kujira 0:1977c2310ef7 735 wdata[0] = addr_cal6;
Kujira 0:1977c2310ef7 736 for( i = 1; i <= 16; i++) { //1page全消去
Kujira 0:1977c2310ef7 737 wdata[i] = 0x00;
Kujira 0:1977c2310ef7 738 }
Kujira 0:1977c2310ef7 739 Soushin = i2c.write (fixed_adrs, wdata, 17);
Kujira 0:1977c2310ef7 740
Kujira 0:1977c2310ef7 741 //ver1.2.1
Kujira 0:1977c2310ef7 742 //BLOCK2の消去
Kujira 0:1977c2310ef7 743 wait(0.2);
Kujira 0:1977c2310ef7 744
Kujira 0:1977c2310ef7 745 adrs_eeprom = fixed_adrs + 0x02; //BLOCK2
Kujira 0:1977c2310ef7 746
Kujira 0:1977c2310ef7 747 wdata[0] = addr_cal1_2;
Kujira 0:1977c2310ef7 748 for( i = 1; i <= 16; i++) { //1page全消去
Kujira 0:1977c2310ef7 749 wdata[i] = 0x00;
Kujira 0:1977c2310ef7 750 }
Kujira 0:1977c2310ef7 751 Soushin = i2c.write (adrs_eeprom, wdata, 17);
Kujira 0:1977c2310ef7 752
Kujira 0:1977c2310ef7 753 wait(0.2);
Kujira 0:1977c2310ef7 754
Kujira 0:1977c2310ef7 755 wdata[0] = addr_cal2_2;
Kujira 0:1977c2310ef7 756 for( i = 1; i <= 16; i++) { //1page全消去
Kujira 0:1977c2310ef7 757 wdata[i] = 0x00;
Kujira 0:1977c2310ef7 758 }
Kujira 0:1977c2310ef7 759 Soushin = i2c.write (adrs_eeprom, wdata, 17);
Kujira 0:1977c2310ef7 760
Kujira 0:1977c2310ef7 761 wait(0.2);
Kujira 0:1977c2310ef7 762
Kujira 0:1977c2310ef7 763 wdata[0] = addr_cal3_2;
Kujira 0:1977c2310ef7 764 for( i = 1; i <= 16; i++) { //1page全消去
Kujira 0:1977c2310ef7 765 wdata[i] = 0x00;
Kujira 0:1977c2310ef7 766 }
Kujira 0:1977c2310ef7 767 Soushin = i2c.write (adrs_eeprom, wdata, 17);
Kujira 0:1977c2310ef7 768
Kujira 0:1977c2310ef7 769 wait(0.2);
Kujira 0:1977c2310ef7 770
Kujira 0:1977c2310ef7 771 wdata[0] = addr_cal4_2;
Kujira 0:1977c2310ef7 772 for( i = 1; i <= 16; i++) { //1page全消去
Kujira 0:1977c2310ef7 773 wdata[i] = 0x00;
Kujira 0:1977c2310ef7 774 }
Kujira 0:1977c2310ef7 775 Soushin = i2c.write (adrs_eeprom, wdata, 17);
Kujira 0:1977c2310ef7 776
Kujira 0:1977c2310ef7 777 wait(0.2);
Kujira 0:1977c2310ef7 778
Kujira 0:1977c2310ef7 779 wdata[0] = addr_cal5_2;
Kujira 0:1977c2310ef7 780 for( i = 1; i <= 16; i++) { //1page全消去
Kujira 0:1977c2310ef7 781 wdata[i] = 0x00;
Kujira 0:1977c2310ef7 782 }
Kujira 0:1977c2310ef7 783 Soushin = i2c.write (adrs_eeprom, wdata, 17);
Kujira 0:1977c2310ef7 784
Kujira 0:1977c2310ef7 785 wait(0.2);
Kujira 0:1977c2310ef7 786
Kujira 0:1977c2310ef7 787 wdata[0] = addr_cal6_2;
Kujira 0:1977c2310ef7 788 for( i = 1; i <= 16; i++) { //1page全消去
Kujira 0:1977c2310ef7 789 wdata[i] = 0x00;
Kujira 0:1977c2310ef7 790 }
Kujira 0:1977c2310ef7 791 Soushin = i2c.write (adrs_eeprom, wdata, 17);
Kujira 0:1977c2310ef7 792
Kujira 0:1977c2310ef7 793 wait(0.2);
Kujira 0:1977c2310ef7 794
Kujira 0:1977c2310ef7 795 //up to herever1.2.1
Kujira 0:1977c2310ef7 796
Kujira 0:1977c2310ef7 797 }
Kujira 0:1977c2310ef7 798 /******************************************
Kujira 0:1977c2310ef7 799
Kujira 0:1977c2310ef7 800 ADC(MCP3424) Configuration Register
Kujira 0:1977c2310ef7 801
Kujira 0:1977c2310ef7 802 ch : Channel Selection Bit
Kujira 0:1977c2310ef7 803 00 = Select Channel 1
Kujira 0:1977c2310ef7 804 01 = Select Channel 2
Kujira 0:1977c2310ef7 805 10 = Select Channel 3
Kujira 0:1977c2310ef7 806 11 = Select Channel 4
Kujira 0:1977c2310ef7 807
Kujira 0:1977c2310ef7 808 rate : Sample Rate Selection Bit
Kujira 0:1977c2310ef7 809 00 = 240 SPS(12bits)
Kujira 0:1977c2310ef7 810 01 = 60 SPS(14bits)
Kujira 0:1977c2310ef7 811 10 = 15 SPS(16bits)
Kujira 0:1977c2310ef7 812 11 = 3.75 SPS(18bits)
Kujira 0:1977c2310ef7 813
Kujira 0:1977c2310ef7 814 ******************************************/
Kujira 0:1977c2310ef7 815 char adc_config(char ch, char rate)
Kujira 0:1977c2310ef7 816 {
Kujira 0:1977c2310ef7 817 char confreg; //Configuration Register 1byte
Kujira 0:1977c2310ef7 818
Kujira 0:1977c2310ef7 819 char rdy = 0; //Ready Bit
Kujira 0:1977c2310ef7 820 char cm = 1; //Conversion Mode Bit
Kujira 0:1977c2310ef7 821 char gain = 0; //PGA Gain Selection Bits
Kujira 0:1977c2310ef7 822
Kujira 0:1977c2310ef7 823 confreg = (( rdy & 0x1 ) << 7 ) + (( ch & 0x3) << 5 ) + (( cm & 0x1 ) << 4) + (( rate & 0x3 ) << 2) + ( gain & 0x3 ) ;
Kujira 0:1977c2310ef7 824
Kujira 0:1977c2310ef7 825 return( confreg );
Kujira 0:1977c2310ef7 826 }
Kujira 0:1977c2310ef7 827 /******************************************
Kujira 0:1977c2310ef7 828
Kujira 0:1977c2310ef7 829 ADC(MCP3424) Configuration Register
Kujira 0:1977c2310ef7 830 電流測定チャンネルの選択
Kujira 0:1977c2310ef7 831 char ch : 1~4ch
Kujira 0:1977c2310ef7 832
Kujira 0:1977c2310ef7 833 ******************************************/
Kujira 0:1977c2310ef7 834 void select_ich(char ch)
Kujira 0:1977c2310ef7 835 {
Kujira 0:1977c2310ef7 836 char com;
Kujira 0:1977c2310ef7 837
Kujira 0:1977c2310ef7 838 switch ( ch ) {
Kujira 0:1977c2310ef7 839 case 0:
Kujira 0:1977c2310ef7 840 com = adc_config( 0, 1 );//ADC3_ch1選択 14bits
Kujira 0:1977c2310ef7 841 i2c.write( addr_ADC3, &com, 1 );
Kujira 0:1977c2310ef7 842 break;
Kujira 0:1977c2310ef7 843 case 1:
Kujira 0:1977c2310ef7 844 com = adc_config( 1, 1 );//ADC3_ch2選択 14bits
Kujira 0:1977c2310ef7 845 i2c.write( addr_ADC3, &com, 1 );
Kujira 0:1977c2310ef7 846 break;
Kujira 0:1977c2310ef7 847 case 2:
Kujira 0:1977c2310ef7 848 com = adc_config( 0, 1 );//ADC4_ch1選択 14bits
Kujira 0:1977c2310ef7 849 i2c.write( addr_ADC4, &com, 1 );
Kujira 0:1977c2310ef7 850 break;
Kujira 0:1977c2310ef7 851 case 3:
Kujira 0:1977c2310ef7 852 com = adc_config( 1, 1 );//ADC4_ch2選択 14bits
Kujira 0:1977c2310ef7 853 i2c.write( addr_ADC4, &com, 1 );
Kujira 0:1977c2310ef7 854 break;
Kujira 0:1977c2310ef7 855 }
Kujira 0:1977c2310ef7 856 }
Kujira 0:1977c2310ef7 857 /******************************************
Kujira 0:1977c2310ef7 858
Kujira 0:1977c2310ef7 859 ADC(MCP3424)
Kujira 0:1977c2310ef7 860 指定addressから2byte読込み
Kujira 0:1977c2310ef7 861
Kujira 0:1977c2310ef7 862 ******************************************/
Kujira 0:1977c2310ef7 863 short read_adc(char addr)//指定addressから2byte読込み
Kujira 0:1977c2310ef7 864 {
Kujira 0:1977c2310ef7 865 char cdata[2];//1byte
Kujira 0:1977c2310ef7 866 short sdata;//2byte
Kujira 0:1977c2310ef7 867
Kujira 0:1977c2310ef7 868 i2c.read( addr + 0x01, cdata, 2);
Kujira 0:1977c2310ef7 869
Kujira 0:1977c2310ef7 870 //connect 2byte
Kujira 0:1977c2310ef7 871 sdata = cdata[0] & 0xFF;
Kujira 0:1977c2310ef7 872 sdata = ( sdata << 8 ) | cdata[1];
Kujira 0:1977c2310ef7 873
Kujira 0:1977c2310ef7 874 return ( sdata );
Kujira 0:1977c2310ef7 875 }
Kujira 0:1977c2310ef7 876 /*****************************
Kujira 0:1977c2310ef7 877
Kujira 0:1977c2310ef7 878 AUTO/SEQ Mode
Kujira 0:1977c2310ef7 879
Kujira 0:1977c2310ef7 880 ワンショットタイマー発生イベント
Kujira 0:1977c2310ef7 881
Kujira 0:1977c2310ef7 882 For Current measurement
Kujira 0:1977c2310ef7 883 a recurring interrupt to repeatedly call a function at a specified rate.
Kujira 0:1977c2310ef7 884
Kujira 0:1977c2310ef7 885 *****************************/
Kujira 0:1977c2310ef7 886 void flip_ch1()
Kujira 0:1977c2310ef7 887 {
Kujira 0:1977c2310ef7 888 short sdata;
Kujira 0:1977c2310ef7 889
Kujira 0:1977c2310ef7 890 sdata = read_adc( addr_ADC3 );
Kujira 0:1977c2310ef7 891
Kujira 0:1977c2310ef7 892 I[0] = sdata * 5 * 0.25;
Kujira 0:1977c2310ef7 893
Kujira 0:1977c2310ef7 894 //次の測定chへ切替
Kujira 0:1977c2310ef7 895 select_ich(1);
Kujira 0:1977c2310ef7 896 }
Kujira 0:1977c2310ef7 897
Kujira 0:1977c2310ef7 898 void flip_ch2()
Kujira 0:1977c2310ef7 899 {
Kujira 0:1977c2310ef7 900 short sdata;
Kujira 0:1977c2310ef7 901
Kujira 0:1977c2310ef7 902 sdata = read_adc( addr_ADC3 );
Kujira 0:1977c2310ef7 903
Kujira 0:1977c2310ef7 904 I[1] = sdata * 5 * 0.25;
Kujira 0:1977c2310ef7 905
Kujira 0:1977c2310ef7 906 //次の測定chへ切替
Kujira 0:1977c2310ef7 907 select_ich(2);
Kujira 0:1977c2310ef7 908 }
Kujira 0:1977c2310ef7 909
Kujira 0:1977c2310ef7 910 void flip_ch3()
Kujira 0:1977c2310ef7 911 {
Kujira 0:1977c2310ef7 912 short sdata;
Kujira 0:1977c2310ef7 913
Kujira 0:1977c2310ef7 914 sdata = read_adc( addr_ADC4 );
Kujira 0:1977c2310ef7 915
Kujira 0:1977c2310ef7 916 I[2] = sdata * 5 * 0.25;
Kujira 0:1977c2310ef7 917
Kujira 0:1977c2310ef7 918 //次の測定chへ切替
Kujira 0:1977c2310ef7 919 select_ich(3);
Kujira 0:1977c2310ef7 920 }
Kujira 0:1977c2310ef7 921
Kujira 0:1977c2310ef7 922 void flip_ch4()
Kujira 0:1977c2310ef7 923 {
Kujira 0:1977c2310ef7 924 short sdata;
Kujira 0:1977c2310ef7 925
Kujira 0:1977c2310ef7 926 sdata = read_adc( addr_ADC4 );
Kujira 0:1977c2310ef7 927
Kujira 0:1977c2310ef7 928 I[3] = sdata * 5 * 0.25;
Kujira 0:1977c2310ef7 929
Kujira 0:1977c2310ef7 930 //次の測定chへ切替 無し
Kujira 0:1977c2310ef7 931 }
Kujira 0:1977c2310ef7 932
Kujira 0:1977c2310ef7 933 /*****************************
Kujira 0:1977c2310ef7 934
Kujira 0:1977c2310ef7 935 Manual Mode
Kujira 0:1977c2310ef7 936
Kujira 0:1977c2310ef7 937 繰り返しタイマー発生イベント
Kujira 0:1977c2310ef7 938
Kujira 0:1977c2310ef7 939 For Current measurement
Kujira 0:1977c2310ef7 940 a recurring interrupt to repeatedly call a function at a specified rate.
Kujira 0:1977c2310ef7 941
Kujira 0:1977c2310ef7 942 *****************************/
Kujira 0:1977c2310ef7 943 void flip()
Kujira 0:1977c2310ef7 944 {
Kujira 0:1977c2310ef7 945 short sdata; //_2byte reading data of ADC
Kujira 0:1977c2310ef7 946 float fdata; // ver1.1.4
Kujira 0:1977c2310ef7 947
Kujira 0:1977c2310ef7 948 switch ( ch_num ) {
Kujira 0:1977c2310ef7 949 case 0:
Kujira 0:1977c2310ef7 950 case 1:
Kujira 0:1977c2310ef7 951 sdata = read_adc( addr_ADC3 );
Kujira 0:1977c2310ef7 952 break;
Kujira 0:1977c2310ef7 953 case 2:
Kujira 0:1977c2310ef7 954 case 3:
Kujira 0:1977c2310ef7 955 sdata = read_adc( addr_ADC4 );
Kujira 0:1977c2310ef7 956 break;
Kujira 0:1977c2310ef7 957 }
Kujira 0:1977c2310ef7 958
Kujira 0:1977c2310ef7 959 //sdata = sdata * 5 * 0.25;//プリアンプのGAINが1/5なのでここで5倍.ADC14bit分解能で、1bitあたり0.25mv
Kujira 0:1977c2310ef7 960 /*ver1.1.4*/
Kujira 0:1977c2310ef7 961 fdata = sdata * 5 * 0.25;//プリアンプのGAINが1/5なのでここで5倍.ADC14bit分解能で、1bitあたり0.25mv
Kujira 0:1977c2310ef7 962
Kujira 0:1977c2310ef7 963 gu_cursor(0,4);
Kujira 0:1977c2310ef7 964 gu_print1(" ");
Kujira 0:1977c2310ef7 965 /*ver1.1.4*/
Kujira 0:1977c2310ef7 966 gu_putdeci(&fdata);
Kujira 0:1977c2310ef7 967 //gu_putdeci(&sdata);
Kujira 0:1977c2310ef7 968
Kujira 0:1977c2310ef7 969 houden[ ch_num ] = 1; //Discharge
Kujira 0:1977c2310ef7 970
Kujira 0:1977c2310ef7 971 wait(time_discharge); //Discharge time
Kujira 0:1977c2310ef7 972
Kujira 0:1977c2310ef7 973 houden[ ch_num ] = 0; //charging
Kujira 0:1977c2310ef7 974
Kujira 0:1977c2310ef7 975 }
Kujira 0:1977c2310ef7 976 /*********************************
Kujira 0:1977c2310ef7 977 Manual Mode
Kujira 0:1977c2310ef7 978 initial screen
Kujira 0:1977c2310ef7 979 *********************************/
Kujira 0:1977c2310ef7 980 void manual_int_hyouji()
Kujira 0:1977c2310ef7 981 {
Kujira 0:1977c2310ef7 982
Kujira 0:1977c2310ef7 983 /* 画面表示 */
Kujira 0:1977c2310ef7 984 gu_cls();
Kujira 0:1977c2310ef7 985 gu_fontsize(2); //change fontsize
Kujira 0:1977c2310ef7 986 gu_fontWidth(Proportional1);
Kujira 0:1977c2310ef7 987 gu_print1("Manual Mode");
Kujira 0:1977c2310ef7 988
Kujira 0:1977c2310ef7 989 gu_cursor(0, 2);
Kujira 0:1977c2310ef7 990 gu_print1("CH.");
Kujira 0:1977c2310ef7 991 gu_cursor(40, 14);
Kujira 0:1977c2310ef7 992 gu_print1("vss");
Kujira 0:1977c2310ef7 993 gu_cursor(192, 14);
Kujira 0:1977c2310ef7 994 gu_print1("ch.");
Kujira 0:1977c2310ef7 995 /*
Kujira 0:1977c2310ef7 996 gu_cursor(128, 14);
Kujira 0:1977c2310ef7 997 gu_print1("slct ch.");
Kujira 0:1977c2310ef7 998 */
Kujira 0:1977c2310ef7 999
Kujira 0:1977c2310ef7 1000 //操作ボタン配置
Kujira 0:1977c2310ef7 1001 gu_Button_power_on();//メニューへ戻る
Kujira 0:1977c2310ef7 1002 gu_button_up(27);//印加電圧増加
Kujira 0:1977c2310ef7 1003 gu_button_down(28);//印加電圧減少
Kujira 0:1977c2310ef7 1004 gu_button_up(32);//ch切替
Kujira 0:1977c2310ef7 1005 //gu_button_down(32);//ch切替
Kujira 0:1977c2310ef7 1006
Kujira 0:1977c2310ef7 1007 //Show Reset button(LEFT)
Kujira 0:1977c2310ef7 1008 gu_set_button(25,"R");
Kujira 0:1977c2310ef7 1009
Kujira 0:1977c2310ef7 1010 }
Kujira 0:1977c2310ef7 1011 /*********************************
Kujira 0:1977c2310ef7 1012
Kujira 0:1977c2310ef7 1013 Manual Mode (Main)
Kujira 0:1977c2310ef7 1014
Kujira 0:1977c2310ef7 1015 *********************************/
Kujira 0:1977c2310ef7 1016 void manual()
Kujira 0:1977c2310ef7 1017 {
Kujira 0:1977c2310ef7 1018
Kujira 0:1977c2310ef7 1019 char cswnum; //SW_No. sw1->0x00 ~~ sw32->0x1F
Kujira 0:1977c2310ef7 1020 char cswdata; // 0x00 or 0x01
Kujira 0:1977c2310ef7 1021 char crdata[3];
Kujira 0:1977c2310ef7 1022 char *pcswnum = &cswnum;
Kujira 0:1977c2310ef7 1023 char *pcswdata = &cswdata;
Kujira 0:1977c2310ef7 1024 int i;
Kujira 0:1977c2310ef7 1025 int j;
Kujira 0:1977c2310ef7 1026 float interval;//繰り返し測定間隔(s) <- 積分時間と、繰り返し割込みサブ中のwait(放電時間)も足す
Kujira 0:1977c2310ef7 1027 short vss;
Kujira 0:1977c2310ef7 1028 short sdata;
Kujira 0:1977c2310ef7 1029 int r_flag;
Kujira 0:1977c2310ef7 1030 float ima;
Kujira 0:1977c2310ef7 1031 short ssdata;
Kujira 0:1977c2310ef7 1032
Kujira 0:1977c2310ef7 1033 ch_num = 0; //初期電流測定CH.
Kujira 0:1977c2310ef7 1034
Kujira 0:1977c2310ef7 1035 interval = time_integral + time_discharge ;//繰り返し割込みの間隔設定
Kujira 0:1977c2310ef7 1036 flipper.attach(&flip, interval);
Kujira 0:1977c2310ef7 1037
Kujira 0:1977c2310ef7 1038 read_regnum();//CAL登録No.読込
Kujira 0:1977c2310ef7 1039 read_caliber(&calinfo, reg_num);//指定したCAL登録No.の情報を読込後、calinfoへ代入
Kujira 0:1977c2310ef7 1040
Kujira 0:1977c2310ef7 1041 /* 初期表示 */
Kujira 0:1977c2310ef7 1042 manual_int_hyouji();
Kujira 0:1977c2310ef7 1043 //選択測定チャンネルの表示
Kujira 0:1977c2310ef7 1044 gu_fontsize(2); //change fontsize
Kujira 0:1977c2310ef7 1045 gu_cursor(24, 2);
Kujira 0:1977c2310ef7 1046 wdata[0] = ( ch_num + 1 ) + 0x30;
Kujira 0:1977c2310ef7 1047 i2c.write( addr_gu, wdata, 1);
Kujira 0:1977c2310ef7 1048
Kujira 0:1977c2310ef7 1049 //初期測定設定
Kujira 0:1977c2310ef7 1050 //set range
Kujira 0:1977c2310ef7 1051 range[0] = 1;//ch.1 10uA測定レンジ
Kujira 0:1977c2310ef7 1052 //select channel
Kujira 0:1977c2310ef7 1053 wdata[0] = adc_config( 0, 1 );//ADC3_ch1選択 14bits
Kujira 0:1977c2310ef7 1054 i2c.write( addr_ADC3, wdata, 1 );
Kujira 0:1977c2310ef7 1055
Kujira 0:1977c2310ef7 1056 vss = calinfo.vss_iop;
Kujira 0:1977c2310ef7 1057
Kujira 0:1977c2310ef7 1058 //apply Vss to all channel
Kujira 0:1977c2310ef7 1059 for ( i = 0; i <= (number_of_channels - 1); i++) {
Kujira 0:1977c2310ef7 1060 dac_out( calinfo.vss_iop,i); //Vss設定 DAC
Kujira 0:1977c2310ef7 1061 }
Kujira 0:1977c2310ef7 1062
Kujira 0:1977c2310ef7 1063 gu_cursor(0,8);
Kujira 0:1977c2310ef7 1064 gu_print1("Vss ");
Kujira 0:1977c2310ef7 1065
Kujira 0:1977c2310ef7 1066 gu_cursor(64,8);
Kujira 0:1977c2310ef7 1067 sdata = -1 * vss;
Kujira 0:1977c2310ef7 1068 gu_putdeck( &sdata );
Kujira 0:1977c2310ef7 1069 gu_print1("V");
Kujira 0:1977c2310ef7 1070
Kujira 0:1977c2310ef7 1071 while(1) {
Kujira 0:1977c2310ef7 1072
Kujira 0:1977c2310ef7 1073 crdata[0] = 0;
Kujira 0:1977c2310ef7 1074 crdata[1] = 0;
Kujira 0:1977c2310ef7 1075 crdata[2] = 0;
Kujira 0:1977c2310ef7 1076
Kujira 0:1977c2310ef7 1077 //タッチパネルスイッチ読込
Kujira 0:1977c2310ef7 1078 Jyushin = i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 1079
Kujira 0:1977c2310ef7 1080 if (crdata[0] == 0x11 ) { //個別タッチスイッチ状態読み出しフォーマット。識別子11h。
Kujira 0:1977c2310ef7 1081 *pcswnum = crdata[1]; //スイッチ番号
Kujira 0:1977c2310ef7 1082 *pcswdata = crdata[2];//ON/OFF情報
Kujira 0:1977c2310ef7 1083
Kujira 0:1977c2310ef7 1084 if (cswdata == 0x01) { //タッチしたならば
Kujira 0:1977c2310ef7 1085 switch( cswnum ) { //SWの番号(位置)
Kujira 0:1977c2310ef7 1086
Kujira 0:1977c2310ef7 1087 case 26:
Kujira 0:1977c2310ef7 1088 //gu_reverse(0x01); //gu_リバース指定
Kujira 0:1977c2310ef7 1089 //gu_button_up(27);//印加電圧増加
Kujira 0:1977c2310ef7 1090
Kujira 0:1977c2310ef7 1091 if ( vss < 4500 ) {
Kujira 0:1977c2310ef7 1092 vss = vss + 100;
Kujira 0:1977c2310ef7 1093 }
Kujira 0:1977c2310ef7 1094
Kujira 0:1977c2310ef7 1095 //apply Vss to all channel
Kujira 0:1977c2310ef7 1096 for ( i = 0; i <= (number_of_channels - 1); i++) {
Kujira 0:1977c2310ef7 1097 dac_out( vss,i); //Vss設定 DAC
Kujira 0:1977c2310ef7 1098 }
Kujira 0:1977c2310ef7 1099
Kujira 0:1977c2310ef7 1100 gu_reverse(0x00);
Kujira 0:1977c2310ef7 1101 gu_cursor(64,8);
Kujira 0:1977c2310ef7 1102 sdata = -1 * vss;
Kujira 0:1977c2310ef7 1103 gu_putdeck( &sdata );
Kujira 0:1977c2310ef7 1104 gu_print1("V");
Kujira 0:1977c2310ef7 1105
Kujira 0:1977c2310ef7 1106 //gu_button_up(27);//印加電圧減少
Kujira 0:1977c2310ef7 1107
Kujira 0:1977c2310ef7 1108 wait(0.1);
Kujira 0:1977c2310ef7 1109
Kujira 0:1977c2310ef7 1110 break;
Kujira 0:1977c2310ef7 1111
Kujira 0:1977c2310ef7 1112 case 27:
Kujira 0:1977c2310ef7 1113 //gu_reverse(0x01); //gu_リバース指定
Kujira 0:1977c2310ef7 1114 //gu_button_down(28);//印加電圧減少
Kujira 0:1977c2310ef7 1115
Kujira 0:1977c2310ef7 1116 if ( vss >= 100 ) {
Kujira 0:1977c2310ef7 1117 vss = vss - 100;
Kujira 0:1977c2310ef7 1118 }
Kujira 0:1977c2310ef7 1119
Kujira 0:1977c2310ef7 1120 //apply Vss to all channel
Kujira 0:1977c2310ef7 1121 for ( i = 0; i <= (number_of_channels - 1); i++) {
Kujira 0:1977c2310ef7 1122 dac_out( vss,i); //Vss設定 DAC
Kujira 0:1977c2310ef7 1123 }
Kujira 0:1977c2310ef7 1124
Kujira 0:1977c2310ef7 1125 //gu_reverse(0x00); //gu_リバース指定
Kujira 0:1977c2310ef7 1126 gu_cursor(64,8);
Kujira 0:1977c2310ef7 1127 sdata = -1 * vss;
Kujira 0:1977c2310ef7 1128 gu_putdeck( &sdata );
Kujira 0:1977c2310ef7 1129 gu_print1("V");
Kujira 0:1977c2310ef7 1130
Kujira 0:1977c2310ef7 1131 //gu_button_down(28);//印加電圧減少
Kujira 0:1977c2310ef7 1132
Kujira 0:1977c2310ef7 1133 wait(0.1);
Kujira 0:1977c2310ef7 1134
Kujira 0:1977c2310ef7 1135 break;
Kujira 0:1977c2310ef7 1136
Kujira 0:1977c2310ef7 1137 case 0x07 ://Exit
Kujira 0:1977c2310ef7 1138
Kujira 0:1977c2310ef7 1139 gu_Button_power_off();//電源ボタンイメージ反転表示
Kujira 0:1977c2310ef7 1140
Kujira 0:1977c2310ef7 1141 //割り込み停止
Kujira 0:1977c2310ef7 1142 flipper.detach();
Kujira 0:1977c2310ef7 1143
Kujira 0:1977c2310ef7 1144 for( i = 0; i <= 3; i++) {
Kujira 0:1977c2310ef7 1145 houden[i] = 1;//discharge
Kujira 0:1977c2310ef7 1146 }
Kujira 0:1977c2310ef7 1147
Kujira 0:1977c2310ef7 1148 wait( time_discharge );
Kujira 0:1977c2310ef7 1149 //set measuring range
Kujira 0:1977c2310ef7 1150 for( i = 0; i <= 3; i++) {
Kujira 0:1977c2310ef7 1151 range[i] = 0;//range 1mA
Kujira 0:1977c2310ef7 1152 houden[i] = 0;//not discharge
Kujira 0:1977c2310ef7 1153 }
Kujira 0:1977c2310ef7 1154
Kujira 0:1977c2310ef7 1155 wait(0.2);
Kujira 0:1977c2310ef7 1156
Kujira 0:1977c2310ef7 1157 for ( i = 0; i <= 7; i++)
Kujira 0:1977c2310ef7 1158 io[i] = 0; //全てのio"L"
Kujira 0:1977c2310ef7 1159
Kujira 0:1977c2310ef7 1160 return;//この関数を抜ける
Kujira 0:1977c2310ef7 1161
Kujira 0:1977c2310ef7 1162 case 0x18 ://sw25 mv_reset
Kujira 0:1977c2310ef7 1163
Kujira 0:1977c2310ef7 1164 //gu_リバース指定
Kujira 0:1977c2310ef7 1165 gu_reverse(0x01);
Kujira 0:1977c2310ef7 1166 //Show Reset button(Left)
Kujira 0:1977c2310ef7 1167 gu_set_button(25,"R");
Kujira 0:1977c2310ef7 1168
Kujira 0:1977c2310ef7 1169 wait(0.1);
Kujira 0:1977c2310ef7 1170
Kujira 0:1977c2310ef7 1171 gu_reverse(0x00); //gu_リバース解除
Kujira 0:1977c2310ef7 1172 gu_set_button(25,"R"); //Show Reset button(Left)
Kujira 0:1977c2310ef7 1173
Kujira 0:1977c2310ef7 1174 io[ch_num] = 1;
Kujira 0:1977c2310ef7 1175
Kujira 0:1977c2310ef7 1176 //set measuring range ver1.1.0
Kujira 0:1977c2310ef7 1177 for( i = 0; i <= 3; i++)
Kujira 0:1977c2310ef7 1178 range[i] = 0;//range 1mA
Kujira 0:1977c2310ef7 1179
Kujira 0:1977c2310ef7 1180 r_flag = 1;
Kujira 0:1977c2310ef7 1181
Kujira 1:f6a9410c46d2 1182 //割り込み停止 電流測定用タイマー停止
Kujira 0:1977c2310ef7 1183 flipper.detach();
Kujira 0:1977c2310ef7 1184
Kujira 0:1977c2310ef7 1185 break;
Kujira 0:1977c2310ef7 1186
Kujira 0:1977c2310ef7 1187 case 31 ://sw32 CH選択
Kujira 0:1977c2310ef7 1188
Kujira 0:1977c2310ef7 1189 //gu_reverse(0x01);//gu_リバース指定
Kujira 0:1977c2310ef7 1190 //gu_button_up(32);
Kujira 0:1977c2310ef7 1191 //gu_reverse(0x00);//gu_リバース解除
Kujira 0:1977c2310ef7 1192
Kujira 0:1977c2310ef7 1193 if ( ch_num < ( number_of_channels - 1 )) {
Kujira 0:1977c2310ef7 1194 ch_num = ch_num + 1;
Kujira 0:1977c2310ef7 1195 } else {
Kujira 0:1977c2310ef7 1196 ch_num = 0;
Kujira 0:1977c2310ef7 1197 } //ver1.1.0
Kujira 0:1977c2310ef7 1198
Kujira 0:1977c2310ef7 1199 select_ich(ch_num);//ADC測定CHの変更
Kujira 0:1977c2310ef7 1200
Kujira 0:1977c2310ef7 1201 //set measuring range
Kujira 0:1977c2310ef7 1202 for( i = 0; i <= 3; i++)
Kujira 0:1977c2310ef7 1203 range[i] = 0; //range 1mA
Kujira 0:1977c2310ef7 1204
Kujira 0:1977c2310ef7 1205 range[ch_num] = 1; //range 10uA
Kujira 0:1977c2310ef7 1206
Kujira 0:1977c2310ef7 1207 //選択測定チャンネルの表示
Kujira 0:1977c2310ef7 1208 gu_cursor(24, 2);
Kujira 0:1977c2310ef7 1209 wdata[0] = ( ch_num + 1 ) + 0x30;
Kujira 0:1977c2310ef7 1210 i2c.write( addr_gu, wdata, 1);
Kujira 0:1977c2310ef7 1211
Kujira 0:1977c2310ef7 1212 //gu_button_up(32);
Kujira 0:1977c2310ef7 1213
Kujira 0:1977c2310ef7 1214 wait(0.1);
Kujira 0:1977c2310ef7 1215
Kujira 0:1977c2310ef7 1216 break;
Kujira 0:1977c2310ef7 1217
Kujira 0:1977c2310ef7 1218 /*
Kujira 0:1977c2310ef7 1219 case 0x1F ://sw32 CH選択
Kujira 0:1977c2310ef7 1220
Kujira 0:1977c2310ef7 1221 //gu_reverse(0x01);//gu_リバース指定
Kujira 0:1977c2310ef7 1222 //gu_button_down(32);
Kujira 0:1977c2310ef7 1223 //gu_reverse(0x00);//gu_リバース解除
Kujira 0:1977c2310ef7 1224
Kujira 0:1977c2310ef7 1225 if ( ch_num >= 1 )
Kujira 0:1977c2310ef7 1226 ch_num = ch_num - 1;
Kujira 0:1977c2310ef7 1227
Kujira 0:1977c2310ef7 1228 select_ich(ch_num);//ADC測定CHの変更
Kujira 0:1977c2310ef7 1229
Kujira 0:1977c2310ef7 1230 //set measuring range
Kujira 0:1977c2310ef7 1231 for( i = 0; i <= 3; i++)
Kujira 0:1977c2310ef7 1232 range[i] = 0;
Kujira 0:1977c2310ef7 1233
Kujira 0:1977c2310ef7 1234 range[ ch_num ] = 1; //range 10uA
Kujira 0:1977c2310ef7 1235
Kujira 0:1977c2310ef7 1236 //選択測定チャンネルの表示
Kujira 0:1977c2310ef7 1237 gu_cursor(24, 2);
Kujira 0:1977c2310ef7 1238 wdata[0] =( ch_num + 1 ) + 0x30;
Kujira 0:1977c2310ef7 1239 i2c.write( addr_gu, wdata, 1);
Kujira 0:1977c2310ef7 1240
Kujira 0:1977c2310ef7 1241 //gu_button_down(32);
Kujira 0:1977c2310ef7 1242
Kujira 0:1977c2310ef7 1243 wait(0.1);
Kujira 0:1977c2310ef7 1244
Kujira 0:1977c2310ef7 1245 break;
Kujira 0:1977c2310ef7 1246 */
Kujira 0:1977c2310ef7 1247
Kujira 0:1977c2310ef7 1248 } //switch
Kujira 0:1977c2310ef7 1249 Jyushin = i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 1250
Kujira 0:1977c2310ef7 1251 }//if
Kujira 0:1977c2310ef7 1252 }//if
Kujira 0:1977c2310ef7 1253
Kujira 1:f6a9410c46d2 1254 //ver1.1.0 0.1s*5(jの値)=0.5s待機後(プラスリレー制御時間)に電流測定用タイマー始動
Kujira 0:1977c2310ef7 1255 if ( j >= 5 ) {
Kujira 0:1977c2310ef7 1256 io[ch_num] = 0;
Kujira 0:1977c2310ef7 1257 range[ ch_num ] = 1; //range 10uA
Kujira 0:1977c2310ef7 1258 r_flag = 0;
Kujira 0:1977c2310ef7 1259 j = 0;
Kujira 0:1977c2310ef7 1260 flipper.attach(&flip, interval);//割込み開始
Kujira 0:1977c2310ef7 1261 }
Kujira 0:1977c2310ef7 1262
Kujira 0:1977c2310ef7 1263 if ( r_flag == 1 ) {
Kujira 0:1977c2310ef7 1264 j = j + 1;
Kujira 0:1977c2310ef7 1265
Kujira 0:1977c2310ef7 1266 //R=Hの時の電流測定(1ma renge)
Kujira 0:1977c2310ef7 1267 select_ich( ch_num );
Kujira 0:1977c2310ef7 1268 ssdata = read_adc( addr_ADC3 );
Kujira 0:1977c2310ef7 1269 ima = ssdata * 5 * 0.25;
Kujira 0:1977c2310ef7 1270
Kujira 0:1977c2310ef7 1271 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1272 gu_fontsize(2);
Kujira 0:1977c2310ef7 1273 gu_print1(" ");
Kujira 0:1977c2310ef7 1274 gu_putdeci_mA(&ima);
Kujira 0:1977c2310ef7 1275 }
Kujira 0:1977c2310ef7 1276
Kujira 0:1977c2310ef7 1277 //電圧測定
Kujira 0:1977c2310ef7 1278 //ver1.2.0
Kujira 0:1977c2310ef7 1279 if (RL_EN == 1) {
Kujira 0:1977c2310ef7 1280 switch (ch_num) {
Kujira 0:1977c2310ef7 1281 case 0:
Kujira 0:1977c2310ef7 1282 io[4] = 1; //外付けリレーON
Kujira 0:1977c2310ef7 1283 wait(TIME_RELAY_ON);
Kujira 0:1977c2310ef7 1284 break;
Kujira 0:1977c2310ef7 1285 case 1:
Kujira 0:1977c2310ef7 1286 io[5] = 1; //外付けリレーON
Kujira 0:1977c2310ef7 1287 wait(TIME_RELAY_ON);
Kujira 0:1977c2310ef7 1288 break;
Kujira 0:1977c2310ef7 1289 }
Kujira 0:1977c2310ef7 1290 }
Kujira 0:1977c2310ef7 1291 //up to here
Kujira 0:1977c2310ef7 1292
Kujira 0:1977c2310ef7 1293 sdata = meas_voltage( ch_num ) * -1 ;
Kujira 0:1977c2310ef7 1294
Kujira 0:1977c2310ef7 1295 //ver1.2.0
Kujira 0:1977c2310ef7 1296 if (RL_EN == 1) {
Kujira 0:1977c2310ef7 1297 io[4] = 0; //外付けリレーOFF
Kujira 0:1977c2310ef7 1298 io[5] = 0; //外付けリレーOFF
Kujira 0:1977c2310ef7 1299 }
Kujira 0:1977c2310ef7 1300 //up to here
Kujira 0:1977c2310ef7 1301
Kujira 0:1977c2310ef7 1302 gu_fontsize(2);
Kujira 0:1977c2310ef7 1303 gu_cursor(108,4);
Kujira 0:1977c2310ef7 1304 gu_putdeck(&sdata);
Kujira 0:1977c2310ef7 1305 gu_print1("V");
Kujira 0:1977c2310ef7 1306
Kujira 0:1977c2310ef7 1307 //抵抗測定
Kujira 0:1977c2310ef7 1308 sdata = meas_resistor( ch_num );
Kujira 0:1977c2310ef7 1309
Kujira 0:1977c2310ef7 1310 gu_fontsize(2);
Kujira 0:1977c2310ef7 1311 gu_cursor(192,4);
Kujira 0:1977c2310ef7 1312
Kujira 0:1977c2310ef7 1313 display_resistor( sdata ); //抵抗値表示サブ
Kujira 0:1977c2310ef7 1314
Kujira 0:1977c2310ef7 1315 wait( 0.1 );
Kujira 0:1977c2310ef7 1316
Kujira 0:1977c2310ef7 1317 }//While
Kujira 0:1977c2310ef7 1318 }
Kujira 0:1977c2310ef7 1319
Kujira 0:1977c2310ef7 1320 /*****************************
Kujira 0:1977c2310ef7 1321
Kujira 0:1977c2310ef7 1322 I2C General Call
Kujira 0:1977c2310ef7 1323
Kujira 0:1977c2310ef7 1324 *****************************/
Kujira 0:1977c2310ef7 1325 void general_call(char com)
Kujira 0:1977c2310ef7 1326 {
Kujira 0:1977c2310ef7 1327 char cmd[1];
Kujira 0:1977c2310ef7 1328
Kujira 0:1977c2310ef7 1329 cmd[0]= com;
Kujira 0:1977c2310ef7 1330 i2c.write(0x00, cmd, 1); //General Call
Kujira 0:1977c2310ef7 1331 }
Kujira 0:1977c2310ef7 1332 /*******************************************************************************
Kujira 0:1977c2310ef7 1333
Kujira 0:1977c2310ef7 1334 MAIN
Kujira 0:1977c2310ef7 1335
Kujira 0:1977c2310ef7 1336 *******************************************************************************/
Kujira 0:1977c2310ef7 1337 int main(void)
Kujira 0:1977c2310ef7 1338 {
Kujira 0:1977c2310ef7 1339 while(1) {
Kujira 0:1977c2310ef7 1340
Kujira 0:1977c2310ef7 1341 wait(0.2);
Kujira 0:1977c2310ef7 1342
Kujira 0:1977c2310ef7 1343 set_pullup();
Kujira 0:1977c2310ef7 1344
Kujira 0:1977c2310ef7 1345 general_call(0x06); //ADC power on reset
Kujira 0:1977c2310ef7 1346
Kujira 0:1977c2310ef7 1347 dac_init(); //DAC 初期化
Kujira 0:1977c2310ef7 1348
Kujira 0:1977c2310ef7 1349 gu_initial();//初期画面へ
Kujira 0:1977c2310ef7 1350 //utility();
Kujira 0:1977c2310ef7 1351 }
Kujira 0:1977c2310ef7 1352 } //main end
Kujira 0:1977c2310ef7 1353
Kujira 0:1977c2310ef7 1354 void gu_initial()
Kujira 0:1977c2310ef7 1355 {
Kujira 0:1977c2310ef7 1356 char cmd_gu[32] ; //gu-DへのI2Cコマンド用配列 1byte0
Kujira 0:1977c2310ef7 1357 //char *pcmd = cmd_gu;
Kujira 0:1977c2310ef7 1358 char clumi; //輝度設定用変数 01h<=n<=08h
Kujira 0:1977c2310ef7 1359 char* pclumi = &clumi; //ポインタの定義
Kujira 0:1977c2310ef7 1360 char crdata[3];
Kujira 0:1977c2310ef7 1361 char cswnum; //SW_No. sw1->0x00 ~~ sw32->0x1F
Kujira 0:1977c2310ef7 1362 char cswdata; // 0x00 or 0x01
Kujira 0:1977c2310ef7 1363 char *pcswnum = &cswnum;
Kujira 0:1977c2310ef7 1364 char *pcswdata = &cswdata;
Kujira 0:1977c2310ef7 1365 char csyoudo[4];
Kujira 0:1977c2310ef7 1366 int i;
Kujira 0:1977c2310ef7 1367 float duty_pwm;
Kujira 0:1977c2310ef7 1368
Kujira 0:1977c2310ef7 1369
Kujira 0:1977c2310ef7 1370 for ( i = 0; i <= ( number_of_channels - 1 ); i++) {
Kujira 0:1977c2310ef7 1371 leds[i].period_us(period_pwm); //Set tha PWM period(us)
Kujira 0:1977c2310ef7 1372 }
Kujira 0:1977c2310ef7 1373
Kujira 0:1977c2310ef7 1374
Kujira 0:1977c2310ef7 1375 duty_pwm = 0; //表示器立ち上がるまでLEDOFF
Kujira 0:1977c2310ef7 1376
Kujira 0:1977c2310ef7 1377 for( i = 0; i <= 3; i++) {
Kujira 0:1977c2310ef7 1378 leds[i].write(duty_pwm);//Set Duty
Kujira 0:1977c2310ef7 1379 }
Kujira 0:1977c2310ef7 1380
Kujira 0:1977c2310ef7 1381
Kujira 0:1977c2310ef7 1382 i2c.frequency(100000); //gu_D I2Cクロックレート(HZ) 400khz以下
Kujira 0:1977c2310ef7 1383
Kujira 0:1977c2310ef7 1384 cmd_gu[0]= 0x1B;
Kujira 0:1977c2310ef7 1385 cmd_gu[1]= 0x40;
Kujira 0:1977c2310ef7 1386 i2c.write(addr_gu, cmd_gu, 2); //gu-D ESC 初期化
Kujira 0:1977c2310ef7 1387 wait(0.2);
Kujira 0:1977c2310ef7 1388
Kujira 0:1977c2310ef7 1389 //メモリ00h番地(GU_D輝度設定データ)読み出し
Kujira 0:1977c2310ef7 1390 wdata[0] = 0x00;
Kujira 0:1977c2310ef7 1391 Soushin = i2c.write (fixed_adrs, wdata, 1,true); //読込先頭アドレス指定 ReStart
Kujira 0:1977c2310ef7 1392 Jyushin = i2c.read ((fixed_adrs + 0x01), rdata, 1);//read 1byte
Kujira 0:1977c2310ef7 1393 *pclumi = rdata[0];
Kujira 0:1977c2310ef7 1394 //輝度設定更新
Kujira 0:1977c2310ef7 1395 if(*pclumi==0x00 || *pclumi > 0x08) *pclumi=0x05;
Kujira 0:1977c2310ef7 1396 gu_luminance(pclumi);
Kujira 0:1977c2310ef7 1397
Kujira 0:1977c2310ef7 1398 gu_fontsize(2); //change fontsize
Kujira 0:1977c2310ef7 1399 //ver1.2.3
Kujira 0:1977c2310ef7 1400 //gu_print1("ILF Iop/Voc/O.C.P/R");
Kujira 0:1977c2310ef7 1401 gu_print1("ILF mode selectiion");
Kujira 0:1977c2310ef7 1402 //upto
Kujira 0:1977c2310ef7 1403 //gu_CRLF();//CR+LF
Kujira 0:1977c2310ef7 1404 //gu_print1("Settings");
Kujira 0:1977c2310ef7 1405 gu_fontsize(1);
Kujira 0:1977c2310ef7 1406 gu_cursor(192,1);
Kujira 0:1977c2310ef7 1407 gu_print1("ver");
Kujira 0:1977c2310ef7 1408 gu_onebyte( version_major + 0x30 );
Kujira 0:1977c2310ef7 1409 gu_print1(".");
Kujira 0:1977c2310ef7 1410 gu_onebyte( version_minor + 0x30 );
Kujira 0:1977c2310ef7 1411 gu_print1(".");
Kujira 0:1977c2310ef7 1412 gu_onebyte( version_build + 0x30 );
Kujira 0:1977c2310ef7 1413
Kujira 0:1977c2310ef7 1414 gu_touchPara(0,touch);//タッチ感度 00h~07h
Kujira 0:1977c2310ef7 1415
Kujira 0:1977c2310ef7 1416 //MODE選択用ボタンの表示
Kujira 0:1977c2310ef7 1417 gu_set_button(9,"");
Kujira 0:1977c2310ef7 1418 gu_set_button(17,"");
Kujira 0:1977c2310ef7 1419 gu_set_button(25,"");
Kujira 0:1977c2310ef7 1420 gu_set_button(13,"");
Kujira 0:1977c2310ef7 1421 gu_set_button(21,"");
Kujira 0:1977c2310ef7 1422 gu_set_button(29,"");
Kujira 0:1977c2310ef7 1423 //LED Brighness
Kujira 0:1977c2310ef7 1424 gu_fontsize(2);
Kujira 0:1977c2310ef7 1425 gu_cursor(36,32/8);
Kujira 0:1977c2310ef7 1426 gu_print1("CAL");
Kujira 0:1977c2310ef7 1427 gu_cursor(36,64/8);
Kujira 0:1977c2310ef7 1428 gu_print1("LUX");
Kujira 0:1977c2310ef7 1429 //gu_cursor(36,80/8);
Kujira 0:1977c2310ef7 1430 //gu_print1("illumi");
Kujira 0:1977c2310ef7 1431 //Display Brightness
Kujira 0:1977c2310ef7 1432 gu_cursor(36,96/8);
Kujira 0:1977c2310ef7 1433 gu_print1("Utility");
Kujira 0:1977c2310ef7 1434 //Auto MODE
Kujira 0:1977c2310ef7 1435 gu_cursor(164,32/8);
Kujira 0:1977c2310ef7 1436 gu_print1("Auto");
Kujira 0:1977c2310ef7 1437 //Manual Mode
Kujira 0:1977c2310ef7 1438 gu_cursor(164,64/8);
Kujira 0:1977c2310ef7 1439 gu_print1("Manual");
Kujira 0:1977c2310ef7 1440 //Sequenser Mode
Kujira 0:1977c2310ef7 1441 gu_cursor(164,96/8);
Kujira 0:1977c2310ef7 1442 gu_print1("SEQ");
Kujira 0:1977c2310ef7 1443
Kujira 0:1977c2310ef7 1444 /**********************
Kujira 0:1977c2310ef7 1445 SDカードファイルオープン
Kujira 0:1977c2310ef7 1446 **********************/
Kujira 0:1977c2310ef7 1447
Kujira 0:1977c2310ef7 1448 mkdir("/sd/mydir", 0777);
Kujira 0:1977c2310ef7 1449
Kujira 0:1977c2310ef7 1450 FILE *fp = fopen("/sd/mydir/iop.csv", "ab+");//ディレクトリとファイル名の指定
Kujira 0:1977c2310ef7 1451
Kujira 0:1977c2310ef7 1452 if(fp == NULL) {
Kujira 0:1977c2310ef7 1453 /*ver1.1.3
Kujira 0:1977c2310ef7 1454 gu_fontsize(1);
Kujira 0:1977c2310ef7 1455 gu_cursor(0,2);
Kujira 0:1977c2310ef7 1456 gu_print1("Could not open file for SD card");
Kujira 0:1977c2310ef7 1457 */
Kujira 0:1977c2310ef7 1458 } else {
Kujira 0:1977c2310ef7 1459 fprintf(fp, "NewData R IOP OCP VOC");
Kujira 0:1977c2310ef7 1460 fprintf(fp, "\n");
Kujira 0:1977c2310ef7 1461 fclose(fp);
Kujira 0:1977c2310ef7 1462 }
Kujira 0:1977c2310ef7 1463 /**********************
Kujira 0:1977c2310ef7 1464 LED照度初期設定
Kujira 0:1977c2310ef7 1465 **********************/
Kujira 0:1977c2310ef7 1466 read_syoudo( csyoudo );
Kujira 0:1977c2310ef7 1467
Kujira 0:1977c2310ef7 1468 //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 1469 cmd_gu[0]= 0x1F;
Kujira 0:1977c2310ef7 1470 cmd_gu[1]= 0x4B;
Kujira 0:1977c2310ef7 1471 cmd_gu[2]= 0x18;
Kujira 0:1977c2310ef7 1472 cmd_gu[3]= 0x02;//SW状態変化時自動送信モード2
Kujira 0:1977c2310ef7 1473 i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 1474
Kujira 0:1977c2310ef7 1475 while(1) {
Kujira 0:1977c2310ef7 1476 //タッチスイッチ読み出し
Kujira 0:1977c2310ef7 1477 i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 1478
Kujira 0:1977c2310ef7 1479 if (crdata[0] == 0x11 ) { //個別タッチスイッチ状態読み出しフォーマット。識別子11h。
Kujira 0:1977c2310ef7 1480 *pcswnum = crdata[1]; //スイッチ番号
Kujira 0:1977c2310ef7 1481 *pcswdata = crdata[2];//ON/OFF情報
Kujira 0:1977c2310ef7 1482
Kujira 0:1977c2310ef7 1483 if (cswdata == 0x01) { //タッチしたならば
Kujira 0:1977c2310ef7 1484 switch( cswnum ) { //SWの番号(位置)
Kujira 0:1977c2310ef7 1485
Kujira 0:1977c2310ef7 1486 case 0x08 ://SW9 CAL登録画面
Kujira 0:1977c2310ef7 1487 //gu_リバース指定
Kujira 0:1977c2310ef7 1488 gu_reverse(0x01);
Kujira 0:1977c2310ef7 1489 //Show Button
Kujira 0:1977c2310ef7 1490 gu_set_button(9,"");
Kujira 0:1977c2310ef7 1491 wait(0.1);
Kujira 0:1977c2310ef7 1492 //gu_リバース解除
Kujira 0:1977c2310ef7 1493 gu_reverse(0x00);
Kujira 0:1977c2310ef7 1494
Kujira 0:1977c2310ef7 1495 select_cal();//CAL選択画面へ移動
Kujira 0:1977c2310ef7 1496
Kujira 0:1977c2310ef7 1497 return;
Kujira 0:1977c2310ef7 1498
Kujira 0:1977c2310ef7 1499 case 0x10 ://SW17
Kujira 0:1977c2310ef7 1500 //gu_リバース指定
Kujira 0:1977c2310ef7 1501 gu_reverse(0x01);
Kujira 0:1977c2310ef7 1502 //Show Button
Kujira 0:1977c2310ef7 1503 gu_set_button(17,"");
Kujira 0:1977c2310ef7 1504 wait(0.1);
Kujira 0:1977c2310ef7 1505 //gu_リバース解除
Kujira 0:1977c2310ef7 1506 gu_reverse(0x00);
Kujira 0:1977c2310ef7 1507
Kujira 0:1977c2310ef7 1508 adjust_illumination();//LED照度調整へ移動
Kujira 0:1977c2310ef7 1509
Kujira 0:1977c2310ef7 1510 return;
Kujira 0:1977c2310ef7 1511
Kujira 0:1977c2310ef7 1512 case 0x18 ://SW25
Kujira 0:1977c2310ef7 1513 //gu_リバース指定
Kujira 0:1977c2310ef7 1514 gu_reverse(0x01);
Kujira 0:1977c2310ef7 1515 //Show Button
Kujira 0:1977c2310ef7 1516 gu_set_button(25,"");
Kujira 0:1977c2310ef7 1517 wait(0.1);
Kujira 0:1977c2310ef7 1518 //gu_リバース解除
Kujira 0:1977c2310ef7 1519 gu_reverse(0x00);
Kujira 0:1977c2310ef7 1520
Kujira 0:1977c2310ef7 1521 utility();//画面輝度調整へ移動
Kujira 0:1977c2310ef7 1522
Kujira 0:1977c2310ef7 1523 return;
Kujira 0:1977c2310ef7 1524
Kujira 0:1977c2310ef7 1525 case 0x0C ://SW13 自動測定モード
Kujira 0:1977c2310ef7 1526 //gu_リバース指定
Kujira 0:1977c2310ef7 1527 gu_reverse(0x01);
Kujira 0:1977c2310ef7 1528 //Show Button
Kujira 0:1977c2310ef7 1529 gu_set_button(13,"");
Kujira 0:1977c2310ef7 1530 wait(0.1);
Kujira 0:1977c2310ef7 1531 //gu_リバース解除
Kujira 0:1977c2310ef7 1532 gu_reverse(0x00);
Kujira 0:1977c2310ef7 1533
Kujira 0:1977c2310ef7 1534 auto_run();
Kujira 0:1977c2310ef7 1535
Kujira 0:1977c2310ef7 1536 return;
Kujira 0:1977c2310ef7 1537
Kujira 0:1977c2310ef7 1538 case 0x14 ://SW21 手動測定モード
Kujira 0:1977c2310ef7 1539 //gu_リバース指定
Kujira 0:1977c2310ef7 1540 gu_reverse(0x01);
Kujira 0:1977c2310ef7 1541 //Show Button
Kujira 0:1977c2310ef7 1542 gu_set_button(21,"");
Kujira 0:1977c2310ef7 1543 wait(0.1);
Kujira 0:1977c2310ef7 1544 //gu_リバース解除
Kujira 0:1977c2310ef7 1545 gu_reverse(0x00);
Kujira 0:1977c2310ef7 1546
Kujira 0:1977c2310ef7 1547 manual();
Kujira 0:1977c2310ef7 1548
Kujira 0:1977c2310ef7 1549 return;
Kujira 0:1977c2310ef7 1550
Kujira 0:1977c2310ef7 1551 case 0x1C ://SW29 シーケンサ制御モード
Kujira 0:1977c2310ef7 1552 //gu_リバース指定
Kujira 0:1977c2310ef7 1553 gu_reverse(0x01);
Kujira 0:1977c2310ef7 1554 //Show Button
Kujira 0:1977c2310ef7 1555 gu_set_button(29,"");
Kujira 0:1977c2310ef7 1556 wait(0.1);
Kujira 0:1977c2310ef7 1557 //gu_リバース解除
Kujira 0:1977c2310ef7 1558 gu_reverse(0x00);
Kujira 0:1977c2310ef7 1559
Kujira 0:1977c2310ef7 1560 seq();
Kujira 0:1977c2310ef7 1561
Kujira 0:1977c2310ef7 1562 return;
Kujira 0:1977c2310ef7 1563
Kujira 0:1977c2310ef7 1564 } //switch
Kujira 0:1977c2310ef7 1565
Kujira 0:1977c2310ef7 1566 }//if(cswdata == 0x01) {
Kujira 0:1977c2310ef7 1567 } //if(crdata[0] == 0x11 ) {
Kujira 0:1977c2310ef7 1568
Kujira 0:1977c2310ef7 1569 wait(0.1);//タッチスイッチ入力読み出し間隔
Kujira 0:1977c2310ef7 1570
Kujira 0:1977c2310ef7 1571 } //while(1) {
Kujira 0:1977c2310ef7 1572
Kujira 0:1977c2310ef7 1573 }
Kujira 0:1977c2310ef7 1574
Kujira 0:1977c2310ef7 1575 /*********************************
Kujira 0:1977c2310ef7 1576
Kujira 0:1977c2310ef7 1577 CAL選択画面 sub
Kujira 0:1977c2310ef7 1578
Kujira 0:1977c2310ef7 1579 *********************************/
Kujira 0:1977c2310ef7 1580 void show_info(int n)
Kujira 0:1977c2310ef7 1581 {
Kujira 0:1977c2310ef7 1582 short sdata[6];
Kujira 0:1977c2310ef7 1583
Kujira 0:1977c2310ef7 1584 read_caliber(&calinfo,n);
Kujira 0:1977c2310ef7 1585
Kujira 0:1977c2310ef7 1586 //読出したCAL情報の表示
Kujira 0:1977c2310ef7 1587 gu_fontsize(1);
Kujira 0:1977c2310ef7 1588 gu_cursor(0,2);
Kujira 0:1977c2310ef7 1589 gu_print1("No.");
Kujira 0:1977c2310ef7 1590 gu_putdec(&calinfo.number);
Kujira 0:1977c2310ef7 1591 gu_cursor(0,3);
Kujira 0:1977c2310ef7 1592 gu_print1("Vss(Iop) =");
Kujira 0:1977c2310ef7 1593 sdata[0] = -1 * calinfo.vss_iop;
Kujira 0:1977c2310ef7 1594 gu_putdeck(&sdata[0]);
Kujira 0:1977c2310ef7 1595 gu_print1("V ");
Kujira 0:1977c2310ef7 1596 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1597 gu_print1("Vss(ocp) =");
Kujira 0:1977c2310ef7 1598 sdata[1] = -1 * calinfo.vss_ocp;
Kujira 0:1977c2310ef7 1599 gu_putdeck(&sdata[1]);
Kujira 0:1977c2310ef7 1600 gu_print1("V ");
Kujira 0:1977c2310ef7 1601 gu_cursor(0,5);
Kujira 0:1977c2310ef7 1602 gu_print1("Vss(Voc) =");
Kujira 0:1977c2310ef7 1603 sdata[2] = -1 * calinfo.vss_voc;
Kujira 0:1977c2310ef7 1604 gu_putdeck(&sdata[2]);
Kujira 0:1977c2310ef7 1605 gu_print1("V ");
Kujira 0:1977c2310ef7 1606 }
Kujira 0:1977c2310ef7 1607 /*********************************
Kujira 0:1977c2310ef7 1608
Kujira 0:1977c2310ef7 1609 CAL選択画面 #CAL登録画面
Kujira 0:1977c2310ef7 1610
Kujira 0:1977c2310ef7 1611 *********************************/
Kujira 0:1977c2310ef7 1612 void select_cal()
Kujira 0:1977c2310ef7 1613 {
Kujira 0:1977c2310ef7 1614 char crdata[3];
Kujira 0:1977c2310ef7 1615 char cswnum; //SW_No. sw1->0x00 ~~ sw32->0x1F
Kujira 0:1977c2310ef7 1616 char cswdata; // 0x00 or 0x01
Kujira 0:1977c2310ef7 1617 char *pcswnum = &cswnum;
Kujira 0:1977c2310ef7 1618 char *pcswdata = &cswdata;
Kujira 0:1977c2310ef7 1619 char calnum; //選択したCALナンバー
Kujira 0:1977c2310ef7 1620 //short sdata[3]; //印加電圧表示用wr
Kujira 0:1977c2310ef7 1621
Kujira 0:1977c2310ef7 1622 calnum = 0;//initial
Kujira 0:1977c2310ef7 1623
Kujira 0:1977c2310ef7 1624 gu_cls();
Kujira 0:1977c2310ef7 1625
Kujira 0:1977c2310ef7 1626 read_regnum();//EEPROMに保存した選択CAL_NO.の読み出し
Kujira 0:1977c2310ef7 1627
Kujira 0:1977c2310ef7 1628 show_info(reg_num);
Kujira 0:1977c2310ef7 1629
Kujira 0:1977c2310ef7 1630 /*
Kujira 0:1977c2310ef7 1631 read_caliber(&calinfo,reg_num);
Kujira 0:1977c2310ef7 1632
Kujira 0:1977c2310ef7 1633 //読出したCAL情報の表示
Kujira 0:1977c2310ef7 1634 gu_fontsize(1);
Kujira 0:1977c2310ef7 1635 gu_cursor(0,2);
Kujira 0:1977c2310ef7 1636 gu_print1("No.");
Kujira 0:1977c2310ef7 1637 gu_putdec(&calinfo.number);
Kujira 0:1977c2310ef7 1638 gu_cursor(0,3);
Kujira 0:1977c2310ef7 1639 gu_print1("Vss(Iop) =");
Kujira 0:1977c2310ef7 1640 sdata[0] = -1 * calinfo.vss_iop;
Kujira 0:1977c2310ef7 1641 gu_putdeck(&sdata[0]);
Kujira 0:1977c2310ef7 1642 gu_print1("V ");
Kujira 0:1977c2310ef7 1643 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1644 gu_print1("Vss(ocp) =");
Kujira 0:1977c2310ef7 1645 sdata[1] = -1 * calinfo.vss_ocp;
Kujira 0:1977c2310ef7 1646 gu_putdeck(&sdata[1]);
Kujira 0:1977c2310ef7 1647 gu_print1("V ");
Kujira 0:1977c2310ef7 1648 gu_cursor(0,5);
Kujira 0:1977c2310ef7 1649 gu_print1("Vss(Voc) =");
Kujira 0:1977c2310ef7 1650 sdata[2] = -1 * calinfo.vss_voc;
Kujira 0:1977c2310ef7 1651 gu_putdeck(&sdata[2]);
Kujira 0:1977c2310ef7 1652 gu_print1("V ");
Kujira 0:1977c2310ef7 1653 */
Kujira 0:1977c2310ef7 1654
Kujira 0:1977c2310ef7 1655 gu_fontsize(2); //change fontsize
Kujira 0:1977c2310ef7 1656 gu_cursor(0,0);
Kujira 0:1977c2310ef7 1657 gu_print1("Select CAL.");
Kujira 0:1977c2310ef7 1658 //Set Button
Kujira 0:1977c2310ef7 1659 gu_set_button(17,"1");
Kujira 0:1977c2310ef7 1660 gu_set_button(19,"2");
Kujira 0:1977c2310ef7 1661 gu_set_button(21,"3");
Kujira 0:1977c2310ef7 1662 gu_set_button(25,"4");
Kujira 0:1977c2310ef7 1663 gu_set_button(27,"5");
Kujira 0:1977c2310ef7 1664 gu_set_button(29,"6");
Kujira 0:1977c2310ef7 1665 gu_set_button_font1(7,"slct");
Kujira 0:1977c2310ef7 1666 gu_set_button_font1(8,"reg");
Kujira 0:1977c2310ef7 1667 //gu_set_button_font1(32,"del"); //ver1.1.0
Kujira 0:1977c2310ef7 1668
Kujira 0:1977c2310ef7 1669
Kujira 0:1977c2310ef7 1670 while(1) {
Kujira 0:1977c2310ef7 1671 //タッチスイッチ読み出し
Kujira 0:1977c2310ef7 1672 i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 1673
Kujira 0:1977c2310ef7 1674 if (crdata[0] == 0x11 ) { //個別タッチスイッチ状態読み出しフォーマット。識別子11h。
Kujira 0:1977c2310ef7 1675 *pcswnum = crdata[1]; //スイッチ番号
Kujira 0:1977c2310ef7 1676 *pcswdata = crdata[2];//ON/OFF情報
Kujira 0:1977c2310ef7 1677
Kujira 0:1977c2310ef7 1678 if (cswdata == 0x01) { //タッチしたならば
Kujira 0:1977c2310ef7 1679 switch( cswnum ) { //SWの番号(位置)
Kujira 0:1977c2310ef7 1680
Kujira 0:1977c2310ef7 1681 case 0x10: //SW17
Kujira 0:1977c2310ef7 1682
Kujira 0:1977c2310ef7 1683 gu_reverse(0x01); //gu_リバース指定
Kujira 0:1977c2310ef7 1684 gu_set_button(17,"1");
Kujira 0:1977c2310ef7 1685 gu_reverse(0x00); //gu_リバース解除
Kujira 0:1977c2310ef7 1686 gu_set_button(19,"2");
Kujira 0:1977c2310ef7 1687 gu_set_button(21,"3");
Kujira 0:1977c2310ef7 1688 gu_set_button(25,"4");
Kujira 0:1977c2310ef7 1689 gu_set_button(27,"5");
Kujira 0:1977c2310ef7 1690 gu_set_button(29,"6");
Kujira 0:1977c2310ef7 1691
Kujira 0:1977c2310ef7 1692 calnum = 1;
Kujira 0:1977c2310ef7 1693
Kujira 0:1977c2310ef7 1694 show_info(calnum);
Kujira 0:1977c2310ef7 1695
Kujira 0:1977c2310ef7 1696 break;
Kujira 0:1977c2310ef7 1697
Kujira 0:1977c2310ef7 1698 case 0x12: //SW19
Kujira 0:1977c2310ef7 1699
Kujira 0:1977c2310ef7 1700 gu_reverse(0x01); //gu_リバース指定
Kujira 0:1977c2310ef7 1701 gu_set_button(19,"2");
Kujira 0:1977c2310ef7 1702 gu_reverse(0x00); //gu_リバース解除
Kujira 0:1977c2310ef7 1703 gu_set_button(17,"1");
Kujira 0:1977c2310ef7 1704 gu_set_button(21,"3");
Kujira 0:1977c2310ef7 1705 gu_set_button(25,"4");
Kujira 0:1977c2310ef7 1706 gu_set_button(27,"5");
Kujira 0:1977c2310ef7 1707 gu_set_button(29,"6");
Kujira 0:1977c2310ef7 1708
Kujira 0:1977c2310ef7 1709 calnum = 2;
Kujira 0:1977c2310ef7 1710
Kujira 0:1977c2310ef7 1711 show_info(calnum);
Kujira 0:1977c2310ef7 1712
Kujira 0:1977c2310ef7 1713 break;
Kujira 0:1977c2310ef7 1714
Kujira 0:1977c2310ef7 1715 case 0x14: //SW21
Kujira 0:1977c2310ef7 1716
Kujira 0:1977c2310ef7 1717 gu_reverse(0x01); //gu_リバース指定
Kujira 0:1977c2310ef7 1718 gu_set_button(21,"3");
Kujira 0:1977c2310ef7 1719 gu_reverse(0x00); //gu_リバース解除
Kujira 0:1977c2310ef7 1720 gu_set_button(17,"1");
Kujira 0:1977c2310ef7 1721 gu_set_button(19,"2");
Kujira 0:1977c2310ef7 1722 //gu_set_button(21,"3");
Kujira 0:1977c2310ef7 1723 gu_set_button(25,"4");
Kujira 0:1977c2310ef7 1724 gu_set_button(27,"5");
Kujira 0:1977c2310ef7 1725 gu_set_button(29,"6");
Kujira 0:1977c2310ef7 1726
Kujira 0:1977c2310ef7 1727 calnum = 3;
Kujira 0:1977c2310ef7 1728
Kujira 0:1977c2310ef7 1729 show_info(calnum);
Kujira 0:1977c2310ef7 1730
Kujira 0:1977c2310ef7 1731 break;
Kujira 0:1977c2310ef7 1732
Kujira 0:1977c2310ef7 1733 case 0x18: //SW25
Kujira 0:1977c2310ef7 1734
Kujira 0:1977c2310ef7 1735 gu_reverse(0x01); //gu_リバース指定
Kujira 0:1977c2310ef7 1736 gu_set_button(25,"4");
Kujira 0:1977c2310ef7 1737 gu_reverse(0x00); //gu_リバース解除
Kujira 0:1977c2310ef7 1738 gu_set_button(17,"1");
Kujira 0:1977c2310ef7 1739 gu_set_button(19,"2");
Kujira 0:1977c2310ef7 1740 gu_set_button(21,"3");
Kujira 0:1977c2310ef7 1741 //gu_set_button(25,"4");
Kujira 0:1977c2310ef7 1742 gu_set_button(27,"5");
Kujira 0:1977c2310ef7 1743 gu_set_button(29,"6");
Kujira 0:1977c2310ef7 1744
Kujira 0:1977c2310ef7 1745 calnum = 4;
Kujira 0:1977c2310ef7 1746
Kujira 0:1977c2310ef7 1747 show_info(calnum);
Kujira 0:1977c2310ef7 1748
Kujira 0:1977c2310ef7 1749 break;
Kujira 0:1977c2310ef7 1750
Kujira 0:1977c2310ef7 1751 case 0x1A: //SW27
Kujira 0:1977c2310ef7 1752
Kujira 0:1977c2310ef7 1753 gu_reverse(0x01); //gu_リバース指定
Kujira 0:1977c2310ef7 1754 gu_set_button(27,"5");
Kujira 0:1977c2310ef7 1755 gu_reverse(0x00); //gu_リバース解除
Kujira 0:1977c2310ef7 1756 gu_set_button(17,"1");
Kujira 0:1977c2310ef7 1757 gu_set_button(19,"2");
Kujira 0:1977c2310ef7 1758 gu_set_button(21,"3");
Kujira 0:1977c2310ef7 1759 gu_set_button(25,"4");
Kujira 0:1977c2310ef7 1760 //gu_set_button(27,"5");
Kujira 0:1977c2310ef7 1761 gu_set_button(29,"6");
Kujira 0:1977c2310ef7 1762
Kujira 0:1977c2310ef7 1763 calnum = 5;
Kujira 0:1977c2310ef7 1764
Kujira 0:1977c2310ef7 1765 show_info(calnum);
Kujira 0:1977c2310ef7 1766
Kujira 0:1977c2310ef7 1767 break;
Kujira 0:1977c2310ef7 1768
Kujira 0:1977c2310ef7 1769 case 0x1C: //SW29
Kujira 0:1977c2310ef7 1770
Kujira 0:1977c2310ef7 1771 gu_reverse(0x01); //gu_リバース指定
Kujira 0:1977c2310ef7 1772 gu_set_button(29,"6");
Kujira 0:1977c2310ef7 1773 gu_reverse(0x00); //gu_リバース解除
Kujira 0:1977c2310ef7 1774 gu_set_button(17,"1");
Kujira 0:1977c2310ef7 1775 gu_set_button(19,"2");
Kujira 0:1977c2310ef7 1776 gu_set_button(21,"3");
Kujira 0:1977c2310ef7 1777 gu_set_button(25,"4");
Kujira 0:1977c2310ef7 1778 gu_set_button(27,"5");
Kujira 0:1977c2310ef7 1779 //gu_set_button(29,"6");
Kujira 0:1977c2310ef7 1780
Kujira 0:1977c2310ef7 1781 calnum = 6;
Kujira 0:1977c2310ef7 1782
Kujira 0:1977c2310ef7 1783 show_info(calnum);
Kujira 0:1977c2310ef7 1784
Kujira 0:1977c2310ef7 1785 break;
Kujira 0:1977c2310ef7 1786
Kujira 0:1977c2310ef7 1787 case 0x06: //SW7 CAL選択ボタン
Kujira 0:1977c2310ef7 1788
Kujira 0:1977c2310ef7 1789 if ( calnum >= 1 && calnum <=6 ) {
Kujira 0:1977c2310ef7 1790 reg_num = calnum;
Kujira 0:1977c2310ef7 1791
Kujira 0:1977c2310ef7 1792 //EEPROM書込み
Kujira 0:1977c2310ef7 1793 wdata[0] = addr_calnum; //word address 書込み先頭アドレス指定
Kujira 0:1977c2310ef7 1794 wdata[1] = reg_num;
Kujira 0:1977c2310ef7 1795 Soushin = i2c.write (fixed_adrs, wdata, 2);
Kujira 0:1977c2310ef7 1796
Kujira 0:1977c2310ef7 1797 gu_reverse(0x01); //gu_リバース指定
Kujira 0:1977c2310ef7 1798 gu_set_button_font1(7,"slct");
Kujira 0:1977c2310ef7 1799 wait(0.2);
Kujira 0:1977c2310ef7 1800 gu_reverse(0x00); //gu_リバース解除
Kujira 0:1977c2310ef7 1801
Kujira 0:1977c2310ef7 1802 read_caliber(&calinfo,reg_num);
Kujira 0:1977c2310ef7 1803 return;
Kujira 0:1977c2310ef7 1804
Kujira 0:1977c2310ef7 1805 } else if( calnum == 0 ) {
Kujira 0:1977c2310ef7 1806 //CALNo.選択しなければ、何もしないでこのサブを抜ける
Kujira 0:1977c2310ef7 1807 gu_reverse(0x01); //gu_リバース指定
Kujira 0:1977c2310ef7 1808 gu_set_button_font1(7,"slct");
Kujira 0:1977c2310ef7 1809 wait(0.2);
Kujira 0:1977c2310ef7 1810 gu_reverse(0x00); //gu_リバース解除
Kujira 0:1977c2310ef7 1811 return;
Kujira 0:1977c2310ef7 1812 }
Kujira 0:1977c2310ef7 1813
Kujira 0:1977c2310ef7 1814 break;
Kujira 0:1977c2310ef7 1815
Kujira 0:1977c2310ef7 1816 case 0x07: //SW8
Kujira 0:1977c2310ef7 1817
Kujira 0:1977c2310ef7 1818 if ( calnum >= 1 && calnum <= 6 ) {
Kujira 0:1977c2310ef7 1819 gu_reverse(0x01); //gu_リバース指定
Kujira 0:1977c2310ef7 1820 gu_set_button_font1(8,"reg");
Kujira 0:1977c2310ef7 1821 wait(0.2);
Kujira 0:1977c2310ef7 1822 gu_reverse(0x00); //gu_リバース解除
Kujira 0:1977c2310ef7 1823
Kujira 0:1977c2310ef7 1824 setup_cal_information(calnum);//CAL情報登録画面へ
Kujira 0:1977c2310ef7 1825 return;
Kujira 0:1977c2310ef7 1826 }
Kujira 0:1977c2310ef7 1827 break;
Kujira 0:1977c2310ef7 1828
Kujira 0:1977c2310ef7 1829 /*ver1.1.0
Kujira 0:1977c2310ef7 1830 case 0x1F: //SW32
Kujira 0:1977c2310ef7 1831
Kujira 0:1977c2310ef7 1832 gu_reverse(0x01); //gu_リバース指定
Kujira 0:1977c2310ef7 1833 gu_set_button_font1(32,"del");
Kujira 0:1977c2310ef7 1834 gu_reverse(0x00); //gu_リバース解除
Kujira 0:1977c2310ef7 1835
Kujira 0:1977c2310ef7 1836 erace_calinfo();
Kujira 0:1977c2310ef7 1837
Kujira 0:1977c2310ef7 1838 gu_set_button_font1(32,"del");
Kujira 0:1977c2310ef7 1839
Kujira 0:1977c2310ef7 1840 break;
Kujira 0:1977c2310ef7 1841 */
Kujira 0:1977c2310ef7 1842
Kujira 0:1977c2310ef7 1843 } //switch
Kujira 0:1977c2310ef7 1844
Kujira 0:1977c2310ef7 1845 }//if(cswdata == 0x01) {
Kujira 0:1977c2310ef7 1846 } //if(crdata[0] == 0x11 ) {
Kujira 0:1977c2310ef7 1847 wait(0.1);//タッチスイッチ入力読み出し間隔
Kujira 0:1977c2310ef7 1848 } //while(1)
Kujira 0:1977c2310ef7 1849 }
Kujira 0:1977c2310ef7 1850
Kujira 0:1977c2310ef7 1851 /*********************************
Kujira 0:1977c2310ef7 1852
Kujira 0:1977c2310ef7 1853 CAL情報登録画面 サブルーチン
Kujira 0:1977c2310ef7 1854 表示パラメータ
Kujira 0:1977c2310ef7 1855 x=0 : vss_iop[V]
Kujira 0:1977c2310ef7 1856 x=1 : vss_ocp[V]
Kujira 0:1977c2310ef7 1857 x=2 : vss_voc[V]
Kujira 0:1977c2310ef7 1858 x=3 : low_limit_voc[V]
Kujira 0:1977c2310ef7 1859 x=4 : low_limit_iop[uA]
Kujira 0:1977c2310ef7 1860 x=5 : low_limit_ocp[uA]
Kujira 0:1977c2310ef7 1861 x=6 : wait_iop[s]
Kujira 0:1977c2310ef7 1862 x=7 : wait_ocp[s]
Kujira 0:1977c2310ef7 1863 x=8 : low_limit_resistor[Ω]
Kujira 0:1977c2310ef7 1864 x=9 : up_limit_resistor[Ω]
Kujira 0:1977c2310ef7 1865
Kujira 0:1977c2310ef7 1866 ver1.2.2
Kujira 0:1977c2310ef7 1867 up_limit_ocp[]の追加と
Kujira 0:1977c2310ef7 1868 順序の入替え
Kujira 0:1977c2310ef7 1869
Kujira 0:1977c2310ef7 1870 x=6 : up_limit_ocp[]
Kujira 0:1977c2310ef7 1871 x=7 : wait_iop[s]
Kujira 0:1977c2310ef7 1872 x=8 : wait_ocp[s]
Kujira 0:1977c2310ef7 1873 x=9 : low_limit_resistor[Ω]
Kujira 0:1977c2310ef7 1874 x=10 : up_limit_resistor[Ω]
Kujira 0:1977c2310ef7 1875
Kujira 0:1977c2310ef7 1876 *********************************/
Kujira 0:1977c2310ef7 1877 void hyouji_cal_param(char x)
Kujira 0:1977c2310ef7 1878 {
Kujira 0:1977c2310ef7 1879 gu_fontsize(2);
Kujira 0:1977c2310ef7 1880 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1881 gu_print1(" ");
Kujira 0:1977c2310ef7 1882
Kujira 0:1977c2310ef7 1883 switch ( x ) {
Kujira 0:1977c2310ef7 1884 case 0:
Kujira 0:1977c2310ef7 1885 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1886 gu_print1("Vss(Iop)");
Kujira 0:1977c2310ef7 1887 gu_cursor(208,4);
Kujira 0:1977c2310ef7 1888 gu_print1("[V]");
Kujira 0:1977c2310ef7 1889 break;
Kujira 0:1977c2310ef7 1890 case 1:
Kujira 0:1977c2310ef7 1891 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1892 gu_print1("Vss(O.C.P)");
Kujira 0:1977c2310ef7 1893 gu_cursor(208,4);
Kujira 0:1977c2310ef7 1894 gu_print1("[V]");
Kujira 0:1977c2310ef7 1895 break;
Kujira 0:1977c2310ef7 1896 case 2:
Kujira 0:1977c2310ef7 1897 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1898 gu_print1("Vss(Voc)");
Kujira 0:1977c2310ef7 1899 gu_cursor(208,4);
Kujira 0:1977c2310ef7 1900 gu_print1("[V]");
Kujira 0:1977c2310ef7 1901 break;
Kujira 0:1977c2310ef7 1902 case 3:
Kujira 0:1977c2310ef7 1903 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1904 gu_print1("low limit(Voc)");
Kujira 0:1977c2310ef7 1905 gu_cursor(208,4);
Kujira 0:1977c2310ef7 1906 gu_print1("[V]");
Kujira 0:1977c2310ef7 1907 break;
Kujira 0:1977c2310ef7 1908 case 4:
Kujira 0:1977c2310ef7 1909 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1910 gu_print1("low limit(Iop)");
Kujira 0:1977c2310ef7 1911 gu_cursor(208,4);
Kujira 0:1977c2310ef7 1912 gu_print1("[uA]");
Kujira 0:1977c2310ef7 1913 break;
Kujira 0:1977c2310ef7 1914 case 5:
Kujira 0:1977c2310ef7 1915 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1916 gu_print1("low limit(O.C.P)");
Kujira 0:1977c2310ef7 1917 gu_cursor(208,4);
Kujira 0:1977c2310ef7 1918 gu_print1("[uA]");
Kujira 0:1977c2310ef7 1919 break;
Kujira 0:1977c2310ef7 1920 //ver1.2.2
Kujira 0:1977c2310ef7 1921 case 6:
Kujira 0:1977c2310ef7 1922 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1923 gu_print1("up limit(O.C.P)");
Kujira 0:1977c2310ef7 1924 gu_cursor(208,4);
Kujira 0:1977c2310ef7 1925 gu_print1("[uA]");
Kujira 0:1977c2310ef7 1926 break;
Kujira 0:1977c2310ef7 1927 case 7:
Kujira 0:1977c2310ef7 1928 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1929 gu_print1("Wait(Iop)");
Kujira 0:1977c2310ef7 1930 gu_cursor(208,4);
Kujira 0:1977c2310ef7 1931 gu_print1("[s]");
Kujira 0:1977c2310ef7 1932 break;
Kujira 0:1977c2310ef7 1933 case 8:
Kujira 0:1977c2310ef7 1934 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1935 gu_print1("Wait(O.C.P)");
Kujira 0:1977c2310ef7 1936 gu_cursor(208,4);
Kujira 0:1977c2310ef7 1937 gu_print1("[s]");
Kujira 0:1977c2310ef7 1938 break;
Kujira 0:1977c2310ef7 1939 case 9:
Kujira 0:1977c2310ef7 1940 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1941 gu_print1("low limit(ohm)");
Kujira 0:1977c2310ef7 1942 gu_cursor(208,4);
Kujira 0:1977c2310ef7 1943 wdata[0] = 0xEA; //Ω
Kujira 0:1977c2310ef7 1944 i2c.write( addr_gu, wdata, 1);
Kujira 0:1977c2310ef7 1945 break;
Kujira 0:1977c2310ef7 1946 case 10:
Kujira 0:1977c2310ef7 1947 gu_cursor(0,4);
Kujira 0:1977c2310ef7 1948 gu_print1("up limit(ohm)");
Kujira 0:1977c2310ef7 1949 gu_cursor(208,4);
Kujira 0:1977c2310ef7 1950 wdata[0] = 0xEA; //Ω
Kujira 0:1977c2310ef7 1951 i2c.write( addr_gu, wdata, 1);
Kujira 0:1977c2310ef7 1952 break;
Kujira 0:1977c2310ef7 1953 //ver1.2.2 up to here
Kujira 0:1977c2310ef7 1954
Kujira 0:1977c2310ef7 1955 }
Kujira 0:1977c2310ef7 1956 }
Kujira 0:1977c2310ef7 1957
Kujira 0:1977c2310ef7 1958 /*********************************
Kujira 0:1977c2310ef7 1959
Kujira 0:1977c2310ef7 1960 CAL情報登録画面 sub
Kujira 0:1977c2310ef7 1961 para kind of parameter
Kujira 0:1977c2310ef7 1962 idata data value
Kujira 0:1977c2310ef7 1963 inc add number ex)0x64 0x0A 0x01
Kujira 0:1977c2310ef7 1964
Kujira 0:1977c2310ef7 1965 *********************************/
Kujira 0:1977c2310ef7 1966 void increase_param(char para, signed short *sdata, short inc)
Kujira 0:1977c2310ef7 1967 {
Kujira 0:1977c2310ef7 1968 switch ( para ) { //パラメータの項目によって上限値異なる
Kujira 0:1977c2310ef7 1969 case 0://vss_iop
Kujira 0:1977c2310ef7 1970 case 1://vss_ocp
Kujira 0:1977c2310ef7 1971 case 2://vss_voc
Kujira 0:1977c2310ef7 1972 case 3://low_limit_voc
Kujira 0:1977c2310ef7 1973 if(*sdata <= ( 4999 - inc )) {
Kujira 0:1977c2310ef7 1974 *sdata = *sdata + inc ;
Kujira 0:1977c2310ef7 1975 }
Kujira 0:1977c2310ef7 1976 break;//switch ( param ){
Kujira 0:1977c2310ef7 1977
Kujira 0:1977c2310ef7 1978 case 4://low_limit_iop
Kujira 0:1977c2310ef7 1979 case 5://low_limit_o.c.p
Kujira 0:1977c2310ef7 1980 if(*sdata <= ( 2500 - inc / 10 )) {
Kujira 0:1977c2310ef7 1981 *sdata = *sdata + inc /10 ;
Kujira 0:1977c2310ef7 1982 }
Kujira 0:1977c2310ef7 1983 break;//switch ( param )
Kujira 0:1977c2310ef7 1984 case 7://wait_iop
Kujira 0:1977c2310ef7 1985 case 8://wait_ocp
Kujira 0:1977c2310ef7 1986
Kujira 0:1977c2310ef7 1987 if(*sdata <= ( 2550 - inc / 10 )) {
Kujira 0:1977c2310ef7 1988 *sdata = *sdata + inc / 10 ;
Kujira 0:1977c2310ef7 1989 }
Kujira 0:1977c2310ef7 1990 break;//switch ( param )
Kujira 0:1977c2310ef7 1991
Kujira 0:1977c2310ef7 1992 case 9:
Kujira 0:1977c2310ef7 1993 case 10:
Kujira 0:1977c2310ef7 1994 if(*sdata <= ( 2550 - inc )) {
Kujira 0:1977c2310ef7 1995 *sdata = *sdata + inc;
Kujira 0:1977c2310ef7 1996 }
Kujira 0:1977c2310ef7 1997 break;
Kujira 0:1977c2310ef7 1998
Kujira 0:1977c2310ef7 1999 //ver1.2.2
Kujira 0:1977c2310ef7 2000 case 6://up_limit_o.c.p
Kujira 0:1977c2310ef7 2001 if(*sdata <= ( 2500 - inc / 10 )) {
Kujira 0:1977c2310ef7 2002 *sdata = *sdata + inc /10 ;
Kujira 0:1977c2310ef7 2003 }
Kujira 0:1977c2310ef7 2004 break;//switch ( param )
Kujira 0:1977c2310ef7 2005 //ver1.2.1 up to here
Kujira 0:1977c2310ef7 2006
Kujira 0:1977c2310ef7 2007 }//switch ( param ){
Kujira 0:1977c2310ef7 2008 }
Kujira 0:1977c2310ef7 2009
Kujira 0:1977c2310ef7 2010 void decrease_param(char para, signed short *sdata, short dec)
Kujira 0:1977c2310ef7 2011 {
Kujira 0:1977c2310ef7 2012 switch ( para ) { //パラメータの項目によって上限値異なる
Kujira 0:1977c2310ef7 2013 case 0://vss_iop
Kujira 0:1977c2310ef7 2014 case 1://vss_ocp
Kujira 0:1977c2310ef7 2015 case 2://vss_voc
Kujira 0:1977c2310ef7 2016 case 3://low_limit_voc
Kujira 0:1977c2310ef7 2017
Kujira 0:1977c2310ef7 2018 if(*sdata >= dec ) {
Kujira 0:1977c2310ef7 2019 *sdata = *sdata - dec;
Kujira 0:1977c2310ef7 2020 }
Kujira 0:1977c2310ef7 2021 break;
Kujira 0:1977c2310ef7 2022
Kujira 0:1977c2310ef7 2023 case 4://low_limit_iop
Kujira 0:1977c2310ef7 2024
Kujira 0:1977c2310ef7 2025 if(*sdata >= dec / 10 ) {
Kujira 0:1977c2310ef7 2026 *sdata = *sdata - dec / 10;
Kujira 0:1977c2310ef7 2027 }
Kujira 0:1977c2310ef7 2028 break;
Kujira 0:1977c2310ef7 2029
Kujira 0:1977c2310ef7 2030 case 5://low_limit_o.c.p
Kujira 0:1977c2310ef7 2031
Kujira 0:1977c2310ef7 2032 if(*sdata >= -2500 + dec / 10 ) {
Kujira 0:1977c2310ef7 2033 *sdata = *sdata - dec / 10;
Kujira 0:1977c2310ef7 2034 }
Kujira 0:1977c2310ef7 2035 break;
Kujira 0:1977c2310ef7 2036
Kujira 0:1977c2310ef7 2037 case 7://wait_iop
Kujira 0:1977c2310ef7 2038 case 8://wait_ocp
Kujira 0:1977c2310ef7 2039
Kujira 0:1977c2310ef7 2040 if(*sdata >= dec / 10 ) {
Kujira 0:1977c2310ef7 2041 *sdata = *sdata - dec / 10 ;
Kujira 0:1977c2310ef7 2042 }
Kujira 0:1977c2310ef7 2043 break;//switch ( param )
Kujira 0:1977c2310ef7 2044
Kujira 0:1977c2310ef7 2045 case 9:
Kujira 0:1977c2310ef7 2046 case 10:
Kujira 0:1977c2310ef7 2047 if(*sdata >= dec ) {
Kujira 0:1977c2310ef7 2048 *sdata = *sdata - dec;
Kujira 0:1977c2310ef7 2049 }
Kujira 0:1977c2310ef7 2050 break;
Kujira 0:1977c2310ef7 2051
Kujira 0:1977c2310ef7 2052 //ver1.2.1
Kujira 0:1977c2310ef7 2053 case 6://up_limit_o.c.p
Kujira 0:1977c2310ef7 2054
Kujira 0:1977c2310ef7 2055 if(*sdata >= -2500 + dec / 10 ) {
Kujira 0:1977c2310ef7 2056 *sdata = *sdata - dec / 10;
Kujira 0:1977c2310ef7 2057 }
Kujira 0:1977c2310ef7 2058 break;
Kujira 0:1977c2310ef7 2059 //ver1.2.1 ここまで
Kujira 0:1977c2310ef7 2060
Kujira 0:1977c2310ef7 2061 }//switch ( param ){
Kujira 0:1977c2310ef7 2062 }
Kujira 0:1977c2310ef7 2063 /*********************************
Kujira 0:1977c2310ef7 2064
Kujira 0:1977c2310ef7 2065 CAL情報登録画面 MAIN
Kujira 0:1977c2310ef7 2066 別途システム設計図,EEPROMのシートを参照
Kujira 0:1977c2310ef7 2067 param:
Kujira 0:1977c2310ef7 2068 0:vss_iop
Kujira 0:1977c2310ef7 2069 1:vss_ocp
Kujira 0:1977c2310ef7 2070 2:vss_voc
Kujira 0:1977c2310ef7 2071 3:low_limit_voc
Kujira 0:1977c2310ef7 2072 4:low_limit_iop
Kujira 0:1977c2310ef7 2073 5:low_limit_ocp
Kujira 0:1977c2310ef7 2074 6:up_limit_ocp ver1.2.2
Kujira 0:1977c2310ef7 2075 7:wait_iop
Kujira 0:1977c2310ef7 2076 8:wait_ocp
Kujira 0:1977c2310ef7 2077 9:LowLimitResistor
Kujira 0:1977c2310ef7 2078 10:UPLimitResistor
Kujira 0:1977c2310ef7 2079
Kujira 0:1977c2310ef7 2080 *********************************/
Kujira 0:1977c2310ef7 2081 void setup_cal_information(char cal_num) //xは登録ナンバー=EEPROMのPAGEナンバーex)登録No.1→BLOCK0x00 PAGE0x00
Kujira 0:1977c2310ef7 2082 {
Kujira 0:1977c2310ef7 2083 char param; //設定するパラメータの選択 0~9まで ver1.2.1 0~10まで
Kujira 0:1977c2310ef7 2084 char crdata[3];
Kujira 0:1977c2310ef7 2085 signed short sdata_cal[16]; //CAL設定条件
Kujira 0:1977c2310ef7 2086 signed short hyouji_data;
Kujira 0:1977c2310ef7 2087 int param_sum; //設定するパラメータの数 ver1.2.1
Kujira 0:1977c2310ef7 2088 //int i;
Kujira 0:1977c2310ef7 2089 //short sdata_byte[16]; //EEPROM BYTEごとのDATA 1byte
Kujira 0:1977c2310ef7 2090 //char cmd_gu[32]; //gu-DへのI2Cコマンド用配列 1byte0
Kujira 0:1977c2310ef7 2091 //char adrs_cal; //EEPROM CAL情報を保存しているアドレス 0x90~
Kujira 0:1977c2310ef7 2092
Kujira 0:1977c2310ef7 2093 param_sum = 11; //ver1.2.1
Kujira 0:1977c2310ef7 2094
Kujira 0:1977c2310ef7 2095 //画面表示
Kujira 0:1977c2310ef7 2096 gu_cls();//画面のクリア
Kujira 0:1977c2310ef7 2097 gu_fontsize(2);
Kujira 0:1977c2310ef7 2098 gu_print1("Setup Cal No.");
Kujira 0:1977c2310ef7 2099 wdata[0] = ( cal_num % 10 ) + 0x30;//CALナンバーの表示
Kujira 0:1977c2310ef7 2100 i2c.write(addr_gu, wdata, 1);
Kujira 0:1977c2310ef7 2101
Kujira 0:1977c2310ef7 2102 //CAL情報読込
Kujira 0:1977c2310ef7 2103 read_caliber(&calinfo,cal_num);
Kujira 0:1977c2310ef7 2104
Kujira 0:1977c2310ef7 2105 sdata_cal[0] = calinfo.vss_iop;
Kujira 0:1977c2310ef7 2106 sdata_cal[1] = calinfo.vss_ocp;
Kujira 0:1977c2310ef7 2107 sdata_cal[2] = calinfo.vss_voc;
Kujira 0:1977c2310ef7 2108 sdata_cal[3] = calinfo.low_limit_voc;
Kujira 0:1977c2310ef7 2109 sdata_cal[4] = calinfo.low_limit_iop;
Kujira 0:1977c2310ef7 2110 sdata_cal[5] = calinfo.low_limit_ocp;
Kujira 0:1977c2310ef7 2111 //ver1.2.2
Kujira 0:1977c2310ef7 2112 sdata_cal[6] = calinfo.up_limit_ocp;
Kujira 0:1977c2310ef7 2113 sdata_cal[7] = calinfo.wait_iop;
Kujira 0:1977c2310ef7 2114 sdata_cal[8] = calinfo.wait_ocp;
Kujira 0:1977c2310ef7 2115 sdata_cal[9] = calinfo.low_limit_resistor;
Kujira 0:1977c2310ef7 2116 sdata_cal[10] = calinfo.up_limit_resistor;
Kujira 0:1977c2310ef7 2117 /*
Kujira 0:1977c2310ef7 2118 sdata_cal[6] = calinfo.wait_iop;
Kujira 0:1977c2310ef7 2119 sdata_cal[7] = calinfo.wait_ocp;
Kujira 0:1977c2310ef7 2120 sdata_cal[8] = calinfo.low_limit_resistor;
Kujira 0:1977c2310ef7 2121 sdata_cal[9] = calinfo.up_limit_resistor;
Kujira 0:1977c2310ef7 2122 */
Kujira 0:1977c2310ef7 2123 //ver1.2.2 up to here
Kujira 0:1977c2310ef7 2124
Kujira 0:1977c2310ef7 2125 //ボタンの配置
Kujira 0:1977c2310ef7 2126 gu_set_button_font1(8,"reg");
Kujira 0:1977c2310ef7 2127 gu_button_up(17);
Kujira 0:1977c2310ef7 2128 gu_button_down(25);
Kujira 0:1977c2310ef7 2129
Kujira 0:1977c2310ef7 2130 gu_button_up(20);
Kujira 0:1977c2310ef7 2131 gu_button_up(22);
Kujira 0:1977c2310ef7 2132 gu_button_up(24);
Kujira 0:1977c2310ef7 2133 gu_button_down(28);
Kujira 0:1977c2310ef7 2134 gu_button_down(30);
Kujira 0:1977c2310ef7 2135 gu_button_down(32);
Kujira 0:1977c2310ef7 2136
Kujira 0:1977c2310ef7 2137 /*
Kujira 0:1977c2310ef7 2138 gu_button_up(21);
Kujira 0:1977c2310ef7 2139 gu_button_up(22);
Kujira 0:1977c2310ef7 2140 gu_button_up(23);
Kujira 0:1977c2310ef7 2141 gu_button_down(29);
Kujira 0:1977c2310ef7 2142 gu_button_down(30);
Kujira 0:1977c2310ef7 2143 gu_button_down(31);
Kujira 0:1977c2310ef7 2144 */
Kujira 0:1977c2310ef7 2145
Kujira 0:1977c2310ef7 2146 //初期表示はVss_Iop
Kujira 0:1977c2310ef7 2147 param = 0;
Kujira 0:1977c2310ef7 2148 gu_cursor(0,4);
Kujira 0:1977c2310ef7 2149 gu_fontsize(2);
Kujira 0:1977c2310ef7 2150 gu_print1("Vss(Iop)");
Kujira 0:1977c2310ef7 2151 gu_cursor(208,4);
Kujira 0:1977c2310ef7 2152 gu_print1("V");
Kujira 0:1977c2310ef7 2153
Kujira 0:1977c2310ef7 2154 while(1) {
Kujira 0:1977c2310ef7 2155 i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 2156
Kujira 0:1977c2310ef7 2157 if (crdata[0] == 0x11 && crdata[2] == 0x01 ) { //個別タッチスイッチ状態読み出しフォーマット。識別子11h。&& タッチしたならば
Kujira 0:1977c2310ef7 2158 //cswnum = crdata[1]; //スイッチ番号
Kujira 0:1977c2310ef7 2159 //cswdata = crdata[2];//ON/OFF情報
Kujira 0:1977c2310ef7 2160
Kujira 0:1977c2310ef7 2161 switch( crdata[1] ) { //SWの番号(位置)
Kujira 0:1977c2310ef7 2162
Kujira 0:1977c2310ef7 2163 /* ver1.2.1
Kujira 0:1977c2310ef7 2164 case 0x10 ://sw17 パラメータ変更スイッチ(上)
Kujira 0:1977c2310ef7 2165
Kujira 0:1977c2310ef7 2166 if ( param <= 8 ) {
Kujira 0:1977c2310ef7 2167 param = param + 1;
Kujira 0:1977c2310ef7 2168 } else {
Kujira 0:1977c2310ef7 2169 param = 0;
Kujira 0:1977c2310ef7 2170 }
Kujira 0:1977c2310ef7 2171
Kujira 0:1977c2310ef7 2172 hyouji_cal_param(param);//設定パラメータ表示
Kujira 0:1977c2310ef7 2173 break;
Kujira 0:1977c2310ef7 2174
Kujira 0:1977c2310ef7 2175 case 0x18 ://sw25 パラメータ変更スイッチ(下)
Kujira 0:1977c2310ef7 2176
Kujira 0:1977c2310ef7 2177 if ( param >= 1 ) {
Kujira 0:1977c2310ef7 2178 param = param - 1;
Kujira 0:1977c2310ef7 2179 } else {
Kujira 0:1977c2310ef7 2180 param = 9;
Kujira 0:1977c2310ef7 2181 }
Kujira 0:1977c2310ef7 2182
Kujira 0:1977c2310ef7 2183 hyouji_cal_param(param);//設定パラメータ表示
Kujira 0:1977c2310ef7 2184 break;
Kujira 0:1977c2310ef7 2185 */
Kujira 0:1977c2310ef7 2186
Kujira 0:1977c2310ef7 2187 case 0x10 ://sw17 パラメータ変更スイッチ(上)
Kujira 0:1977c2310ef7 2188
Kujira 0:1977c2310ef7 2189 if ( param <= param_sum -2 ) {
Kujira 0:1977c2310ef7 2190 param = param + 1;
Kujira 0:1977c2310ef7 2191 } else {
Kujira 0:1977c2310ef7 2192 param = 0;
Kujira 0:1977c2310ef7 2193 }
Kujira 0:1977c2310ef7 2194
Kujira 0:1977c2310ef7 2195 hyouji_cal_param(param);//設定パラメータ表示
Kujira 0:1977c2310ef7 2196 break;
Kujira 0:1977c2310ef7 2197
Kujira 0:1977c2310ef7 2198 case 0x18 ://sw25 パラメータ変更スイッチ(下)
Kujira 0:1977c2310ef7 2199
Kujira 0:1977c2310ef7 2200 if ( param >= 1 ) {
Kujira 0:1977c2310ef7 2201 param = param - 1;
Kujira 0:1977c2310ef7 2202 } else {
Kujira 0:1977c2310ef7 2203 param = param_sum - 1;
Kujira 0:1977c2310ef7 2204 }
Kujira 0:1977c2310ef7 2205
Kujira 0:1977c2310ef7 2206 hyouji_cal_param(param);//設定パラメータ表示
Kujira 0:1977c2310ef7 2207 break;
Kujira 0:1977c2310ef7 2208
Kujira 0:1977c2310ef7 2209 //ver1.2.1 up to here
Kujira 0:1977c2310ef7 2210
Kujira 0:1977c2310ef7 2211 case 19 ://SW20 increase 0x3E8
Kujira 0:1977c2310ef7 2212
Kujira 0:1977c2310ef7 2213 increase_param(param, &sdata_cal[param], 1000);
Kujira 0:1977c2310ef7 2214 break;
Kujira 0:1977c2310ef7 2215
Kujira 0:1977c2310ef7 2216 case 27 ://SW28 decrease 0x3E8
Kujira 0:1977c2310ef7 2217
Kujira 0:1977c2310ef7 2218 decrease_param(param, &sdata_cal[param], 1000);
Kujira 0:1977c2310ef7 2219 break;
Kujira 0:1977c2310ef7 2220
Kujira 0:1977c2310ef7 2221 case 0x15 ://SW22 increase 0x64
Kujira 0:1977c2310ef7 2222
Kujira 0:1977c2310ef7 2223 increase_param(param, &sdata_cal[param], 100);
Kujira 0:1977c2310ef7 2224 break;
Kujira 0:1977c2310ef7 2225
Kujira 0:1977c2310ef7 2226 case 0x1D ://SW30 decrease 0x64
Kujira 0:1977c2310ef7 2227
Kujira 0:1977c2310ef7 2228 decrease_param(param, &sdata_cal[param], 100);
Kujira 0:1977c2310ef7 2229 break;
Kujira 0:1977c2310ef7 2230
Kujira 0:1977c2310ef7 2231 case 23 ://SW24 increase 0x0A
Kujira 0:1977c2310ef7 2232
Kujira 0:1977c2310ef7 2233 increase_param(param, &sdata_cal[param], 10);
Kujira 0:1977c2310ef7 2234 break;
Kujira 0:1977c2310ef7 2235
Kujira 0:1977c2310ef7 2236 case 31 ://SW32 decrease 0x0A
Kujira 0:1977c2310ef7 2237
Kujira 0:1977c2310ef7 2238 decrease_param(param, &sdata_cal[param], 10);
Kujira 0:1977c2310ef7 2239 break;
Kujira 0:1977c2310ef7 2240
Kujira 0:1977c2310ef7 2241
Kujira 0:1977c2310ef7 2242 case 0x07 ://保存ボタン
Kujira 0:1977c2310ef7 2243
Kujira 0:1977c2310ef7 2244 calinfo.vss_iop = sdata_cal[0];
Kujira 0:1977c2310ef7 2245 calinfo.vss_ocp = sdata_cal[1];
Kujira 0:1977c2310ef7 2246 calinfo.vss_voc = sdata_cal[2];
Kujira 0:1977c2310ef7 2247 calinfo.low_limit_voc = sdata_cal[3];
Kujira 0:1977c2310ef7 2248 calinfo.low_limit_iop = sdata_cal[4];
Kujira 0:1977c2310ef7 2249 calinfo.low_limit_ocp = sdata_cal[5];
Kujira 0:1977c2310ef7 2250 //ver1.2.2
Kujira 0:1977c2310ef7 2251 calinfo.up_limit_ocp = sdata_cal[6];
Kujira 0:1977c2310ef7 2252 calinfo.wait_iop = sdata_cal[7];
Kujira 0:1977c2310ef7 2253 calinfo.wait_ocp = sdata_cal[8];
Kujira 0:1977c2310ef7 2254 calinfo.low_limit_resistor = sdata_cal[9];
Kujira 0:1977c2310ef7 2255 calinfo.up_limit_resistor = sdata_cal[10];
Kujira 0:1977c2310ef7 2256 /*
Kujira 0:1977c2310ef7 2257 calinfo.wait_iop = sdata_cal[6];
Kujira 0:1977c2310ef7 2258 calinfo.wait_ocp = sdata_cal[7];
Kujira 0:1977c2310ef7 2259 calinfo.low_limit_resistor = sdata_cal[8];
Kujira 0:1977c2310ef7 2260 calinfo.up_limit_resistor = sdata_cal[9];
Kujira 0:1977c2310ef7 2261 */
Kujira 0:1977c2310ef7 2262 //ver1.2.2 up to here
Kujira 0:1977c2310ef7 2263
Kujira 0:1977c2310ef7 2264 reg_num = cal_num;
Kujira 0:1977c2310ef7 2265
Kujira 0:1977c2310ef7 2266 //CALNO.EEPROM書込み
Kujira 0:1977c2310ef7 2267 wdata[0] = addr_calnum; //word address 書込み先頭アドレス指定
Kujira 0:1977c2310ef7 2268 wdata[1] = reg_num;
Kujira 0:1977c2310ef7 2269 Soushin = i2c.write (fixed_adrs, wdata, 2);
Kujira 0:1977c2310ef7 2270
Kujira 0:1977c2310ef7 2271 wait(0.2);
Kujira 0:1977c2310ef7 2272
Kujira 0:1977c2310ef7 2273 //CAL情報
Kujira 0:1977c2310ef7 2274 //送信完了ならば実行
Kujira 0:1977c2310ef7 2275 if(Soushin == 0) {
Kujira 0:1977c2310ef7 2276
Kujira 0:1977c2310ef7 2277 write_caliber_information(&calinfo, cal_num);
Kujira 0:1977c2310ef7 2278
Kujira 0:1977c2310ef7 2279 //ver1.2.3
Kujira 0:1977c2310ef7 2280 } else {
Kujira 0:1977c2310ef7 2281 gu_fontsize(1);
Kujira 0:1977c2310ef7 2282 gu_cursor(0,2);
Kujira 0:1977c2310ef7 2283 gu_print1("can not save cal no");
Kujira 0:1977c2310ef7 2284 wait(2);
Kujira 0:1977c2310ef7 2285 return;
Kujira 0:1977c2310ef7 2286 }
Kujira 0:1977c2310ef7 2287
Kujira 0:1977c2310ef7 2288 //送信完了ならば実行
Kujira 0:1977c2310ef7 2289 if(Soushin == 0) {
Kujira 0:1977c2310ef7 2290 gu_reverse(1);
Kujira 0:1977c2310ef7 2291 gu_set_button_font1(8,"reg");
Kujira 0:1977c2310ef7 2292 wait(0.2);
Kujira 0:1977c2310ef7 2293 return;//CAL情報登録画面を抜ける
Kujira 0:1977c2310ef7 2294
Kujira 0:1977c2310ef7 2295 //ver1.2.3
Kujira 0:1977c2310ef7 2296 } else {
Kujira 0:1977c2310ef7 2297 gu_fontsize(1);
Kujira 0:1977c2310ef7 2298 gu_cursor(0,2);
Kujira 0:1977c2310ef7 2299 gu_print1("can not save cal information");
Kujira 0:1977c2310ef7 2300 wait(2);
Kujira 0:1977c2310ef7 2301 return;
Kujira 0:1977c2310ef7 2302 }
Kujira 0:1977c2310ef7 2303
Kujira 0:1977c2310ef7 2304 //break;
Kujira 0:1977c2310ef7 2305
Kujira 0:1977c2310ef7 2306 } //switch
Kujira 0:1977c2310ef7 2307 } //if
Kujira 0:1977c2310ef7 2308 //gu-D表示
Kujira 0:1977c2310ef7 2309 gu_cursor(150,4);
Kujira 0:1977c2310ef7 2310
Kujira 0:1977c2310ef7 2311 switch ( param ) {
Kujira 0:1977c2310ef7 2312 case 0://vss_iop
Kujira 0:1977c2310ef7 2313 case 1://vss_ocp
Kujira 0:1977c2310ef7 2314 case 2://vss_voc
Kujira 0:1977c2310ef7 2315 case 3://low_limit_voc
Kujira 0:1977c2310ef7 2316 hyouji_data = sdata_cal[param] * -1;
Kujira 0:1977c2310ef7 2317 gu_putdeck ( &hyouji_data );
Kujira 0:1977c2310ef7 2318 break;
Kujira 0:1977c2310ef7 2319 case 4:
Kujira 0:1977c2310ef7 2320 case 5:
Kujira 0:1977c2310ef7 2321 hyouji_data = sdata_cal[param] * 10;
Kujira 0:1977c2310ef7 2322 gu_putdeck ( &hyouji_data );
Kujira 0:1977c2310ef7 2323 break;
Kujira 0:1977c2310ef7 2324 //ver1.2.2
Kujira 0:1977c2310ef7 2325 case 6:
Kujira 0:1977c2310ef7 2326 hyouji_data = sdata_cal[param] * 10;
Kujira 0:1977c2310ef7 2327 gu_putdeck ( &hyouji_data );
Kujira 0:1977c2310ef7 2328 break;
Kujira 0:1977c2310ef7 2329 case 7:
Kujira 0:1977c2310ef7 2330 case 8:
Kujira 0:1977c2310ef7 2331 //ver1.1.0
Kujira 0:1977c2310ef7 2332 hyouji_data = sdata_cal[param];
Kujira 0:1977c2310ef7 2333 gu_putdec ( &hyouji_data );
Kujira 0:1977c2310ef7 2334 break;
Kujira 0:1977c2310ef7 2335 case 9://low_limit_resistor
Kujira 0:1977c2310ef7 2336 case 10://up_limit_resistor
Kujira 0:1977c2310ef7 2337 hyouji_data = sdata_cal[param];
Kujira 0:1977c2310ef7 2338 gu_putdec ( &hyouji_data );
Kujira 0:1977c2310ef7 2339 break;
Kujira 0:1977c2310ef7 2340 /*
Kujira 0:1977c2310ef7 2341 case 6:
Kujira 0:1977c2310ef7 2342 case 7:
Kujira 0:1977c2310ef7 2343 //ver1.1.0
Kujira 0:1977c2310ef7 2344 hyouji_data = sdata_cal[param];
Kujira 0:1977c2310ef7 2345 gu_putdec ( &hyouji_data );
Kujira 0:1977c2310ef7 2346 break;
Kujira 0:1977c2310ef7 2347 case 8://low_limit_resistor
Kujira 0:1977c2310ef7 2348 case 9://up_limit_resistor
Kujira 0:1977c2310ef7 2349 hyouji_data = sdata_cal[param];
Kujira 0:1977c2310ef7 2350 gu_putdec ( &hyouji_data );
Kujira 0:1977c2310ef7 2351 break;
Kujira 0:1977c2310ef7 2352 */
Kujira 0:1977c2310ef7 2353 //ver1.2.2 uptohere
Kujira 0:1977c2310ef7 2354
Kujira 0:1977c2310ef7 2355 }
Kujira 0:1977c2310ef7 2356 wait(0.1);//gu-D 読込間隔の設定
Kujira 0:1977c2310ef7 2357 }//while
Kujira 0:1977c2310ef7 2358 }
Kujira 0:1977c2310ef7 2359
Kujira 0:1977c2310ef7 2360 /*********************************
Kujira 0:1977c2310ef7 2361
Kujira 0:1977c2310ef7 2362 Auto Mode (sub)
Kujira 0:1977c2310ef7 2363 自動測定モード 初期画面
Kujira 0:1977c2310ef7 2364
Kujira 0:1977c2310ef7 2365 *********************************/
Kujira 0:1977c2310ef7 2366 void auto_int_hyouji()
Kujira 0:1977c2310ef7 2367 {
Kujira 0:1977c2310ef7 2368 //short st;
Kujira 0:1977c2310ef7 2369 char cmd_gu[32] ; //gu-DへのI2Cコマンド用配列 1byte
Kujira 0:1977c2310ef7 2370
Kujira 0:1977c2310ef7 2371 gu_cls();
Kujira 0:1977c2310ef7 2372 gu_fontsize(1);
Kujira 0:1977c2310ef7 2373 gu_print1("AUTO MODE CAL No.");
Kujira 0:1977c2310ef7 2374 cmd_gu[0] = reg_num + 0x30;
Kujira 0:1977c2310ef7 2375 i2c.write(addr_gu, cmd_gu, 1);
Kujira 0:1977c2310ef7 2376 gu_Button_power_on();//show button
Kujira 0:1977c2310ef7 2377
Kujira 0:1977c2310ef7 2378 }
Kujira 0:1977c2310ef7 2379 /*******************************************************
Kujira 0:1977c2310ef7 2380
Kujira 0:1977c2310ef7 2381 Auto Mode (Main)
Kujira 0:1977c2310ef7 2382 自動測定モード 画面
Kujira 0:1977c2310ef7 2383 ver1.04 パネルタッチ -> スタートスイッチで測定開始へ変更
Kujira 0:1977c2310ef7 2384
Kujira 0:1977c2310ef7 2385 *******************************************************/
Kujira 0:1977c2310ef7 2386 void auto_run()
Kujira 0:1977c2310ef7 2387 {
Kujira 0:1977c2310ef7 2388 char cmd_gu[32] ; //gu-DへのI2Cコマンド用配列 1byte
Kujira 0:1977c2310ef7 2389 char crdata[6];
Kujira 0:1977c2310ef7 2390 //char cswnum; //SW_No. sw1->0x00 ~~ sw32->0x1F
Kujira 0:1977c2310ef7 2391 //int i;
Kujira 0:1977c2310ef7 2392 //float fdata[4][4];//ファイル出力用
Kujira 0:1977c2310ef7 2393 //short sdata[4];
Kujira 0:1977c2310ef7 2394 //short s;
Kujira 0:1977c2310ef7 2395
Kujira 0:1977c2310ef7 2396 read_regnum();//CAL登録No.読込
Kujira 0:1977c2310ef7 2397 read_caliber(&calinfo,reg_num);//指定したCAL登録No.の情報を読込後、calinfoへ代入
Kujira 0:1977c2310ef7 2398
Kujira 0:1977c2310ef7 2399 auto_int_hyouji();
Kujira 0:1977c2310ef7 2400
Kujira 0:1977c2310ef7 2401 //dac_init(); //DAC 初期化
Kujira 0:1977c2310ef7 2402
Kujira 0:1977c2310ef7 2403 //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2404 cmd_gu[0]= 0x1F;
Kujira 0:1977c2310ef7 2405 cmd_gu[1]= 0x4B;
Kujira 0:1977c2310ef7 2406 cmd_gu[2]= 0x18;
Kujira 0:1977c2310ef7 2407 cmd_gu[3]= 0x02;//SW状態変化時自動送信モード2
Kujira 0:1977c2310ef7 2408 i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2409
Kujira 0:1977c2310ef7 2410 wait(0.1);
Kujira 0:1977c2310ef7 2411
Kujira 0:1977c2310ef7 2412 Jyushin = i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 2413
Kujira 0:1977c2310ef7 2414 while(1) {
Kujira 0:1977c2310ef7 2415
Kujira 0:1977c2310ef7 2416 //スタートスイッチで測定開始
Kujira 0:1977c2310ef7 2417 if ( sw_start == 0 ) {
Kujira 0:1977c2310ef7 2418 meas_sub();
Kujira 0:1977c2310ef7 2419 }
Kujira 0:1977c2310ef7 2420
Kujira 0:1977c2310ef7 2421 wait(0.1);
Kujira 0:1977c2310ef7 2422
Kujira 0:1977c2310ef7 2423 crdata[0] = 0;
Kujira 0:1977c2310ef7 2424 crdata[1] = 0;
Kujira 0:1977c2310ef7 2425 crdata[2] = 0;
Kujira 0:1977c2310ef7 2426
Kujira 0:1977c2310ef7 2427 i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 2428
Kujira 0:1977c2310ef7 2429 if ( crdata[0] == 0x11 && crdata[2] == 1 ) { //個別タッチスイッチ状態読み出しフォーマット。識別子11h。
Kujira 0:1977c2310ef7 2430
Kujira 0:1977c2310ef7 2431 //cswnum = crdata[1]; //スイッチ番号
Kujira 0:1977c2310ef7 2432 //cswdata = crdata[2];//ON/OFF情報
Kujira 0:1977c2310ef7 2433
Kujira 0:1977c2310ef7 2434 //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2435 cmd_gu[0]= 0x1F;
Kujira 0:1977c2310ef7 2436 cmd_gu[1]= 0x4B;
Kujira 0:1977c2310ef7 2437 cmd_gu[2]= 0x18;
Kujira 0:1977c2310ef7 2438 cmd_gu[3]= 0x00;//SW状態変化時自動送信モード2解除
Kujira 0:1977c2310ef7 2439 i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2440
Kujira 0:1977c2310ef7 2441 if ( crdata[1] == 7 ) {
Kujira 0:1977c2310ef7 2442
Kujira 0:1977c2310ef7 2443 gu_Button_power_off();//電源ボタンイメージ反転表示
Kujira 0:1977c2310ef7 2444 wait(0.5);
Kujira 0:1977c2310ef7 2445
Kujira 0:1977c2310ef7 2446 led_off();//LED全消灯
Kujira 0:1977c2310ef7 2447
Kujira 0:1977c2310ef7 2448 return;//この関数を抜ける
Kujira 0:1977c2310ef7 2449
Kujira 0:1977c2310ef7 2450 } //end if
Kujira 0:1977c2310ef7 2451
Kujira 0:1977c2310ef7 2452 /* ver 1.1.1 タッチパネルで測定開始を削除
Kujira 0:1977c2310ef7 2453 else {
Kujira 0:1977c2310ef7 2454
Kujira 0:1977c2310ef7 2455 meas_sub();//測定用サブ
Kujira 0:1977c2310ef7 2456
Kujira 0:1977c2310ef7 2457
Kujira 0:1977c2310ef7 2458 } //else if
Kujira 0:1977c2310ef7 2459 */
Kujira 0:1977c2310ef7 2460
Kujira 0:1977c2310ef7 2461 //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2462 cmd_gu[0]= 0x1F;
Kujira 0:1977c2310ef7 2463 cmd_gu[1]= 0x4B;
Kujira 0:1977c2310ef7 2464 cmd_gu[2]= 0x18;
Kujira 0:1977c2310ef7 2465 cmd_gu[3]= 0x02;//SW状態変化時自動送信モード2解除
Kujira 0:1977c2310ef7 2466 i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2467
Kujira 0:1977c2310ef7 2468 wait(0.1);
Kujira 0:1977c2310ef7 2469
Kujira 0:1977c2310ef7 2470 i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 2471
Kujira 0:1977c2310ef7 2472 }//if
Kujira 0:1977c2310ef7 2473 wait(0.1);
Kujira 0:1977c2310ef7 2474 }//While
Kujira 0:1977c2310ef7 2475 }
Kujira 0:1977c2310ef7 2476
Kujira 0:1977c2310ef7 2477 /*
Kujira 0:1977c2310ef7 2478 char cmd_gu[32] ; //gu-DへのI2Cコマンド用配列 1byte
Kujira 0:1977c2310ef7 2479 char crdata[6];
Kujira 0:1977c2310ef7 2480 char cswnum; //SW_No. sw1->0x00 ~~ sw32->0x1F
Kujira 0:1977c2310ef7 2481 //int i;
Kujira 0:1977c2310ef7 2482 //float fdata[4][4];//ファイル出力用
Kujira 0:1977c2310ef7 2483 //short sdata[4];
Kujira 0:1977c2310ef7 2484 //short s;
Kujira 0:1977c2310ef7 2485
Kujira 0:1977c2310ef7 2486 read_regnum();//CAL登録No.読込
Kujira 0:1977c2310ef7 2487 read_caliber(&calinfo,reg_num);//指定したCAL登録No.の情報を読込後、calinfoへ代入
Kujira 0:1977c2310ef7 2488
Kujira 0:1977c2310ef7 2489 auto_int_hyouji();
Kujira 0:1977c2310ef7 2490
Kujira 0:1977c2310ef7 2491 //dac_init(); //DAC 初期化
Kujira 0:1977c2310ef7 2492
Kujira 0:1977c2310ef7 2493 //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2494 cmd_gu[0]= 0x1F;
Kujira 0:1977c2310ef7 2495 cmd_gu[1]= 0x4B;
Kujira 0:1977c2310ef7 2496 cmd_gu[2]= 0x18;
Kujira 0:1977c2310ef7 2497 cmd_gu[3]= 0x02;//SW状態変化時自動送信モード2
Kujira 0:1977c2310ef7 2498 i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2499
Kujira 0:1977c2310ef7 2500 wait(0.1);
Kujira 0:1977c2310ef7 2501
Kujira 0:1977c2310ef7 2502 Jyushin = i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 2503
Kujira 0:1977c2310ef7 2504 while(1) {
Kujira 0:1977c2310ef7 2505
Kujira 0:1977c2310ef7 2506 wait(0.1);
Kujira 0:1977c2310ef7 2507
Kujira 0:1977c2310ef7 2508 crdata[0] = 0;
Kujira 0:1977c2310ef7 2509 crdata[1] = 0;
Kujira 0:1977c2310ef7 2510 crdata[2] = 0;
Kujira 0:1977c2310ef7 2511
Kujira 0:1977c2310ef7 2512 i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 2513
Kujira 0:1977c2310ef7 2514 if ( crdata[0] == 0x11 && crdata[2] == 1 ) { //個別タッチスイッチ状態読み出しフォーマット。識別子11h。
Kujira 0:1977c2310ef7 2515 cswnum = crdata[1]; //スイッチ番号
Kujira 0:1977c2310ef7 2516 //cswdata = crdata[2];//ON/OFF情報
Kujira 0:1977c2310ef7 2517
Kujira 0:1977c2310ef7 2518 //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2519 cmd_gu[0]= 0x1F;
Kujira 0:1977c2310ef7 2520 cmd_gu[1]= 0x4B;
Kujira 0:1977c2310ef7 2521 cmd_gu[2]= 0x18;
Kujira 0:1977c2310ef7 2522 cmd_gu[3]= 0x00;//SW状態変化時自動送信モード2解除
Kujira 0:1977c2310ef7 2523 i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2524
Kujira 0:1977c2310ef7 2525 //SWの番号(位置)
Kujira 0:1977c2310ef7 2526 if ( cswnum == 7 ) {
Kujira 0:1977c2310ef7 2527
Kujira 0:1977c2310ef7 2528 gu_Button_power_off();//電源ボタンイメージ反転表示
Kujira 0:1977c2310ef7 2529 wait(0.5);
Kujira 0:1977c2310ef7 2530
Kujira 0:1977c2310ef7 2531 led_off();//LED全消灯
Kujira 0:1977c2310ef7 2532
Kujira 0:1977c2310ef7 2533 return;//この関数を抜ける
Kujira 0:1977c2310ef7 2534
Kujira 0:1977c2310ef7 2535 }
Kujira 0:1977c2310ef7 2536
Kujira 0:1977c2310ef7 2537 //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2538 cmd_gu[0]= 0x1F;
Kujira 0:1977c2310ef7 2539 cmd_gu[1]= 0x4B;
Kujira 0:1977c2310ef7 2540 cmd_gu[2]= 0x18;
Kujira 0:1977c2310ef7 2541 cmd_gu[3]= 0x02;//SW状態変化時自動送信モード2解除
Kujira 0:1977c2310ef7 2542 i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2543
Kujira 0:1977c2310ef7 2544 wait(0.1);
Kujira 0:1977c2310ef7 2545
Kujira 0:1977c2310ef7 2546 i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 2547
Kujira 0:1977c2310ef7 2548 } else if ( sw_start == 0 ) { //if
Kujira 0:1977c2310ef7 2549
Kujira 0:1977c2310ef7 2550 auto_int_hyouji();
Kujira 0:1977c2310ef7 2551
Kujira 0:1977c2310ef7 2552 gu_cursor(0,2);
Kujira 0:1977c2310ef7 2553 gu_print1("Please Wait..");
Kujira 0:1977c2310ef7 2554 gu_fontsize(2);
Kujira 0:1977c2310ef7 2555
Kujira 0:1977c2310ef7 2556 read_regnum();//CAL登録No.読込
Kujira 0:1977c2310ef7 2557
Kujira 0:1977c2310ef7 2558 read_caliber(&calinfo,reg_num);//指定したCAL登録No.の情報を読込後、calinfoへ代入
Kujira 0:1977c2310ef7 2559
Kujira 0:1977c2310ef7 2560 auto_meas( number_of_channels );//2個測定
Kujira 0:1977c2310ef7 2561
Kujira 0:1977c2310ef7 2562 hantei( number_of_channels );//判定LED
Kujira 0:1977c2310ef7 2563
Kujira 0:1977c2310ef7 2564 wait(0.5);
Kujira 0:1977c2310ef7 2565
Kujira 0:1977c2310ef7 2566 gu_fontsize(1);
Kujira 0:1977c2310ef7 2567 gu_cursor(0,2);
Kujira 0:1977c2310ef7 2568 gu_print1("READY ");
Kujira 0:1977c2310ef7 2569
Kujira 0:1977c2310ef7 2570 }
Kujira 0:1977c2310ef7 2571 wait(0.1);
Kujira 0:1977c2310ef7 2572 }//While
Kujira 0:1977c2310ef7 2573 }
Kujira 0:1977c2310ef7 2574 */
Kujira 0:1977c2310ef7 2575
Kujira 0:1977c2310ef7 2576 /*
Kujira 0:1977c2310ef7 2577 void auto_run()
Kujira 0:1977c2310ef7 2578 {
Kujira 0:1977c2310ef7 2579 char cmd_gu[32] ; //gu-DへのI2Cコマンド用配列 1byte
Kujira 0:1977c2310ef7 2580 char crdata[6];
Kujira 0:1977c2310ef7 2581 char cswnum; //SW_No. sw1->0x00 ~~ sw32->0x1F
Kujira 0:1977c2310ef7 2582 //int i;
Kujira 0:1977c2310ef7 2583 //float fdata[4][4];//ファイル出力用
Kujira 0:1977c2310ef7 2584 //short sdata[4];
Kujira 0:1977c2310ef7 2585 //short s;
Kujira 0:1977c2310ef7 2586
Kujira 0:1977c2310ef7 2587 read_regnum();//CAL登録No.読込
Kujira 0:1977c2310ef7 2588 read_caliber(&calinfo,reg_num);//指定したCAL登録No.の情報を読込後、calinfoへ代入
Kujira 0:1977c2310ef7 2589
Kujira 0:1977c2310ef7 2590 auto_int_hyouji();
Kujira 0:1977c2310ef7 2591
Kujira 0:1977c2310ef7 2592 //dac_init(); //DAC 初期化
Kujira 0:1977c2310ef7 2593
Kujira 0:1977c2310ef7 2594 //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2595 cmd_gu[0]= 0x1F;
Kujira 0:1977c2310ef7 2596 cmd_gu[1]= 0x4B;
Kujira 0:1977c2310ef7 2597 cmd_gu[2]= 0x18;
Kujira 0:1977c2310ef7 2598 cmd_gu[3]= 0x02;//SW状態変化時自動送信モード2
Kujira 0:1977c2310ef7 2599 i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2600
Kujira 0:1977c2310ef7 2601 wait(0.1);
Kujira 0:1977c2310ef7 2602
Kujira 0:1977c2310ef7 2603 Jyushin = i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 2604
Kujira 0:1977c2310ef7 2605 while(1) {
Kujira 0:1977c2310ef7 2606
Kujira 0:1977c2310ef7 2607 wait(0.1);
Kujira 0:1977c2310ef7 2608
Kujira 0:1977c2310ef7 2609 crdata[0] = 0;
Kujira 0:1977c2310ef7 2610 crdata[1] = 0;
Kujira 0:1977c2310ef7 2611 crdata[2] = 0;
Kujira 0:1977c2310ef7 2612
Kujira 0:1977c2310ef7 2613 i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 2614
Kujira 0:1977c2310ef7 2615 if ( crdata[0] == 0x11 && crdata[2] == 1 ) { //個別タッチスイッチ状態読み出しフォーマット。識別子11h。
Kujira 0:1977c2310ef7 2616 cswnum = crdata[1]; //スイッチ番号
Kujira 0:1977c2310ef7 2617 //cswdata = crdata[2];//ON/OFF情報
Kujira 0:1977c2310ef7 2618
Kujira 0:1977c2310ef7 2619 //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2620 cmd_gu[0]= 0x1F;
Kujira 0:1977c2310ef7 2621 cmd_gu[1]= 0x4B;
Kujira 0:1977c2310ef7 2622 cmd_gu[2]= 0x18;
Kujira 0:1977c2310ef7 2623 cmd_gu[3]= 0x00;//SW状態変化時自動送信モード2解除
Kujira 0:1977c2310ef7 2624 i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2625
Kujira 0:1977c2310ef7 2626 //SWの番号(位置)
Kujira 0:1977c2310ef7 2627 if ( cswnum == 7 ) {
Kujira 0:1977c2310ef7 2628
Kujira 0:1977c2310ef7 2629 gu_Button_power_off();//電源ボタンイメージ反転表示
Kujira 0:1977c2310ef7 2630 wait(0.5);
Kujira 0:1977c2310ef7 2631
Kujira 0:1977c2310ef7 2632 led_off();//LED全消灯
Kujira 0:1977c2310ef7 2633
Kujira 0:1977c2310ef7 2634 return;//この関数を抜ける
Kujira 0:1977c2310ef7 2635
Kujira 0:1977c2310ef7 2636 } else {
Kujira 0:1977c2310ef7 2637
Kujira 0:1977c2310ef7 2638 auto_int_hyouji();
Kujira 0:1977c2310ef7 2639
Kujira 0:1977c2310ef7 2640 gu_cursor(0,2);
Kujira 0:1977c2310ef7 2641 gu_print1("Please Wait..");
Kujira 0:1977c2310ef7 2642 gu_fontsize(2);
Kujira 0:1977c2310ef7 2643
Kujira 0:1977c2310ef7 2644 read_regnum();//CAL登録No.読込
Kujira 0:1977c2310ef7 2645
Kujira 0:1977c2310ef7 2646 read_caliber(&calinfo,reg_num);//指定したCAL登録No.の情報を読込後、calinfoへ代入
Kujira 0:1977c2310ef7 2647
Kujira 0:1977c2310ef7 2648 auto_meas( number_of_channels );//2個測定
Kujira 0:1977c2310ef7 2649
Kujira 0:1977c2310ef7 2650 hantei( number_of_channels );//判定LED
Kujira 0:1977c2310ef7 2651
Kujira 0:1977c2310ef7 2652 wait(0.5);
Kujira 0:1977c2310ef7 2653
Kujira 0:1977c2310ef7 2654 gu_fontsize(1);
Kujira 0:1977c2310ef7 2655 gu_cursor(0,2);
Kujira 0:1977c2310ef7 2656 gu_print1("READY ");
Kujira 0:1977c2310ef7 2657
Kujira 0:1977c2310ef7 2658 } //else if
Kujira 0:1977c2310ef7 2659
Kujira 0:1977c2310ef7 2660 //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2661 cmd_gu[0]= 0x1F;
Kujira 0:1977c2310ef7 2662 cmd_gu[1]= 0x4B;
Kujira 0:1977c2310ef7 2663 cmd_gu[2]= 0x18;
Kujira 0:1977c2310ef7 2664 cmd_gu[3]= 0x02;//SW状態変化時自動送信モード2解除
Kujira 0:1977c2310ef7 2665 i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 2666
Kujira 0:1977c2310ef7 2667 wait(0.1);
Kujira 0:1977c2310ef7 2668
Kujira 0:1977c2310ef7 2669 i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 2670
Kujira 0:1977c2310ef7 2671 }//if
Kujira 0:1977c2310ef7 2672
Kujira 0:1977c2310ef7 2673 wait(0.1);
Kujira 0:1977c2310ef7 2674
Kujira 0:1977c2310ef7 2675 }//While
Kujira 0:1977c2310ef7 2676
Kujira 0:1977c2310ef7 2677 }
Kujira 0:1977c2310ef7 2678 */
Kujira 0:1977c2310ef7 2679
Kujira 0:1977c2310ef7 2680 /*********************************
Kujira 0:1977c2310ef7 2681
Kujira 0:1977c2310ef7 2682 Auto Mode (Sub)
Kujira 0:1977c2310ef7 2683
Kujira 0:1977c2310ef7 2684 *********************************/
Kujira 0:1977c2310ef7 2685 void meas_sub()
Kujira 0:1977c2310ef7 2686 {
Kujira 0:1977c2310ef7 2687 auto_int_hyouji();
Kujira 0:1977c2310ef7 2688
Kujira 0:1977c2310ef7 2689 gu_cursor(0,2);
Kujira 0:1977c2310ef7 2690 gu_print1("Please Wait..");
Kujira 0:1977c2310ef7 2691 gu_fontsize(2);
Kujira 0:1977c2310ef7 2692
Kujira 0:1977c2310ef7 2693 read_regnum();//CAL登録No.読込
Kujira 0:1977c2310ef7 2694
Kujira 0:1977c2310ef7 2695 read_caliber(&calinfo,reg_num);//指定したCAL登録No.の情報を読込後、calinfoへ代入
Kujira 0:1977c2310ef7 2696
Kujira 0:1977c2310ef7 2697 auto_meas( number_of_channels );//2個測定
Kujira 0:1977c2310ef7 2698
Kujira 0:1977c2310ef7 2699 hantei( number_of_channels );//判定LED
Kujira 0:1977c2310ef7 2700
Kujira 0:1977c2310ef7 2701 wait(0.5);
Kujira 0:1977c2310ef7 2702
Kujira 0:1977c2310ef7 2703 gu_fontsize(1);
Kujira 0:1977c2310ef7 2704 gu_cursor(0,2);
Kujira 0:1977c2310ef7 2705 gu_print1("READY ");
Kujira 0:1977c2310ef7 2706
Kujira 0:1977c2310ef7 2707 }
Kujira 0:1977c2310ef7 2708
Kujira 0:1977c2310ef7 2709 /*********************************
Kujira 0:1977c2310ef7 2710
Kujira 0:1977c2310ef7 2711 Auto Mode/SEQ Mode (sub)
Kujira 0:1977c2310ef7 2712 自動測定
Kujira 0:1977c2310ef7 2713 char noc -> 総測定数 1~4
Kujira 0:1977c2310ef7 2714
Kujira 0:1977c2310ef7 2715 *********************************/
Kujira 0:1977c2310ef7 2716 void auto_meas(char noc)
Kujira 0:1977c2310ef7 2717 {
Kujira 0:1977c2310ef7 2718 int x[4] = {0,0,128,128}; //GU_D x座標 4個測定時の表示スタート位置
Kujira 0:1977c2310ef7 2719 int y[4] = {5,11,5,11}; //GU_D y座標 4個測定時の表示スタート位置
Kujira 0:1977c2310ef7 2720 int iy ; //GU_D y座標 2個測定時の表示スタート位置
Kujira 0:1977c2310ef7 2721 int i;
Kujira 0:1977c2310ef7 2722 float fdata[4][4];//ファイル出力用
Kujira 0:1977c2310ef7 2723 short sdata[4];
Kujira 0:1977c2310ef7 2724
Kujira 0:1977c2310ef7 2725 iy = 4;//GU_D 2個測定時の測定値の表示開始位置 y座標
Kujira 0:1977c2310ef7 2726
Kujira 0:1977c2310ef7 2727 if ( noc > 4 ) {
Kujira 0:1977c2310ef7 2728 noc = 4;
Kujira 0:1977c2310ef7 2729 }
Kujira 0:1977c2310ef7 2730
Kujira 0:1977c2310ef7 2731 //値の初期化
Kujira 0:1977c2310ef7 2732 for ( i = 0; i <= 3; i++) {
Kujira 0:1977c2310ef7 2733 I[i] = 0;
Kujira 0:1977c2310ef7 2734 R[i] = 0; //ver 1.1.1
Kujira 0:1977c2310ef7 2735 iop[i] = 0;
Kujira 0:1977c2310ef7 2736 voc[i] = 0;
Kujira 0:1977c2310ef7 2737 ocp[i] = 0;
Kujira 0:1977c2310ef7 2738 }
Kujira 0:1977c2310ef7 2739
Kujira 0:1977c2310ef7 2740 //判定用LED消灯
Kujira 0:1977c2310ef7 2741 led_off();
Kujira 0:1977c2310ef7 2742
Kujira 0:1977c2310ef7 2743 //電源投入
Kujira 0:1977c2310ef7 2744 for ( i = 0; i <= ( noc - 1 ); i++) {
Kujira 0:1977c2310ef7 2745 dac_out( calinfo.vss_iop,i); //Vss設定 DAC_A~D
Kujira 0:1977c2310ef7 2746 }
Kujira 0:1977c2310ef7 2747
Kujira 0:1977c2310ef7 2748 wait( wait_poweron );//パワーブレイク復帰待機?
Kujira 0:1977c2310ef7 2749
Kujira 0:1977c2310ef7 2750 //Reset CAL
Kujira 0:1977c2310ef7 2751 for ( i = 0; i <= ( noc -1 ); i++) {
Kujira 0:1977c2310ef7 2752 io[i] = 1; //io1 = "H"
Kujira 0:1977c2310ef7 2753 }
Kujira 0:1977c2310ef7 2754
Kujira 0:1977c2310ef7 2755 wait(time_reset); //ver1.1.3
Kujira 0:1977c2310ef7 2756 //wait(0.2);
Kujira 0:1977c2310ef7 2757
Kujira 0:1977c2310ef7 2758 for ( i = 0; i <= ( noc -1 ); i++) {
Kujira 0:1977c2310ef7 2759 io[i] = 0; //io1 = "L"
Kujira 0:1977c2310ef7 2760 }
Kujira 0:1977c2310ef7 2761
Kujira 0:1977c2310ef7 2762 //抵抗測定
Kujira 0:1977c2310ef7 2763 for ( i = 0; i <= ( noc -1 ); i++ ) {
Kujira 0:1977c2310ef7 2764 R[i] = meas_resistor(i);
Kujira 0:1977c2310ef7 2765 }
Kujira 0:1977c2310ef7 2766
Kujira 0:1977c2310ef7 2767 //display GU_D
Kujira 0:1977c2310ef7 2768 if ( number_of_channels <= 2 ) { //2個測定の時の表示
Kujira 0:1977c2310ef7 2769 gu_fontsize(2);
Kujira 0:1977c2310ef7 2770 gu_cursor(0,iy);
Kujira 0:1977c2310ef7 2771 gu_print1("[ch.1]");
Kujira 0:1977c2310ef7 2772 gu_cursor(128,iy);
Kujira 0:1977c2310ef7 2773 gu_print1("[ch.2]");
Kujira 0:1977c2310ef7 2774 //CH.1 表示
Kujira 0:1977c2310ef7 2775 gu_cursor(0, iy + 2);
Kujira 0:1977c2310ef7 2776 gu_print1("R ");
Kujira 0:1977c2310ef7 2777 display_resistor( R[0] );
Kujira 0:1977c2310ef7 2778 //CH.2 表示
Kujira 0:1977c2310ef7 2779 gu_cursor(128, iy + 2);
Kujira 0:1977c2310ef7 2780 gu_print("R ");
Kujira 0:1977c2310ef7 2781 display_resistor( R[1] );
Kujira 0:1977c2310ef7 2782 } else if( number_of_channels >= 3) { //3.4個測定の時の表示
Kujira 0:1977c2310ef7 2783 gu_fontsize(1);
Kujira 0:1977c2310ef7 2784 gu_cursor(x[0],y[0]);
Kujira 0:1977c2310ef7 2785 gu_print1("ch.1");
Kujira 0:1977c2310ef7 2786 gu_cursor(x[1],y[1] );
Kujira 0:1977c2310ef7 2787 gu_print1("ch.2");
Kujira 0:1977c2310ef7 2788 gu_cursor(x[2],y[2]);
Kujira 0:1977c2310ef7 2789 gu_print1("ch.3");
Kujira 0:1977c2310ef7 2790
Kujira 0:1977c2310ef7 2791 if ( number_of_channels == 4 ) {
Kujira 0:1977c2310ef7 2792 gu_cursor(x[3],y[3]);
Kujira 0:1977c2310ef7 2793 gu_print1("ch.4");
Kujira 0:1977c2310ef7 2794 }
Kujira 0:1977c2310ef7 2795
Kujira 0:1977c2310ef7 2796 //CH.1~4 表示
Kujira 0:1977c2310ef7 2797 for ( i = 0; i <= ( number_of_channels - 1 ); i++) {
Kujira 0:1977c2310ef7 2798 gu_cursor( x[i], y[i] + 1 );//x座標指定
Kujira 0:1977c2310ef7 2799 gu_print1("R ");
Kujira 0:1977c2310ef7 2800 display_resistor( R[i] );
Kujira 0:1977c2310ef7 2801 }
Kujira 0:1977c2310ef7 2802 }
Kujira 0:1977c2310ef7 2803
Kujira 0:1977c2310ef7 2804 //iop測定
Kujira 0:1977c2310ef7 2805 wait(calinfo.wait_iop);//Vss印加~リセット後からiop測定までの待機時間
Kujira 0:1977c2310ef7 2806
Kujira 0:1977c2310ef7 2807 meas_current_automode( noc );//電流測定サブ 測定値をI[]へ代入
Kujira 0:1977c2310ef7 2808
Kujira 0:1977c2310ef7 2809 for( i = 0; i <= ( noc - 1) ; i++) {
Kujira 0:1977c2310ef7 2810 iop[i] = I[i];
Kujira 0:1977c2310ef7 2811 }
Kujira 0:1977c2310ef7 2812
Kujira 0:1977c2310ef7 2813 //display GU_D
Kujira 0:1977c2310ef7 2814 if ( number_of_channels <= 2 ) { //2個測定の時の表示
Kujira 0:1977c2310ef7 2815 gu_cursor(0, iy + 4 );//IOP測定値表示位置指定
Kujira 0:1977c2310ef7 2816 gu_print1("Iop ");
Kujira 0:1977c2310ef7 2817 gu_putdeci(&iop[0]);
Kujira 0:1977c2310ef7 2818 gu_cursor(128, iy + 4 );
Kujira 0:1977c2310ef7 2819 gu_print1("Iop ");
Kujira 0:1977c2310ef7 2820 gu_putdeci(&iop[1]);
Kujira 0:1977c2310ef7 2821 } else {
Kujira 0:1977c2310ef7 2822 //CH.1~4 表示
Kujira 0:1977c2310ef7 2823 for ( i=0; i <= ( number_of_channels - 1 ); i++) {
Kujira 0:1977c2310ef7 2824 gu_cursor( x[i], y[i] + 2 ); //x座標指定
Kujira 0:1977c2310ef7 2825 gu_print1("Iop ");
Kujira 0:1977c2310ef7 2826 gu_putdeci(&iop[i]);
Kujira 0:1977c2310ef7 2827 }
Kujira 0:1977c2310ef7 2828 }
Kujira 0:1977c2310ef7 2829
Kujira 0:1977c2310ef7 2830 wait(0.01);
Kujira 0:1977c2310ef7 2831
Kujira 0:1977c2310ef7 2832 //過充電防止時電流測定
Kujira 0:1977c2310ef7 2833 for ( i = 0; i <= ( noc - 1 ); i++) {
Kujira 0:1977c2310ef7 2834 dac_out( calinfo.vss_ocp,i); //Vss設定 DAC_A~D //ver1.1.2
Kujira 0:1977c2310ef7 2835 }
Kujira 0:1977c2310ef7 2836
Kujira 0:1977c2310ef7 2837 wait( calinfo.wait_ocp );
Kujira 0:1977c2310ef7 2838
Kujira 0:1977c2310ef7 2839 meas_current_automode( noc );
Kujira 0:1977c2310ef7 2840
Kujira 0:1977c2310ef7 2841 for( i = 0; i <= ( noc - 1) ; i++) {
Kujira 0:1977c2310ef7 2842 ocp[i] = I[i];
Kujira 0:1977c2310ef7 2843 }
Kujira 0:1977c2310ef7 2844
Kujira 0:1977c2310ef7 2845 //display GU_D
Kujira 0:1977c2310ef7 2846 if ( number_of_channels <= 2 ) { //2個測定の時の表示
Kujira 0:1977c2310ef7 2847 gu_cursor(0, iy + 6 );//IOP測定値表示位置指定
Kujira 0:1977c2310ef7 2848 gu_print1("OCP ");
Kujira 0:1977c2310ef7 2849 gu_putdeci(&ocp[0]);
Kujira 0:1977c2310ef7 2850 gu_cursor(128, iy + 6 );
Kujira 0:1977c2310ef7 2851 gu_print1("OCP ");
Kujira 0:1977c2310ef7 2852 gu_putdeci(&ocp[1]);
Kujira 0:1977c2310ef7 2853 } else {
Kujira 0:1977c2310ef7 2854 //CH.1~4 表示
Kujira 0:1977c2310ef7 2855 for ( i=0; i <= ( number_of_channels - 1 ); i++) {
Kujira 0:1977c2310ef7 2856 gu_cursor( x[i], y[i] + 3 ); //x座標指定
Kujira 0:1977c2310ef7 2857 gu_print1("OCP ");
Kujira 0:1977c2310ef7 2858 gu_putdeci(&ocp[i]);
Kujira 0:1977c2310ef7 2859 }
Kujira 0:1977c2310ef7 2860 }
Kujira 0:1977c2310ef7 2861
Kujira 0:1977c2310ef7 2862 //VOC測定
Kujira 0:1977c2310ef7 2863 for ( i = 0; i <= ( noc - 1 ); i++) {
Kujira 0:1977c2310ef7 2864 dac_out( calinfo.vss_voc,i); //Vss設定 DAC_A~D
Kujira 0:1977c2310ef7 2865 }
Kujira 0:1977c2310ef7 2866
Kujira 0:1977c2310ef7 2867 wait( wait_voc );
Kujira 0:1977c2310ef7 2868
Kujira 0:1977c2310ef7 2869 for ( i = 0; i <= ( noc -1 ); i++) {
Kujira 0:1977c2310ef7 2870 io[i] = 1; //io1 = "H"
Kujira 0:1977c2310ef7 2871 }
Kujira 0:1977c2310ef7 2872
Kujira 0:1977c2310ef7 2873 wait( wait_reset );
Kujira 0:1977c2310ef7 2874
Kujira 0:1977c2310ef7 2875 for ( i = 0; i <= ( noc -1 ); i++ ) {
Kujira 0:1977c2310ef7 2876
Kujira 0:1977c2310ef7 2877 //ver1.2.0
Kujira 0:1977c2310ef7 2878 if (RL_EN == 1) {
Kujira 0:1977c2310ef7 2879 switch (i) {
Kujira 0:1977c2310ef7 2880 case 0:
Kujira 0:1977c2310ef7 2881 io[4] = 1; //外付けリレーON
Kujira 0:1977c2310ef7 2882 wait(TIME_RELAY_ON);
Kujira 0:1977c2310ef7 2883 case 1:
Kujira 0:1977c2310ef7 2884 io[5] = 1; //外付けリレーON
Kujira 0:1977c2310ef7 2885 wait(TIME_RELAY_ON);
Kujira 0:1977c2310ef7 2886 }
Kujira 0:1977c2310ef7 2887 }
Kujira 0:1977c2310ef7 2888 //up to here ver1.2.0
Kujira 0:1977c2310ef7 2889
Kujira 0:1977c2310ef7 2890 voc[i] = meas_voltage(i);
Kujira 0:1977c2310ef7 2891 sdata[i] = voc[i] * -1;
Kujira 0:1977c2310ef7 2892
Kujira 0:1977c2310ef7 2893 //ver1.2.0
Kujira 0:1977c2310ef7 2894 if (RL_EN == 1) {
Kujira 0:1977c2310ef7 2895 io[4] = 0; //外付けリレーOFF
Kujira 0:1977c2310ef7 2896 io[5] = 0; //外付けリレーOFF
Kujira 0:1977c2310ef7 2897 wait(TIME_RELAY_OFF);
Kujira 0:1977c2310ef7 2898 }
Kujira 0:1977c2310ef7 2899 //up to here
Kujira 0:1977c2310ef7 2900 }
Kujira 0:1977c2310ef7 2901
Kujira 0:1977c2310ef7 2902
Kujira 0:1977c2310ef7 2903 //display GU_D
Kujira 0:1977c2310ef7 2904 if ( number_of_channels <= 2 ) { //2個測定の時の表示
Kujira 0:1977c2310ef7 2905 gu_cursor(0, iy + 8 );//IOP測定値表示位置指定
Kujira 0:1977c2310ef7 2906 gu_print1("Voc ");
Kujira 0:1977c2310ef7 2907 gu_putdeck(&sdata[0]);
Kujira 0:1977c2310ef7 2908 gu_print1("V");
Kujira 0:1977c2310ef7 2909 gu_cursor(128, iy + 8 );
Kujira 0:1977c2310ef7 2910 gu_print1("Voc ");
Kujira 0:1977c2310ef7 2911 gu_putdeck(&sdata[1]);
Kujira 0:1977c2310ef7 2912 gu_print1("V");
Kujira 0:1977c2310ef7 2913 } else {
Kujira 0:1977c2310ef7 2914 //CH.1~4 表示
Kujira 0:1977c2310ef7 2915 for ( i=0; i <= ( number_of_channels - 1 ); i++) {
Kujira 0:1977c2310ef7 2916 gu_cursor( x[i], y[i] + 4 );//x座標指定
Kujira 0:1977c2310ef7 2917 gu_print1("Voc ");
Kujira 0:1977c2310ef7 2918 gu_putdeck(&sdata[i]);
Kujira 0:1977c2310ef7 2919 gu_print1("V");
Kujira 0:1977c2310ef7 2920 }
Kujira 0:1977c2310ef7 2921 }
Kujira 0:1977c2310ef7 2922
Kujira 0:1977c2310ef7 2923 //R = "L"
Kujira 0:1977c2310ef7 2924 for ( i = 0; i <= ( noc -1 ); i++) {
Kujira 0:1977c2310ef7 2925 io[i] = 0; //io1 = "L"
Kujira 0:1977c2310ef7 2926 }
Kujira 0:1977c2310ef7 2927
Kujira 0:1977c2310ef7 2928 wait(0.1);
Kujira 0:1977c2310ef7 2929
Kujira 0:1977c2310ef7 2930 //Vss=0V
Kujira 0:1977c2310ef7 2931 for ( i = 0; i <= ( noc - 1 ); i++) {
Kujira 0:1977c2310ef7 2932 dac_out( 0, i );//Vss設定 DAC_A~D
Kujira 0:1977c2310ef7 2933 }
Kujira 0:1977c2310ef7 2934
Kujira 0:1977c2310ef7 2935 //ファイルオープン
Kujira 0:1977c2310ef7 2936 mkdir("/sd/mydir", 0777);
Kujira 0:1977c2310ef7 2937
Kujira 0:1977c2310ef7 2938 FILE *fp = fopen("/sd/mydir/iop.csv", "ab+");//ディレクトリとファイル名の指定,追加モード
Kujira 0:1977c2310ef7 2939
Kujira 0:1977c2310ef7 2940 if(fp == NULL) {
Kujira 0:1977c2310ef7 2941 /* ver1.1.3
Kujira 0:1977c2310ef7 2942 gu_fontsize(1);
Kujira 0:1977c2310ef7 2943 gu_cursor(0,2);
Kujira 0:1977c2310ef7 2944 gu_print1("Could not open file for SD card");
Kujira 0:1977c2310ef7 2945 */
Kujira 0:1977c2310ef7 2946 } else {
Kujira 0:1977c2310ef7 2947 for ( i = 0; i <= ( noc - 1 ); i++) {
Kujira 0:1977c2310ef7 2948 fdata[i][0] = iop[i] * 0.01; //1bitあたり0.01uA
Kujira 0:1977c2310ef7 2949 fdata[i][1] = ocp[i] * 0.01; //1bitあたり0.01uA
Kujira 0:1977c2310ef7 2950 fdata[i][2] = voc[i] * 0.001; //1bitあたり0.001V
Kujira 0:1977c2310ef7 2951 }
Kujira 0:1977c2310ef7 2952
Kujira 0:1977c2310ef7 2953 for( i = 0; i <= ( noc - 1 ); i++) {
Kujira 0:1977c2310ef7 2954
Kujira 0:1977c2310ef7 2955 switch ( i ) {
Kujira 0:1977c2310ef7 2956 case 0:
Kujira 0:1977c2310ef7 2957 fprintf(fp, "CH.1");
Kujira 0:1977c2310ef7 2958 break;
Kujira 0:1977c2310ef7 2959 case 1:
Kujira 0:1977c2310ef7 2960 fprintf(fp, "CH.2");
Kujira 0:1977c2310ef7 2961 break;
Kujira 0:1977c2310ef7 2962 case 2:
Kujira 0:1977c2310ef7 2963 fprintf(fp, "CH.3");
Kujira 0:1977c2310ef7 2964 break;
Kujira 0:1977c2310ef7 2965 case 3:
Kujira 0:1977c2310ef7 2966 fprintf(fp, "CH.4");
Kujira 0:1977c2310ef7 2967 break;
Kujira 0:1977c2310ef7 2968 }
Kujira 0:1977c2310ef7 2969
Kujira 0:1977c2310ef7 2970 fprintf(fp, " ");//excel 区切り位置
Kujira 0:1977c2310ef7 2971 if ( R[i] < res_vref && R[0] >= 0 ) {
Kujira 0:1977c2310ef7 2972 fprintf(fp, "%d", R[i]);
Kujira 0:1977c2310ef7 2973 } else {
Kujira 0:1977c2310ef7 2974 fprintf(fp,"OL");
Kujira 0:1977c2310ef7 2975 }
Kujira 0:1977c2310ef7 2976 fprintf(fp, " ");
Kujira 0:1977c2310ef7 2977 fprintf(fp, "%f", fdata[i][0]);
Kujira 0:1977c2310ef7 2978 fprintf(fp, " ");
Kujira 0:1977c2310ef7 2979 fprintf(fp, "%f", fdata[i][1]);
Kujira 0:1977c2310ef7 2980 fprintf(fp, " ");
Kujira 0:1977c2310ef7 2981 fprintf(fp, "%f", fdata[i][2]);
Kujira 0:1977c2310ef7 2982 fprintf(fp, " ");
Kujira 0:1977c2310ef7 2983 }//for
Kujira 0:1977c2310ef7 2984
Kujira 0:1977c2310ef7 2985 //ファイルクローズ
Kujira 0:1977c2310ef7 2986 fprintf(fp, "\n");
Kujira 0:1977c2310ef7 2987 fclose(fp);
Kujira 0:1977c2310ef7 2988 }
Kujira 0:1977c2310ef7 2989
Kujira 0:1977c2310ef7 2990 }
Kujira 0:1977c2310ef7 2991
Kujira 0:1977c2310ef7 2992 /*********************************
Kujira 0:1977c2310ef7 2993
Kujira 0:1977c2310ef7 2994 電流測定(iop/voc共通)
Kujira 0:1977c2310ef7 2995 char amount;//測定数
Kujira 0:1977c2310ef7 2996
Kujira 0:1977c2310ef7 2997 *********************************/
Kujira 0:1977c2310ef7 2998 void meas_current_automode(char amount) //a quantity of measuring channel
Kujira 0:1977c2310ef7 2999 {
Kujira 0:1977c2310ef7 3000 int i;
Kujira 0:1977c2310ef7 3001
Kujira 0:1977c2310ef7 3002 //amount = number_of_channels;
Kujira 0:1977c2310ef7 3003
Kujira 0:1977c2310ef7 3004 //set range
Kujira 0:1977c2310ef7 3005 for ( i = 0; i <= ( amount - 1 ); i++)
Kujira 0:1977c2310ef7 3006 range[i] = 1; //range 10uA
Kujira 0:1977c2310ef7 3007
Kujira 0:1977c2310ef7 3008 wait(0.1);
Kujira 0:1977c2310ef7 3009
Kujira 0:1977c2310ef7 3010 //discharge condenser
Kujira 0:1977c2310ef7 3011 for ( i = 0; i <= ( amount - 1 ); i++)
Kujira 0:1977c2310ef7 3012 houden[i] = 1; //discharge condenser
Kujira 0:1977c2310ef7 3013
Kujira 0:1977c2310ef7 3014 wait(time_discharge);//discharge time
Kujira 0:1977c2310ef7 3015
Kujira 0:1977c2310ef7 3016 ch_num = 0;
Kujira 0:1977c2310ef7 3017 select_ich( ch_num ); //select channel that mesuring current
Kujira 0:1977c2310ef7 3018 houden[0] = 0; //start integral
Kujira 0:1977c2310ef7 3019
Kujira 0:1977c2310ef7 3020 oneshot1.attach ( &flip_ch1, time_integral );
Kujira 0:1977c2310ef7 3021
Kujira 0:1977c2310ef7 3022 if ( amount >= 2 ) {
Kujira 0:1977c2310ef7 3023 wait(0.1);
Kujira 0:1977c2310ef7 3024 houden[1] = 0;
Kujira 0:1977c2310ef7 3025 oneshot2.attach ( &flip_ch2, time_integral );
Kujira 0:1977c2310ef7 3026 }
Kujira 0:1977c2310ef7 3027
Kujira 0:1977c2310ef7 3028 if ( amount >= 3 ) {
Kujira 0:1977c2310ef7 3029 wait(0.1);
Kujira 0:1977c2310ef7 3030 houden[2] = 0;
Kujira 0:1977c2310ef7 3031 oneshot3.attach ( &flip_ch3, time_integral );
Kujira 0:1977c2310ef7 3032 }
Kujira 0:1977c2310ef7 3033
Kujira 0:1977c2310ef7 3034 if ( amount == 4 ) {
Kujira 0:1977c2310ef7 3035 wait(0.1);
Kujira 0:1977c2310ef7 3036 houden[3] = 0;
Kujira 0:1977c2310ef7 3037 oneshot4.attach ( &flip_ch4, time_integral );
Kujira 0:1977c2310ef7 3038 }
Kujira 0:1977c2310ef7 3039
Kujira 0:1977c2310ef7 3040 wait( time_integral + 0.3 );//wait Timeout
Kujira 0:1977c2310ef7 3041
Kujira 0:1977c2310ef7 3042 //discharge condenser
Kujira 0:1977c2310ef7 3043 for ( i = 0; i <= ( amount - 1 ); i++)
Kujira 0:1977c2310ef7 3044 houden[i] = 1; //discharge condenser
Kujira 0:1977c2310ef7 3045
Kujira 0:1977c2310ef7 3046 wait(time_discharge);//discharge time
Kujira 0:1977c2310ef7 3047
Kujira 0:1977c2310ef7 3048 //not discharge condenser
Kujira 0:1977c2310ef7 3049 for ( i = 0; i <= ( amount - 1 ); i++)
Kujira 0:1977c2310ef7 3050 houden[i] = 0;
Kujira 0:1977c2310ef7 3051
Kujira 0:1977c2310ef7 3052 //set range
Kujira 0:1977c2310ef7 3053 for ( i = 0; i <= ( amount - 1 ); i++)
Kujira 0:1977c2310ef7 3054 range[i] = 0; //range 1mA
Kujira 0:1977c2310ef7 3055
Kujira 0:1977c2310ef7 3056 oneshot1.detach();
Kujira 0:1977c2310ef7 3057 oneshot2.detach();
Kujira 0:1977c2310ef7 3058 oneshot3.detach();
Kujira 0:1977c2310ef7 3059 oneshot4.detach();
Kujira 0:1977c2310ef7 3060
Kujira 0:1977c2310ef7 3061 }
Kujira 0:1977c2310ef7 3062
Kujira 0:1977c2310ef7 3063 /*********************************
Kujira 0:1977c2310ef7 3064 DAC 初期設定
Kujira 0:1977c2310ef7 3065 LDACレジスタの設定
Kujira 0:1977c2310ef7 3066 内部リファレンス電圧のセットアップ
Kujira 0:1977c2310ef7 3067 入力シフトレジスタ:
Kujira 0:1977c2310ef7 3068 0011 1000 0000 0000 0000 0001
Kujira 0:1977c2310ef7 3069 (0x3F0001)
Kujira 0:1977c2310ef7 3070 *********************************/
Kujira 0:1977c2310ef7 3071 void dac_init()
Kujira 0:1977c2310ef7 3072 {
Kujira 0:1977c2310ef7 3073
Kujira 0:1977c2310ef7 3074 //内部リファレンス電圧のセットアップ
Kujira 0:1977c2310ef7 3075 wdata[0] = 0x38;
Kujira 0:1977c2310ef7 3076 wdata[1] = 0x00;
Kujira 0:1977c2310ef7 3077 wdata[2] = 0x01;//
Kujira 0:1977c2310ef7 3078
Kujira 0:1977c2310ef7 3079 i2c.write ( addr_dac, wdata, 3);
Kujira 0:1977c2310ef7 3080
Kujira 0:1977c2310ef7 3081 wait(0.1);
Kujira 0:1977c2310ef7 3082
Kujira 0:1977c2310ef7 3083 //LDAC設定
Kujira 0:1977c2310ef7 3084 wdata[0] = 0x30;
Kujira 0:1977c2310ef7 3085 wdata[1] = 0x00;
Kujira 0:1977c2310ef7 3086 wdata[2] = 0x0F;//
Kujira 0:1977c2310ef7 3087
Kujira 0:1977c2310ef7 3088 i2c.write ( addr_dac, wdata, 3);
Kujira 0:1977c2310ef7 3089
Kujira 0:1977c2310ef7 3090 }
Kujira 0:1977c2310ef7 3091
Kujira 0:1977c2310ef7 3092 /**************************************
Kujira 0:1977c2310ef7 3093 DAC 電圧印加
Kujira 0:1977c2310ef7 3094 Vout = 2 * Vref(2.5V) * ( D /2^2 )
Kujira 0:1977c2310ef7 3095 mvolt[mV] 0~5000で設定
Kujira 0:1977c2310ef7 3096 addrは、0x00~03.全チャネルは0x07で指定
Kujira 0:1977c2310ef7 3097 **************************************/
Kujira 0:1977c2310ef7 3098 void dac_out(short mvolt, char addr) //addr DACA:0x00 DACB:0x01 DACC:0x02 DACD:0x03 allDACs:0x07
Kujira 0:1977c2310ef7 3099 {
Kujira 0:1977c2310ef7 3100 char command;//1byte
Kujira 0:1977c2310ef7 3101 short dacdata;//2byte
Kujira 0:1977c2310ef7 3102
Kujira 0:1977c2310ef7 3103 command = 0x02;//write to input register n 仕様書p25参照
Kujira 0:1977c2310ef7 3104
Kujira 0:1977c2310ef7 3105 dacdata = mvolt * 4095 / 2 / dac_vref ; //12bit mvolt[mV] 0~5000で設定する
Kujira 0:1977c2310ef7 3106
Kujira 0:1977c2310ef7 3107 dacdata = dacdata << 4; //後ろ4bitはdon't care bit
Kujira 0:1977c2310ef7 3108
Kujira 0:1977c2310ef7 3109 wdata[0] = command << 3 | addr; //1byte
Kujira 0:1977c2310ef7 3110 wdata[1] = dacdata >> 8 ; //1byte
Kujira 0:1977c2310ef7 3111 wdata[2] = dacdata & 0xFF;//1byte
Kujira 0:1977c2310ef7 3112
Kujira 0:1977c2310ef7 3113 i2c.write(addr_dac, wdata, 3);
Kujira 0:1977c2310ef7 3114
Kujira 0:1977c2310ef7 3115 }
Kujira 0:1977c2310ef7 3116 /*********************************
Kujira 0:1977c2310ef7 3117 ADC測定し、平均値を算出する
Kujira 0:1977c2310ef7 3118
Kujira 0:1977c2310ef7 3119 貰う値:平均値の分母
Kujira 0:1977c2310ef7 3120 渡す値:平均値
Kujira 0:1977c2310ef7 3121 *********************************/
Kujira 0:1977c2310ef7 3122 void compute_adc(int adc_con, long *avg) //(ADCのCONFIG, 計算結果)
Kujira 0:1977c2310ef7 3123 {
Kujira 0:1977c2310ef7 3124
Kujira 0:1977c2310ef7 3125 //short sdata[10];//2byte
Kujira 0:1977c2310ef7 3126 long ldata[10];//4byte
Kujira 0:1977c2310ef7 3127 long nu;//平均値の分子 4byte
Kujira 0:1977c2310ef7 3128 long max;
Kujira 0:1977c2310ef7 3129 long min;
Kujira 0:1977c2310ef7 3130 char i;
Kujira 0:1977c2310ef7 3131 char x;
Kujira 0:1977c2310ef7 3132 //int n;
Kujira 0:1977c2310ef7 3133
Kujira 0:1977c2310ef7 3134 x = 10;
Kujira 0:1977c2310ef7 3135
Kujira 0:1977c2310ef7 3136 wdata[0] = adc_con; //ADC configuration data チャンネルの選択など
Kujira 0:1977c2310ef7 3137 i2c.write( addr_ADC1, wdata, 1 );
Kujira 0:1977c2310ef7 3138 wait(0.1);
Kujira 0:1977c2310ef7 3139
Kujira 0:1977c2310ef7 3140 //平均値の母数の数、測定を実施。
Kujira 0:1977c2310ef7 3141 for( i=0; i<=(x-1); i++) {
Kujira 0:1977c2310ef7 3142
Kujira 0:1977c2310ef7 3143 i2c.read( addr_ADC1 + 0x01, rdata, 3);
Kujira 0:1977c2310ef7 3144 //2byte結合
Kujira 0:1977c2310ef7 3145 ldata[i] = rdata[0] & 0xFF;
Kujira 0:1977c2310ef7 3146 ldata[i] = ( ldata[i] << 8 ) | rdata[1];
Kujira 0:1977c2310ef7 3147
Kujira 0:1977c2310ef7 3148 if ( ldata[i] >= 0x8000 ) {
Kujira 0:1977c2310ef7 3149 ldata[i] = ldata[i] | 0xFFFF0000; //4byteの補数へ変換
Kujira 0:1977c2310ef7 3150 }
Kujira 0:1977c2310ef7 3151
Kujira 0:1977c2310ef7 3152 wait(0.05);
Kujira 0:1977c2310ef7 3153
Kujira 0:1977c2310ef7 3154 }//for
Kujira 0:1977c2310ef7 3155
Kujira 0:1977c2310ef7 3156 //最大値を取得
Kujira 0:1977c2310ef7 3157 max = ldata[0];
Kujira 0:1977c2310ef7 3158 for ( i=0; i<=(x-2); i++) {
Kujira 0:1977c2310ef7 3159 if ( ldata[i+1] > ldata[i]) {
Kujira 0:1977c2310ef7 3160 max = ldata[i+1];
Kujira 0:1977c2310ef7 3161 }
Kujira 0:1977c2310ef7 3162 }
Kujira 0:1977c2310ef7 3163 //最小値
Kujira 0:1977c2310ef7 3164 min = ldata[0];
Kujira 0:1977c2310ef7 3165 for ( i=0; i<=(x-2); i++) {
Kujira 0:1977c2310ef7 3166 if ( ldata[i+1] < ldata[i]) {
Kujira 0:1977c2310ef7 3167 min = ldata[i+1];
Kujira 0:1977c2310ef7 3168 }
Kujira 0:1977c2310ef7 3169 }
Kujira 0:1977c2310ef7 3170
Kujira 0:1977c2310ef7 3171 //平均値
Kujira 0:1977c2310ef7 3172 nu = 0x00000000; //4byte
Kujira 0:1977c2310ef7 3173 for ( i=0; i<=(x-1); i++) {
Kujira 0:1977c2310ef7 3174 nu = nu + ldata[i];
Kujira 0:1977c2310ef7 3175 }
Kujira 0:1977c2310ef7 3176
Kujira 0:1977c2310ef7 3177 *avg = ( nu - max - min ) / ( x - 2 );
Kujira 0:1977c2310ef7 3178
Kujira 0:1977c2310ef7 3179 }
Kujira 0:1977c2310ef7 3180
Kujira 0:1977c2310ef7 3181
Kujira 0:1977c2310ef7 3182 /**************************************
Kujira 0:1977c2310ef7 3183 2バイトを10進数で表示する 0~65535
Kujira 0:1977c2310ef7 3184 format *0.000
Kujira 0:1977c2310ef7 3185 mV→uAへ変換(1/1000)
Kujira 0:1977c2310ef7 3186 プリアンプ GAIN 1/5
Kujira 0:1977c2310ef7 3187 ADC_LSB:0.25mV
Kujira 0:1977c2310ef7 3188 積分時間 2s
Kujira 0:1977c2310ef7 3189 容量 20uF
Kujira 0:1977c2310ef7 3190 **************************************/
Kujira 0:1977c2310ef7 3191 void gu_putdeci(float* idata)
Kujira 0:1977c2310ef7 3192 {
Kujira 0:1977c2310ef7 3193
Kujira 0:1977c2310ef7 3194 float uA; //ver1.1.4
Kujira 0:1977c2310ef7 3195 long y; //ver1.1.4
Kujira 0:1977c2310ef7 3196 long x; //ver1.1.4
Kujira 0:1977c2310ef7 3197
Kujira 0:1977c2310ef7 3198 //千分の一、四捨五入。
Kujira 0:1977c2310ef7 3199 if ( *idata > 0 ) {
Kujira 0:1977c2310ef7 3200 uA = *idata + 0.5;
Kujira 0:1977c2310ef7 3201 } else {
Kujira 0:1977c2310ef7 3202 uA = *idata - 0.5;
Kujira 0:1977c2310ef7 3203 }
Kujira 0:1977c2310ef7 3204
Kujira 0:1977c2310ef7 3205 x = uA; //小数点以下切り捨て
Kujira 0:1977c2310ef7 3206
Kujira 0:1977c2310ef7 3207 //四捨五入 up to here
Kujira 0:1977c2310ef7 3208
Kujira 0:1977c2310ef7 3209 //プラスマイナスの表示
Kujira 0:1977c2310ef7 3210 if( x >= 0 ) {
Kujira 0:1977c2310ef7 3211 wdata[0] = 0x2B;//ascii "+"
Kujira 0:1977c2310ef7 3212 i2c.write(addr_gu, wdata, 1);
Kujira 0:1977c2310ef7 3213
Kujira 0:1977c2310ef7 3214 y = x;
Kujira 0:1977c2310ef7 3215
Kujira 0:1977c2310ef7 3216 } else {
Kujira 0:1977c2310ef7 3217 wdata[0] = 0x2D;//ascii "-"
Kujira 0:1977c2310ef7 3218 i2c.write(addr_gu, wdata, 1);
Kujira 0:1977c2310ef7 3219
Kujira 0:1977c2310ef7 3220 y = ( ~x ) + 0x01;//2の補数
Kujira 0:1977c2310ef7 3221 }
Kujira 0:1977c2310ef7 3222
Kujira 0:1977c2310ef7 3223 //y = y * 5 * 0.25;//プリアンプのGAINが1/5なのでここで5倍.ADC14bit分解能で、1bitあたり0.25mv
Kujira 0:1977c2310ef7 3224
Kujira 0:1977c2310ef7 3225 wdata[0] = (( y / 1000 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3226
Kujira 0:1977c2310ef7 3227 if( wdata[0] == 0x30 )//2桁目が零の場合、"0"を表示しない。
Kujira 0:1977c2310ef7 3228 wdata[0] = 0x20;
Kujira 0:1977c2310ef7 3229
Kujira 0:1977c2310ef7 3230 wdata[1] = (( y / 100 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3231 wdata[2] = 0x2E;//ASCII "."
Kujira 0:1977c2310ef7 3232 wdata[3] = (( y / 10 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3233 wdata[4] = ( y % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3234
Kujira 3:639e05fcfa0b 3235 //ver1.2.5
Kujira 3:639e05fcfa0b 3236 //i2c.write(addr_gu, wdata, 5);
Kujira 3:639e05fcfa0b 3237 //gu_print1("uA");
Kujira 3:639e05fcfa0b 3238
Kujira 3:639e05fcfa0b 3239 if ( *idata > O_L * -100 && *idata < O_L * 100 ){
Kujira 3:639e05fcfa0b 3240
Kujira 3:639e05fcfa0b 3241 i2c.write(addr_gu, wdata, 5);
Kujira 3:639e05fcfa0b 3242 gu_print1("uA");
Kujira 3:639e05fcfa0b 3243
Kujira 3:639e05fcfa0b 3244 }else{
Kujira 3:639e05fcfa0b 3245
Kujira 3:639e05fcfa0b 3246 gu_print1("O.L");
Kujira 3:639e05fcfa0b 3247
Kujira 3:639e05fcfa0b 3248 }
Kujira 3:639e05fcfa0b 3249 //upto
Kujira 0:1977c2310ef7 3250
Kujira 0:1977c2310ef7 3251 }
Kujira 0:1977c2310ef7 3252
Kujira 0:1977c2310ef7 3253 /**************************************
Kujira 0:1977c2310ef7 3254 2バイトを10進数で表示する 0~65535
Kujira 0:1977c2310ef7 3255 format *0.000
Kujira 0:1977c2310ef7 3256 mV→uAへ変換(1/1000)
Kujira 0:1977c2310ef7 3257 プリアンプ GAIN 1/5
Kujira 0:1977c2310ef7 3258 ADC_LSB:0.25mV
Kujira 0:1977c2310ef7 3259 シャント抵抗1kΩ
Kujira 0:1977c2310ef7 3260 **************************************/
Kujira 0:1977c2310ef7 3261 void gu_putdeci_mA(float* idata)
Kujira 0:1977c2310ef7 3262 {
Kujira 0:1977c2310ef7 3263 float uA; //ver1.1.4
Kujira 0:1977c2310ef7 3264 long y; //ver1.1.4
Kujira 0:1977c2310ef7 3265 long x; //ver1.1.4
Kujira 0:1977c2310ef7 3266
Kujira 0:1977c2310ef7 3267 //千分の一、四捨五入。
Kujira 0:1977c2310ef7 3268 if ( *idata > 0 ) {
Kujira 0:1977c2310ef7 3269 uA = *idata + 0.5;
Kujira 0:1977c2310ef7 3270 } else {
Kujira 0:1977c2310ef7 3271 uA = *idata - 0.5;
Kujira 0:1977c2310ef7 3272 }
Kujira 0:1977c2310ef7 3273
Kujira 0:1977c2310ef7 3274 x = uA; //小数点以下切り捨て
Kujira 0:1977c2310ef7 3275
Kujira 0:1977c2310ef7 3276 //四捨五入 up to here
Kujira 0:1977c2310ef7 3277
Kujira 0:1977c2310ef7 3278 //プラスマイナスの表示
Kujira 0:1977c2310ef7 3279 if( x >= 0 ) {
Kujira 0:1977c2310ef7 3280 wdata[0] = 0x2B;//ascii "+"
Kujira 0:1977c2310ef7 3281 i2c.write(addr_gu, wdata, 1);
Kujira 0:1977c2310ef7 3282
Kujira 0:1977c2310ef7 3283 y = x;
Kujira 0:1977c2310ef7 3284
Kujira 0:1977c2310ef7 3285 } else {
Kujira 0:1977c2310ef7 3286 wdata[0] = 0x2D;//ascii "-"
Kujira 0:1977c2310ef7 3287 i2c.write(addr_gu, wdata, 1);
Kujira 0:1977c2310ef7 3288
Kujira 0:1977c2310ef7 3289 y = ( ~x ) + 0x01;//2の補数
Kujira 0:1977c2310ef7 3290 }
Kujira 0:1977c2310ef7 3291
Kujira 0:1977c2310ef7 3292 //y = y * 5 * 0.25;//プリアンプのGAINが1/5なのでここで5倍.ADC14bit分解能で、1bitあたり0.25mv
Kujira 0:1977c2310ef7 3293
Kujira 0:1977c2310ef7 3294 /*
Kujira 0:1977c2310ef7 3295 wdata[0] = (( *y / 100000 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3296
Kujira 0:1977c2310ef7 3297 if( wdata[0] == 0x30 )//3桁目が零の場合、"0"を表示しない。
Kujira 0:1977c2310ef7 3298 wdata[0] = 0x20;
Kujira 0:1977c2310ef7 3299 */
Kujira 0:1977c2310ef7 3300
Kujira 0:1977c2310ef7 3301 wdata[0] = (( y / 1000 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3302
Kujira 0:1977c2310ef7 3303 if( wdata[0] == 0x30 )//2桁目が零の場合、"0"を表示しない。
Kujira 0:1977c2310ef7 3304 wdata[0] = 0x20;
Kujira 0:1977c2310ef7 3305
Kujira 0:1977c2310ef7 3306 wdata[1] = (( y / 100 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3307 wdata[2] = 0x2E;//ASCII "."
Kujira 0:1977c2310ef7 3308 wdata[3] = (( y / 10 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3309 wdata[4] = ( y % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3310
Kujira 0:1977c2310ef7 3311 i2c.write(addr_gu, wdata, 5);
Kujira 0:1977c2310ef7 3312
Kujira 0:1977c2310ef7 3313 gu_print1("mA");
Kujira 0:1977c2310ef7 3314
Kujira 0:1977c2310ef7 3315 }
Kujira 0:1977c2310ef7 3316
Kujira 0:1977c2310ef7 3317 /**************************************
Kujira 0:1977c2310ef7 3318 2バイトを10進数で表示する 0~65535
Kujira 0:1977c2310ef7 3319 1/1000倍 format *0.000
Kujira 0:1977c2310ef7 3320 mV→V Ω→kΩ
Kujira 0:1977c2310ef7 3321 **************************************/
Kujira 0:1977c2310ef7 3322 void gu_putdeck(short* x)
Kujira 0:1977c2310ef7 3323 {
Kujira 0:1977c2310ef7 3324
Kujira 0:1977c2310ef7 3325 short num;
Kujira 0:1977c2310ef7 3326
Kujira 0:1977c2310ef7 3327 //プラスマイナスの表示
Kujira 0:1977c2310ef7 3328 if( *x >= 0 ) {
Kujira 0:1977c2310ef7 3329 wdata[0] = 0x2B;//ascii "+"
Kujira 0:1977c2310ef7 3330 i2c.write(addr_gu, wdata, 1);
Kujira 0:1977c2310ef7 3331 num = *x;
Kujira 0:1977c2310ef7 3332
Kujira 0:1977c2310ef7 3333 } else {
Kujira 0:1977c2310ef7 3334 wdata[0] = 0x2D;//ascii "-"
Kujira 0:1977c2310ef7 3335 i2c.write(addr_gu, wdata, 1);
Kujira 0:1977c2310ef7 3336
Kujira 0:1977c2310ef7 3337 //*x = ( ~*x ) + 0x01;//2の補数
Kujira 0:1977c2310ef7 3338 num = *x * -1;
Kujira 0:1977c2310ef7 3339 }
Kujira 0:1977c2310ef7 3340
Kujira 0:1977c2310ef7 3341 wdata[0] = (( num / 10000 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3342
Kujira 0:1977c2310ef7 3343 if( wdata[0] == 0x30 )//2桁目が零の場合、"0"を表示しない。
Kujira 0:1977c2310ef7 3344 wdata[0] = 0x20;
Kujira 0:1977c2310ef7 3345
Kujira 0:1977c2310ef7 3346 wdata[1] = (( num / 1000 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3347 wdata[2] = 0x2E;//ASCII "."
Kujira 0:1977c2310ef7 3348 wdata[3] = (( num / 100 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3349 wdata[4] = (( num / 10 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3350 //wdata[5] = ( num % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3351
Kujira 0:1977c2310ef7 3352 i2c.write(addr_gu, wdata, 5);
Kujira 0:1977c2310ef7 3353
Kujira 0:1977c2310ef7 3354 }
Kujira 0:1977c2310ef7 3355
Kujira 0:1977c2310ef7 3356 /********************************
Kujira 0:1977c2310ef7 3357
Kujira 0:1977c2310ef7 3358 判定 LED点灯
Kujira 0:1977c2310ef7 3359
Kujira 0:1977c2310ef7 3360 ********************************/
Kujira 0:1977c2310ef7 3361 void hantei(char noc)
Kujira 0:1977c2310ef7 3362 {
Kujira 0:1977c2310ef7 3363 int i;
Kujira 0:1977c2310ef7 3364
Kujira 0:1977c2310ef7 3365 //エラーフラグ
Kujira 0:1977c2310ef7 3366 for ( i=0; i<= 3 ; i++) {
Kujira 0:1977c2310ef7 3367 err_f[i] = 0;
Kujira 0:1977c2310ef7 3368 }
Kujira 0:1977c2310ef7 3369
Kujira 0:1977c2310ef7 3370 //ver1.2
Kujira 0:1977c2310ef7 3371 if (DEB_EN == 1) {
Kujira 0:1977c2310ef7 3372 voc[0] = 3100;//[mV]
Kujira 0:1977c2310ef7 3373 ocp[0] = -0.4*100;//[uA] 0.1uAのときocp[]の値は10
Kujira 0:1977c2310ef7 3374 iop[0] = 16.5*100;//[uA] 0.1uAのときicp[]の値は10
Kujira 0:1977c2310ef7 3375 voc[1] = 3100;//[V]
Kujira 0:1977c2310ef7 3376 ocp[1] = 0.4*100;//[uA]
Kujira 0:1977c2310ef7 3377 iop[1] = 16.5*100;//[uA]
Kujira 0:1977c2310ef7 3378 }
Kujira 0:1977c2310ef7 3379 //upto
Kujira 0:1977c2310ef7 3380
Kujira 0:1977c2310ef7 3381 for ( i = 0; i <= ( noc - 1 ); i++) {
Kujira 0:1977c2310ef7 3382
Kujira 0:1977c2310ef7 3383 /*ver1.1.3 規格設置値=0の場合は判定しない*/
Kujira 0:1977c2310ef7 3384 if( voc[i] < calinfo.low_limit_voc && calinfo.low_limit_voc != 0) {
Kujira 0:1977c2310ef7 3385 err_f[i] = 1;
Kujira 0:1977c2310ef7 3386 }
Kujira 0:1977c2310ef7 3387
Kujira 0:1977c2310ef7 3388 if( iop[i] < calinfo.low_limit_iop ) {
Kujira 0:1977c2310ef7 3389 err_f[i] = 1;
Kujira 0:1977c2310ef7 3390 }
Kujira 0:1977c2310ef7 3391
Kujira 0:1977c2310ef7 3392 if( ocp[i] > calinfo.low_limit_ocp ) {
Kujira 0:1977c2310ef7 3393 err_f[i] = 1;
Kujira 0:1977c2310ef7 3394 }
Kujira 0:1977c2310ef7 3395
Kujira 0:1977c2310ef7 3396 //ver1.2.2
Kujira 0:1977c2310ef7 3397 if( ocp[i] < calinfo.up_limit_ocp && calinfo.up_limit_ocp != 0) {
Kujira 0:1977c2310ef7 3398 err_f[i] = 1;
Kujira 0:1977c2310ef7 3399 }
Kujira 0:1977c2310ef7 3400
Kujira 0:1977c2310ef7 3401 if( R[i] < calinfo.low_limit_resistor && calinfo.low_limit_resistor != 0 ) {
Kujira 0:1977c2310ef7 3402 err_f[i] = 1;
Kujira 0:1977c2310ef7 3403 }
Kujira 0:1977c2310ef7 3404
Kujira 0:1977c2310ef7 3405 if( R[i] > calinfo.up_limit_resistor && calinfo.up_limit_resistor != 0 ) {
Kujira 0:1977c2310ef7 3406 err_f[i] = 1;
Kujira 0:1977c2310ef7 3407 }
Kujira 0:1977c2310ef7 3408
Kujira 0:1977c2310ef7 3409 if( err_f[i] == 1) {
Kujira 0:1977c2310ef7 3410 led_red[i] = 1;
Kujira 0:1977c2310ef7 3411 } else {
Kujira 0:1977c2310ef7 3412 led_green[i] = 1;
Kujira 0:1977c2310ef7 3413 }
Kujira 0:1977c2310ef7 3414
Kujira 0:1977c2310ef7 3415 if ( SEQ_EN == 1 && err_f[i] == 0 ) {
Kujira 0:1977c2310ef7 3416 seq_hantei[i] = 1;
Kujira 0:1977c2310ef7 3417 }
Kujira 0:1977c2310ef7 3418
Kujira 0:1977c2310ef7 3419 //ver1.2.3
Kujira 0:1977c2310ef7 3420 char *print_text;
Kujira 0:1977c2310ef7 3421
Kujira 0:1977c2310ef7 3422 if(DEB_EN == 1) {
Kujira 0:1977c2310ef7 3423
Kujira 0:1977c2310ef7 3424 gu_fontsize(1);
Kujira 0:1977c2310ef7 3425 gu_cursor(0,2);
Kujira 0:1977c2310ef7 3426 gu_print1(" ");
Kujira 0:1977c2310ef7 3427
Kujira 0:1977c2310ef7 3428 if(err_f[i] == 1) {
Kujira 0:1977c2310ef7 3429
Kujira 0:1977c2310ef7 3430 switch(i){
Kujira 0:1977c2310ef7 3431 case 0:
Kujira 0:1977c2310ef7 3432 print_text="FAIL DUT1";
Kujira 0:1977c2310ef7 3433 break;
Kujira 0:1977c2310ef7 3434 case 1:
Kujira 0:1977c2310ef7 3435 print_text="FAIL DUT2";
Kujira 0:1977c2310ef7 3436 break;
Kujira 0:1977c2310ef7 3437 }
Kujira 0:1977c2310ef7 3438
Kujira 0:1977c2310ef7 3439 gu_fontsize(1);
Kujira 0:1977c2310ef7 3440 gu_cursor(0,2);
Kujira 0:1977c2310ef7 3441 gu_print1(print_text);
Kujira 0:1977c2310ef7 3442 wait(1);
Kujira 0:1977c2310ef7 3443 }
Kujira 0:1977c2310ef7 3444 if(err_f[i] == 0) {
Kujira 0:1977c2310ef7 3445
Kujira 0:1977c2310ef7 3446
Kujira 0:1977c2310ef7 3447 switch(i){
Kujira 0:1977c2310ef7 3448 case 0:
Kujira 0:1977c2310ef7 3449 print_text="PASS DUT1";
Kujira 0:1977c2310ef7 3450 break;
Kujira 0:1977c2310ef7 3451 case 1:
Kujira 0:1977c2310ef7 3452 print_text="PASS DUT2";
Kujira 0:1977c2310ef7 3453 break;
Kujira 0:1977c2310ef7 3454 }
Kujira 0:1977c2310ef7 3455
Kujira 0:1977c2310ef7 3456 gu_fontsize(1);
Kujira 0:1977c2310ef7 3457 gu_cursor(0,2);
Kujira 0:1977c2310ef7 3458 gu_print1(print_text);
Kujira 0:1977c2310ef7 3459
Kujira 0:1977c2310ef7 3460 wait(1);
Kujira 0:1977c2310ef7 3461 }
Kujira 0:1977c2310ef7 3462 }
Kujira 0:1977c2310ef7 3463 //upto
Kujira 0:1977c2310ef7 3464
Kujira 0:1977c2310ef7 3465 }//for
Kujira 0:1977c2310ef7 3466
Kujira 0:1977c2310ef7 3467
Kujira 0:1977c2310ef7 3468 }
Kujira 0:1977c2310ef7 3469
Kujira 0:1977c2310ef7 3470 /*********************************
Kujira 0:1977c2310ef7 3471
Kujira 0:1977c2310ef7 3472 measure voltage
Kujira 0:1977c2310ef7 3473 測定CHを指定して、電圧値Rを返す
Kujira 0:1977c2310ef7 3474 char ch 0~3 -> 1ch ~ 4ch
Kujira 0:1977c2310ef7 3475
Kujira 0:1977c2310ef7 3476 *********************************/
Kujira 0:1977c2310ef7 3477 short meas_voltage(char ch)//ch 0~3 -> 1ch ~ 4ch
Kujira 0:1977c2310ef7 3478 {
Kujira 0:1977c2310ef7 3479 char com;
Kujira 0:1977c2310ef7 3480 short sdata;
Kujira 0:1977c2310ef7 3481
Kujira 0:1977c2310ef7 3482 switch(ch) {
Kujira 0:1977c2310ef7 3483 case 0:
Kujira 0:1977c2310ef7 3484 com = adc_config(2,0);//ch1(adc),12bit
Kujira 0:1977c2310ef7 3485 i2c.write( addr_ADC1, &com, 1);
Kujira 0:1977c2310ef7 3486 wait(0.1);
Kujira 0:1977c2310ef7 3487 sdata = read_adc(addr_ADC1);
Kujira 0:1977c2310ef7 3488 break;
Kujira 0:1977c2310ef7 3489 case 1:
Kujira 0:1977c2310ef7 3490 com = adc_config(3,0);//ch2(adc),12bit
Kujira 0:1977c2310ef7 3491 i2c.write( addr_ADC1, &com, 1);
Kujira 0:1977c2310ef7 3492 wait(0.1);
Kujira 0:1977c2310ef7 3493 sdata = read_adc(addr_ADC1);
Kujira 0:1977c2310ef7 3494 break;
Kujira 0:1977c2310ef7 3495 case 2:
Kujira 0:1977c2310ef7 3496 com = adc_config(2,0);//ch1(adc),12bit
Kujira 0:1977c2310ef7 3497 i2c.write( addr_ADC2, &com, 1);
Kujira 0:1977c2310ef7 3498 wait(0.1);
Kujira 0:1977c2310ef7 3499 sdata = read_adc(addr_ADC2);
Kujira 0:1977c2310ef7 3500 break;
Kujira 0:1977c2310ef7 3501 case 3:
Kujira 0:1977c2310ef7 3502 com = adc_config(3,0);//ch2(adc),12bit
Kujira 0:1977c2310ef7 3503 i2c.write( addr_ADC2, &com, 1);
Kujira 0:1977c2310ef7 3504 wait(0.1);
Kujira 0:1977c2310ef7 3505 sdata = read_adc(addr_ADC2);
Kujira 0:1977c2310ef7 3506 break;
Kujira 0:1977c2310ef7 3507 }// end switch
Kujira 0:1977c2310ef7 3508
Kujira 0:1977c2310ef7 3509 //プリアンプ倍率を代入して、電圧値を算出する(単位はmV)
Kujira 0:1977c2310ef7 3510
Kujira 0:1977c2310ef7 3511
Kujira 0:1977c2310ef7 3512 sdata = sdata * 5;//プリアンプ倍率
Kujira 0:1977c2310ef7 3513
Kujira 0:1977c2310ef7 3514 return ( sdata );
Kujira 0:1977c2310ef7 3515 }
Kujira 0:1977c2310ef7 3516
Kujira 0:1977c2310ef7 3517
Kujira 0:1977c2310ef7 3518 /*********************************
Kujira 0:1977c2310ef7 3519
Kujira 0:1977c2310ef7 3520 measure resistor
Kujira 0:1977c2310ef7 3521 測定CHを指定して、抵抗測定値Rを返す
Kujira 0:1977c2310ef7 3522 char ch 0~3 -> 1ch ~ 4ch
Kujira 0:1977c2310ef7 3523
Kujira 0:1977c2310ef7 3524 *********************************/
Kujira 0:1977c2310ef7 3525 short meas_resistor(char ch)//ch 0~3 -> 1ch ~ 4ch
Kujira 0:1977c2310ef7 3526 {
Kujira 0:1977c2310ef7 3527 char com;
Kujira 0:1977c2310ef7 3528 short sdata;
Kujira 0:1977c2310ef7 3529
Kujira 0:1977c2310ef7 3530 switch(ch) {
Kujira 0:1977c2310ef7 3531 case 0:
Kujira 0:1977c2310ef7 3532 //ver1.2.0
Kujira 0:1977c2310ef7 3533 if (RL_EN == 1) {
Kujira 0:1977c2310ef7 3534 io[6] = 1; //外付けリレーON
Kujira 0:1977c2310ef7 3535 wait(TIME_RELAY_ON);
Kujira 0:1977c2310ef7 3536 }
Kujira 0:1977c2310ef7 3537 //up to here
Kujira 0:1977c2310ef7 3538
Kujira 0:1977c2310ef7 3539 com = adc_config(0,0);//ch1(adc),12bit
Kujira 0:1977c2310ef7 3540 i2c.write( addr_ADC1, &com, 1);
Kujira 0:1977c2310ef7 3541 wait(0.1);
Kujira 0:1977c2310ef7 3542 sdata = read_adc(addr_ADC1);
Kujira 0:1977c2310ef7 3543 //ver1.2.0
Kujira 0:1977c2310ef7 3544 if (RL_EN == 1) {
Kujira 0:1977c2310ef7 3545 io[6] = 0 ;
Kujira 0:1977c2310ef7 3546 }
Kujira 0:1977c2310ef7 3547
Kujira 0:1977c2310ef7 3548 break;
Kujira 0:1977c2310ef7 3549
Kujira 0:1977c2310ef7 3550 case 1:
Kujira 0:1977c2310ef7 3551 //ver1.2.0
Kujira 0:1977c2310ef7 3552 if (RL_EN == 1) {
Kujira 0:1977c2310ef7 3553 io[7] = 1; //外付けリレーON
Kujira 0:1977c2310ef7 3554 wait(TIME_RELAY_ON);
Kujira 0:1977c2310ef7 3555 }
Kujira 0:1977c2310ef7 3556 //up to here
Kujira 0:1977c2310ef7 3557
Kujira 0:1977c2310ef7 3558 com = adc_config(1,0);//ch2(adc),12bit
Kujira 0:1977c2310ef7 3559 i2c.write( addr_ADC1, &com, 1);
Kujira 0:1977c2310ef7 3560 wait(0.1);
Kujira 0:1977c2310ef7 3561 sdata = read_adc(addr_ADC1);
Kujira 0:1977c2310ef7 3562 //ver1.2.0
Kujira 0:1977c2310ef7 3563 if (RL_EN == 1) {
Kujira 0:1977c2310ef7 3564 io[7] = 0;
Kujira 0:1977c2310ef7 3565 }
Kujira 0:1977c2310ef7 3566
Kujira 0:1977c2310ef7 3567 break;
Kujira 0:1977c2310ef7 3568
Kujira 0:1977c2310ef7 3569 case 2:
Kujira 0:1977c2310ef7 3570 com = adc_config(0,0);//ch1(adc),12bit
Kujira 0:1977c2310ef7 3571 i2c.write( addr_ADC2, &com, 1);
Kujira 0:1977c2310ef7 3572 wait(0.1);
Kujira 0:1977c2310ef7 3573 sdata = read_adc(addr_ADC2);
Kujira 0:1977c2310ef7 3574 break;
Kujira 0:1977c2310ef7 3575 case 3:
Kujira 0:1977c2310ef7 3576 com = adc_config(1,0);//ch2(adc),12bit
Kujira 0:1977c2310ef7 3577 i2c.write( addr_ADC2, &com, 1);
Kujira 0:1977c2310ef7 3578 wait(0.1);
Kujira 0:1977c2310ef7 3579 sdata = read_adc(addr_ADC2);
Kujira 0:1977c2310ef7 3580 break;
Kujira 0:1977c2310ef7 3581 }// end switch
Kujira 0:1977c2310ef7 3582
Kujira 0:1977c2310ef7 3583 //検出用抵抗値を代入して、測定抵抗値を算出する(単位はmV,Ω)
Kujira 0:1977c2310ef7 3584 if ( sdata < res_vref ) {
Kujira 0:1977c2310ef7 3585 sdata =( rsense * sdata ) / ( res_vref - sdata);
Kujira 0:1977c2310ef7 3586 } else {
Kujira 0:1977c2310ef7 3587 sdata = res_vref;//overload
Kujira 0:1977c2310ef7 3588 }
Kujira 0:1977c2310ef7 3589
Kujira 0:1977c2310ef7 3590
Kujira 0:1977c2310ef7 3591 return ( sdata );
Kujira 0:1977c2310ef7 3592 }
Kujira 0:1977c2310ef7 3593
Kujira 0:1977c2310ef7 3594
Kujira 0:1977c2310ef7 3595 /*********************************
Kujira 0:1977c2310ef7 3596
Kujira 0:1977c2310ef7 3597 display resistor
Kujira 0:1977c2310ef7 3598 測定抵抗値を表示する
Kujira 0:1977c2310ef7 3599
Kujira 0:1977c2310ef7 3600 *********************************/
Kujira 0:1977c2310ef7 3601 void display_resistor(short sdata)//測定値を表示する。
Kujira 0:1977c2310ef7 3602 {
Kujira 0:1977c2310ef7 3603 if ( sdata < res_vref && sdata >= 0 ) {
Kujira 0:1977c2310ef7 3604 gu_putdec(&sdata);
Kujira 0:1977c2310ef7 3605 } else {
Kujira 0:1977c2310ef7 3606 gu_print1(" OL ");//overload
Kujira 0:1977c2310ef7 3607 }
Kujira 0:1977c2310ef7 3608 gu_onebyte(0xEA);//ohm
Kujira 0:1977c2310ef7 3609 }
Kujira 0:1977c2310ef7 3610
Kujira 0:1977c2310ef7 3611 /**************************************
Kujira 0:1977c2310ef7 3612 4バイトを10進数で表示する 0~9999
Kujira 0:1977c2310ef7 3613 **************************************/
Kujira 0:1977c2310ef7 3614 void gu_putdec(short* x)
Kujira 0:1977c2310ef7 3615 {
Kujira 0:1977c2310ef7 3616
Kujira 0:1977c2310ef7 3617 char cmd[4];
Kujira 0:1977c2310ef7 3618
Kujira 0:1977c2310ef7 3619 //cmd[0] = (( *x / 100000 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3620 cmd[0] = (( *x / 1000 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3621 cmd[1] = (( *x / 100 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3622 cmd[2] = (( *x / 10 ) % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3623 cmd[3] = ( *x % 10 ) + 0x30;
Kujira 0:1977c2310ef7 3624
Kujira 0:1977c2310ef7 3625 i2c.write(addr_gu, cmd, 4);
Kujira 0:1977c2310ef7 3626
Kujira 0:1977c2310ef7 3627 }
Kujira 0:1977c2310ef7 3628 /*********************************
Kujira 0:1977c2310ef7 3629
Kujira 0:1977c2310ef7 3630 LED 照度
Kujira 0:1977c2310ef7 3631 設定読込~反映
Kujira 0:1977c2310ef7 3632 //メモリから設定値を読み出して、LEDのPWMのDutyを設定する
Kujira 0:1977c2310ef7 3633 //LED1設定値&LED2設定値の計2Byte読込
Kujira 0:1977c2310ef7 3634
Kujira 0:1977c2310ef7 3635 *********************************/
Kujira 0:1977c2310ef7 3636 void read_syoudo(char* c)
Kujira 0:1977c2310ef7 3637 {
Kujira 0:1977c2310ef7 3638 char cmd; //gu-DへのI2Cコマンド用配列 1byte0
Kujira 0:1977c2310ef7 3639 //char csyoudo[4];//led出力用pwm duty 設定比1バイト255段階
Kujira 0:1977c2310ef7 3640 float duty_pwm; //pwm パーセンテージ
Kujira 0:1977c2310ef7 3641 int i;
Kujira 0:1977c2310ef7 3642
Kujira 0:1977c2310ef7 3643 //
Kujira 0:1977c2310ef7 3644 //メモリ10h番地(照度設定データ)読み出し
Kujira 0:1977c2310ef7 3645 cmd = 0x10;
Kujira 0:1977c2310ef7 3646 i2c.write (fixed_adrs, &cmd, 1,true); //読込先頭アドレス指定 ReStart
Kujira 0:1977c2310ef7 3647 i2c.read ((fixed_adrs + 0x01), rdata, 4);//read 1byte
Kujira 0:1977c2310ef7 3648
Kujira 0:1977c2310ef7 3649 for ( i = 0; i <=3; i++) {
Kujira 0:1977c2310ef7 3650 c[i] = rdata[i];
Kujira 0:1977c2310ef7 3651 }
Kujira 0:1977c2310ef7 3652
Kujira 0:1977c2310ef7 3653 //set pwm duty
Kujira 0:1977c2310ef7 3654 for ( i = 0; i <= ( number_of_channels - 1 ); i++) {
Kujira 0:1977c2310ef7 3655
Kujira 0:1977c2310ef7 3656 if(c[i] == 0x00) {
Kujira 0:1977c2310ef7 3657 c[i] = 0x32;
Kujira 0:1977c2310ef7 3658 }
Kujira 0:1977c2310ef7 3659
Kujira 0:1977c2310ef7 3660 duty_pwm = COP * c[i];
Kujira 0:1977c2310ef7 3661
Kujira 0:1977c2310ef7 3662 leds[i].write (duty_pwm);//Set Duty
Kujira 0:1977c2310ef7 3663 }
Kujira 0:1977c2310ef7 3664 }
Kujira 0:1977c2310ef7 3665 /*********************************
Kujira 0:1977c2310ef7 3666
Kujira 0:1977c2310ef7 3667 LED 照度調整 (Main)
Kujira 0:1977c2310ef7 3668
Kujira 0:1977c2310ef7 3669 *********************************/
Kujira 0:1977c2310ef7 3670 void adjust_illumination()
Kujira 0:1977c2310ef7 3671 {
Kujira 0:1977c2310ef7 3672 char cmd_gu[32] ; //gu-DへのI2Cコマンド用配列 1byte0
Kujira 0:1977c2310ef7 3673 //char *pcmd = cmd_gu;
Kujira 0:1977c2310ef7 3674 //char msg;
Kujira 0:1977c2310ef7 3675 //char *pmsg = &msg;
Kujira 0:1977c2310ef7 3676 char crdata[3];
Kujira 0:1977c2310ef7 3677 char cswnum; //SW_No. sw1->0x00 ~~ sw32->0x1F gu-D スイッチNo.
Kujira 0:1977c2310ef7 3678 char cswdata; // 0x00 or 0x01 ONかOFFか
Kujira 0:1977c2310ef7 3679 char *pcswnum = &cswnum;
Kujira 0:1977c2310ef7 3680 char *pcswdata = &cswdata;
Kujira 0:1977c2310ef7 3681 char csyoudo[4];//led出力用pwm duty 設定比1バイト255段階
Kujira 0:1977c2310ef7 3682 char ch;
Kujira 0:1977c2310ef7 3683 float duty_pwm;//pwm パーセンテージ
Kujira 0:1977c2310ef7 3684 int i;
Kujira 0:1977c2310ef7 3685 int x[4] = {64,64,192,192}; //レベル値の表示位置 x座標
Kujira 0:1977c2310ef7 3686 int y[4] = {2,4,2,4}; //レベル値の表示位置 y座標
Kujira 0:1977c2310ef7 3687 //
Kujira 0:1977c2310ef7 3688 //EEPROMから照度データ読込とPWMDUTYセット
Kujira 0:1977c2310ef7 3689 read_syoudo( csyoudo );
Kujira 0:1977c2310ef7 3690 //
Kujira 0:1977c2310ef7 3691 //画面表示
Kujira 0:1977c2310ef7 3692 gu_cls();//画面のクリア
Kujira 0:1977c2310ef7 3693 gu_fontsize(2);
Kujira 0:1977c2310ef7 3694 gu_print1("Adjust illumination ");
Kujira 0:1977c2310ef7 3695 //照度レベルを256段階で表示
Kujira 0:1977c2310ef7 3696 //LED1
Kujira 0:1977c2310ef7 3697 gu_cursor(0,16/8);
Kujira 0:1977c2310ef7 3698 gu_print1("LED1 Lv ");
Kujira 0:1977c2310ef7 3699 //LED2
Kujira 0:1977c2310ef7 3700 gu_cursor(0,32/8);
Kujira 0:1977c2310ef7 3701 gu_print1("LED2 Lv ");
Kujira 0:1977c2310ef7 3702 //LED3
Kujira 0:1977c2310ef7 3703 if( number_of_channels >= 3 ) {
Kujira 0:1977c2310ef7 3704 gu_cursor(128,2);
Kujira 0:1977c2310ef7 3705 gu_print1("LED3 Lv ");
Kujira 0:1977c2310ef7 3706 }
Kujira 0:1977c2310ef7 3707 //LED4
Kujira 0:1977c2310ef7 3708 if( number_of_channels >= 4 ) {
Kujira 0:1977c2310ef7 3709 gu_cursor(128,4);
Kujira 0:1977c2310ef7 3710 gu_print1("LED4 Lv ");
Kujira 0:1977c2310ef7 3711 }
Kujira 0:1977c2310ef7 3712 //
Kujira 0:1977c2310ef7 3713 for ( i = 0; i <= ( number_of_channels - 1 ); i++) {
Kujira 0:1977c2310ef7 3714
Kujira 0:1977c2310ef7 3715 gu_cursor(x[i],y[i]);
Kujira 0:1977c2310ef7 3716
Kujira 0:1977c2310ef7 3717 cmd_gu[0] = ((csyoudo[i] / 100) & 0xFF) + 0x30;
Kujira 0:1977c2310ef7 3718 cmd_gu[1] = (csyoudo[i] - (csyoudo[i] / 100) * 100) / 10 + 0x30;
Kujira 0:1977c2310ef7 3719 cmd_gu[2] = ((csyoudo[i] % 10) & 0xFF) + 0x30;
Kujira 0:1977c2310ef7 3720 i2c.write(addr_gu, cmd_gu, 3);
Kujira 0:1977c2310ef7 3721 }
Kujira 0:1977c2310ef7 3722
Kujira 0:1977c2310ef7 3723 //
Kujira 0:1977c2310ef7 3724 gu_fontsize(1);
Kujira 0:1977c2310ef7 3725 gu_cursor(0,56/8);
Kujira 0:1977c2310ef7 3726 gu_print1("LED1");
Kujira 0:1977c2310ef7 3727 gu_cursor(32,56/8);
Kujira 0:1977c2310ef7 3728 gu_print1("fine");
Kujira 0:1977c2310ef7 3729 gu_cursor(64,56/8);
Kujira 0:1977c2310ef7 3730 gu_print1("LED2");
Kujira 0:1977c2310ef7 3731 gu_cursor(96,56/8);
Kujira 0:1977c2310ef7 3732 gu_print1("fine");
Kujira 0:1977c2310ef7 3733
Kujira 0:1977c2310ef7 3734 if( number_of_channels >= 3) {
Kujira 0:1977c2310ef7 3735 gu_cursor(128,56/8);
Kujira 0:1977c2310ef7 3736 gu_print1("LED3");
Kujira 0:1977c2310ef7 3737 gu_cursor(160,56/8);
Kujira 0:1977c2310ef7 3738 gu_print1("fine");
Kujira 0:1977c2310ef7 3739 }
Kujira 0:1977c2310ef7 3740 if( number_of_channels >= 4) {
Kujira 0:1977c2310ef7 3741 gu_cursor(192,56/8);
Kujira 0:1977c2310ef7 3742 gu_print1("LED4");
Kujira 0:1977c2310ef7 3743 gu_cursor(224,56/8);
Kujira 0:1977c2310ef7 3744 gu_print1("fine");
Kujira 0:1977c2310ef7 3745 }
Kujira 0:1977c2310ef7 3746 //
Kujira 0:1977c2310ef7 3747 //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 3748 cmd_gu[0]= 0x1F;
Kujira 0:1977c2310ef7 3749 cmd_gu[1]= 0x4B;
Kujira 0:1977c2310ef7 3750 cmd_gu[2]= 0x18;
Kujira 0:1977c2310ef7 3751 cmd_gu[3]= 0x02;//SW状態変化時自動送信モード2
Kujira 0:1977c2310ef7 3752 i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 3753 //
Kujira 0:1977c2310ef7 3754 //ボタンイメージの表示
Kujira 0:1977c2310ef7 3755 for ( i = 17; i < 17 + ( number_of_channels * 2 ); i++) {
Kujira 0:1977c2310ef7 3756 gu_button_up(i);
Kujira 0:1977c2310ef7 3757 }
Kujira 0:1977c2310ef7 3758 for ( i = 25; i < 25 + ( number_of_channels * 2 ); i++) {
Kujira 0:1977c2310ef7 3759 gu_button_down(i);
Kujira 0:1977c2310ef7 3760 }
Kujira 0:1977c2310ef7 3761 gu_Button_power_on();//show button
Kujira 0:1977c2310ef7 3762 wait(0.2);
Kujira 0:1977c2310ef7 3763
Kujira 0:1977c2310ef7 3764 while(1) {
Kujira 0:1977c2310ef7 3765
Kujira 0:1977c2310ef7 3766 i2c.read ((addr_gu + 0x01), crdata, 3);
Kujira 0:1977c2310ef7 3767
Kujira 0:1977c2310ef7 3768 if (crdata[0] == 0x11 ) { //個別タッチスイッチ状態読み出しフォーマット。識別子11h。
Kujira 0:1977c2310ef7 3769 *pcswnum = crdata[1]; //スイッチ番号
Kujira 0:1977c2310ef7 3770 *pcswdata = crdata[2];//ON/OFF情報
Kujira 0:1977c2310ef7 3771
Kujira 0:1977c2310ef7 3772 if (cswdata == 0x01) { //タッチしたならば
Kujira 0:1977c2310ef7 3773
Kujira 0:1977c2310ef7 3774 switch ( number_of_channels ) { //ver1.1.0
Kujira 0:1977c2310ef7 3775
Kujira 0:1977c2310ef7 3776 case 1:
Kujira 0:1977c2310ef7 3777 case 2:
Kujira 0:1977c2310ef7 3778 if ( cswnum >= 20 && cswnum <= 23 )
Kujira 0:1977c2310ef7 3779 cswnum = 0;
Kujira 0:1977c2310ef7 3780
Kujira 0:1977c2310ef7 3781 if ( cswnum >= 28 && cswnum <= 31 )
Kujira 0:1977c2310ef7 3782 cswnum = 0;
Kujira 0:1977c2310ef7 3783
Kujira 0:1977c2310ef7 3784 break;
Kujira 0:1977c2310ef7 3785
Kujira 0:1977c2310ef7 3786 case 3:
Kujira 0:1977c2310ef7 3787 if ( cswnum >= 22 && cswnum <= 23 )
Kujira 0:1977c2310ef7 3788 cswnum = 0;
Kujira 0:1977c2310ef7 3789
Kujira 0:1977c2310ef7 3790 if ( cswnum >= 30 && cswnum <= 31 )
Kujira 0:1977c2310ef7 3791 cswnum = 0;
Kujira 0:1977c2310ef7 3792
Kujira 0:1977c2310ef7 3793 break;
Kujira 0:1977c2310ef7 3794
Kujira 0:1977c2310ef7 3795 } //switch
Kujira 0:1977c2310ef7 3796
Kujira 0:1977c2310ef7 3797 switch( cswnum ) { //SWの番号(位置)
Kujira 0:1977c2310ef7 3798
Kujira 0:1977c2310ef7 3799 case 22:
Kujira 0:1977c2310ef7 3800 case 20:
Kujira 0:1977c2310ef7 3801 case 16:
Kujira 0:1977c2310ef7 3802 case 18:
Kujira 0:1977c2310ef7 3803
Kujira 0:1977c2310ef7 3804 ch = ( cswnum - 16 ) / 2; //SWnoから選択したLEDNoの算出
Kujira 0:1977c2310ef7 3805
Kujira 0:1977c2310ef7 3806 gu_button_up_on( cswnum + 1 );
Kujira 0:1977c2310ef7 3807 wait(0.2);
Kujira 0:1977c2310ef7 3808 gu_button_up( cswnum + 1 );
Kujira 0:1977c2310ef7 3809 wait(0.1);
Kujira 0:1977c2310ef7 3810
Kujira 0:1977c2310ef7 3811 if(csyoudo[ch] <= 0xEF ) {
Kujira 0:1977c2310ef7 3812 csyoudo[ch] = csyoudo[ch] + 0x0A;
Kujira 0:1977c2310ef7 3813 }
Kujira 0:1977c2310ef7 3814
Kujira 0:1977c2310ef7 3815 break;
Kujira 0:1977c2310ef7 3816
Kujira 0:1977c2310ef7 3817 case 23:
Kujira 0:1977c2310ef7 3818 case 21:
Kujira 0:1977c2310ef7 3819 case 17:
Kujira 0:1977c2310ef7 3820 case 19:
Kujira 0:1977c2310ef7 3821
Kujira 0:1977c2310ef7 3822 ch = ( cswnum - 17 ) / 2; //SWnoから選択したLEDNoの算出
Kujira 0:1977c2310ef7 3823
Kujira 0:1977c2310ef7 3824 gu_button_up_on( cswnum + 1 );
Kujira 0:1977c2310ef7 3825 wait(0.2);
Kujira 0:1977c2310ef7 3826 gu_button_up( cswnum + 1 );
Kujira 0:1977c2310ef7 3827 wait(0.1);
Kujira 0:1977c2310ef7 3828
Kujira 0:1977c2310ef7 3829 if(csyoudo[ch] <= 0xFF ) {
Kujira 0:1977c2310ef7 3830 csyoudo[ch] = csyoudo[ch] + 0x01;
Kujira 0:1977c2310ef7 3831 }
Kujira 0:1977c2310ef7 3832
Kujira 0:1977c2310ef7 3833 break;
Kujira 0:1977c2310ef7 3834
Kujira 0:1977c2310ef7 3835 case 24:
Kujira 0:1977c2310ef7 3836 case 26:
Kujira 0:1977c2310ef7 3837 case 28:
Kujira 0:1977c2310ef7 3838 case 30:
Kujira 0:1977c2310ef7 3839
Kujira 0:1977c2310ef7 3840 ch = ( cswnum - 24 ) / 2; //SWnoから選択したLEDNoの算出
Kujira 0:1977c2310ef7 3841
Kujira 0:1977c2310ef7 3842 gu_button_down_on( cswnum + 1 );
Kujira 0:1977c2310ef7 3843 wait(0.2);
Kujira 0:1977c2310ef7 3844 gu_button_down( cswnum + 1 );
Kujira 0:1977c2310ef7 3845 wait(0.1);
Kujira 0:1977c2310ef7 3846
Kujira 0:1977c2310ef7 3847 if(csyoudo[ch] >= 0x0A ) {
Kujira 0:1977c2310ef7 3848 csyoudo[ch] = csyoudo[ch] - 0x0A;
Kujira 0:1977c2310ef7 3849 }
Kujira 0:1977c2310ef7 3850
Kujira 0:1977c2310ef7 3851 break;
Kujira 0:1977c2310ef7 3852
Kujira 0:1977c2310ef7 3853 case 25:
Kujira 0:1977c2310ef7 3854 case 27:
Kujira 0:1977c2310ef7 3855 case 29:
Kujira 0:1977c2310ef7 3856 case 31:
Kujira 0:1977c2310ef7 3857
Kujira 0:1977c2310ef7 3858 ch = ( cswnum - 24 ) / 2; //SWnoから選択したLEDNoの算出
Kujira 0:1977c2310ef7 3859
Kujira 0:1977c2310ef7 3860 gu_button_down_on( cswnum + 1 );
Kujira 0:1977c2310ef7 3861 wait(0.2);
Kujira 0:1977c2310ef7 3862 gu_button_down( cswnum + 1 );
Kujira 0:1977c2310ef7 3863 wait(0.1);
Kujira 0:1977c2310ef7 3864
Kujira 0:1977c2310ef7 3865 if(csyoudo[ch] >= 0x01 ) {
Kujira 0:1977c2310ef7 3866 csyoudo[ch] = csyoudo[ch] - 0x01;
Kujira 0:1977c2310ef7 3867 }
Kujira 0:1977c2310ef7 3868
Kujira 0:1977c2310ef7 3869 break;
Kujira 0:1977c2310ef7 3870
Kujira 0:1977c2310ef7 3871 case 7 ://SW.8 保存ボタンを押すと現在の輝度をEEPROMへ保存する
Kujira 0:1977c2310ef7 3872
Kujira 0:1977c2310ef7 3873 wdata[0] = 0x10 ; //word address 書込み先頭アドレス指定
Kujira 0:1977c2310ef7 3874
Kujira 0:1977c2310ef7 3875 for ( i = 0; i <= ( number_of_channels - 1 ); i++) {
Kujira 0:1977c2310ef7 3876 wdata[ i + 1 ] = csyoudo[i]; //DATA_LED i
Kujira 0:1977c2310ef7 3877 }
Kujira 0:1977c2310ef7 3878
Kujira 0:1977c2310ef7 3879 Soushin = i2c.write (fixed_adrs, wdata,( number_of_channels + 1 ));
Kujira 0:1977c2310ef7 3880
Kujira 0:1977c2310ef7 3881 if(Soushin == 0) {
Kujira 0:1977c2310ef7 3882 gu_Button_power_off();//電源ボタンイメージ反転表示
Kujira 0:1977c2310ef7 3883 wait(0.3);
Kujira 0:1977c2310ef7 3884
Kujira 0:1977c2310ef7 3885 return;//照度調整ルーチンを抜ける
Kujira 0:1977c2310ef7 3886 }
Kujira 0:1977c2310ef7 3887 } //switch
Kujira 0:1977c2310ef7 3888
Kujira 0:1977c2310ef7 3889
Kujira 0:1977c2310ef7 3890
Kujira 0:1977c2310ef7 3891 //PWMのDUTY設定
Kujira 0:1977c2310ef7 3892
Kujira 0:1977c2310ef7 3893 for( i = 0; i <= ( number_of_channels - 1 ); i++) {
Kujira 0:1977c2310ef7 3894 duty_pwm = COP * csyoudo[i];
Kujira 0:1977c2310ef7 3895 leds[i].write (duty_pwm);//Set Duty
Kujira 0:1977c2310ef7 3896 }
Kujira 0:1977c2310ef7 3897
Kujira 0:1977c2310ef7 3898
Kujira 0:1977c2310ef7 3899 //照度レベルを256段階で表示
Kujira 0:1977c2310ef7 3900 //LED1
Kujira 0:1977c2310ef7 3901 gu_fontsize(2);
Kujira 0:1977c2310ef7 3902
Kujira 0:1977c2310ef7 3903 for ( i = 0; i <= ( number_of_channels - 1 ); i++) {
Kujira 0:1977c2310ef7 3904
Kujira 0:1977c2310ef7 3905 gu_cursor(x[i],y[i]);
Kujira 0:1977c2310ef7 3906
Kujira 0:1977c2310ef7 3907 cmd_gu[0] = ((csyoudo[i] / 100) & 0xFF) + 0x30;
Kujira 0:1977c2310ef7 3908 cmd_gu[1] = (csyoudo[i] - (csyoudo[i] / 100) * 100) / 10 + 0x30;
Kujira 0:1977c2310ef7 3909 cmd_gu[2] = ((csyoudo[i] % 10) & 0xFF) + 0x30;
Kujira 0:1977c2310ef7 3910 i2c.write(addr_gu, cmd_gu, 3);
Kujira 0:1977c2310ef7 3911 }
Kujira 0:1977c2310ef7 3912 }
Kujira 0:1977c2310ef7 3913 } //if
Kujira 0:1977c2310ef7 3914
Kujira 0:1977c2310ef7 3915 wait(0.1);//gu-D 読込間隔の設定
Kujira 0:1977c2310ef7 3916
Kujira 0:1977c2310ef7 3917 }
Kujira 0:1977c2310ef7 3918 }
Kujira 0:1977c2310ef7 3919
Kujira 0:1977c2310ef7 3920 /*********************************
Kujira 0:1977c2310ef7 3921
Kujira 0:1977c2310ef7 3922 サブ基板LED(判定用)全消灯
Kujira 0:1977c2310ef7 3923
Kujira 0:1977c2310ef7 3924 *********************************/
Kujira 0:1977c2310ef7 3925 void led_off()
Kujira 0:1977c2310ef7 3926 {
Kujira 0:1977c2310ef7 3927 int i;
Kujira 0:1977c2310ef7 3928
Kujira 0:1977c2310ef7 3929 for( i = 0; i <= ( number_of_channels - 1 ); i++) {
Kujira 0:1977c2310ef7 3930 led_green[ i ] = 0;
Kujira 0:1977c2310ef7 3931 led_red[ i ] = 0;
Kujira 0:1977c2310ef7 3932 }
Kujira 0:1977c2310ef7 3933
Kujira 0:1977c2310ef7 3934 }
Kujira 0:1977c2310ef7 3935 /*********************************
Kujira 0:1977c2310ef7 3936
Kujira 0:1977c2310ef7 3937 Utility Main
Kujira 0:1977c2310ef7 3938 gu_D 輝度調整 タッチ感度調整
Kujira 0:1977c2310ef7 3939
Kujira 0:1977c2310ef7 3940 *********************************/
Kujira 0:1977c2310ef7 3941 void utility() //輝度調整サブルーチン
Kujira 0:1977c2310ef7 3942 {
Kujira 0:1977c2310ef7 3943
Kujira 0:1977c2310ef7 3944 char cmd_gu[32] ; //gu-DへのI2Cコマンド用配列 1byte0
Kujira 0:1977c2310ef7 3945 //char *pcmd = cmd_gu;
Kujira 0:1977c2310ef7 3946 char clumi; //輝度設定用変数 01h<=n<=08h
Kujira 0:1977c2310ef7 3947 char* pclumi = &clumi; //ポインタの定義
Kujira 0:1977c2310ef7 3948 char msg;
Kujira 0:1977c2310ef7 3949 char *pmsg = &msg;
Kujira 0:1977c2310ef7 3950 char crdata[3];
Kujira 0:1977c2310ef7 3951 char cswnum; //SW_No. sw1->0x00 ~~ sw32->0x1F
Kujira 0:1977c2310ef7 3952 char cswdata; // 0x00 or 0x01
Kujira 0:1977c2310ef7 3953 char *pcswnum = &cswnum;
Kujira 0:1977c2310ef7 3954 char *pcswdata = &cswdata;
Kujira 0:1977c2310ef7 3955 //
Kujira 0:1977c2310ef7 3956 //メモリ00h番地(輝度設定データ)読み出し
Kujira 0:1977c2310ef7 3957 wdata[0] = 0x00;
Kujira 0:1977c2310ef7 3958 Soushin = i2c.write (fixed_adrs, wdata, 1,true); //読込先頭アドレス指定 ReStart
Kujira 0:1977c2310ef7 3959 Jyushin = i2c.read ((fixed_adrs + 0x01), rdata, 1);//read 1byte
Kujira 0:1977c2310ef7 3960 *pclumi = rdata[0];
Kujira 0:1977c2310ef7 3961
Kujira 0:1977c2310ef7 3962 //輝度設定更新
Kujira 0:1977c2310ef7 3963 if(*pclumi==0x00 || *pclumi > 0x08) *pclumi=0x05;
Kujira 0:1977c2310ef7 3964 gu_luminance(pclumi);
Kujira 0:1977c2310ef7 3965
Kujira 0:1977c2310ef7 3966 //画面表示
Kujira 0:1977c2310ef7 3967 gu_cls();//画面のクリア
Kujira 0:1977c2310ef7 3968 gu_print1("Set Display Brightness");
Kujira 0:1977c2310ef7 3969 gu_cursor(0,16/8);
Kujira 0:1977c2310ef7 3970 gu_print1("LEVEL ");
Kujira 0:1977c2310ef7 3971 *pmsg = *pclumi + 0x30;
Kujira 0:1977c2310ef7 3972 gu_print1(pmsg);
Kujira 0:1977c2310ef7 3973
Kujira 0:1977c2310ef7 3974 gu_cursor(0,96/8); //ver1.1.0
Kujira 0:1977c2310ef7 3975 gu_print1("DELETE EEPROM_DATA");
Kujira 0:1977c2310ef7 3976 gu_set_button_font1(30,"del");
Kujira 0:1977c2310ef7 3977
Kujira 0:1977c2310ef7 3978 //SW状態変化時自動送信モード2
Kujira 0:1977c2310ef7 3979 cmd_gu[0]= 0x1F;
Kujira 0:1977c2310ef7 3980 cmd_gu[1]= 0x4B;
Kujira 0:1977c2310ef7 3981 cmd_gu[2]= 0x18;
Kujira 0:1977c2310ef7 3982 cmd_gu[3]= 0x02;
Kujira 0:1977c2310ef7 3983 i2c.write(addr_gu, cmd_gu, 4); //gu-D タッチスイッチ読み出し動作設定 p49
Kujira 0:1977c2310ef7 3984
Kujira 0:1977c2310ef7 3985 //ボタンイメージの表示
Kujira 0:1977c2310ef7 3986 gu_button_up(6);//show button
Kujira 0:1977c2310ef7 3987 gu_button_down(14);//show button
Kujira 0:1977c2310ef7 3988 gu_Button_power_on();//show button
Kujira 0:1977c2310ef7 3989
Kujira 0:1977c2310ef7 3990 while(1) {
Kujira 0:1977c2310ef7 3991
Kujira 0:1977c2310ef7 3992 i2c.read ((addr_gu + 0x01), crdata, 3, true);
Kujira 0:1977c2310ef7 3993
Kujira 0:1977c2310ef7 3994 if (crdata[0] == 0x11 ) { //個別タッチスイッチ状態読み出しフォーマット。識別子11h。
Kujira 0:1977c2310ef7 3995 *pcswnum = crdata[1]; //スイッチ番号
Kujira 0:1977c2310ef7 3996 *pcswdata = crdata[2];//ON/OFF情報
Kujira 0:1977c2310ef7 3997
Kujira 0:1977c2310ef7 3998 if (cswdata == 0x01) { //タッチしたならば
Kujira 0:1977c2310ef7 3999 switch( cswnum ) { //SWの番号(位置)
Kujira 0:1977c2310ef7 4000 case 5 ://SW6
Kujira 0:1977c2310ef7 4001 gu_button_up_on( 6 );
Kujira 0:1977c2310ef7 4002 wait(0.2);
Kujira 0:1977c2310ef7 4003 gu_button_up( 6 );
Kujira 0:1977c2310ef7 4004 wait(0.1);
Kujira 0:1977c2310ef7 4005
Kujira 0:1977c2310ef7 4006 if(clumi < 8 ) *pclumi = *pclumi + 1;
Kujira 0:1977c2310ef7 4007
Kujira 0:1977c2310ef7 4008 break;
Kujira 0:1977c2310ef7 4009
Kujira 0:1977c2310ef7 4010 case 13 ://SW14
Kujira 0:1977c2310ef7 4011 gu_button_down_on( 14 );
Kujira 0:1977c2310ef7 4012 wait(0.2);
Kujira 0:1977c2310ef7 4013 gu_button_down( 14 );
Kujira 0:1977c2310ef7 4014 wait(0.1);
Kujira 0:1977c2310ef7 4015
Kujira 0:1977c2310ef7 4016 if(clumi >= 1 ) *pclumi = *pclumi - 1;
Kujira 0:1977c2310ef7 4017
Kujira 0:1977c2310ef7 4018 break;
Kujira 0:1977c2310ef7 4019
Kujira 0:1977c2310ef7 4020 case 29: //SW30
Kujira 0:1977c2310ef7 4021
Kujira 0:1977c2310ef7 4022 gu_reverse(0x01); //gu_リバース指定
Kujira 0:1977c2310ef7 4023 gu_set_button_font1(30,"del");
Kujira 0:1977c2310ef7 4024 gu_reverse(0x00); //gu_リバース解除
Kujira 0:1977c2310ef7 4025
Kujira 0:1977c2310ef7 4026 erace_calinfo();
Kujira 0:1977c2310ef7 4027
Kujira 0:1977c2310ef7 4028 gu_set_button_font1(30,"del");
Kujira 0:1977c2310ef7 4029
Kujira 0:1977c2310ef7 4030 break;
Kujira 0:1977c2310ef7 4031
Kujira 0:1977c2310ef7 4032 case 0x07 ://保存ボタンを押すと現在の輝度をEEPROMへ保存する
Kujira 0:1977c2310ef7 4033
Kujira 0:1977c2310ef7 4034 wdata[0] = 0x00 ; //word address 書込み先頭アドレス指定
Kujira 0:1977c2310ef7 4035 wdata[1] = *pclumi ; //DATA
Kujira 0:1977c2310ef7 4036 Soushin = i2c.write (fixed_adrs, wdata, 2);
Kujira 0:1977c2310ef7 4037
Kujira 0:1977c2310ef7 4038 if(Soushin == 0) {
Kujira 0:1977c2310ef7 4039 gu_Button_power_off();//電源ボタンイメージ反転表示
Kujira 0:1977c2310ef7 4040 wait(0.5);
Kujira 0:1977c2310ef7 4041 return;//輝度調整ルーチンを抜ける
Kujira 0:1977c2310ef7 4042 }
Kujira 0:1977c2310ef7 4043
Kujira 0:1977c2310ef7 4044 } //switch
Kujira 0:1977c2310ef7 4045
Kujira 0:1977c2310ef7 4046 gu_luminance(pclumi);//輝度変更
Kujira 0:1977c2310ef7 4047 gu_cursor(0,16/8);
Kujira 0:1977c2310ef7 4048 gu_print1("LEVEL ");
Kujira 0:1977c2310ef7 4049 *pmsg = *pclumi + 0x30;
Kujira 0:1977c2310ef7 4050 gu_print1(pmsg);
Kujira 0:1977c2310ef7 4051
Kujira 0:1977c2310ef7 4052 }
Kujira 0:1977c2310ef7 4053 } //if
Kujira 0:1977c2310ef7 4054
Kujira 0:1977c2310ef7 4055 wait(0.1);//gu-D 読込間隔の設定
Kujira 0:1977c2310ef7 4056
Kujira 0:1977c2310ef7 4057 }
Kujira 0:1977c2310ef7 4058 }
Kujira 0:1977c2310ef7 4059
Kujira 0:1977c2310ef7 4060 /*********************************
Kujira 0:1977c2310ef7 4061 gu_D グラフィックデータ
Kujira 0:1977c2310ef7 4062 *********************************/
Kujira 0:1977c2310ef7 4063 char gu_Button_MODE_data[] = {
Kujira 0:1977c2310ef7 4064 0x7F,0xF0,0x80,0x08,0x80,0x0C,0x80,0x0A,0x80,0x0A,0x80,0x0A,0x80,0x0A,0x80,0x0A,
Kujira 0:1977c2310ef7 4065 0x80,0x0A,0x80,0x0A,0x80,0x0A,0x80,0x0A,0x7F,0xF2,0x20,0x02,0x1F,0xFC,0x00,0x00,
Kujira 0:1977c2310ef7 4066 };
Kujira 0:1977c2310ef7 4067
Kujira 0:1977c2310ef7 4068 void gu_set_button(char sw_num,char* text)
Kujira 0:1977c2310ef7 4069 {
Kujira 0:1977c2310ef7 4070 char x;
Kujira 0:1977c2310ef7 4071 char y;
Kujira 0:1977c2310ef7 4072
Kujira 0:1977c2310ef7 4073 //SW_NoからSWの座標を求める
Kujira 0:1977c2310ef7 4074 x = ((sw_num - 1) % 8 ) * 32;
Kujira 0:1977c2310ef7 4075 y = ((sw_num - 1) / 8 ) * 32;
Kujira 0:1977c2310ef7 4076
Kujira 0:1977c2310ef7 4077 gu_drawButton(x,y,32,32, gu_Button_MODE_data );
Kujira 0:1977c2310ef7 4078
Kujira 0:1977c2310ef7 4079 // Change Font Size
Kujira 0:1977c2310ef7 4080 gu_fontsize(2);
Kujira 0:1977c2310ef7 4081 // set font width
Kujira 0:1977c2310ef7 4082 gu_fontWidth(Proportional1);
Kujira 0:1977c2310ef7 4083 gu_print_dot( x + 8,y + 8,text);
Kujira 0:1977c2310ef7 4084 // Change Font Size
Kujira 0:1977c2310ef7 4085 gu_fontsize(1);
Kujira 0:1977c2310ef7 4086 // set font width
Kujira 0:1977c2310ef7 4087 gu_fontWidth(1);
Kujira 0:1977c2310ef7 4088 }
Kujira 0:1977c2310ef7 4089
Kujira 0:1977c2310ef7 4090 void gu_set_button_font1(char sw_num,char* text)
Kujira 0:1977c2310ef7 4091 {
Kujira 0:1977c2310ef7 4092 char x;
Kujira 0:1977c2310ef7 4093 char y;
Kujira 0:1977c2310ef7 4094
Kujira 0:1977c2310ef7 4095 //SW_NoからSWの座標を求める
Kujira 0:1977c2310ef7 4096 x = ((sw_num - 1) % 8 ) * 32;
Kujira 0:1977c2310ef7 4097 y = ((sw_num - 1) / 8 ) * 32;
Kujira 0:1977c2310ef7 4098
Kujira 0:1977c2310ef7 4099 gu_drawButton(x,y,32,32, gu_Button_MODE_data );
Kujira 0:1977c2310ef7 4100
Kujira 0:1977c2310ef7 4101 // Change Font Size
Kujira 0:1977c2310ef7 4102 gu_fontsize(1);
Kujira 0:1977c2310ef7 4103 // set font width
Kujira 0:1977c2310ef7 4104 gu_fontWidth(1);
Kujira 0:1977c2310ef7 4105 gu_print_dot( x + 2,y + 10,text);
Kujira 0:1977c2310ef7 4106
Kujira 0:1977c2310ef7 4107 }
Kujira 0:1977c2310ef7 4108
Kujira 0:1977c2310ef7 4109 char gu_Button_up_data[] = {
Kujira 0:1977c2310ef7 4110 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x10,0x00,0x00,0x08,
Kujira 0:1977c2310ef7 4111 0x20,0x00,0x00,0x04,0x20,0x00,0x00,0x04,0x20,0x00,0x00,0x04,0x20,0x00,0x18,0x04,
Kujira 0:1977c2310ef7 4112 0x20,0x00,0x38,0x04,0x20,0x00,0x78,0x04,0x20,0x00,0xF8,0x04,0x20,0x01,0xF8,0x04,
Kujira 0:1977c2310ef7 4113 0x20,0x03,0xF8,0x04,0x20,0x07,0xF8,0x04,0x20,0x0F,0xF8,0x04,0x20,0x1F,0xF8,0x04,
Kujira 0:1977c2310ef7 4114 0x20,0x1F,0xF8,0x04,0x20,0x0F,0xF8,0x04,0x20,0x07,0xF8,0x04,0x20,0x03,0xF8,0x04,
Kujira 0:1977c2310ef7 4115 0x20,0x01,0xF8,0x04,0x20,0x00,0xF8,0x04,0x20,0x00,0x78,0x04,0x20,0x00,0x38,0x04,
Kujira 0:1977c2310ef7 4116 0x20,0x00,0x18,0x04,0x20,0x00,0x00,0x04,0x20,0x00,0x00,0x04,0x20,0x00,0x00,0x04,
Kujira 0:1977c2310ef7 4117 0x10,0x00,0x00,0x08,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Kujira 0:1977c2310ef7 4118 };
Kujira 0:1977c2310ef7 4119
Kujira 0:1977c2310ef7 4120 void gu_button_up(char sw_num)
Kujira 0:1977c2310ef7 4121 {
Kujira 0:1977c2310ef7 4122 char x;
Kujira 0:1977c2310ef7 4123 char y;
Kujira 0:1977c2310ef7 4124
Kujira 0:1977c2310ef7 4125 //SW_NoからSWの座標を求める
Kujira 0:1977c2310ef7 4126 x = ((sw_num - 1) % 8 ) * 32;
Kujira 0:1977c2310ef7 4127 y = ((sw_num - 1) / 8 ) * 32;
Kujira 0:1977c2310ef7 4128
Kujira 0:1977c2310ef7 4129 gu_cursor( x, y/8 );
Kujira 0:1977c2310ef7 4130 gu_RealTimeImage(32, 32, gu_Button_up_data);
Kujira 0:1977c2310ef7 4131 }
Kujira 0:1977c2310ef7 4132
Kujira 0:1977c2310ef7 4133 void gu_Button_up1()
Kujira 0:1977c2310ef7 4134 {
Kujira 0:1977c2310ef7 4135 gu_cursor(224,8);
Kujira 0:1977c2310ef7 4136 gu_RealTimeImage(32, 32, gu_Button_up_data);
Kujira 0:1977c2310ef7 4137 }
Kujira 0:1977c2310ef7 4138
Kujira 0:1977c2310ef7 4139 void gu_Button_up2()
Kujira 0:1977c2310ef7 4140 {
Kujira 0:1977c2310ef7 4141 gu_cursor(192,8);
Kujira 0:1977c2310ef7 4142 gu_RealTimeImage(32, 32, gu_Button_up_data);
Kujira 0:1977c2310ef7 4143 }
Kujira 0:1977c2310ef7 4144
Kujira 0:1977c2310ef7 4145 void gu_Button_up3()
Kujira 0:1977c2310ef7 4146 {
Kujira 0:1977c2310ef7 4147 gu_cursor(160,8);
Kujira 0:1977c2310ef7 4148 gu_RealTimeImage(32, 32, gu_Button_up_data);
Kujira 0:1977c2310ef7 4149 }
Kujira 0:1977c2310ef7 4150
Kujira 0:1977c2310ef7 4151 void gu_Button_up4()
Kujira 0:1977c2310ef7 4152 {
Kujira 0:1977c2310ef7 4153 gu_cursor(128,8);
Kujira 0:1977c2310ef7 4154 gu_RealTimeImage(32, 32, gu_Button_up_data);
Kujira 0:1977c2310ef7 4155 }
Kujira 0:1977c2310ef7 4156
Kujira 0:1977c2310ef7 4157 char gu_Button_down_data[] = {
Kujira 0:1977c2310ef7 4158 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x10,0x00,0x00,0x08,
Kujira 0:1977c2310ef7 4159 0x20,0x00,0x00,0x04,0x20,0x00,0x00,0x04,0x20,0x00,0x00,0x04,0x20,0x18,0x00,0x04,
Kujira 0:1977c2310ef7 4160 0x20,0x1C,0x00,0x04,0x20,0x1E,0x00,0x04,0x20,0x1F,0x00,0x04,0x20,0x1F,0x80,0x04,
Kujira 0:1977c2310ef7 4161 0x20,0x1F,0xC0,0x04,0x20,0x1F,0xE0,0x04,0x20,0x1F,0xF0,0x04,0x20,0x1F,0xF8,0x04,
Kujira 0:1977c2310ef7 4162 0x20,0x1F,0xF8,0x04,0x20,0x1F,0xF0,0x04,0x20,0x1F,0xE0,0x04,0x20,0x1F,0xC0,0x04,
Kujira 0:1977c2310ef7 4163 0x20,0x1F,0x80,0x04,0x20,0x1F,0x00,0x04,0x20,0x1E,0x00,0x04,0x20,0x1C,0x00,0x04,
Kujira 0:1977c2310ef7 4164 0x20,0x18,0x00,0x04,0x20,0x00,0x00,0x04,0x20,0x00,0x00,0x04,0x20,0x00,0x00,0x04,
Kujira 0:1977c2310ef7 4165 0x10,0x00,0x00,0x08,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Kujira 0:1977c2310ef7 4166 };
Kujira 0:1977c2310ef7 4167
Kujira 0:1977c2310ef7 4168 void gu_button_down(char sw_num)
Kujira 0:1977c2310ef7 4169 {
Kujira 0:1977c2310ef7 4170 char x;
Kujira 0:1977c2310ef7 4171 char y;
Kujira 0:1977c2310ef7 4172
Kujira 0:1977c2310ef7 4173 //SW_NoからSWの座標を求める
Kujira 0:1977c2310ef7 4174 x = ((sw_num - 1) % 8 ) * 32;
Kujira 0:1977c2310ef7 4175 y = ((sw_num - 1) / 8 ) * 32;
Kujira 0:1977c2310ef7 4176
Kujira 0:1977c2310ef7 4177 gu_cursor( x, y/8 );
Kujira 0:1977c2310ef7 4178 gu_RealTimeImage(32, 32, gu_Button_down_data);
Kujira 0:1977c2310ef7 4179 }
Kujira 0:1977c2310ef7 4180
Kujira 0:1977c2310ef7 4181 void gu_Button_down1()
Kujira 0:1977c2310ef7 4182 {
Kujira 0:1977c2310ef7 4183 gu_cursor(224,12);
Kujira 0:1977c2310ef7 4184 gu_RealTimeImage(32, 32, gu_Button_down_data);
Kujira 0:1977c2310ef7 4185 }
Kujira 0:1977c2310ef7 4186
Kujira 0:1977c2310ef7 4187 void gu_Button_down2()
Kujira 0:1977c2310ef7 4188 {
Kujira 0:1977c2310ef7 4189 gu_cursor(192,12);
Kujira 0:1977c2310ef7 4190 gu_RealTimeImage(32, 32, gu_Button_down_data);
Kujira 0:1977c2310ef7 4191 }
Kujira 0:1977c2310ef7 4192
Kujira 0:1977c2310ef7 4193 void gu_Button_down3()
Kujira 0:1977c2310ef7 4194 {
Kujira 0:1977c2310ef7 4195 gu_cursor(160,12);
Kujira 0:1977c2310ef7 4196 gu_RealTimeImage(32, 32, gu_Button_down_data);
Kujira 0:1977c2310ef7 4197 }
Kujira 0:1977c2310ef7 4198
Kujira 0:1977c2310ef7 4199 void gu_Button_down4()
Kujira 0:1977c2310ef7 4200 {
Kujira 0:1977c2310ef7 4201 gu_cursor(128,12);
Kujira 0:1977c2310ef7 4202 gu_RealTimeImage(32, 32, gu_Button_down_data);
Kujira 0:1977c2310ef7 4203 }
Kujira 0:1977c2310ef7 4204
Kujira 0:1977c2310ef7 4205 char gu_Button_up_on_data[] = {
Kujira 0:1977c2310ef7 4206 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF8,
Kujira 0:1977c2310ef7 4207 0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xE7,0xFC,
Kujira 0:1977c2310ef7 4208 0x3F,0xFF,0xC7,0xFC,0x3F,0xFF,0x87,0xFC,0x3F,0xFF,0x07,0xFC,0x3F,0xFE,0x07,0xFC,
Kujira 0:1977c2310ef7 4209 0x3F,0xFC,0x07,0xFC,0x3F,0xF8,0x07,0xFC,0x3F,0xF0,0x07,0xFC,0x3F,0xE0,0x07,0xFC,
Kujira 0:1977c2310ef7 4210 0x3F,0xE0,0x07,0xFC,0x3F,0xF0,0x07,0xFC,0x3F,0xF8,0x07,0xFC,0x3F,0xFC,0x07,0xFC,
Kujira 0:1977c2310ef7 4211 0x3F,0xFE,0x07,0xFC,0x3F,0xFF,0x07,0xFC,0x3F,0xFF,0x87,0xFC,0x3F,0xFF,0xC7,0xFC,
Kujira 0:1977c2310ef7 4212 0x3F,0xFF,0xE7,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,
Kujira 0:1977c2310ef7 4213 0x1F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Kujira 0:1977c2310ef7 4214 };
Kujira 0:1977c2310ef7 4215
Kujira 0:1977c2310ef7 4216 void gu_button_up_on( char sw_num )
Kujira 0:1977c2310ef7 4217 {
Kujira 0:1977c2310ef7 4218 char x;
Kujira 0:1977c2310ef7 4219 char y;
Kujira 0:1977c2310ef7 4220
Kujira 0:1977c2310ef7 4221 //SW_NoからSWの座標を求める
Kujira 0:1977c2310ef7 4222 x = ((sw_num - 1) % 8 ) * 32;
Kujira 0:1977c2310ef7 4223 y = ((sw_num - 1) / 8 ) * 32;
Kujira 0:1977c2310ef7 4224
Kujira 0:1977c2310ef7 4225 gu_cursor( x, y/8 );
Kujira 0:1977c2310ef7 4226
Kujira 0:1977c2310ef7 4227 gu_RealTimeImage(32, 32, gu_Button_up_on_data);
Kujira 0:1977c2310ef7 4228 }
Kujira 0:1977c2310ef7 4229
Kujira 0:1977c2310ef7 4230 void gu_Button_up_on2()
Kujira 0:1977c2310ef7 4231 {
Kujira 0:1977c2310ef7 4232 gu_cursor(192,8);
Kujira 0:1977c2310ef7 4233 gu_RealTimeImage(32, 32, gu_Button_up_on_data);
Kujira 0:1977c2310ef7 4234 }
Kujira 0:1977c2310ef7 4235
Kujira 0:1977c2310ef7 4236 char gu_Button_down_on_data[] = {
Kujira 0:1977c2310ef7 4237 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF8,
Kujira 0:1977c2310ef7 4238 0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xE7,0xFF,0xFC,
Kujira 0:1977c2310ef7 4239 0x3F,0xE3,0xFF,0xFC,0x3F,0xE1,0xFF,0xFC,0x3F,0xE0,0xFF,0xFC,0x3F,0xE0,0x7F,0xFC,
Kujira 0:1977c2310ef7 4240 0x3F,0xE0,0x3F,0xFC,0x3F,0xE0,0x1F,0xFC,0x3F,0xE0,0x0F,0xFC,0x3F,0xE0,0x07,0xFC,
Kujira 0:1977c2310ef7 4241 0x3F,0xE0,0x07,0xFC,0x3F,0xE0,0x0F,0xFC,0x3F,0xE0,0x1F,0xFC,0x3F,0xE0,0x3F,0xFC,
Kujira 0:1977c2310ef7 4242 0x3F,0xE0,0x7F,0xFC,0x3F,0xE0,0xFF,0xFC,0x3F,0xE1,0xFF,0xFC,0x3F,0xE3,0xFF,0xFC,
Kujira 0:1977c2310ef7 4243 0x3F,0xE7,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,
Kujira 0:1977c2310ef7 4244 0x1F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Kujira 0:1977c2310ef7 4245 };
Kujira 0:1977c2310ef7 4246
Kujira 0:1977c2310ef7 4247 void gu_button_down_on(char sw_num)
Kujira 0:1977c2310ef7 4248 {
Kujira 0:1977c2310ef7 4249 char x;
Kujira 0:1977c2310ef7 4250 char y;
Kujira 0:1977c2310ef7 4251
Kujira 0:1977c2310ef7 4252 //SW_NoからSWの座標を求める
Kujira 0:1977c2310ef7 4253 x = ((sw_num - 1) % 8 ) * 32;
Kujira 0:1977c2310ef7 4254 y = ((sw_num - 1) / 8 ) * 32;
Kujira 0:1977c2310ef7 4255
Kujira 0:1977c2310ef7 4256 gu_cursor( x, y/8 );
Kujira 0:1977c2310ef7 4257
Kujira 0:1977c2310ef7 4258 gu_RealTimeImage(32, 32, gu_Button_down_on_data);
Kujira 0:1977c2310ef7 4259 }
Kujira 0:1977c2310ef7 4260
Kujira 0:1977c2310ef7 4261 void gu_Button_down_on2()
Kujira 0:1977c2310ef7 4262 {
Kujira 0:1977c2310ef7 4263 gu_cursor(192,12);
Kujira 0:1977c2310ef7 4264 gu_RealTimeImage(32, 32, gu_Button_down_on_data);
Kujira 0:1977c2310ef7 4265 }
Kujira 0:1977c2310ef7 4266
Kujira 0:1977c2310ef7 4267 char gu_Button_power_on_data[] = {
Kujira 0:1977c2310ef7 4268 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x10,0x00,0x00,0x08,
Kujira 0:1977c2310ef7 4269 0x20,0x00,0x00,0x04,0x20,0x00,0x00,0x04,0x20,0x00,0x00,0x04,0x20,0x03,0xF0,0x04,
Kujira 0:1977c2310ef7 4270 0x20,0x0F,0xFC,0x04,0x20,0x1F,0xFE,0x04,0x20,0x3C,0x0F,0x04,0x20,0x38,0x07,0x84,
Kujira 0:1977c2310ef7 4271 0x20,0x00,0x03,0x84,0x20,0x00,0x03,0xC4,0x20,0x00,0x01,0xC4,0x21,0xFF,0x01,0xC4,
Kujira 0:1977c2310ef7 4272 0x21,0xFF,0x01,0xC4,0x20,0x00,0x01,0xC4,0x20,0x00,0x03,0xC4,0x20,0x00,0x03,0x84,
Kujira 0:1977c2310ef7 4273 0x20,0x38,0x07,0x84,0x20,0x3C,0x0F,0x04,0x20,0x1F,0xFE,0x04,0x20,0x0F,0xFC,0x04,
Kujira 0:1977c2310ef7 4274 0x20,0x03,0xF0,0x04,0x20,0x00,0x00,0x04,0x20,0x00,0x00,0x04,0x20,0x00,0x00,0x04,
Kujira 0:1977c2310ef7 4275 0x10,0x00,0x00,0x08,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Kujira 0:1977c2310ef7 4276 };
Kujira 0:1977c2310ef7 4277
Kujira 0:1977c2310ef7 4278 void gu_Button_power_on()
Kujira 0:1977c2310ef7 4279 {
Kujira 0:1977c2310ef7 4280 gu_cursor(224,0);
Kujira 0:1977c2310ef7 4281 gu_RealTimeImage(32, 32, gu_Button_power_on_data);
Kujira 0:1977c2310ef7 4282 }
Kujira 0:1977c2310ef7 4283
Kujira 0:1977c2310ef7 4284
Kujira 0:1977c2310ef7 4285 char gu_Button_power_off_data[] = {
Kujira 0:1977c2310ef7 4286 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF8,
Kujira 0:1977c2310ef7 4287 0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFC,0x0F,0xFC,
Kujira 0:1977c2310ef7 4288 0x3F,0xF0,0x03,0xFC,0x3F,0xE0,0x01,0xFC,0x3F,0xC3,0xF0,0xFC,0x3F,0xC7,0xF8,0x7C,
Kujira 0:1977c2310ef7 4289 0x3F,0xFF,0xFC,0x7C,0x3F,0xFF,0xFC,0x3C,0x3F,0xFF,0xFE,0x3C,0x3C,0x00,0x7E,0x3C,
Kujira 0:1977c2310ef7 4290 0x3C,0x00,0x7E,0x3C,0x3F,0xFF,0xFE,0x3C,0x3F,0xFF,0xFC,0x3C,0x3F,0xFF,0xFC,0x7C,
Kujira 0:1977c2310ef7 4291 0x3F,0xC7,0xF8,0x7C,0x3F,0xC1,0xE0,0xFC,0x3F,0xE0,0x01,0xFC,0x3F,0xF0,0x03,0xFC,
Kujira 0:1977c2310ef7 4292 0x3F,0xFC,0x0F,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,
Kujira 0:1977c2310ef7 4293 0x1F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Kujira 0:1977c2310ef7 4294 };
Kujira 0:1977c2310ef7 4295
Kujira 0:1977c2310ef7 4296 void gu_Button_power_off()
Kujira 0:1977c2310ef7 4297 {
Kujira 0:1977c2310ef7 4298 gu_cursor(224,0);
Kujira 0:1977c2310ef7 4299 gu_RealTimeImage(32, 32, gu_Button_power_off_data);
Kujira 0:1977c2310ef7 4300 }
Kujira 0:1977c2310ef7 4301
Kujira 0:1977c2310ef7 4302 /*********************************
Kujira 0:1977c2310ef7 4303 ノリタケ関数
Kujira 0:1977c2310ef7 4304 ここから
Kujira 0:1977c2310ef7 4305 **********************************/
Kujira 0:1977c2310ef7 4306 //
Kujira 0:1977c2310ef7 4307 // Clear screen//
Kujira 0:1977c2310ef7 4308 void gu_cls()
Kujira 0:1977c2310ef7 4309 {
Kujira 0:1977c2310ef7 4310
Kujira 0:1977c2310ef7 4311 i2c.start();
Kujira 0:1977c2310ef7 4312 i2c.write(addr_gu);
Kujira 0:1977c2310ef7 4313 i2c.write(0x0c);
Kujira 0:1977c2310ef7 4314 i2c.stop();
Kujira 0:1977c2310ef7 4315
Kujira 0:1977c2310ef7 4316 }
Kujira 0:1977c2310ef7 4317
Kujira 0:1977c2310ef7 4318 void gu_drawButton(int x, int y, int w, int h, const char data[])
Kujira 0:1977c2310ef7 4319 {
Kujira 0:1977c2310ef7 4320 h = h >> 3; // get height in byte
Kujira 0:1977c2310ef7 4321 y = y >> 3; // get Y location in byte
Kujira 0:1977c2310ef7 4322
Kujira 0:1977c2310ef7 4323 gu_cursor(x,y);
Kujira 0:1977c2310ef7 4324 // Realtime Image draw header
Kujira 0:1977c2310ef7 4325
Kujira 0:1977c2310ef7 4326 i2c.start();
Kujira 0:1977c2310ef7 4327 i2c.write(addr_gu);
Kujira 0:1977c2310ef7 4328 gu_sendOneByte(0x1f);
Kujira 0:1977c2310ef7 4329 gu_sendOneByte(0x28);
Kujira 0:1977c2310ef7 4330 gu_sendOneByte(0x66);
Kujira 0:1977c2310ef7 4331 gu_sendOneByte(0x11);
Kujira 0:1977c2310ef7 4332 gu_sendOneByte( w & 0xff);
Kujira 0:1977c2310ef7 4333 gu_sendOneByte( w >> 8);
Kujira 0:1977c2310ef7 4334 gu_sendOneByte( h & 0xff);
Kujira 0:1977c2310ef7 4335 gu_sendOneByte( h >> 8);
Kujira 0:1977c2310ef7 4336 gu_sendOneByte(0x01);
Kujira 0:1977c2310ef7 4337
Kujira 0:1977c2310ef7 4338 for(int i = 0; i<w; i++) {
Kujira 0:1977c2310ef7 4339 if(i<8) { // 8 dots from left
Kujira 0:1977c2310ef7 4340 gu_sendOneByte(data[i*2]);
Kujira 0:1977c2310ef7 4341 if(h>2) {
Kujira 0:1977c2310ef7 4342 for(int j=0; j<(h-2); j++) {
Kujira 0:1977c2310ef7 4343 if((data[i*2]&0x01)==0) {
Kujira 0:1977c2310ef7 4344 gu_sendOneByte(0x00);
Kujira 0:1977c2310ef7 4345 } else {
Kujira 0:1977c2310ef7 4346 gu_sendOneByte(0xff);
Kujira 0:1977c2310ef7 4347 }
Kujira 0:1977c2310ef7 4348 }
Kujira 0:1977c2310ef7 4349 }
Kujira 0:1977c2310ef7 4350 gu_sendOneByte(data[i*2+1]);
Kujira 0:1977c2310ef7 4351 } else if (i > (w-8)) { // 8 dots from right
Kujira 0:1977c2310ef7 4352
Kujira 0:1977c2310ef7 4353 gu_sendOneByte(data[(16+i-w)*2]);
Kujira 0:1977c2310ef7 4354 if(h>2) for(int j=0; j<(h-2); j++) {
Kujira 0:1977c2310ef7 4355 if((data[(16+i-w)*2]&0x01)==0) {
Kujira 0:1977c2310ef7 4356 gu_sendOneByte(0x00);
Kujira 0:1977c2310ef7 4357 } else {
Kujira 0:1977c2310ef7 4358 gu_sendOneByte(0xff);
Kujira 0:1977c2310ef7 4359 }
Kujira 0:1977c2310ef7 4360 }
Kujira 0:1977c2310ef7 4361 gu_sendOneByte(data[(16+i-w)*2+1]);
Kujira 0:1977c2310ef7 4362
Kujira 0:1977c2310ef7 4363 } else { // in the middle
Kujira 0:1977c2310ef7 4364 gu_sendOneByte(data[14]);
Kujira 0:1977c2310ef7 4365 if(h>2) {
Kujira 0:1977c2310ef7 4366 for(int j=0; j<(h-2); j++) {
Kujira 0:1977c2310ef7 4367 if((data[14]&0x01)==0) {
Kujira 0:1977c2310ef7 4368 gu_sendOneByte(0x00);
Kujira 0:1977c2310ef7 4369 } else {
Kujira 0:1977c2310ef7 4370 gu_sendOneByte(0xff);
Kujira 0:1977c2310ef7 4371 }
Kujira 0:1977c2310ef7 4372 }
Kujira 0:1977c2310ef7 4373 }
Kujira 0:1977c2310ef7 4374 gu_sendOneByte(data[15]);
Kujira 0:1977c2310ef7 4375 }
Kujira 0:1977c2310ef7 4376 }
Kujira 0:1977c2310ef7 4377
Kujira 0:1977c2310ef7 4378 i2c.stop();
Kujira 0:1977c2310ef7 4379
Kujira 0:1977c2310ef7 4380 }
Kujira 0:1977c2310ef7 4381
Kujira 0:1977c2310ef7 4382
Kujira 0:1977c2310ef7 4383 // ドット単位キャラクタ表示 p37
Kujira 0:1977c2310ef7 4384 void gu_print_dot(int x, int y, const char* ptext)
Kujira 0:1977c2310ef7 4385 {
Kujira 0:1977c2310ef7 4386
Kujira 0:1977c2310ef7 4387 i2c.start();
Kujira 0:1977c2310ef7 4388 i2c.write(addr_gu);
Kujira 0:1977c2310ef7 4389 gu_sendOneByte(0x1f);
Kujira 0:1977c2310ef7 4390 gu_sendOneByte(0x28);
Kujira 0:1977c2310ef7 4391 gu_sendOneByte(0x64);
Kujira 0:1977c2310ef7 4392 gu_sendOneByte(0x30);
Kujira 0:1977c2310ef7 4393 gu_sendOneByte(x & 0xff);
Kujira 0:1977c2310ef7 4394 gu_sendOneByte(x >> 8);
Kujira 0:1977c2310ef7 4395 gu_sendOneByte(y & 0xff);
Kujira 0:1977c2310ef7 4396 gu_sendOneByte(y >> 8);
Kujira 0:1977c2310ef7 4397 gu_sendOneByte(0x00);
Kujira 0:1977c2310ef7 4398
Kujira 0:1977c2310ef7 4399 int i=0;
Kujira 0:1977c2310ef7 4400 int j=0;
Kujira 0:1977c2310ef7 4401 while(*(ptext+i)) {
Kujira 0:1977c2310ef7 4402 if (*(ptext + i++) =='%') {
Kujira 0:1977c2310ef7 4403 j+=2; //文字列終端”0%"までインクリメント
Kujira 0:1977c2310ef7 4404 }
Kujira 0:1977c2310ef7 4405 }
Kujira 0:1977c2310ef7 4406
Kujira 0:1977c2310ef7 4407 gu_sendOneByte(i-j); //キャラクタデータ長
Kujira 0:1977c2310ef7 4408 gu_print(ptext); //キャラクタデータ
Kujira 0:1977c2310ef7 4409
Kujira 0:1977c2310ef7 4410 i2c.stop();
Kujira 0:1977c2310ef7 4411
Kujira 0:1977c2310ef7 4412 }
Kujira 0:1977c2310ef7 4413
Kujira 0:1977c2310ef7 4414 //
Kujira 0:1977c2310ef7 4415 // Print test//
Kujira 0:1977c2310ef7 4416 void gu_print(const char t[] )
Kujira 0:1977c2310ef7 4417 {
Kujira 0:1977c2310ef7 4418 i2c.start();
Kujira 0:1977c2310ef7 4419 i2c.write(addr_gu);
Kujira 0:1977c2310ef7 4420
Kujira 0:1977c2310ef7 4421 int i=0;
Kujira 0:1977c2310ef7 4422 int j=0;
Kujira 0:1977c2310ef7 4423 int k=0;
Kujira 0:1977c2310ef7 4424 while(t[i]) {
Kujira 0:1977c2310ef7 4425 if(t[i] != 37) {
Kujira 0:1977c2310ef7 4426 gu_sendOneByte(t[i++]);
Kujira 0:1977c2310ef7 4427 } else {
Kujira 0:1977c2310ef7 4428 i++;
Kujira 0:1977c2310ef7 4429 j=t[i++]-0x30;
Kujira 0:1977c2310ef7 4430 if(j>9) {
Kujira 0:1977c2310ef7 4431 j -= 7;
Kujira 0:1977c2310ef7 4432 }
Kujira 0:1977c2310ef7 4433 if(j>0x10) {
Kujira 0:1977c2310ef7 4434 j -= 0x20;
Kujira 0:1977c2310ef7 4435 }
Kujira 0:1977c2310ef7 4436 k=t[i++]-0x30;
Kujira 0:1977c2310ef7 4437 if(k>9) {
Kujira 0:1977c2310ef7 4438 k -= 7;
Kujira 0:1977c2310ef7 4439 }
Kujira 0:1977c2310ef7 4440 if(k>0x10) {
Kujira 0:1977c2310ef7 4441 k -= 0x20;
Kujira 0:1977c2310ef7 4442 }
Kujira 0:1977c2310ef7 4443 gu_sendOneByte(j*16+k);
Kujira 0:1977c2310ef7 4444 }
Kujira 0:1977c2310ef7 4445 }
Kujira 0:1977c2310ef7 4446 i2c.stop();
Kujira 0:1977c2310ef7 4447 }
Kujira 0:1977c2310ef7 4448
Kujira 0:1977c2310ef7 4449 void gu_RealTimeImage(int w, int h, char data[])
Kujira 0:1977c2310ef7 4450 {
Kujira 0:1977c2310ef7 4451 h = h >> 3; // get height in byte
Kujira 0:1977c2310ef7 4452
Kujira 0:1977c2310ef7 4453 i2c.start();
Kujira 0:1977c2310ef7 4454 gu_sendOneByte(addr_gu);
Kujira 0:1977c2310ef7 4455 gu_sendOneByte(0x1f);
Kujira 0:1977c2310ef7 4456 gu_sendOneByte(0x28);
Kujira 0:1977c2310ef7 4457 gu_sendOneByte(0x66);
Kujira 0:1977c2310ef7 4458 gu_sendOneByte(0x11);
Kujira 0:1977c2310ef7 4459 gu_sendOneByte( w & 0xff);
Kujira 0:1977c2310ef7 4460 gu_sendOneByte( w >> 8);
Kujira 0:1977c2310ef7 4461 gu_sendOneByte( h & 0xff);
Kujira 0:1977c2310ef7 4462 gu_sendOneByte( h >> 8);
Kujira 0:1977c2310ef7 4463 gu_sendOneByte(0x01);
Kujira 0:1977c2310ef7 4464 for( int i=0; i < ( w * h ); i++) {
Kujira 0:1977c2310ef7 4465 gu_sendOneByte( data[i]);
Kujira 0:1977c2310ef7 4466 }
Kujira 0:1977c2310ef7 4467 i2c.stop();
Kujira 0:1977c2310ef7 4468 }
Kujira 0:1977c2310ef7 4469
Kujira 0:1977c2310ef7 4470 // Draw RealTimeBitImage by dot
Kujira 0:1977c2310ef7 4471 void gu_RealTimeImage_dot(int x, int y, int w, int h, const char data[])
Kujira 0:1977c2310ef7 4472 {
Kujira 0:1977c2310ef7 4473 i2c.start();
Kujira 0:1977c2310ef7 4474 gu_sendOneByte(addr_gu);
Kujira 0:1977c2310ef7 4475 gu_sendOneByte(0x1f);
Kujira 0:1977c2310ef7 4476 gu_sendOneByte(0x28);
Kujira 0:1977c2310ef7 4477 gu_sendOneByte(0x64);
Kujira 0:1977c2310ef7 4478 gu_sendOneByte(0x21);
Kujira 0:1977c2310ef7 4479 gu_sendOneByte(x & 0xff);
Kujira 0:1977c2310ef7 4480 gu_sendOneByte(x >> 8);
Kujira 0:1977c2310ef7 4481 gu_sendOneByte(y & 0xff);
Kujira 0:1977c2310ef7 4482 gu_sendOneByte(y >> 8);
Kujira 0:1977c2310ef7 4483 gu_sendOneByte(w & 0xff);
Kujira 0:1977c2310ef7 4484 gu_sendOneByte(w >> 8);
Kujira 0:1977c2310ef7 4485 gu_sendOneByte(h & 0xff);
Kujira 0:1977c2310ef7 4486 gu_sendOneByte(h >> 8);
Kujira 0:1977c2310ef7 4487 gu_sendOneByte(0x01);
Kujira 0:1977c2310ef7 4488 for(int i=0; i<( w * ((h + 7)>>3)); i++ ) {
Kujira 0:1977c2310ef7 4489 gu_sendOneByte(data[i]);
Kujira 0:1977c2310ef7 4490 }
Kujira 0:1977c2310ef7 4491 i2c.stop();
Kujira 0:1977c2310ef7 4492 }
Kujira 0:1977c2310ef7 4493
Kujira 0:1977c2310ef7 4494
Kujira 0:1977c2310ef7 4495 // Set Font width
Kujira 0:1977c2310ef7 4496 void gu_fontWidth(const char fontWidth)
Kujira 0:1977c2310ef7 4497 {
Kujira 0:1977c2310ef7 4498 /*
Kujira 0:1977c2310ef7 4499 gu_sendOneByte(0x1f);
Kujira 0:1977c2310ef7 4500 gu_sendOneByte(0x28);
Kujira 0:1977c2310ef7 4501 gu_sendOneByte(0x67);
Kujira 0:1977c2310ef7 4502 gu_sendOneByte(0x03);
Kujira 0:1977c2310ef7 4503 gu_sendOneByte(fontWidth);
Kujira 0:1977c2310ef7 4504 */
Kujira 0:1977c2310ef7 4505
Kujira 0:1977c2310ef7 4506 char accom_gu[5] ; //gu-DへのI2Cコマンド用配列
Kujira 0:1977c2310ef7 4507
Kujira 0:1977c2310ef7 4508 accom_gu[0] = 0x1F;
Kujira 0:1977c2310ef7 4509 accom_gu[1] = 0x28;
Kujira 0:1977c2310ef7 4510 accom_gu[2] = 0x67;
Kujira 0:1977c2310ef7 4511 accom_gu[3] = 0x03;
Kujira 0:1977c2310ef7 4512 accom_gu[4] = fontWidth;
Kujira 0:1977c2310ef7 4513
Kujira 0:1977c2310ef7 4514 i2c.write(addr_gu, accom_gu, 5);
Kujira 0:1977c2310ef7 4515
Kujira 0:1977c2310ef7 4516 }
Kujira 0:1977c2310ef7 4517
Kujira 0:1977c2310ef7 4518 //
Kujira 0:1977c2310ef7 4519 // Move Cursor
Kujira 0:1977c2310ef7 4520 // 動作確認完了 2017/6/26
Kujira 0:1977c2310ef7 4521 void gu_cursor(int x, int y)
Kujira 0:1977c2310ef7 4522 {
Kujira 0:1977c2310ef7 4523
Kujira 0:1977c2310ef7 4524 /*
Kujira 0:1977c2310ef7 4525 gu_sendOneByte(0x1f);
Kujira 0:1977c2310ef7 4526 gu_sendOneByte(0x24);
Kujira 0:1977c2310ef7 4527 gu_sendOneByte(x%256);
Kujira 0:1977c2310ef7 4528 gu_sendOneByte(x>>8);
Kujira 0:1977c2310ef7 4529 gu_sendOneByte(y%256);
Kujira 0:1977c2310ef7 4530 gu_sendOneByte(y>>8);
Kujira 0:1977c2310ef7 4531 */
Kujira 0:1977c2310ef7 4532
Kujira 0:1977c2310ef7 4533 char accom_gu[6] ; //gu-DへのI2Cコマンド用配列
Kujira 0:1977c2310ef7 4534
Kujira 0:1977c2310ef7 4535 accom_gu[0] = 0x1f;
Kujira 0:1977c2310ef7 4536 accom_gu[1] = 0x24;
Kujira 0:1977c2310ef7 4537 accom_gu[2] = x & 0xFF;
Kujira 0:1977c2310ef7 4538 accom_gu[3] = x >> 8;
Kujira 0:1977c2310ef7 4539 accom_gu[4] = y & 0xFF;
Kujira 0:1977c2310ef7 4540 accom_gu[5] = y >> 8;
Kujira 0:1977c2310ef7 4541
Kujira 0:1977c2310ef7 4542 i2c.write(addr_gu, accom_gu, 6);
Kujira 0:1977c2310ef7 4543
Kujira 0:1977c2310ef7 4544 }
Kujira 0:1977c2310ef7 4545
Kujira 0:1977c2310ef7 4546 // Font Body Size
Kujira 0:1977c2310ef7 4547 // 動作確認2017/6/26
Kujira 0:1977c2310ef7 4548 void gu_fontsize(const char code)
Kujira 0:1977c2310ef7 4549 {
Kujira 0:1977c2310ef7 4550 /*
Kujira 0:1977c2310ef7 4551 gu_sendOneByte(0x1f);
Kujira 0:1977c2310ef7 4552 gu_sendOneByte(0x28);
Kujira 0:1977c2310ef7 4553 gu_sendOneByte(0x67);
Kujira 0:1977c2310ef7 4554 gu_sendOneByte(0x01);
Kujira 0:1977c2310ef7 4555 gu_sendOneByte(code);
Kujira 0:1977c2310ef7 4556 */
Kujira 0:1977c2310ef7 4557 char accom_gu[5] ; //gu-DへのI2Cコマンド用配列
Kujira 0:1977c2310ef7 4558
Kujira 0:1977c2310ef7 4559 accom_gu[0] = 0x1F;
Kujira 0:1977c2310ef7 4560 accom_gu[1] = 0x28;
Kujira 0:1977c2310ef7 4561 accom_gu[2] = 0x67;
Kujira 0:1977c2310ef7 4562 accom_gu[3] = 0x01;
Kujira 0:1977c2310ef7 4563 accom_gu[4] = code;
Kujira 0:1977c2310ef7 4564
Kujira 0:1977c2310ef7 4565 i2c.write(addr_gu, accom_gu, 5);
Kujira 0:1977c2310ef7 4566
Kujira 0:1977c2310ef7 4567 }
Kujira 0:1977c2310ef7 4568
Kujira 0:1977c2310ef7 4569
Kujira 0:1977c2310ef7 4570 //
Kujira 0:1977c2310ef7 4571 // Reverse video font
Kujira 0:1977c2310ef7 4572 void gu_fontReverse(int code)
Kujira 0:1977c2310ef7 4573 {
Kujira 0:1977c2310ef7 4574
Kujira 0:1977c2310ef7 4575 i2c.start();
Kujira 0:1977c2310ef7 4576 gu_sendOneByte(addr_gu);
Kujira 0:1977c2310ef7 4577 gu_sendOneByte(0x1f);
Kujira 0:1977c2310ef7 4578 gu_sendOneByte(0x72);
Kujira 0:1977c2310ef7 4579 gu_sendOneByte(code);
Kujira 0:1977c2310ef7 4580 i2c.stop();
Kujira 0:1977c2310ef7 4581
Kujira 0:1977c2310ef7 4582 }
Kujira 0:1977c2310ef7 4583
Kujira 0:1977c2310ef7 4584 void gu_touchPara(int x,int y)
Kujira 0:1977c2310ef7 4585 {
Kujira 0:1977c2310ef7 4586 i2c.start();
Kujira 0:1977c2310ef7 4587 i2c.write(addr_gu);
Kujira 0:1977c2310ef7 4588 i2c.write(0x1F);
Kujira 0:1977c2310ef7 4589 i2c.write(0x4B);
Kujira 0:1977c2310ef7 4590 i2c.write(0x70);
Kujira 0:1977c2310ef7 4591 i2c.write(x & 0xFF);
Kujira 0:1977c2310ef7 4592 i2c.write(y & 0xFF);
Kujira 0:1977c2310ef7 4593 i2c.stop();
Kujira 0:1977c2310ef7 4594 }
Kujira 0:1977c2310ef7 4595
Kujira 0:1977c2310ef7 4596 // Magnify Font キャラクタ拡大表示
Kujira 0:1977c2310ef7 4597 void gu_magnify(int x, int y)
Kujira 0:1977c2310ef7 4598 {
Kujira 0:1977c2310ef7 4599 gu_sendOneByte(0x1f);
Kujira 0:1977c2310ef7 4600 gu_sendOneByte(0x28);
Kujira 0:1977c2310ef7 4601 gu_sendOneByte(0x67);
Kujira 0:1977c2310ef7 4602 gu_sendOneByte(0x40);
Kujira 0:1977c2310ef7 4603 gu_sendOneByte(x);
Kujira 0:1977c2310ef7 4604 gu_sendOneByte(y);
Kujira 0:1977c2310ef7 4605 }
Kujira 0:1977c2310ef7 4606
Kujira 0:1977c2310ef7 4607 /*********************************
Kujira 0:1977c2310ef7 4608 ノリタケ関数
Kujira 0:1977c2310ef7 4609 ここまで
Kujira 0:1977c2310ef7 4610 **********************************/
Kujira 0:1977c2310ef7 4611 //
Kujira 0:1977c2310ef7 4612 //Show text
Kujira 0:1977c2310ef7 4613 void gu_print1(const char* ptext)
Kujira 0:1977c2310ef7 4614 {
Kujira 0:1977c2310ef7 4615 i2c.write(addr_gu, ptext, strlen(ptext));
Kujira 0:1977c2310ef7 4616 }
Kujira 0:1977c2310ef7 4617 //
Kujira 0:1977c2310ef7 4618 //輝度調整
Kujira 0:1977c2310ef7 4619 void gu_luminance(const char* cl)
Kujira 0:1977c2310ef7 4620 {
Kujira 0:1977c2310ef7 4621 i2c.start();
Kujira 0:1977c2310ef7 4622 i2c.write(addr_gu);
Kujira 0:1977c2310ef7 4623 i2c.write(0x1F);
Kujira 0:1977c2310ef7 4624 i2c.write(0x58);
Kujira 0:1977c2310ef7 4625 i2c.write(*cl & 0xFF);
Kujira 0:1977c2310ef7 4626 i2c.stop();
Kujira 0:1977c2310ef7 4627 }
Kujira 0:1977c2310ef7 4628 //
Kujira 0:1977c2310ef7 4629 //gu_Dクラス用 1バイト送信
Kujira 0:1977c2310ef7 4630 void gu_sendOneByte(char data) //arduino->mbed
Kujira 0:1977c2310ef7 4631 {
Kujira 0:1977c2310ef7 4632 i2c.write(data);
Kujira 0:1977c2310ef7 4633 //while(digitalRead(gu_MBUSY)==HIGH){} // wait for ready.
Kujira 0:1977c2310ef7 4634 //Serial.write(data); // send a byte.
Kujira 0:1977c2310ef7 4635 }
Kujira 0:1977c2310ef7 4636 //
Kujira 0:1977c2310ef7 4637 //CF+RF
Kujira 0:1977c2310ef7 4638 void gu_CRLF()
Kujira 0:1977c2310ef7 4639 {
Kujira 0:1977c2310ef7 4640 char com[2];
Kujira 0:1977c2310ef7 4641
Kujira 0:1977c2310ef7 4642 com[0] = 0x0A; //LF
Kujira 0:1977c2310ef7 4643 com[1] = 0x0D; //CR
Kujira 0:1977c2310ef7 4644 i2c.write(addr_gu, com, 2); //LF+CR
Kujira 0:1977c2310ef7 4645 }
Kujira 0:1977c2310ef7 4646 //
Kujira 0:1977c2310ef7 4647 //リバース指定or解除
Kujira 0:1977c2310ef7 4648 void gu_reverse(char x) //リバース指定or解除
Kujira 0:1977c2310ef7 4649 {
Kujira 0:1977c2310ef7 4650 char com[3];
Kujira 0:1977c2310ef7 4651
Kujira 0:1977c2310ef7 4652 com[0] = 0x1F;
Kujira 0:1977c2310ef7 4653 com[1] = 0x72;
Kujira 0:1977c2310ef7 4654 com[2] = x & 0xFF; //0x01:指定 0x00:解除
Kujira 0:1977c2310ef7 4655 i2c.write(addr_gu, com, 3);
Kujira 0:1977c2310ef7 4656 }
Kujira 0:1977c2310ef7 4657 //1byte送信用
Kujira 0:1977c2310ef7 4658 void gu_onebyte(char data)
Kujira 0:1977c2310ef7 4659 {
Kujira 0:1977c2310ef7 4660 i2c.write(addr_gu, &data, 1);
Kujira 0:1977c2310ef7 4661 }
Kujira 0:1977c2310ef7 4662 /*****************************************
Kujira 0:1977c2310ef7 4663
Kujira 0:1977c2310ef7 4664 SD CARD
Kujira 0:1977c2310ef7 4665
Kujira 0:1977c2310ef7 4666 *****************************************/
Kujira 0:1977c2310ef7 4667 void sd_writetext(const char* ptext)
Kujira 0:1977c2310ef7 4668 {
Kujira 0:1977c2310ef7 4669
Kujira 0:1977c2310ef7 4670 mkdir("/sd/mydir", 0777);
Kujira 0:1977c2310ef7 4671
Kujira 0:1977c2310ef7 4672 FILE *fp = fopen("/sd/mydir/iop.txt", "w");//ディレクトリとファイル名の指定
Kujira 0:1977c2310ef7 4673
Kujira 0:1977c2310ef7 4674 if(fp == NULL) {
Kujira 0:1977c2310ef7 4675
Kujira 0:1977c2310ef7 4676 gu_fontsize(1);
Kujira 0:1977c2310ef7 4677 gu_cursor(0,2);
Kujira 0:1977c2310ef7 4678 /* ver1.1.3*/
Kujira 0:1977c2310ef7 4679 gu_print1("No SD card");
Kujira 0:1977c2310ef7 4680 //gu_print1("Could not open file for SD card");
Kujira 0:1977c2310ef7 4681 //error("Could not open file for write\n");
Kujira 0:1977c2310ef7 4682
Kujira 0:1977c2310ef7 4683 }
Kujira 0:1977c2310ef7 4684
Kujira 0:1977c2310ef7 4685 fprintf(fp, ptext);
Kujira 0:1977c2310ef7 4686 fclose(fp);
Kujira 0:1977c2310ef7 4687
Kujira 0:1977c2310ef7 4688 }