k t / Mbed 2 deprecated TCD_BD_JIG

Dependencies:   mbed

Fork of TCD_BD_JIG by masanori abe

Committer:
abem
Date:
Wed Oct 29 02:52:51 2014 +0000
Revision:
0:03dfcdd06518
Child:
1:40527b0f0dfa
TCD Jig

Who changed what in which revision?

UserRevisionLine numberNew 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
abem 0:03dfcdd06518 36
abem 0:03dfcdd06518 37 /* 定数宣言 */
abem 0:03dfcdd06518 38 // DA固定出力(0-2.5-5V)
abem 0:03dfcdd06518 39 unsigned short outDA0v0 =0;
abem 0:03dfcdd06518 40 unsigned short outDA2v5 =19200;
abem 0:03dfcdd06518 41 //unsigned short outDA2v5 =10000;
abem 0:03dfcdd06518 42 unsigned short outDA5v0 =62000;
abem 0:03dfcdd06518 43
abem 0:03dfcdd06518 44 // ターゲットAD判定閾値(0-2.5-5V)
abem 0:03dfcdd06518 45 // 出力範囲:0-5V(ターゲット:-2047~2048)
abem 0:03dfcdd06518 46 short AD0v0l =-2048;
abem 0:03dfcdd06518 47 short AD0v0h =-1800;
abem 0:03dfcdd06518 48 short AD2v5l =-100;
abem 0:03dfcdd06518 49 short AD2v5h =100;
abem 0:03dfcdd06518 50 short AD5v0l =1800;
abem 0:03dfcdd06518 51 short AD5v0h =2047;
abem 0:03dfcdd06518 52
abem 0:03dfcdd06518 53 // SIOコマンド
abem 0:03dfcdd06518 54 // 個別
abem 0:03dfcdd06518 55 char cmdCHK[] = "CHK"; // シリアルチェック
abem 0:03dfcdd06518 56 char cmdIO1[] = "IO1"; // RST_DRV-DRV_ALMチェック
abem 0:03dfcdd06518 57 char cmdIO2[] = "IO2"; // PWM_ON-READYチェック
abem 0:03dfcdd06518 58 char cmdIOC[] = "IOC"; // DI/Oシーケンシャルチェック
abem 0:03dfcdd06518 59 char cmdDAC[] = "DAC"; // 指令電圧チェック
abem 0:03dfcdd06518 60 char cmdDAM[] = "DAM"; // 指令電圧マニュアル出力
abem 0:03dfcdd06518 61
abem 0:03dfcdd06518 62 /* 変数宣言 */
abem 0:03dfcdd06518 63 // DA用
abem 0:03dfcdd06518 64 unsigned short u16OutDA;
abem 0:03dfcdd06518 65 short TrgAD;
abem 0:03dfcdd06518 66
abem 0:03dfcdd06518 67 unsigned short cmpADch;
abem 0:03dfcdd06518 68
abem 0:03dfcdd06518 69 // pc-SIO
abem 0:03dfcdd06518 70 char rx_buf_PC[50];
abem 0:03dfcdd06518 71 char rx_ch_PC;
abem 0:03dfcdd06518 72 short rx_cnt_PC;
abem 0:03dfcdd06518 73 short rx_endflg_PC;
abem 0:03dfcdd06518 74
abem 0:03dfcdd06518 75 // SIO1
abem 0:03dfcdd06518 76 char rx_buf_SIO1[50];
abem 0:03dfcdd06518 77 char rx_ch_SIO1;
abem 0:03dfcdd06518 78 short rx_cnt_SIO1;
abem 0:03dfcdd06518 79 short rx_endflg_SIO1;
abem 0:03dfcdd06518 80
abem 0:03dfcdd06518 81 // SIO2
abem 0:03dfcdd06518 82 char rx_buf_SIO2[50];
abem 0:03dfcdd06518 83 char rx_ch_SIO2;
abem 0:03dfcdd06518 84 short rx_cnt_SIO2;
abem 0:03dfcdd06518 85 short rx_endflg_SIO2;
abem 0:03dfcdd06518 86
abem 0:03dfcdd06518 87 // 汎用
abem 0:03dfcdd06518 88 short i;
abem 0:03dfcdd06518 89
abem 0:03dfcdd06518 90 int len;
abem 0:03dfcdd06518 91 int intdaout;
abem 0:03dfcdd06518 92 int intbuf;
abem 0:03dfcdd06518 93
abem 0:03dfcdd06518 94 char cbufstr[50];
abem 0:03dfcdd06518 95
abem 0:03dfcdd06518 96 // Flag
abem 0:03dfcdd06518 97 unsigned short flgCHKrun;
abem 0:03dfcdd06518 98 unsigned short flgRxAD;
abem 0:03dfcdd06518 99
abem 0:03dfcdd06518 100 /* 割込ハンドラ */
abem 0:03dfcdd06518 101 /* pc-SIO_受信 */
abem 0:03dfcdd06518 102 void isr_Rx_PC()
abem 0:03dfcdd06518 103 {
abem 0:03dfcdd06518 104 rx_ch_PC = pc.getc();
abem 0:03dfcdd06518 105 rx_buf_PC[rx_cnt_PC] = rx_ch_PC;
abem 0:03dfcdd06518 106 if( rx_ch_PC == '\r'){
abem 0:03dfcdd06518 107 rx_endflg_PC = 1;
abem 0:03dfcdd06518 108 myled3 = 1;
abem 0:03dfcdd06518 109 }else{
abem 0:03dfcdd06518 110 rx_cnt_PC++;
abem 0:03dfcdd06518 111 myled2 = 1;
abem 0:03dfcdd06518 112 }
abem 0:03dfcdd06518 113 }
abem 0:03dfcdd06518 114
abem 0:03dfcdd06518 115 /* SIO1_受信 */
abem 0:03dfcdd06518 116 void isr_Rx_SIO1()
abem 0:03dfcdd06518 117 {
abem 0:03dfcdd06518 118 rx_ch_SIO1 = sio1.getc();
abem 0:03dfcdd06518 119 rx_buf_SIO1[rx_cnt_SIO1] = rx_ch_SIO1;
abem 0:03dfcdd06518 120 if( rx_ch_SIO1 == '\r'){
abem 0:03dfcdd06518 121 rx_endflg_SIO1 = 1;
abem 0:03dfcdd06518 122 }else{
abem 0:03dfcdd06518 123 rx_cnt_SIO1++;
abem 0:03dfcdd06518 124 myled2 = 1;
abem 0:03dfcdd06518 125 }
abem 0:03dfcdd06518 126 }
abem 0:03dfcdd06518 127 /* SIO2_受信 */
abem 0:03dfcdd06518 128 void isr_Rx_SIO2()
abem 0:03dfcdd06518 129 {
abem 0:03dfcdd06518 130 rx_ch_SIO2 = sio2.getc();
abem 0:03dfcdd06518 131 rx_buf_SIO2[rx_cnt_SIO2] = rx_ch_SIO2;
abem 0:03dfcdd06518 132 if( rx_ch_SIO2 == '\r'){
abem 0:03dfcdd06518 133 rx_endflg_SIO2 = 1;
abem 0:03dfcdd06518 134 myled3 = 1;
abem 0:03dfcdd06518 135 }else{
abem 0:03dfcdd06518 136 rx_cnt_SIO2++;
abem 0:03dfcdd06518 137 myled2 = 1;
abem 0:03dfcdd06518 138 }
abem 0:03dfcdd06518 139 }
abem 0:03dfcdd06518 140
abem 0:03dfcdd06518 141 /* flip_設定時間後ワンショット動作 */
abem 0:03dfcdd06518 142 void flip()
abem 0:03dfcdd06518 143 {
abem 0:03dfcdd06518 144 led4flic.detach();
abem 0:03dfcdd06518 145 // タイムアウトにてLED点灯
abem 0:03dfcdd06518 146 myled4 = 1;
abem 0:03dfcdd06518 147 flgCHKrun = 0;
abem 0:03dfcdd06518 148 pc.puts("TimeOut CHK\r");
abem 0:03dfcdd06518 149 sio1.puts("NG\r");
abem 0:03dfcdd06518 150 }
abem 0:03dfcdd06518 151
abem 0:03dfcdd06518 152 /* flic_設定時間繰り返し動作 */
abem 0:03dfcdd06518 153 void flic()
abem 0:03dfcdd06518 154 {
abem 0:03dfcdd06518 155 myled4 = !myled4;
abem 0:03dfcdd06518 156 }
abem 0:03dfcdd06518 157
abem 0:03dfcdd06518 158
abem 0:03dfcdd06518 159 /* main */
abem 0:03dfcdd06518 160 int main() {
abem 0:03dfcdd06518 161 /* シリアル初期化 */
abem 0:03dfcdd06518 162 initSIO();
abem 0:03dfcdd06518 163
abem 0:03dfcdd06518 164 /* mbed上LED初期化 */
abem 0:03dfcdd06518 165 myled2 = 0;
abem 0:03dfcdd06518 166 myled3 = 0;
abem 0:03dfcdd06518 167 /* 出力ポート初期化 */
abem 0:03dfcdd06518 168 outRSTDRV = 1; // '1'=Hi(mbed),出力=Open
abem 0:03dfcdd06518 169 outPWMON = 1; // '1'=Hi(mbed),出力=Open
abem 0:03dfcdd06518 170
abem 0:03dfcdd06518 171 /* DA出力初期化 */
abem 0:03dfcdd06518 172 da1.write_u16(0);
abem 0:03dfcdd06518 173 flgRxAD = 0; // ターゲットAD受信フラグ
abem 0:03dfcdd06518 174
abem 0:03dfcdd06518 175 /* 起動出力 */
abem 0:03dfcdd06518 176 pc.printf("SIOpc test start \r");
abem 0:03dfcdd06518 177 sio1.printf("PW ON\r");
abem 0:03dfcdd06518 178 myled1 = 1;
abem 0:03dfcdd06518 179
abem 0:03dfcdd06518 180 while(1){
abem 0:03dfcdd06518 181 /* SIO処理 */
abem 0:03dfcdd06518 182 if( rx_endflg_PC == 1 ){
abem 0:03dfcdd06518 183 cmdSIOpc(); // コマンド処理 pc-SIO
abem 0:03dfcdd06518 184 }else if( rx_endflg_SIO1 == 1 ){
abem 0:03dfcdd06518 185 cmdSIOsio1(); // コマンド処理 SIO1
abem 0:03dfcdd06518 186 }else if( rx_endflg_SIO2 == 1 ){
abem 0:03dfcdd06518 187 cmdSIOsio2(); // コマンド処理 SIO2
abem 0:03dfcdd06518 188 }
abem 0:03dfcdd06518 189
abem 0:03dfcdd06518 190 /* AD値判定処理 */
abem 0:03dfcdd06518 191 if( flgRxAD == 1){
abem 0:03dfcdd06518 192 trgADcmp(TrgAD, cmpADch);
abem 0:03dfcdd06518 193 }
abem 0:03dfcdd06518 194 }
abem 0:03dfcdd06518 195 }
abem 0:03dfcdd06518 196
abem 0:03dfcdd06518 197
abem 0:03dfcdd06518 198 /* 関数 */
abem 0:03dfcdd06518 199 /* シリアルイニシャライズ */
abem 0:03dfcdd06518 200 void initSIO(void)
abem 0:03dfcdd06518 201 {
abem 0:03dfcdd06518 202 /* シリアル-割込ハンドラ登録 */
abem 0:03dfcdd06518 203 /* pc-SIO */
abem 0:03dfcdd06518 204 pc.attach(isr_Rx_PC,Serial::RxIrq); // 受信割込ハンドラ
abem 0:03dfcdd06518 205 /* SIO1 */
abem 0:03dfcdd06518 206 sio1.attach(isr_Rx_SIO1,Serial::RxIrq); // 受信割込ハンドラ
abem 0:03dfcdd06518 207 /* SIO2 */
abem 0:03dfcdd06518 208 sio2.attach(isr_Rx_SIO2,Serial::RxIrq); // 受信割込ハンドラ
abem 0:03dfcdd06518 209
abem 0:03dfcdd06518 210 /* シリアル初期化 */
abem 0:03dfcdd06518 211 /* pc-SIO */
abem 0:03dfcdd06518 212 pc.baud(38400);
abem 0:03dfcdd06518 213 pc.format(8, SerialBase::None ,1);
abem 0:03dfcdd06518 214 /* pc-SIO */
abem 0:03dfcdd06518 215 sio1.baud(38400);
abem 0:03dfcdd06518 216 sio1.format(8, SerialBase::None ,1);
abem 0:03dfcdd06518 217 /* pc-SIO */
abem 0:03dfcdd06518 218 sio2.baud(38400);
abem 0:03dfcdd06518 219 sio2.format(8, SerialBase::None ,1);
abem 0:03dfcdd06518 220
abem 0:03dfcdd06518 221 /* pc-SIO チェック用初期化 */
abem 0:03dfcdd06518 222 rx_cnt_PC = 0;
abem 0:03dfcdd06518 223 rx_endflg_PC = 0;
abem 0:03dfcdd06518 224 /* SIO1 チェック用初期化 */
abem 0:03dfcdd06518 225 rx_cnt_SIO1 = 0;
abem 0:03dfcdd06518 226 rx_endflg_SIO1 = 0;
abem 0:03dfcdd06518 227 /* SIO2 チェック用初期化 */
abem 0:03dfcdd06518 228 rx_cnt_SIO2 = 0;
abem 0:03dfcdd06518 229 rx_endflg_SIO2 = 0;
abem 0:03dfcdd06518 230
abem 0:03dfcdd06518 231 /* 受信領域初期化 */
abem 0:03dfcdd06518 232 memset(cbufstr,'\0',sizeof(cbufstr));
abem 0:03dfcdd06518 233 memset(rx_buf_PC,'\0',sizeof(rx_buf_PC));
abem 0:03dfcdd06518 234 memset(rx_buf_SIO1,'\0',sizeof(rx_buf_SIO1));
abem 0:03dfcdd06518 235 memset(rx_buf_SIO2,'\0',sizeof(rx_buf_SIO2));
abem 0:03dfcdd06518 236 }
abem 0:03dfcdd06518 237
abem 0:03dfcdd06518 238
abem 0:03dfcdd06518 239 /* コマンド処理 */
abem 0:03dfcdd06518 240 /* 20141008 現状ではターミネート受信後返信処理 */
abem 0:03dfcdd06518 241 /* SIO-pc */
abem 0:03dfcdd06518 242 void cmdSIOpc(void)
abem 0:03dfcdd06518 243 {
abem 0:03dfcdd06518 244 memset(cbufstr,'\0',sizeof(cbufstr));
abem 0:03dfcdd06518 245
abem 0:03dfcdd06518 246 /* 文字長チェック */
abem 0:03dfcdd06518 247 len = strlen(rx_buf_PC);
abem 0:03dfcdd06518 248 strncpy(cbufstr,rx_buf_PC,3);
abem 0:03dfcdd06518 249
abem 0:03dfcdd06518 250 /* コマンド判定 */
abem 0:03dfcdd06518 251 if( strlen(rx_buf_PC) <= 4){
abem 0:03dfcdd06518 252 if(strcmp(cbufstr,cmdCHK) == 0){
abem 0:03dfcdd06518 253 // コマンド可
abem 0:03dfcdd06518 254 pc.puts("Res CHK\r");
abem 0:03dfcdd06518 255 flipper.detach();
abem 0:03dfcdd06518 256 led4flic.detach();
abem 0:03dfcdd06518 257 if( flgCHKrun == 1){
abem 0:03dfcdd06518 258 flgCHKrun = 0;
abem 0:03dfcdd06518 259 myled4 = 0;
abem 0:03dfcdd06518 260 sio1.puts("OK\r");
abem 0:03dfcdd06518 261 }
abem 0:03dfcdd06518 262 }else{
abem 0:03dfcdd06518 263 // コマンド不可
abem 0:03dfcdd06518 264 pc.puts("No CHK\r");
abem 0:03dfcdd06518 265 }
abem 0:03dfcdd06518 266 }else if( strlen(rx_buf_PC) <= 10){
abem 0:03dfcdd06518 267 if(strcmp(cbufstr,cmdDAC) == 0){
abem 0:03dfcdd06518 268 // コマンド可 DAC
abem 0:03dfcdd06518 269 strncpy(cbufstr,&rx_buf_PC[4],5);
abem 0:03dfcdd06518 270 intbuf = atoi( cbufstr );
abem 0:03dfcdd06518 271 TrgAD = (short)intbuf;
abem 0:03dfcdd06518 272 flgRxAD = 1;
abem 0:03dfcdd06518 273 }else{
abem 0:03dfcdd06518 274 // コマンド不可
abem 0:03dfcdd06518 275 pc.puts("No DAC\r");
abem 0:03dfcdd06518 276 }
abem 0:03dfcdd06518 277
abem 0:03dfcdd06518 278 }else{
abem 0:03dfcdd06518 279 pc.puts("Lengs error\r");
abem 0:03dfcdd06518 280 pc.puts(cbufstr);
abem 0:03dfcdd06518 281 }
abem 0:03dfcdd06518 282
abem 0:03dfcdd06518 283 memset(rx_buf_PC,'\0',sizeof(rx_buf_PC));
abem 0:03dfcdd06518 284 rx_cnt_PC = 0;
abem 0:03dfcdd06518 285 myled2 = 0;
abem 0:03dfcdd06518 286 myled3 = 0;
abem 0:03dfcdd06518 287 rx_endflg_PC = 0;
abem 0:03dfcdd06518 288 }
abem 0:03dfcdd06518 289
abem 0:03dfcdd06518 290 /* SIO1 */
abem 0:03dfcdd06518 291 void cmdSIOsio1(void)
abem 0:03dfcdd06518 292 {
abem 0:03dfcdd06518 293 memset(cbufstr,'\0',sizeof(cbufstr));
abem 0:03dfcdd06518 294 /* 文字長チェック */
abem 0:03dfcdd06518 295 len = strlen(rx_buf_SIO1);
abem 0:03dfcdd06518 296 /* コマンド判定 */
abem 0:03dfcdd06518 297 strncpy(cbufstr,rx_buf_SIO1,3);
abem 0:03dfcdd06518 298 if( len == 4){
abem 0:03dfcdd06518 299 if(strcmp(cbufstr,cmdCHK) == 0){
abem 0:03dfcdd06518 300 // コマンド可:CHK
abem 0:03dfcdd06518 301 if( flgCHKrun == 1){
abem 0:03dfcdd06518 302 flipper.detach();
abem 0:03dfcdd06518 303 led4flic.detach();
abem 0:03dfcdd06518 304 }
abem 0:03dfcdd06518 305 flipper.attach(&flip,5.0);
abem 0:03dfcdd06518 306 led4flic.attach(&flic,0.3);
abem 0:03dfcdd06518 307 flgCHKrun = 1;
abem 0:03dfcdd06518 308 sio2.puts("CHK\r");
abem 0:03dfcdd06518 309 }else{
abem 0:03dfcdd06518 310 // コマンド不可
abem 0:03dfcdd06518 311 sio1.puts("CMD Error 3\r");
abem 0:03dfcdd06518 312 }
abem 0:03dfcdd06518 313 }else if( len == 6){
abem 0:03dfcdd06518 314 if(strcmp(cbufstr,cmdIO1) == 0){
abem 0:03dfcdd06518 315 // コマンド可:IO1
abem 0:03dfcdd06518 316 sio1.puts("res IO1\r");
abem 0:03dfcdd06518 317 if( rx_buf_SIO1[4] == '0' ){
abem 0:03dfcdd06518 318 outRSTDRV = 1;
abem 0:03dfcdd06518 319 wait(0.5);
abem 0:03dfcdd06518 320 if( inDrvAlm == 1 ){
abem 0:03dfcdd06518 321 sio1.puts("OK\r");
abem 0:03dfcdd06518 322 }else{
abem 0:03dfcdd06518 323 sio1.puts("NG\r");
abem 0:03dfcdd06518 324 }
abem 0:03dfcdd06518 325 }else if(rx_buf_SIO1[4] == '1'){
abem 0:03dfcdd06518 326 outRSTDRV = 0;
abem 0:03dfcdd06518 327 wait(0.5);
abem 0:03dfcdd06518 328 if( inDrvAlm == 0 ){
abem 0:03dfcdd06518 329 sio1.puts("OK\r");
abem 0:03dfcdd06518 330 }else{
abem 0:03dfcdd06518 331 sio1.puts("NG\r");
abem 0:03dfcdd06518 332 }
abem 0:03dfcdd06518 333 }else{
abem 0:03dfcdd06518 334 sio1.puts("Data Error cmdIO1\r");
abem 0:03dfcdd06518 335 }
abem 0:03dfcdd06518 336 }else if(strcmp(cbufstr,cmdIO2) == 0){
abem 0:03dfcdd06518 337 // コマンド可:IO2
abem 0:03dfcdd06518 338 sio1.puts("res IO2\r");
abem 0:03dfcdd06518 339 if( rx_buf_SIO1[4] == '0' ){
abem 0:03dfcdd06518 340 outPWMON = 1;
abem 0:03dfcdd06518 341 wait(0.5);
abem 0:03dfcdd06518 342 if( inReady == 1 ){
abem 0:03dfcdd06518 343 sio1.puts("OK\r");
abem 0:03dfcdd06518 344 }else{
abem 0:03dfcdd06518 345 sio1.puts("NG\r");
abem 0:03dfcdd06518 346 }
abem 0:03dfcdd06518 347 }else if(rx_buf_SIO1[4] == '1'){
abem 0:03dfcdd06518 348 outPWMON = 0;
abem 0:03dfcdd06518 349 wait(0.5);
abem 0:03dfcdd06518 350 if( inReady == 0 ){
abem 0:03dfcdd06518 351 sio1.puts("OK\r");
abem 0:03dfcdd06518 352 }else{
abem 0:03dfcdd06518 353 sio1.puts("NG\r");
abem 0:03dfcdd06518 354 }
abem 0:03dfcdd06518 355 }else{
abem 0:03dfcdd06518 356 sio1.puts("Data Error cmdIO2\r");
abem 0:03dfcdd06518 357 }
abem 0:03dfcdd06518 358 }else if(strcmp(cbufstr,cmdDAC) == 0){
abem 0:03dfcdd06518 359 // コマンド可:DAC
abem 0:03dfcdd06518 360 sio1.puts("res DAC\r");
abem 0:03dfcdd06518 361 if(rx_buf_SIO1[4] == '1'){
abem 0:03dfcdd06518 362 sprintf(cbufstr,"DAC,%05d\r",outDA0v0);
abem 0:03dfcdd06518 363 sio1.puts(cbufstr);
abem 0:03dfcdd06518 364 da1.write_u16(outDA0v0);
abem 0:03dfcdd06518 365
abem 0:03dfcdd06518 366 wait(0.2);
abem 0:03dfcdd06518 367 sio2.puts("DAC\r");
abem 0:03dfcdd06518 368 // pc.puts("DAC\r");
abem 0:03dfcdd06518 369 cmpADch = 1; // 比較用chセット
abem 0:03dfcdd06518 370 }else if(rx_buf_SIO1[4] == '2'){
abem 0:03dfcdd06518 371 sprintf(cbufstr,"DAC,%05d\r",outDA2v5);
abem 0:03dfcdd06518 372 sio1.puts(cbufstr);
abem 0:03dfcdd06518 373 da1.write_u16(outDA2v5);
abem 0:03dfcdd06518 374
abem 0:03dfcdd06518 375 wait(0.2);
abem 0:03dfcdd06518 376 sio2.puts("DAC\r");
abem 0:03dfcdd06518 377 // pc.puts("DAC\r");
abem 0:03dfcdd06518 378 cmpADch = 2; // 比較用chセット
abem 0:03dfcdd06518 379 }else if(rx_buf_SIO1[4] == '3'){
abem 0:03dfcdd06518 380 sprintf(cbufstr,"DAC,%05d\r",outDA5v0);
abem 0:03dfcdd06518 381 sio1.puts(cbufstr);
abem 0:03dfcdd06518 382 da1.write_u16(outDA5v0);
abem 0:03dfcdd06518 383
abem 0:03dfcdd06518 384 wait(0.2);
abem 0:03dfcdd06518 385 sio2.puts("DAC\r");
abem 0:03dfcdd06518 386 // pc.puts("DAC\r");
abem 0:03dfcdd06518 387 cmpADch = 3; // 比較用chセット
abem 0:03dfcdd06518 388 }else{
abem 0:03dfcdd06518 389 sio1.puts("Data Error cmdDAC\r");
abem 0:03dfcdd06518 390 }
abem 0:03dfcdd06518 391 }else{
abem 0:03dfcdd06518 392 // コマンド不可
abem 0:03dfcdd06518 393 sio1.puts("CMD Error 5\r");
abem 0:03dfcdd06518 394 sio1.printf("SIO1Rx= %s ",rx_buf_SIO1);
abem 0:03dfcdd06518 395 }
abem 0:03dfcdd06518 396 }else if( len == 10){
abem 0:03dfcdd06518 397 if(strcmp(cbufstr,cmdDAM) == 0){
abem 0:03dfcdd06518 398 // コマンド可:DAM
abem 0:03dfcdd06518 399 sio1.puts("res DAM\r");
abem 0:03dfcdd06518 400 strncpy(cbufstr,&rx_buf_SIO1[4],5);
abem 0:03dfcdd06518 401 intdaout = atoi( cbufstr );
abem 0:03dfcdd06518 402 // DA出力設定
abem 0:03dfcdd06518 403 da1.write_u16((unsigned short)intdaout);
abem 0:03dfcdd06518 404
abem 0:03dfcdd06518 405 }else{
abem 0:03dfcdd06518 406 // コマンド不可
abem 0:03dfcdd06518 407 sio1.puts("CMD Error 9\r");
abem 0:03dfcdd06518 408 }
abem 0:03dfcdd06518 409 }else{
abem 0:03dfcdd06518 410 sio1.puts("CMD Lengs Error\r");
abem 0:03dfcdd06518 411 }
abem 0:03dfcdd06518 412
abem 0:03dfcdd06518 413 memset(rx_buf_SIO1,'\0',sizeof(rx_buf_SIO1));
abem 0:03dfcdd06518 414 rx_cnt_SIO1 = 0;
abem 0:03dfcdd06518 415 myled2 = 0;
abem 0:03dfcdd06518 416 myled3 = 0;
abem 0:03dfcdd06518 417 rx_endflg_SIO1 = 0;
abem 0:03dfcdd06518 418 }
abem 0:03dfcdd06518 419
abem 0:03dfcdd06518 420 /* SIO2 */
abem 0:03dfcdd06518 421 void cmdSIOsio2(void)
abem 0:03dfcdd06518 422 {
abem 0:03dfcdd06518 423 memset(cbufstr,'\0',sizeof(cbufstr));
abem 0:03dfcdd06518 424
abem 0:03dfcdd06518 425 /* 文字長チェック */
abem 0:03dfcdd06518 426 len = strlen(rx_buf_SIO2);
abem 0:03dfcdd06518 427 strncpy(cbufstr,rx_buf_SIO2,3);
abem 0:03dfcdd06518 428
abem 0:03dfcdd06518 429 /* コマンド判定 */
abem 0:03dfcdd06518 430 if( strlen(rx_buf_SIO2) <= 4){
abem 0:03dfcdd06518 431 if(strcmp(cbufstr,cmdCHK) == 0){
abem 0:03dfcdd06518 432 // コマンド可
abem 0:03dfcdd06518 433 pc.puts("Res CHK\r");
abem 0:03dfcdd06518 434 flipper.detach();
abem 0:03dfcdd06518 435 led4flic.detach();
abem 0:03dfcdd06518 436 if( flgCHKrun == 1){
abem 0:03dfcdd06518 437 flgCHKrun = 0;
abem 0:03dfcdd06518 438 myled4 = 0;
abem 0:03dfcdd06518 439 sio1.puts("OK\r");
abem 0:03dfcdd06518 440 }
abem 0:03dfcdd06518 441 }else{
abem 0:03dfcdd06518 442 // コマンド不可
abem 0:03dfcdd06518 443 pc.puts("No CHK\r");
abem 0:03dfcdd06518 444 }
abem 0:03dfcdd06518 445 }else if( strlen(rx_buf_SIO2) <= 10){
abem 0:03dfcdd06518 446 if(strcmp(cbufstr,cmdDAC) == 0){
abem 0:03dfcdd06518 447 // コマンド可 DAC
abem 0:03dfcdd06518 448 strncpy(cbufstr,&rx_buf_SIO2[4],5);
abem 0:03dfcdd06518 449 intbuf = atoi( cbufstr );
abem 0:03dfcdd06518 450 TrgAD = (short)intbuf;
abem 0:03dfcdd06518 451 flgRxAD = 1;
abem 0:03dfcdd06518 452 }else{
abem 0:03dfcdd06518 453 // コマンド不可
abem 0:03dfcdd06518 454 pc.puts("No DAC\r");
abem 0:03dfcdd06518 455 }
abem 0:03dfcdd06518 456
abem 0:03dfcdd06518 457 }else{
abem 0:03dfcdd06518 458 pc.puts("Lengs error\r");
abem 0:03dfcdd06518 459 pc.puts(cbufstr);
abem 0:03dfcdd06518 460 }
abem 0:03dfcdd06518 461
abem 0:03dfcdd06518 462 memset(rx_buf_SIO2,'\0',sizeof(rx_buf_SIO2));
abem 0:03dfcdd06518 463 rx_cnt_SIO2 = 0;
abem 0:03dfcdd06518 464 myled2 = 0;
abem 0:03dfcdd06518 465 myled3 = 0;
abem 0:03dfcdd06518 466 rx_endflg_SIO2 = 0;
abem 0:03dfcdd06518 467 }
abem 0:03dfcdd06518 468
abem 0:03dfcdd06518 469
abem 0:03dfcdd06518 470 /* ターゲットAD値判定処理 */
abem 0:03dfcdd06518 471 /* 引数: */
abem 0:03dfcdd06518 472 /* unsigned short ADdata :判定値(受信ADデータ) */
abem 0:03dfcdd06518 473 /* unsigned short ch :判定レンジ指定[1:0V0,2:2v5,3,5v0] */
abem 0:03dfcdd06518 474 /* 戻値:int 1:OK, 0:NG */
abem 0:03dfcdd06518 475 /* */
abem 0:03dfcdd06518 476 int trgADcmp(short ADdata, unsigned short ch)
abem 0:03dfcdd06518 477 {
abem 0:03dfcdd06518 478 // フラグリセット
abem 0:03dfcdd06518 479 flgRxAD = 0;
abem 0:03dfcdd06518 480
abem 0:03dfcdd06518 481 memset(cbufstr,'\0',sizeof(cbufstr));
abem 0:03dfcdd06518 482
abem 0:03dfcdd06518 483 // 比較範囲チェック
abem 0:03dfcdd06518 484 if( ch == 1 ){
abem 0:03dfcdd06518 485 // 0V比較
abem 0:03dfcdd06518 486 if( ADdata >= AD0v0l && ADdata <= AD0v0h){
abem 0:03dfcdd06518 487 // OK
abem 0:03dfcdd06518 488 sprintf(cbufstr,"OK,%05d\r",(int)ADdata);
abem 0:03dfcdd06518 489 sio1.puts(cbufstr);
abem 0:03dfcdd06518 490 return 1;
abem 0:03dfcdd06518 491 }else{
abem 0:03dfcdd06518 492 // NG
abem 0:03dfcdd06518 493 sprintf(cbufstr,"NG,%05d\r",(int)ADdata);
abem 0:03dfcdd06518 494 sio1.puts(cbufstr);
abem 0:03dfcdd06518 495 return 0;
abem 0:03dfcdd06518 496 }
abem 0:03dfcdd06518 497 }else if( ch == 2 ){
abem 0:03dfcdd06518 498 // 2V5比較
abem 0:03dfcdd06518 499 if( ADdata >= AD2v5l && ADdata <= AD2v5h){
abem 0:03dfcdd06518 500 // OK
abem 0:03dfcdd06518 501 sprintf(cbufstr,"OK,%05d\r",(int)ADdata);
abem 0:03dfcdd06518 502 sio1.puts(cbufstr);
abem 0:03dfcdd06518 503 return 1;
abem 0:03dfcdd06518 504 }else{
abem 0:03dfcdd06518 505 // NG
abem 0:03dfcdd06518 506 sprintf(cbufstr,"NG,%05d\r",(int)ADdata);
abem 0:03dfcdd06518 507 sio1.puts(cbufstr);
abem 0:03dfcdd06518 508 return 0;
abem 0:03dfcdd06518 509 }
abem 0:03dfcdd06518 510 }else if( ch == 3 ){
abem 0:03dfcdd06518 511 // 5V0比較
abem 0:03dfcdd06518 512 if( ADdata >= AD5v0l && ADdata <= AD5v0h){
abem 0:03dfcdd06518 513 // OK
abem 0:03dfcdd06518 514 sprintf(cbufstr,"OK,%05d\r",(int)ADdata);
abem 0:03dfcdd06518 515 sio1.puts(cbufstr);
abem 0:03dfcdd06518 516 return 1;
abem 0:03dfcdd06518 517 }else{
abem 0:03dfcdd06518 518 // NG
abem 0:03dfcdd06518 519 sprintf(cbufstr,"NG,%05d\r",(int)ADdata);
abem 0:03dfcdd06518 520 sio1.puts(cbufstr);
abem 0:03dfcdd06518 521 return 0;
abem 0:03dfcdd06518 522 }
abem 0:03dfcdd06518 523 }else{
abem 0:03dfcdd06518 524 // ch error
abem 0:03dfcdd06518 525 sio1.puts("error ADch\r");
abem 0:03dfcdd06518 526 return 0;
abem 0:03dfcdd06518 527 }
abem 0:03dfcdd06518 528 }