Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of TCD_BD_JIG by
main.cpp@1:40527b0f0dfa, 2014-10-29 (annotated)
- Committer:
- katak
- Date:
- Wed Oct 29 11:43:42 2014 +0000
- Revision:
- 1:40527b0f0dfa
- Parent:
- 0:03dfcdd06518
2014/10/29; IO,AD?????????; ??????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
abem | 0:03dfcdd06518 | 1 | #include "mbed.h" |
abem | 0:03dfcdd06518 | 2 | |
abem | 0:03dfcdd06518 | 3 | /* DA設定 */ |
abem | 0:03dfcdd06518 | 4 | AnalogOut da1(p18); |
abem | 0:03dfcdd06518 | 5 | |
abem | 0:03dfcdd06518 | 6 | /* LED設定 */ |
abem | 0:03dfcdd06518 | 7 | DigitalOut myled1(LED1); |
abem | 0:03dfcdd06518 | 8 | DigitalOut myled2(LED2); |
abem | 0:03dfcdd06518 | 9 | DigitalOut myled3(LED3); |
abem | 0:03dfcdd06518 | 10 | DigitalOut myled4(LED4); |
abem | 0:03dfcdd06518 | 11 | |
abem | 0:03dfcdd06518 | 12 | /* DIO設定 */ |
abem | 0:03dfcdd06518 | 13 | DigitalIn inDrvAlm(p21); // DRV-ALM |
abem | 0:03dfcdd06518 | 14 | DigitalIn inReady(p22); // READY |
abem | 0:03dfcdd06518 | 15 | DigitalOut outRSTDRV(p23); // RST-DRV |
abem | 0:03dfcdd06518 | 16 | DigitalOut outPWMON(p24); // PWM-ON |
abem | 0:03dfcdd06518 | 17 | |
abem | 0:03dfcdd06518 | 18 | /* SIO設定 */ |
abem | 0:03dfcdd06518 | 19 | Serial pc(USBTX, USBRX); // USB-SIO |
abem | 0:03dfcdd06518 | 20 | Serial sio1(p9, p10); // SIO1 |
abem | 0:03dfcdd06518 | 21 | Serial sio2(p13, p14); // SIO2 |
abem | 0:03dfcdd06518 | 22 | |
abem | 0:03dfcdd06518 | 23 | /* タイマー設定 */ |
abem | 0:03dfcdd06518 | 24 | Timeout flipper; |
abem | 0:03dfcdd06518 | 25 | Ticker led4flic; |
abem | 0:03dfcdd06518 | 26 | |
abem | 0:03dfcdd06518 | 27 | /* 関数宣言 */ |
abem | 0:03dfcdd06518 | 28 | void initSIO(void); // シリアルイニシャライズ |
abem | 0:03dfcdd06518 | 29 | |
abem | 0:03dfcdd06518 | 30 | void cmdSIOpc(void); // コマンド処理 pc-SIO |
abem | 0:03dfcdd06518 | 31 | void cmdSIOsio2(void); // コマンド処理 SIO1 |
abem | 0:03dfcdd06518 | 32 | void cmdSIOsio1(void); // コマンド処理 SIO2 |
abem | 0:03dfcdd06518 | 33 | |
abem | 0:03dfcdd06518 | 34 | int trgADcmp(short ADdata, unsigned short ch); // ターゲット取得AD値比較処理 |
abem | 0:03dfcdd06518 | 35 | |
katak | 1:40527b0f0dfa | 36 | unsigned short trgIO1check(unsigned short mode); // ターゲットIO1チェック処理 |
katak | 1:40527b0f0dfa | 37 | unsigned short trgIO2check(unsigned short mode); // ターゲットIO2チェック処理 |
katak | 1:40527b0f0dfa | 38 | |
katak | 1:40527b0f0dfa | 39 | short trgADreq(unsigned short ch); // DA設定&ターゲットAD値リクエスト |
katak | 1:40527b0f0dfa | 40 | |
katak | 1:40527b0f0dfa | 41 | |
abem | 0:03dfcdd06518 | 42 | |
abem | 0:03dfcdd06518 | 43 | /* 定数宣言 */ |
abem | 0:03dfcdd06518 | 44 | // DA固定出力(0-2.5-5V) |
abem | 0:03dfcdd06518 | 45 | unsigned short outDA0v0 =0; |
abem | 0:03dfcdd06518 | 46 | unsigned short outDA2v5 =19200; |
abem | 0:03dfcdd06518 | 47 | //unsigned short outDA2v5 =10000; |
abem | 0:03dfcdd06518 | 48 | unsigned short outDA5v0 =62000; |
abem | 0:03dfcdd06518 | 49 | |
abem | 0:03dfcdd06518 | 50 | // ターゲットAD判定閾値(0-2.5-5V) |
abem | 0:03dfcdd06518 | 51 | // 出力範囲:0-5V(ターゲット:-2047~2048) |
abem | 0:03dfcdd06518 | 52 | short AD0v0l =-2048; |
abem | 0:03dfcdd06518 | 53 | short AD0v0h =-1800; |
abem | 0:03dfcdd06518 | 54 | short AD2v5l =-100; |
abem | 0:03dfcdd06518 | 55 | short AD2v5h =100; |
abem | 0:03dfcdd06518 | 56 | short AD5v0l =1800; |
abem | 0:03dfcdd06518 | 57 | short AD5v0h =2047; |
abem | 0:03dfcdd06518 | 58 | |
abem | 0:03dfcdd06518 | 59 | // SIOコマンド |
abem | 0:03dfcdd06518 | 60 | // 個別 |
abem | 0:03dfcdd06518 | 61 | char cmdCHK[] = "CHK"; // シリアルチェック |
abem | 0:03dfcdd06518 | 62 | char cmdIO1[] = "IO1"; // RST_DRV-DRV_ALMチェック |
abem | 0:03dfcdd06518 | 63 | char cmdIO2[] = "IO2"; // PWM_ON-READYチェック |
abem | 0:03dfcdd06518 | 64 | char cmdIOC[] = "IOC"; // DI/Oシーケンシャルチェック |
abem | 0:03dfcdd06518 | 65 | char cmdDAC[] = "DAC"; // 指令電圧チェック |
abem | 0:03dfcdd06518 | 66 | char cmdDAM[] = "DAM"; // 指令電圧マニュアル出力 |
abem | 0:03dfcdd06518 | 67 | |
abem | 0:03dfcdd06518 | 68 | /* 変数宣言 */ |
abem | 0:03dfcdd06518 | 69 | // DA用 |
abem | 0:03dfcdd06518 | 70 | unsigned short u16OutDA; |
abem | 0:03dfcdd06518 | 71 | short TrgAD; |
abem | 0:03dfcdd06518 | 72 | |
abem | 0:03dfcdd06518 | 73 | unsigned short cmpADch; |
abem | 0:03dfcdd06518 | 74 | |
katak | 1:40527b0f0dfa | 75 | short SqchkNo; // シーケンシャルチェックstep |
katak | 1:40527b0f0dfa | 76 | unsigned short SqTrgchkNo[5]; // シーケンシャルチェック時判定用ch設定 |
katak | 1:40527b0f0dfa | 77 | unsigned short SqTrgDA[5]; // シーケンシャルチェック時DA値格納先(出力値) |
katak | 1:40527b0f0dfa | 78 | short SqTrgAD[5]; // シーケンシャルチェック時AD値格納先 |
katak | 1:40527b0f0dfa | 79 | |
katak | 1:40527b0f0dfa | 80 | |
abem | 0:03dfcdd06518 | 81 | // pc-SIO |
abem | 0:03dfcdd06518 | 82 | char rx_buf_PC[50]; |
abem | 0:03dfcdd06518 | 83 | char rx_ch_PC; |
abem | 0:03dfcdd06518 | 84 | short rx_cnt_PC; |
abem | 0:03dfcdd06518 | 85 | short rx_endflg_PC; |
abem | 0:03dfcdd06518 | 86 | |
abem | 0:03dfcdd06518 | 87 | // SIO1 |
abem | 0:03dfcdd06518 | 88 | char rx_buf_SIO1[50]; |
abem | 0:03dfcdd06518 | 89 | char rx_ch_SIO1; |
abem | 0:03dfcdd06518 | 90 | short rx_cnt_SIO1; |
abem | 0:03dfcdd06518 | 91 | short rx_endflg_SIO1; |
abem | 0:03dfcdd06518 | 92 | |
abem | 0:03dfcdd06518 | 93 | // SIO2 |
abem | 0:03dfcdd06518 | 94 | char rx_buf_SIO2[50]; |
abem | 0:03dfcdd06518 | 95 | char rx_ch_SIO2; |
abem | 0:03dfcdd06518 | 96 | short rx_cnt_SIO2; |
abem | 0:03dfcdd06518 | 97 | short rx_endflg_SIO2; |
abem | 0:03dfcdd06518 | 98 | |
abem | 0:03dfcdd06518 | 99 | // 汎用 |
abem | 0:03dfcdd06518 | 100 | short i; |
abem | 0:03dfcdd06518 | 101 | |
abem | 0:03dfcdd06518 | 102 | int len; |
abem | 0:03dfcdd06518 | 103 | int intdaout; |
abem | 0:03dfcdd06518 | 104 | int intbuf; |
abem | 0:03dfcdd06518 | 105 | |
abem | 0:03dfcdd06518 | 106 | char cbufstr[50]; |
abem | 0:03dfcdd06518 | 107 | |
abem | 0:03dfcdd06518 | 108 | // Flag |
abem | 0:03dfcdd06518 | 109 | unsigned short flgCHKrun; |
abem | 0:03dfcdd06518 | 110 | unsigned short flgRxAD; |
abem | 0:03dfcdd06518 | 111 | |
katak | 1:40527b0f0dfa | 112 | unsigned short flgSqADchk; |
katak | 1:40527b0f0dfa | 113 | |
katak | 1:40527b0f0dfa | 114 | |
abem | 0:03dfcdd06518 | 115 | /* 割込ハンドラ */ |
abem | 0:03dfcdd06518 | 116 | /* pc-SIO_受信 */ |
abem | 0:03dfcdd06518 | 117 | void isr_Rx_PC() |
abem | 0:03dfcdd06518 | 118 | { |
abem | 0:03dfcdd06518 | 119 | rx_ch_PC = pc.getc(); |
abem | 0:03dfcdd06518 | 120 | rx_buf_PC[rx_cnt_PC] = rx_ch_PC; |
abem | 0:03dfcdd06518 | 121 | if( rx_ch_PC == '\r'){ |
abem | 0:03dfcdd06518 | 122 | rx_endflg_PC = 1; |
abem | 0:03dfcdd06518 | 123 | myled3 = 1; |
abem | 0:03dfcdd06518 | 124 | }else{ |
abem | 0:03dfcdd06518 | 125 | rx_cnt_PC++; |
abem | 0:03dfcdd06518 | 126 | myled2 = 1; |
abem | 0:03dfcdd06518 | 127 | } |
abem | 0:03dfcdd06518 | 128 | } |
abem | 0:03dfcdd06518 | 129 | |
abem | 0:03dfcdd06518 | 130 | /* SIO1_受信 */ |
abem | 0:03dfcdd06518 | 131 | void isr_Rx_SIO1() |
abem | 0:03dfcdd06518 | 132 | { |
abem | 0:03dfcdd06518 | 133 | rx_ch_SIO1 = sio1.getc(); |
abem | 0:03dfcdd06518 | 134 | rx_buf_SIO1[rx_cnt_SIO1] = rx_ch_SIO1; |
abem | 0:03dfcdd06518 | 135 | if( rx_ch_SIO1 == '\r'){ |
abem | 0:03dfcdd06518 | 136 | rx_endflg_SIO1 = 1; |
abem | 0:03dfcdd06518 | 137 | }else{ |
abem | 0:03dfcdd06518 | 138 | rx_cnt_SIO1++; |
abem | 0:03dfcdd06518 | 139 | myled2 = 1; |
abem | 0:03dfcdd06518 | 140 | } |
abem | 0:03dfcdd06518 | 141 | } |
abem | 0:03dfcdd06518 | 142 | /* SIO2_受信 */ |
abem | 0:03dfcdd06518 | 143 | void isr_Rx_SIO2() |
abem | 0:03dfcdd06518 | 144 | { |
abem | 0:03dfcdd06518 | 145 | rx_ch_SIO2 = sio2.getc(); |
abem | 0:03dfcdd06518 | 146 | rx_buf_SIO2[rx_cnt_SIO2] = rx_ch_SIO2; |
abem | 0:03dfcdd06518 | 147 | if( rx_ch_SIO2 == '\r'){ |
abem | 0:03dfcdd06518 | 148 | rx_endflg_SIO2 = 1; |
abem | 0:03dfcdd06518 | 149 | myled3 = 1; |
abem | 0:03dfcdd06518 | 150 | }else{ |
abem | 0:03dfcdd06518 | 151 | rx_cnt_SIO2++; |
abem | 0:03dfcdd06518 | 152 | myled2 = 1; |
abem | 0:03dfcdd06518 | 153 | } |
abem | 0:03dfcdd06518 | 154 | } |
abem | 0:03dfcdd06518 | 155 | |
abem | 0:03dfcdd06518 | 156 | /* flip_設定時間後ワンショット動作 */ |
abem | 0:03dfcdd06518 | 157 | void flip() |
abem | 0:03dfcdd06518 | 158 | { |
abem | 0:03dfcdd06518 | 159 | led4flic.detach(); |
abem | 0:03dfcdd06518 | 160 | // タイムアウトにてLED点灯 |
abem | 0:03dfcdd06518 | 161 | myled4 = 1; |
abem | 0:03dfcdd06518 | 162 | flgCHKrun = 0; |
abem | 0:03dfcdd06518 | 163 | pc.puts("TimeOut CHK\r"); |
abem | 0:03dfcdd06518 | 164 | sio1.puts("NG\r"); |
abem | 0:03dfcdd06518 | 165 | } |
abem | 0:03dfcdd06518 | 166 | |
abem | 0:03dfcdd06518 | 167 | /* flic_設定時間繰り返し動作 */ |
abem | 0:03dfcdd06518 | 168 | void flic() |
abem | 0:03dfcdd06518 | 169 | { |
abem | 0:03dfcdd06518 | 170 | myled4 = !myled4; |
abem | 0:03dfcdd06518 | 171 | } |
abem | 0:03dfcdd06518 | 172 | |
abem | 0:03dfcdd06518 | 173 | |
abem | 0:03dfcdd06518 | 174 | /* main */ |
abem | 0:03dfcdd06518 | 175 | int main() { |
abem | 0:03dfcdd06518 | 176 | /* シリアル初期化 */ |
abem | 0:03dfcdd06518 | 177 | initSIO(); |
abem | 0:03dfcdd06518 | 178 | |
abem | 0:03dfcdd06518 | 179 | /* mbed上LED初期化 */ |
abem | 0:03dfcdd06518 | 180 | myled2 = 0; |
abem | 0:03dfcdd06518 | 181 | myled3 = 0; |
abem | 0:03dfcdd06518 | 182 | /* 出力ポート初期化 */ |
abem | 0:03dfcdd06518 | 183 | outRSTDRV = 1; // '1'=Hi(mbed),出力=Open |
abem | 0:03dfcdd06518 | 184 | outPWMON = 1; // '1'=Hi(mbed),出力=Open |
abem | 0:03dfcdd06518 | 185 | |
abem | 0:03dfcdd06518 | 186 | /* DA出力初期化 */ |
abem | 0:03dfcdd06518 | 187 | da1.write_u16(0); |
abem | 0:03dfcdd06518 | 188 | flgRxAD = 0; // ターゲットAD受信フラグ |
katak | 1:40527b0f0dfa | 189 | flgSqADchk = 0; // シーケンシャルチェックフラグ |
katak | 1:40527b0f0dfa | 190 | |
katak | 1:40527b0f0dfa | 191 | SqTrgDA[0] = 0; // 未使用 |
katak | 1:40527b0f0dfa | 192 | SqTrgDA[1] = outDA0v0; // 0.0V |
katak | 1:40527b0f0dfa | 193 | SqTrgDA[2] = outDA2v5; // 2.5V |
katak | 1:40527b0f0dfa | 194 | SqTrgDA[3] = outDA5v0; // 5.0V |
katak | 1:40527b0f0dfa | 195 | SqTrgDA[4] = outDA0v0; // 0.0V |
katak | 1:40527b0f0dfa | 196 | |
katak | 1:40527b0f0dfa | 197 | SqTrgchkNo[0] = 0; // 未使用 |
katak | 1:40527b0f0dfa | 198 | SqTrgchkNo[1] = 1; // 0.0V |
katak | 1:40527b0f0dfa | 199 | SqTrgchkNo[2] = 2; // 2.5V |
katak | 1:40527b0f0dfa | 200 | SqTrgchkNo[3] = 3; // 5.0V |
katak | 1:40527b0f0dfa | 201 | SqTrgchkNo[4] = 1; // 0.0V |
abem | 0:03dfcdd06518 | 202 | |
abem | 0:03dfcdd06518 | 203 | /* 起動出力 */ |
abem | 0:03dfcdd06518 | 204 | pc.printf("SIOpc test start \r"); |
abem | 0:03dfcdd06518 | 205 | sio1.printf("PW ON\r"); |
abem | 0:03dfcdd06518 | 206 | myled1 = 1; |
abem | 0:03dfcdd06518 | 207 | |
abem | 0:03dfcdd06518 | 208 | while(1){ |
abem | 0:03dfcdd06518 | 209 | /* SIO処理 */ |
abem | 0:03dfcdd06518 | 210 | if( rx_endflg_PC == 1 ){ |
abem | 0:03dfcdd06518 | 211 | cmdSIOpc(); // コマンド処理 pc-SIO |
abem | 0:03dfcdd06518 | 212 | }else if( rx_endflg_SIO1 == 1 ){ |
abem | 0:03dfcdd06518 | 213 | cmdSIOsio1(); // コマンド処理 SIO1 |
abem | 0:03dfcdd06518 | 214 | }else if( rx_endflg_SIO2 == 1 ){ |
abem | 0:03dfcdd06518 | 215 | cmdSIOsio2(); // コマンド処理 SIO2 |
abem | 0:03dfcdd06518 | 216 | } |
abem | 0:03dfcdd06518 | 217 | |
abem | 0:03dfcdd06518 | 218 | /* AD値判定処理 */ |
abem | 0:03dfcdd06518 | 219 | if( flgRxAD == 1){ |
katak | 1:40527b0f0dfa | 220 | if( flgSqADchk == 0 ){ |
katak | 1:40527b0f0dfa | 221 | /* AD値 個別判定 */ |
katak | 1:40527b0f0dfa | 222 | if( trgADcmp(TrgAD, cmpADch) == 0){ |
katak | 1:40527b0f0dfa | 223 | // OK |
katak | 1:40527b0f0dfa | 224 | sprintf(cbufstr,"OK,%05d\r",(int)TrgAD); |
katak | 1:40527b0f0dfa | 225 | }else{ |
katak | 1:40527b0f0dfa | 226 | // NG |
katak | 1:40527b0f0dfa | 227 | sprintf(cbufstr,"NG,%05d\r",(int)TrgAD); |
katak | 1:40527b0f0dfa | 228 | } |
katak | 1:40527b0f0dfa | 229 | sio1.puts(cbufstr); |
katak | 1:40527b0f0dfa | 230 | }else{ |
katak | 1:40527b0f0dfa | 231 | /* AD値 シーケンシャル判定 */ |
katak | 1:40527b0f0dfa | 232 | SqTrgAD[SqchkNo] = TrgAD; // 受信AD値保存 |
katak | 1:40527b0f0dfa | 233 | if( trgADcmp(SqTrgAD[SqchkNo], SqTrgchkNo[SqchkNo]) == 0){ |
katak | 1:40527b0f0dfa | 234 | // OK |
katak | 1:40527b0f0dfa | 235 | switch(SqchkNo){ |
katak | 1:40527b0f0dfa | 236 | case 1: |
katak | 1:40527b0f0dfa | 237 | // 指令値2.5V設定&ターゲットモニタ値リクエスト |
katak | 1:40527b0f0dfa | 238 | trgADreq(2); |
katak | 1:40527b0f0dfa | 239 | SqchkNo++; |
katak | 1:40527b0f0dfa | 240 | break; |
katak | 1:40527b0f0dfa | 241 | case 2: |
katak | 1:40527b0f0dfa | 242 | // 指令値5.0V設定&ターゲットモニタ値リクエスト |
katak | 1:40527b0f0dfa | 243 | trgADreq(3); |
katak | 1:40527b0f0dfa | 244 | SqchkNo++; |
katak | 1:40527b0f0dfa | 245 | break; |
katak | 1:40527b0f0dfa | 246 | case 3: |
katak | 1:40527b0f0dfa | 247 | // 指令値0.0V設定&ターゲットモニタ値リクエスト |
katak | 1:40527b0f0dfa | 248 | trgADreq(1); |
katak | 1:40527b0f0dfa | 249 | SqchkNo++; |
katak | 1:40527b0f0dfa | 250 | break; |
katak | 1:40527b0f0dfa | 251 | case 4: |
katak | 1:40527b0f0dfa | 252 | // シーケンシャル処理終了 |
katak | 1:40527b0f0dfa | 253 | sprintf(cbufstr,"OK\r"); |
katak | 1:40527b0f0dfa | 254 | sio1.puts(cbufstr); |
katak | 1:40527b0f0dfa | 255 | for(i=1;i<=4;i++){ |
katak | 1:40527b0f0dfa | 256 | sprintf(cbufstr,"%05d,%05d\r",(int)SqTrgDA[i],(int)SqTrgAD[i]); |
katak | 1:40527b0f0dfa | 257 | sio1.puts(cbufstr); |
katak | 1:40527b0f0dfa | 258 | } |
katak | 1:40527b0f0dfa | 259 | flgSqADchk = 0; //シーケンシャルチェック終了 |
katak | 1:40527b0f0dfa | 260 | SqchkNo = 0; //シーケンシャルチェックstepリセット |
katak | 1:40527b0f0dfa | 261 | default: |
katak | 1:40527b0f0dfa | 262 | // シーケンシャル処理終了 |
katak | 1:40527b0f0dfa | 263 | flgSqADchk = 0; //シーケンシャルチェック終了 |
katak | 1:40527b0f0dfa | 264 | SqchkNo = 0; //シーケンシャルチェックstepリセット |
katak | 1:40527b0f0dfa | 265 | break; |
katak | 1:40527b0f0dfa | 266 | } |
katak | 1:40527b0f0dfa | 267 | }else{ |
katak | 1:40527b0f0dfa | 268 | // NG |
katak | 1:40527b0f0dfa | 269 | sprintf(cbufstr,"NG,%05d\r",(int)SqchkNo); |
katak | 1:40527b0f0dfa | 270 | sio1.puts(cbufstr); |
katak | 1:40527b0f0dfa | 271 | for(i=1;i<=SqchkNo;i++){ |
katak | 1:40527b0f0dfa | 272 | sprintf(cbufstr,"%05d,%05d\r",(int)SqTrgDA[i],(int)SqTrgAD[i]); |
katak | 1:40527b0f0dfa | 273 | sio1.puts(cbufstr); |
katak | 1:40527b0f0dfa | 274 | } |
katak | 1:40527b0f0dfa | 275 | flgSqADchk = 0; //シーケンシャルチェック終了 |
katak | 1:40527b0f0dfa | 276 | SqchkNo = 0; //シーケンシャルチェックstepリセット |
katak | 1:40527b0f0dfa | 277 | } |
katak | 1:40527b0f0dfa | 278 | } |
abem | 0:03dfcdd06518 | 279 | } |
abem | 0:03dfcdd06518 | 280 | } |
abem | 0:03dfcdd06518 | 281 | } |
abem | 0:03dfcdd06518 | 282 | |
abem | 0:03dfcdd06518 | 283 | |
abem | 0:03dfcdd06518 | 284 | /* 関数 */ |
abem | 0:03dfcdd06518 | 285 | /* シリアルイニシャライズ */ |
abem | 0:03dfcdd06518 | 286 | void initSIO(void) |
abem | 0:03dfcdd06518 | 287 | { |
abem | 0:03dfcdd06518 | 288 | /* シリアル-割込ハンドラ登録 */ |
abem | 0:03dfcdd06518 | 289 | /* pc-SIO */ |
abem | 0:03dfcdd06518 | 290 | pc.attach(isr_Rx_PC,Serial::RxIrq); // 受信割込ハンドラ |
abem | 0:03dfcdd06518 | 291 | /* SIO1 */ |
abem | 0:03dfcdd06518 | 292 | sio1.attach(isr_Rx_SIO1,Serial::RxIrq); // 受信割込ハンドラ |
abem | 0:03dfcdd06518 | 293 | /* SIO2 */ |
abem | 0:03dfcdd06518 | 294 | sio2.attach(isr_Rx_SIO2,Serial::RxIrq); // 受信割込ハンドラ |
abem | 0:03dfcdd06518 | 295 | |
abem | 0:03dfcdd06518 | 296 | /* シリアル初期化 */ |
abem | 0:03dfcdd06518 | 297 | /* pc-SIO */ |
abem | 0:03dfcdd06518 | 298 | pc.baud(38400); |
abem | 0:03dfcdd06518 | 299 | pc.format(8, SerialBase::None ,1); |
abem | 0:03dfcdd06518 | 300 | /* pc-SIO */ |
abem | 0:03dfcdd06518 | 301 | sio1.baud(38400); |
abem | 0:03dfcdd06518 | 302 | sio1.format(8, SerialBase::None ,1); |
abem | 0:03dfcdd06518 | 303 | /* pc-SIO */ |
abem | 0:03dfcdd06518 | 304 | sio2.baud(38400); |
abem | 0:03dfcdd06518 | 305 | sio2.format(8, SerialBase::None ,1); |
abem | 0:03dfcdd06518 | 306 | |
abem | 0:03dfcdd06518 | 307 | /* pc-SIO チェック用初期化 */ |
abem | 0:03dfcdd06518 | 308 | rx_cnt_PC = 0; |
abem | 0:03dfcdd06518 | 309 | rx_endflg_PC = 0; |
abem | 0:03dfcdd06518 | 310 | /* SIO1 チェック用初期化 */ |
abem | 0:03dfcdd06518 | 311 | rx_cnt_SIO1 = 0; |
abem | 0:03dfcdd06518 | 312 | rx_endflg_SIO1 = 0; |
abem | 0:03dfcdd06518 | 313 | /* SIO2 チェック用初期化 */ |
abem | 0:03dfcdd06518 | 314 | rx_cnt_SIO2 = 0; |
abem | 0:03dfcdd06518 | 315 | rx_endflg_SIO2 = 0; |
abem | 0:03dfcdd06518 | 316 | |
abem | 0:03dfcdd06518 | 317 | /* 受信領域初期化 */ |
abem | 0:03dfcdd06518 | 318 | memset(cbufstr,'\0',sizeof(cbufstr)); |
abem | 0:03dfcdd06518 | 319 | memset(rx_buf_PC,'\0',sizeof(rx_buf_PC)); |
abem | 0:03dfcdd06518 | 320 | memset(rx_buf_SIO1,'\0',sizeof(rx_buf_SIO1)); |
abem | 0:03dfcdd06518 | 321 | memset(rx_buf_SIO2,'\0',sizeof(rx_buf_SIO2)); |
abem | 0:03dfcdd06518 | 322 | } |
abem | 0:03dfcdd06518 | 323 | |
abem | 0:03dfcdd06518 | 324 | |
abem | 0:03dfcdd06518 | 325 | /* コマンド処理 */ |
abem | 0:03dfcdd06518 | 326 | /* 20141008 現状ではターミネート受信後返信処理 */ |
abem | 0:03dfcdd06518 | 327 | /* SIO-pc */ |
abem | 0:03dfcdd06518 | 328 | void cmdSIOpc(void) |
abem | 0:03dfcdd06518 | 329 | { |
abem | 0:03dfcdd06518 | 330 | memset(cbufstr,'\0',sizeof(cbufstr)); |
abem | 0:03dfcdd06518 | 331 | |
abem | 0:03dfcdd06518 | 332 | /* 文字長チェック */ |
abem | 0:03dfcdd06518 | 333 | len = strlen(rx_buf_PC); |
abem | 0:03dfcdd06518 | 334 | strncpy(cbufstr,rx_buf_PC,3); |
abem | 0:03dfcdd06518 | 335 | |
abem | 0:03dfcdd06518 | 336 | /* コマンド判定 */ |
abem | 0:03dfcdd06518 | 337 | if( strlen(rx_buf_PC) <= 4){ |
abem | 0:03dfcdd06518 | 338 | if(strcmp(cbufstr,cmdCHK) == 0){ |
abem | 0:03dfcdd06518 | 339 | // コマンド可 |
abem | 0:03dfcdd06518 | 340 | pc.puts("Res CHK\r"); |
abem | 0:03dfcdd06518 | 341 | flipper.detach(); |
abem | 0:03dfcdd06518 | 342 | led4flic.detach(); |
abem | 0:03dfcdd06518 | 343 | if( flgCHKrun == 1){ |
abem | 0:03dfcdd06518 | 344 | flgCHKrun = 0; |
abem | 0:03dfcdd06518 | 345 | myled4 = 0; |
abem | 0:03dfcdd06518 | 346 | sio1.puts("OK\r"); |
abem | 0:03dfcdd06518 | 347 | } |
abem | 0:03dfcdd06518 | 348 | }else{ |
abem | 0:03dfcdd06518 | 349 | // コマンド不可 |
abem | 0:03dfcdd06518 | 350 | pc.puts("No CHK\r"); |
abem | 0:03dfcdd06518 | 351 | } |
abem | 0:03dfcdd06518 | 352 | }else if( strlen(rx_buf_PC) <= 10){ |
abem | 0:03dfcdd06518 | 353 | if(strcmp(cbufstr,cmdDAC) == 0){ |
abem | 0:03dfcdd06518 | 354 | // コマンド可 DAC |
abem | 0:03dfcdd06518 | 355 | strncpy(cbufstr,&rx_buf_PC[4],5); |
abem | 0:03dfcdd06518 | 356 | intbuf = atoi( cbufstr ); |
abem | 0:03dfcdd06518 | 357 | TrgAD = (short)intbuf; |
abem | 0:03dfcdd06518 | 358 | flgRxAD = 1; |
abem | 0:03dfcdd06518 | 359 | }else{ |
abem | 0:03dfcdd06518 | 360 | // コマンド不可 |
abem | 0:03dfcdd06518 | 361 | pc.puts("No DAC\r"); |
abem | 0:03dfcdd06518 | 362 | } |
abem | 0:03dfcdd06518 | 363 | |
abem | 0:03dfcdd06518 | 364 | }else{ |
abem | 0:03dfcdd06518 | 365 | pc.puts("Lengs error\r"); |
abem | 0:03dfcdd06518 | 366 | pc.puts(cbufstr); |
abem | 0:03dfcdd06518 | 367 | } |
abem | 0:03dfcdd06518 | 368 | |
abem | 0:03dfcdd06518 | 369 | memset(rx_buf_PC,'\0',sizeof(rx_buf_PC)); |
abem | 0:03dfcdd06518 | 370 | rx_cnt_PC = 0; |
abem | 0:03dfcdd06518 | 371 | myled2 = 0; |
abem | 0:03dfcdd06518 | 372 | myled3 = 0; |
abem | 0:03dfcdd06518 | 373 | rx_endflg_PC = 0; |
abem | 0:03dfcdd06518 | 374 | } |
abem | 0:03dfcdd06518 | 375 | |
abem | 0:03dfcdd06518 | 376 | /* SIO1 */ |
abem | 0:03dfcdd06518 | 377 | void cmdSIOsio1(void) |
abem | 0:03dfcdd06518 | 378 | { |
abem | 0:03dfcdd06518 | 379 | memset(cbufstr,'\0',sizeof(cbufstr)); |
abem | 0:03dfcdd06518 | 380 | /* 文字長チェック */ |
abem | 0:03dfcdd06518 | 381 | len = strlen(rx_buf_SIO1); |
abem | 0:03dfcdd06518 | 382 | /* コマンド判定 */ |
abem | 0:03dfcdd06518 | 383 | strncpy(cbufstr,rx_buf_SIO1,3); |
abem | 0:03dfcdd06518 | 384 | if( len == 4){ |
abem | 0:03dfcdd06518 | 385 | if(strcmp(cbufstr,cmdCHK) == 0){ |
abem | 0:03dfcdd06518 | 386 | // コマンド可:CHK |
abem | 0:03dfcdd06518 | 387 | if( flgCHKrun == 1){ |
abem | 0:03dfcdd06518 | 388 | flipper.detach(); |
abem | 0:03dfcdd06518 | 389 | led4flic.detach(); |
abem | 0:03dfcdd06518 | 390 | } |
abem | 0:03dfcdd06518 | 391 | flipper.attach(&flip,5.0); |
abem | 0:03dfcdd06518 | 392 | led4flic.attach(&flic,0.3); |
abem | 0:03dfcdd06518 | 393 | flgCHKrun = 1; |
abem | 0:03dfcdd06518 | 394 | sio2.puts("CHK\r"); |
katak | 1:40527b0f0dfa | 395 | }else if(strcmp(cbufstr,cmdIOC) == 0){ |
katak | 1:40527b0f0dfa | 396 | // コマンド可:IOC |
katak | 1:40527b0f0dfa | 397 | if( trgIO1check(0) == 0){ // IO1 = OFF check |
katak | 1:40527b0f0dfa | 398 | if( trgIO1check(1) == 0){ // IO1 = ON check |
katak | 1:40527b0f0dfa | 399 | if( trgIO1check(0) == 0){ // IO1 = OFF check |
katak | 1:40527b0f0dfa | 400 | if( trgIO2check(0) == 0){ // IO2 = OFF check |
katak | 1:40527b0f0dfa | 401 | if( trgIO2check(1) == 0){ // IO2 = ON check |
katak | 1:40527b0f0dfa | 402 | if( trgIO2check(0) == 0){ // IO2 = OFF check |
katak | 1:40527b0f0dfa | 403 | sio1.puts("OK\r"); |
katak | 1:40527b0f0dfa | 404 | }else sio1.puts("NG.6\r"); |
katak | 1:40527b0f0dfa | 405 | }else sio1.puts("NG.5\r"); |
katak | 1:40527b0f0dfa | 406 | }else sio1.puts("NG.4\r"); |
katak | 1:40527b0f0dfa | 407 | }else sio1.puts("NG.3\r"); |
katak | 1:40527b0f0dfa | 408 | }else sio1.puts("NG.2\r"); |
katak | 1:40527b0f0dfa | 409 | }else sio1.puts("NG.1\r"); |
abem | 0:03dfcdd06518 | 410 | }else{ |
abem | 0:03dfcdd06518 | 411 | // コマンド不可 |
abem | 0:03dfcdd06518 | 412 | sio1.puts("CMD Error 3\r"); |
abem | 0:03dfcdd06518 | 413 | } |
abem | 0:03dfcdd06518 | 414 | }else if( len == 6){ |
abem | 0:03dfcdd06518 | 415 | if(strcmp(cbufstr,cmdIO1) == 0){ |
abem | 0:03dfcdd06518 | 416 | // コマンド可:IO1 |
katak | 1:40527b0f0dfa | 417 | // sio1.puts("res IO1\r"); |
abem | 0:03dfcdd06518 | 418 | if( rx_buf_SIO1[4] == '0' ){ |
katak | 1:40527b0f0dfa | 419 | if( trgIO1check(0) == 0){ |
abem | 0:03dfcdd06518 | 420 | sio1.puts("OK\r"); |
katak | 1:40527b0f0dfa | 421 | }else sio1.puts("NG\r"); |
abem | 0:03dfcdd06518 | 422 | }else if(rx_buf_SIO1[4] == '1'){ |
katak | 1:40527b0f0dfa | 423 | if( trgIO1check(1) == 0){ |
abem | 0:03dfcdd06518 | 424 | sio1.puts("OK\r"); |
katak | 1:40527b0f0dfa | 425 | }else sio1.puts("NG\r"); |
abem | 0:03dfcdd06518 | 426 | }else{ |
abem | 0:03dfcdd06518 | 427 | sio1.puts("Data Error cmdIO1\r"); |
abem | 0:03dfcdd06518 | 428 | } |
abem | 0:03dfcdd06518 | 429 | }else if(strcmp(cbufstr,cmdIO2) == 0){ |
abem | 0:03dfcdd06518 | 430 | // コマンド可:IO2 |
katak | 1:40527b0f0dfa | 431 | // sio1.puts("res IO2\r"); |
abem | 0:03dfcdd06518 | 432 | if( rx_buf_SIO1[4] == '0' ){ |
katak | 1:40527b0f0dfa | 433 | if( trgIO2check(0) == 0){ |
abem | 0:03dfcdd06518 | 434 | sio1.puts("OK\r"); |
katak | 1:40527b0f0dfa | 435 | }else sio1.puts("NG\r"); |
abem | 0:03dfcdd06518 | 436 | }else if(rx_buf_SIO1[4] == '1'){ |
katak | 1:40527b0f0dfa | 437 | if( trgIO2check(1) == 0){ |
abem | 0:03dfcdd06518 | 438 | sio1.puts("OK\r"); |
katak | 1:40527b0f0dfa | 439 | }else sio1.puts("NG\r"); |
abem | 0:03dfcdd06518 | 440 | }else{ |
abem | 0:03dfcdd06518 | 441 | sio1.puts("Data Error cmdIO2\r"); |
abem | 0:03dfcdd06518 | 442 | } |
abem | 0:03dfcdd06518 | 443 | }else if(strcmp(cbufstr,cmdDAC) == 0){ |
abem | 0:03dfcdd06518 | 444 | // コマンド可:DAC |
katak | 1:40527b0f0dfa | 445 | // sio1.puts("res DAC\r"); |
abem | 0:03dfcdd06518 | 446 | if(rx_buf_SIO1[4] == '1'){ |
katak | 1:40527b0f0dfa | 447 | // 指令値0.0V設定&ターゲットモニタ値リクエスト |
katak | 1:40527b0f0dfa | 448 | trgADreq(1); |
abem | 0:03dfcdd06518 | 449 | }else if(rx_buf_SIO1[4] == '2'){ |
katak | 1:40527b0f0dfa | 450 | // 指令値2.5V設定&ターゲットモニタ値リクエスト |
katak | 1:40527b0f0dfa | 451 | trgADreq(2); |
abem | 0:03dfcdd06518 | 452 | }else if(rx_buf_SIO1[4] == '3'){ |
katak | 1:40527b0f0dfa | 453 | // 指令値5.0V設定&ターゲットモニタ値リクエスト |
katak | 1:40527b0f0dfa | 454 | trgADreq(3); |
katak | 1:40527b0f0dfa | 455 | }else if(rx_buf_SIO1[4] == '4'){ |
katak | 1:40527b0f0dfa | 456 | // 格納先リセット |
katak | 1:40527b0f0dfa | 457 | for(i=0;i<=4;i++){ |
katak | 1:40527b0f0dfa | 458 | SqTrgAD[i] = 0; |
katak | 1:40527b0f0dfa | 459 | } |
katak | 1:40527b0f0dfa | 460 | // シーケンシャルチェックフラグ = ON |
katak | 1:40527b0f0dfa | 461 | flgSqADchk = 1; |
katak | 1:40527b0f0dfa | 462 | // シーケンシャルチェックstep = 1 |
katak | 1:40527b0f0dfa | 463 | SqchkNo = 1; |
katak | 1:40527b0f0dfa | 464 | // 指令値0.0V設定&ターゲットモニタ値リクエスト |
katak | 1:40527b0f0dfa | 465 | trgADreq(1); |
abem | 0:03dfcdd06518 | 466 | }else{ |
abem | 0:03dfcdd06518 | 467 | sio1.puts("Data Error cmdDAC\r"); |
abem | 0:03dfcdd06518 | 468 | } |
abem | 0:03dfcdd06518 | 469 | }else{ |
abem | 0:03dfcdd06518 | 470 | // コマンド不可 |
abem | 0:03dfcdd06518 | 471 | sio1.puts("CMD Error 5\r"); |
abem | 0:03dfcdd06518 | 472 | sio1.printf("SIO1Rx= %s ",rx_buf_SIO1); |
abem | 0:03dfcdd06518 | 473 | } |
abem | 0:03dfcdd06518 | 474 | }else if( len == 10){ |
abem | 0:03dfcdd06518 | 475 | if(strcmp(cbufstr,cmdDAM) == 0){ |
abem | 0:03dfcdd06518 | 476 | // コマンド可:DAM |
katak | 1:40527b0f0dfa | 477 | // sio1.puts("res DAM\r"); |
katak | 1:40527b0f0dfa | 478 | sio1.puts("DAM\r"); |
abem | 0:03dfcdd06518 | 479 | strncpy(cbufstr,&rx_buf_SIO1[4],5); |
abem | 0:03dfcdd06518 | 480 | intdaout = atoi( cbufstr ); |
abem | 0:03dfcdd06518 | 481 | // DA出力設定 |
abem | 0:03dfcdd06518 | 482 | da1.write_u16((unsigned short)intdaout); |
abem | 0:03dfcdd06518 | 483 | |
abem | 0:03dfcdd06518 | 484 | }else{ |
abem | 0:03dfcdd06518 | 485 | // コマンド不可 |
abem | 0:03dfcdd06518 | 486 | sio1.puts("CMD Error 9\r"); |
abem | 0:03dfcdd06518 | 487 | } |
abem | 0:03dfcdd06518 | 488 | }else{ |
abem | 0:03dfcdd06518 | 489 | sio1.puts("CMD Lengs Error\r"); |
abem | 0:03dfcdd06518 | 490 | } |
abem | 0:03dfcdd06518 | 491 | |
abem | 0:03dfcdd06518 | 492 | memset(rx_buf_SIO1,'\0',sizeof(rx_buf_SIO1)); |
abem | 0:03dfcdd06518 | 493 | rx_cnt_SIO1 = 0; |
abem | 0:03dfcdd06518 | 494 | myled2 = 0; |
abem | 0:03dfcdd06518 | 495 | myled3 = 0; |
abem | 0:03dfcdd06518 | 496 | rx_endflg_SIO1 = 0; |
abem | 0:03dfcdd06518 | 497 | } |
abem | 0:03dfcdd06518 | 498 | |
abem | 0:03dfcdd06518 | 499 | /* SIO2 */ |
abem | 0:03dfcdd06518 | 500 | void cmdSIOsio2(void) |
abem | 0:03dfcdd06518 | 501 | { |
abem | 0:03dfcdd06518 | 502 | memset(cbufstr,'\0',sizeof(cbufstr)); |
abem | 0:03dfcdd06518 | 503 | |
abem | 0:03dfcdd06518 | 504 | /* 文字長チェック */ |
abem | 0:03dfcdd06518 | 505 | len = strlen(rx_buf_SIO2); |
abem | 0:03dfcdd06518 | 506 | strncpy(cbufstr,rx_buf_SIO2,3); |
abem | 0:03dfcdd06518 | 507 | |
abem | 0:03dfcdd06518 | 508 | /* コマンド判定 */ |
abem | 0:03dfcdd06518 | 509 | if( strlen(rx_buf_SIO2) <= 4){ |
abem | 0:03dfcdd06518 | 510 | if(strcmp(cbufstr,cmdCHK) == 0){ |
abem | 0:03dfcdd06518 | 511 | // コマンド可 |
abem | 0:03dfcdd06518 | 512 | pc.puts("Res CHK\r"); |
abem | 0:03dfcdd06518 | 513 | flipper.detach(); |
abem | 0:03dfcdd06518 | 514 | led4flic.detach(); |
abem | 0:03dfcdd06518 | 515 | if( flgCHKrun == 1){ |
abem | 0:03dfcdd06518 | 516 | flgCHKrun = 0; |
abem | 0:03dfcdd06518 | 517 | myled4 = 0; |
abem | 0:03dfcdd06518 | 518 | sio1.puts("OK\r"); |
abem | 0:03dfcdd06518 | 519 | } |
abem | 0:03dfcdd06518 | 520 | }else{ |
abem | 0:03dfcdd06518 | 521 | // コマンド不可 |
abem | 0:03dfcdd06518 | 522 | pc.puts("No CHK\r"); |
abem | 0:03dfcdd06518 | 523 | } |
abem | 0:03dfcdd06518 | 524 | }else if( strlen(rx_buf_SIO2) <= 10){ |
abem | 0:03dfcdd06518 | 525 | if(strcmp(cbufstr,cmdDAC) == 0){ |
abem | 0:03dfcdd06518 | 526 | // コマンド可 DAC |
abem | 0:03dfcdd06518 | 527 | strncpy(cbufstr,&rx_buf_SIO2[4],5); |
abem | 0:03dfcdd06518 | 528 | intbuf = atoi( cbufstr ); |
abem | 0:03dfcdd06518 | 529 | TrgAD = (short)intbuf; |
abem | 0:03dfcdd06518 | 530 | flgRxAD = 1; |
abem | 0:03dfcdd06518 | 531 | }else{ |
abem | 0:03dfcdd06518 | 532 | // コマンド不可 |
abem | 0:03dfcdd06518 | 533 | pc.puts("No DAC\r"); |
abem | 0:03dfcdd06518 | 534 | } |
abem | 0:03dfcdd06518 | 535 | |
abem | 0:03dfcdd06518 | 536 | }else{ |
abem | 0:03dfcdd06518 | 537 | pc.puts("Lengs error\r"); |
abem | 0:03dfcdd06518 | 538 | pc.puts(cbufstr); |
abem | 0:03dfcdd06518 | 539 | } |
abem | 0:03dfcdd06518 | 540 | |
abem | 0:03dfcdd06518 | 541 | memset(rx_buf_SIO2,'\0',sizeof(rx_buf_SIO2)); |
abem | 0:03dfcdd06518 | 542 | rx_cnt_SIO2 = 0; |
abem | 0:03dfcdd06518 | 543 | myled2 = 0; |
abem | 0:03dfcdd06518 | 544 | myled3 = 0; |
abem | 0:03dfcdd06518 | 545 | rx_endflg_SIO2 = 0; |
abem | 0:03dfcdd06518 | 546 | } |
abem | 0:03dfcdd06518 | 547 | |
abem | 0:03dfcdd06518 | 548 | |
katak | 1:40527b0f0dfa | 549 | /* ターゲットIO1チェック処理 */ |
katak | 1:40527b0f0dfa | 550 | /* 引数: */ |
katak | 1:40527b0f0dfa | 551 | /* unsigned short mode :処理条件(0=OFF,1=ON) */ |
katak | 1:40527b0f0dfa | 552 | /* 戻値: */ |
katak | 1:40527b0f0dfa | 553 | /* unsigned short 0:OK,1:NG,2:mode error */ |
katak | 1:40527b0f0dfa | 554 | /* */ |
katak | 1:40527b0f0dfa | 555 | unsigned short trgIO1check(unsigned short mode) |
katak | 1:40527b0f0dfa | 556 | { |
katak | 1:40527b0f0dfa | 557 | if( mode == 0 ){ |
katak | 1:40527b0f0dfa | 558 | outRSTDRV = 1; |
katak | 1:40527b0f0dfa | 559 | wait(0.5); |
katak | 1:40527b0f0dfa | 560 | if( inDrvAlm == 1 ){ |
katak | 1:40527b0f0dfa | 561 | return 0; |
katak | 1:40527b0f0dfa | 562 | }else{ |
katak | 1:40527b0f0dfa | 563 | return 1; |
katak | 1:40527b0f0dfa | 564 | } |
katak | 1:40527b0f0dfa | 565 | }else if( mode == 1){ |
katak | 1:40527b0f0dfa | 566 | outRSTDRV = 0; |
katak | 1:40527b0f0dfa | 567 | wait(0.5); |
katak | 1:40527b0f0dfa | 568 | if( inDrvAlm == 0 ){ |
katak | 1:40527b0f0dfa | 569 | return 0; |
katak | 1:40527b0f0dfa | 570 | }else{ |
katak | 1:40527b0f0dfa | 571 | return 1; |
katak | 1:40527b0f0dfa | 572 | } |
katak | 1:40527b0f0dfa | 573 | }else{ |
katak | 1:40527b0f0dfa | 574 | return 2; |
katak | 1:40527b0f0dfa | 575 | } |
katak | 1:40527b0f0dfa | 576 | } |
katak | 1:40527b0f0dfa | 577 | |
katak | 1:40527b0f0dfa | 578 | |
katak | 1:40527b0f0dfa | 579 | /* ターゲットIO2チェック処理 */ |
katak | 1:40527b0f0dfa | 580 | /* 引数: */ |
katak | 1:40527b0f0dfa | 581 | /* unsigned short mode :処理条件(0=OFF,1=ON) */ |
katak | 1:40527b0f0dfa | 582 | /* 戻値: */ |
katak | 1:40527b0f0dfa | 583 | /* unsigned short 0:OK,1:NG,2:mode error */ |
katak | 1:40527b0f0dfa | 584 | /* */ |
katak | 1:40527b0f0dfa | 585 | unsigned short trgIO2check(unsigned short mode) |
katak | 1:40527b0f0dfa | 586 | { |
katak | 1:40527b0f0dfa | 587 | if( mode == 0 ){ |
katak | 1:40527b0f0dfa | 588 | outPWMON = 1; |
katak | 1:40527b0f0dfa | 589 | wait(0.5); |
katak | 1:40527b0f0dfa | 590 | if( inReady == 1 ){ |
katak | 1:40527b0f0dfa | 591 | return 0; |
katak | 1:40527b0f0dfa | 592 | }else{ |
katak | 1:40527b0f0dfa | 593 | return 1; |
katak | 1:40527b0f0dfa | 594 | } |
katak | 1:40527b0f0dfa | 595 | }else if( mode == 1){ |
katak | 1:40527b0f0dfa | 596 | outPWMON = 0; |
katak | 1:40527b0f0dfa | 597 | wait(0.5); |
katak | 1:40527b0f0dfa | 598 | if( inReady == 0 ){ |
katak | 1:40527b0f0dfa | 599 | return 0; |
katak | 1:40527b0f0dfa | 600 | }else{ |
katak | 1:40527b0f0dfa | 601 | return 1; |
katak | 1:40527b0f0dfa | 602 | } |
katak | 1:40527b0f0dfa | 603 | }else{ |
katak | 1:40527b0f0dfa | 604 | return 2; |
katak | 1:40527b0f0dfa | 605 | } |
katak | 1:40527b0f0dfa | 606 | } |
katak | 1:40527b0f0dfa | 607 | |
katak | 1:40527b0f0dfa | 608 | |
abem | 0:03dfcdd06518 | 609 | /* ターゲットAD値判定処理 */ |
katak | 1:40527b0f0dfa | 610 | /* 変数名:int trgADcmp(short ADdata, unsigned short ch) */ |
abem | 0:03dfcdd06518 | 611 | /* 引数: */ |
abem | 0:03dfcdd06518 | 612 | /* unsigned short ADdata :判定値(受信ADデータ) */ |
abem | 0:03dfcdd06518 | 613 | /* unsigned short ch :判定レンジ指定[1:0V0,2:2v5,3,5v0] */ |
katak | 1:40527b0f0dfa | 614 | /* 戻値:int 0:OK, 1:NG */ |
abem | 0:03dfcdd06518 | 615 | /* */ |
abem | 0:03dfcdd06518 | 616 | int trgADcmp(short ADdata, unsigned short ch) |
abem | 0:03dfcdd06518 | 617 | { |
abem | 0:03dfcdd06518 | 618 | // フラグリセット |
abem | 0:03dfcdd06518 | 619 | flgRxAD = 0; |
abem | 0:03dfcdd06518 | 620 | |
abem | 0:03dfcdd06518 | 621 | memset(cbufstr,'\0',sizeof(cbufstr)); |
abem | 0:03dfcdd06518 | 622 | |
abem | 0:03dfcdd06518 | 623 | // 比較範囲チェック |
abem | 0:03dfcdd06518 | 624 | if( ch == 1 ){ |
abem | 0:03dfcdd06518 | 625 | // 0V比較 |
abem | 0:03dfcdd06518 | 626 | if( ADdata >= AD0v0l && ADdata <= AD0v0h){ |
abem | 0:03dfcdd06518 | 627 | // OK |
katak | 1:40527b0f0dfa | 628 | return 0; |
abem | 0:03dfcdd06518 | 629 | }else{ |
abem | 0:03dfcdd06518 | 630 | // NG |
katak | 1:40527b0f0dfa | 631 | return 1; |
abem | 0:03dfcdd06518 | 632 | } |
abem | 0:03dfcdd06518 | 633 | }else if( ch == 2 ){ |
abem | 0:03dfcdd06518 | 634 | // 2V5比較 |
abem | 0:03dfcdd06518 | 635 | if( ADdata >= AD2v5l && ADdata <= AD2v5h){ |
abem | 0:03dfcdd06518 | 636 | // OK |
katak | 1:40527b0f0dfa | 637 | return 0; |
abem | 0:03dfcdd06518 | 638 | }else{ |
abem | 0:03dfcdd06518 | 639 | // NG |
katak | 1:40527b0f0dfa | 640 | return 1; |
abem | 0:03dfcdd06518 | 641 | } |
abem | 0:03dfcdd06518 | 642 | }else if( ch == 3 ){ |
abem | 0:03dfcdd06518 | 643 | // 5V0比較 |
abem | 0:03dfcdd06518 | 644 | if( ADdata >= AD5v0l && ADdata <= AD5v0h){ |
abem | 0:03dfcdd06518 | 645 | // OK |
katak | 1:40527b0f0dfa | 646 | return 0; |
abem | 0:03dfcdd06518 | 647 | }else{ |
abem | 0:03dfcdd06518 | 648 | // NG |
katak | 1:40527b0f0dfa | 649 | return 1; |
abem | 0:03dfcdd06518 | 650 | } |
abem | 0:03dfcdd06518 | 651 | }else{ |
abem | 0:03dfcdd06518 | 652 | // ch error |
abem | 0:03dfcdd06518 | 653 | sio1.puts("error ADch\r"); |
katak | 1:40527b0f0dfa | 654 | return 1; |
abem | 0:03dfcdd06518 | 655 | } |
abem | 0:03dfcdd06518 | 656 | } |
katak | 1:40527b0f0dfa | 657 | |
katak | 1:40527b0f0dfa | 658 | |
katak | 1:40527b0f0dfa | 659 | /* ターゲットAD値出力設定&モニタ値リクエスト処理 */ |
katak | 1:40527b0f0dfa | 660 | /* 変数名:short trgADreq(unsigned short ch) */ |
katak | 1:40527b0f0dfa | 661 | /* 引数: */ |
katak | 1:40527b0f0dfa | 662 | /* unsigned short ch :判定レンジ指定[1:0V0,2:2v5,3,5v0] */ |
katak | 1:40527b0f0dfa | 663 | /* 戻値:short 0:OK, 1:NG */ |
katak | 1:40527b0f0dfa | 664 | /* */ |
katak | 1:40527b0f0dfa | 665 | short trgADreq(unsigned short ch) |
katak | 1:40527b0f0dfa | 666 | { |
katak | 1:40527b0f0dfa | 667 | // DA 0.0V設定 |
katak | 1:40527b0f0dfa | 668 | if( ch == 1 ){ |
katak | 1:40527b0f0dfa | 669 | // sprintf(cbufstr,"DAC,%05d\r",outDA0v0); |
katak | 1:40527b0f0dfa | 670 | // sio1.puts(cbufstr); |
katak | 1:40527b0f0dfa | 671 | da1.write_u16(outDA0v0); |
katak | 1:40527b0f0dfa | 672 | // DA 2.5V設定 |
katak | 1:40527b0f0dfa | 673 | }else if( ch == 2 ){ |
katak | 1:40527b0f0dfa | 674 | // sprintf(cbufstr,"DAC,%05d\r",outDA2v5); |
katak | 1:40527b0f0dfa | 675 | // sio1.puts(cbufstr); |
katak | 1:40527b0f0dfa | 676 | da1.write_u16(outDA2v5); |
katak | 1:40527b0f0dfa | 677 | // DA 5.0V設定 |
katak | 1:40527b0f0dfa | 678 | }else if( ch == 3 ){ |
katak | 1:40527b0f0dfa | 679 | // sprintf(cbufstr,"DAC,%05d\r",outDA5v0); |
katak | 1:40527b0f0dfa | 680 | // sio1.puts(cbufstr); |
katak | 1:40527b0f0dfa | 681 | da1.write_u16(outDA5v0); |
katak | 1:40527b0f0dfa | 682 | } |
katak | 1:40527b0f0dfa | 683 | |
katak | 1:40527b0f0dfa | 684 | // wait(0.2sec)後、trgAD値リクエスト |
katak | 1:40527b0f0dfa | 685 | wait(0.2); |
katak | 1:40527b0f0dfa | 686 | sio2.puts("DAC\r"); |
katak | 1:40527b0f0dfa | 687 | |
katak | 1:40527b0f0dfa | 688 | // DA 0.0V設定 |
katak | 1:40527b0f0dfa | 689 | if( ch == 1 ){ |
katak | 1:40527b0f0dfa | 690 | cmpADch = 1; // 比較用chセット |
katak | 1:40527b0f0dfa | 691 | return 0; |
katak | 1:40527b0f0dfa | 692 | // DA 2.5V設定 |
katak | 1:40527b0f0dfa | 693 | }else if( ch == 2 ){ |
katak | 1:40527b0f0dfa | 694 | cmpADch = 2; // 比較用chセット |
katak | 1:40527b0f0dfa | 695 | return 0; |
katak | 1:40527b0f0dfa | 696 | // DA 5.0V設定 |
katak | 1:40527b0f0dfa | 697 | }else if( ch == 3 ){ |
katak | 1:40527b0f0dfa | 698 | cmpADch = 3; // 比較用chセット |
katak | 1:40527b0f0dfa | 699 | return 0; |
katak | 1:40527b0f0dfa | 700 | }else{ |
katak | 1:40527b0f0dfa | 701 | return 1; |
katak | 1:40527b0f0dfa | 702 | } |
katak | 1:40527b0f0dfa | 703 | } |