ILF / Mbed 2 deprecated mbed_ILF

Dependencies:   mbed SDFileSystem

Committer:
arthurjapan
Date:
Tue Apr 26 08:34:58 2022 +0000
Revision:
9:1d75106ccfa2
Parent:
8:34e4ca3c366e
Child:
10:b34306f7add6
recive_debug_rev1

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