ILF / Mbed 2 deprecated mbed_ILF

Dependencies:   mbed SDFileSystem

Committer:
Kujira
Date:
Thu Apr 28 00:07:54 2022 +0000
Revision:
12:60fb2daa673f
Parent:
11:73676f3114f1
22042809

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