test

Dependencies:   MINI8I8O5A000 mbed EEPROM_P4 IICLCD_LOWCOST

Committer:
tsuparit
Date:
Fri Oct 30 10:39:13 2015 +0000
Revision:
4:c08d713f8cfc
Parent:
3:e658376f6e27
Child:
5:a693866be4b3
Update test on CNC link boards

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tsuparit 4:c08d713f8cfc 1 float firmware_version = 1.10;
tsuparit 0:5e60f85d6c26 2
tsuparit 0:5e60f85d6c26 3 #include "mbed.h"
tsuparit 2:82dbbbff7518 4
tsuparit 2:82dbbbff7518 5
tsuparit 2:82dbbbff7518 6 //#include "USBSerial.h"
tsuparit 2:82dbbbff7518 7 //SBSerial pc;
tsuparit 2:82dbbbff7518 8
tsuparit 2:82dbbbff7518 9
tsuparit 2:82dbbbff7518 10
tsuparit 2:82dbbbff7518 11 //#define USBSerialOption
tsuparit 2:82dbbbff7518 12
tsuparit 2:82dbbbff7518 13 #ifdef USBSerialOption
tsuparit 2:82dbbbff7518 14 #include "USBSerial.h"
tsuparit 2:82dbbbff7518 15 USBSerial pc;
tsuparit 2:82dbbbff7518 16 not work??
tsuparit 2:82dbbbff7518 17 #else
tsuparit 2:82dbbbff7518 18
tsuparit 4:c08d713f8cfc 19 //Serial pc(USBTX, USBRX); // SDA serail port
tsuparit 4:c08d713f8cfc 20 Serial pc(PTE0, PTE1); // tx, rx
tsuparit 2:82dbbbff7518 21 #endif
tsuparit 2:82dbbbff7518 22
tsuparit 2:82dbbbff7518 23
tsuparit 2:82dbbbff7518 24
tsuparit 0:5e60f85d6c26 25 #include "LiquidCrystal_I2C.h"
tsuparit 0:5e60f85d6c26 26 #include "mini8i8o5a.h"
tsuparit 0:5e60f85d6c26 27 #define EEPROMBUFFERSIZE 16
tsuparit 0:5e60f85d6c26 28 #include "eepromlib.h"
tsuparit 0:5e60f85d6c26 29
tsuparit 0:5e60f85d6c26 30
tsuparit 0:5e60f85d6c26 31
tsuparit 0:5e60f85d6c26 32
tsuparit 0:5e60f85d6c26 33 DigitalOut myled(LED1);
tsuparit 0:5e60f85d6c26 34
tsuparit 0:5e60f85d6c26 35
tsuparit 0:5e60f85d6c26 36
tsuparit 0:5e60f85d6c26 37 char str[50];
tsuparit 0:5e60f85d6c26 38 char strbuf[50];
tsuparit 0:5e60f85d6c26 39
tsuparit 0:5e60f85d6c26 40
tsuparit 0:5e60f85d6c26 41 int rxchar_count=0;
tsuparit 0:5e60f85d6c26 42 #define RXBUFFERSIZE 100
tsuparit 0:5e60f85d6c26 43 char rx_buffer[RXBUFFERSIZE];
tsuparit 0:5e60f85d6c26 44 char rx_buffer_CMD[RXBUFFERSIZE];
tsuparit 0:5e60f85d6c26 45 char rx_buffer_ARG[RXBUFFERSIZE];
tsuparit 0:5e60f85d6c26 46 char rx_pointer=0;
tsuparit 0:5e60f85d6c26 47 char inchar=0;
tsuparit 0:5e60f85d6c26 48
tsuparit 0:5e60f85d6c26 49 char remote_control=0;
tsuparit 0:5e60f85d6c26 50
tsuparit 0:5e60f85d6c26 51 float ser_para_reset=0;
tsuparit 0:5e60f85d6c26 52 //float ser_para_stab=3.25;
tsuparit 0:5e60f85d6c26 53 float ser_para_time=1.19;
tsuparit 0:5e60f85d6c26 54 float ser_para_result=0.0;
tsuparit 0:5e60f85d6c26 55
tsuparit 0:5e60f85d6c26 56 char ser_para_state=0;
tsuparit 0:5e60f85d6c26 57 char ser_para_err=0;
tsuparit 0:5e60f85d6c26 58 char ser_para_range=0;
tsuparit 0:5e60f85d6c26 59
tsuparit 0:5e60f85d6c26 60 char ser_trigger=0;
tsuparit 0:5e60f85d6c26 61 char ser_para_cont_mode=1; //serial continue print out
tsuparit 0:5e60f85d6c26 62
tsuparit 0:5e60f85d6c26 63 Timer com_timer;
tsuparit 0:5e60f85d6c26 64
tsuparit 0:5e60f85d6c26 65
tsuparit 0:5e60f85d6c26 66 char boardaddress =1;
tsuparit 0:5e60f85d6c26 67
tsuparit 0:5e60f85d6c26 68 void serial_pc_rx_services()
tsuparit 0:5e60f85d6c26 69 {
tsuparit 0:5e60f85d6c26 70 int i,j;
tsuparit 0:5e60f85d6c26 71
tsuparit 2:82dbbbff7518 72
tsuparit 2:82dbbbff7518 73 #ifdef USBSerialOption
tsuparit 2:82dbbbff7518 74 while (pc.available())
tsuparit 2:82dbbbff7518 75 #else
tsuparit 2:82dbbbff7518 76 while(pc.readable())
tsuparit 2:82dbbbff7518 77 #endif
tsuparit 3:e658376f6e27 78 {
tsuparit 3:e658376f6e27 79 inchar =pc.getc();
tsuparit 2:82dbbbff7518 80 if ( rx_pointer==0) //first incoming character clear old buffer
tsuparit 0:5e60f85d6c26 81 {
tsuparit 0:5e60f85d6c26 82 for (i=0;i<RXBUFFERSIZE;i++) rx_buffer[i]=0; //clear old buffer
tsuparit 3:e658376f6e27 83 com_timer.reset();
tsuparit 3:e658376f6e27 84 com_timer.start();
tsuparit 0:5e60f85d6c26 85 }
tsuparit 0:5e60f85d6c26 86
tsuparit 2:82dbbbff7518 87
tsuparit 3:e658376f6e27 88 rx_buffer[rx_pointer]=inchar; //keep char in buffer...
tsuparit 0:5e60f85d6c26 89 rx_pointer++;
tsuparit 0:5e60f85d6c26 90
tsuparit 0:5e60f85d6c26 91
tsuparit 0:5e60f85d6c26 92 if (rx_pointer>=(RXBUFFERSIZE-10))
tsuparit 0:5e60f85d6c26 93 {
tsuparit 0:5e60f85d6c26 94 rx_pointer=0;//Error buffer overflow
tsuparit 2:82dbbbff7518 95 pc.printf("ERR:buffer overflow\n");
tsuparit 0:5e60f85d6c26 96 }
tsuparit 0:5e60f85d6c26 97
tsuparit 2:82dbbbff7518 98
tsuparit 2:82dbbbff7518 99
tsuparit 0:5e60f85d6c26 100 if ((inchar=='\r')|(inchar=='\n'))
tsuparit 0:5e60f85d6c26 101 {
tsuparit 2:82dbbbff7518 102
tsuparit 0:5e60f85d6c26 103 rx_buffer[rx_pointer-1]=0;//mark end of string, remove terminate char
tsuparit 0:5e60f85d6c26 104
tsuparit 0:5e60f85d6c26 105 i=0;
tsuparit 0:5e60f85d6c26 106 j=0;
tsuparit 0:5e60f85d6c26 107 char cmd_done=0;
tsuparit 0:5e60f85d6c26 108 while (rx_buffer[i]!=0)
tsuparit 0:5e60f85d6c26 109 {
tsuparit 0:5e60f85d6c26 110 if (cmd_done==0)
tsuparit 0:5e60f85d6c26 111 {
tsuparit 0:5e60f85d6c26 112 rx_buffer_CMD[i]=rx_buffer[i];//copy cmd part
tsuparit 0:5e60f85d6c26 113 if (rx_buffer_CMD[i]==' ')
tsuparit 0:5e60f85d6c26 114 {
tsuparit 0:5e60f85d6c26 115 cmd_done=1;
tsuparit 0:5e60f85d6c26 116 rx_buffer_CMD[i+1]=0;
tsuparit 0:5e60f85d6c26 117 }
tsuparit 0:5e60f85d6c26 118 }
tsuparit 0:5e60f85d6c26 119 else
tsuparit 0:5e60f85d6c26 120 {
tsuparit 0:5e60f85d6c26 121 rx_buffer_ARG[j]=rx_buffer[i];//copy cmd part
tsuparit 0:5e60f85d6c26 122 j++;
tsuparit 0:5e60f85d6c26 123 }
tsuparit 0:5e60f85d6c26 124 i++;
tsuparit 0:5e60f85d6c26 125
tsuparit 0:5e60f85d6c26 126 }
tsuparit 1:d9ab13cdf377 127 rx_buffer_ARG[j]=0; //end of string ++++
tsuparit 0:5e60f85d6c26 128
tsuparit 2:82dbbbff7518 129 //pc.printf("rxbuffer: %s",rx_buffer); //test direct echo
tsuparit 0:5e60f85d6c26 130
tsuparit 0:5e60f85d6c26 131 if (strcmp(rx_buffer,"*IDN?")==0)
tsuparit 0:5e60f85d6c26 132 {
tsuparit 0:5e60f85d6c26 133 pc.printf("Schaffner SerIO, ver %.1f\n",firmware_version);
tsuparit 0:5e60f85d6c26 134 }
tsuparit 0:5e60f85d6c26 135 else if (strcmp(rx_buffer,"*RST")==0)
tsuparit 0:5e60f85d6c26 136 {
tsuparit 0:5e60f85d6c26 137 pc.printf("Instrumnet Reset\n");
tsuparit 0:5e60f85d6c26 138 ser_para_reset=1; //pass flag stop all operation
tsuparit 0:5e60f85d6c26 139 //LCDI2C4Bit_init();
tsuparit 0:5e60f85d6c26 140 LiquidCrystal_I2Cinit();
tsuparit 0:5e60f85d6c26 141 LCDI2C4Bit_clear();
tsuparit 0:5e60f85d6c26 142 //LCDI2C4Bit_backLight(true);
tsuparit 0:5e60f85d6c26 143 LiquidCrystal_I2Cbacklight();
tsuparit 0:5e60f85d6c26 144
tsuparit 0:5e60f85d6c26 145 LCDI2C4Bit_cursorTo(0,0);
tsuparit 0:5e60f85d6c26 146 sprintf (str," --- RESET ----");
tsuparit 0:5e60f85d6c26 147 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 148 wait(0.25);
tsuparit 3:e658376f6e27 149 NVIC_SystemReset();//softreser
tsuparit 0:5e60f85d6c26 150 }
tsuparit 0:5e60f85d6c26 151 else if (strcmp(rx_buffer,":SYS:VER")==0)
tsuparit 0:5e60f85d6c26 152 {
tsuparit 0:5e60f85d6c26 153 pc.printf("%.1f\n",firmware_version);
tsuparit 0:5e60f85d6c26 154 }
tsuparit 0:5e60f85d6c26 155 else if (strcmp(rx_buffer,":SYST:ERR")==0)
tsuparit 0:5e60f85d6c26 156 {
tsuparit 0:5e60f85d6c26 157 pc.printf("0\n");
tsuparit 0:5e60f85d6c26 158 }
tsuparit 0:5e60f85d6c26 159 //else if (strcmp(rx_buffer,"a11000")==0) //Read Input "aX1"
tsuparit 0:5e60f85d6c26 160 else if ( (rx_buffer[0]=='a') & (rx_buffer[1]==('0'+boardaddress)) & (rx_buffer[2]=='1')) // Write Output "aX1"
tsuparit 0:5e60f85d6c26 161 {
tsuparit 3:e658376f6e27 162 pc.printf("%dOK\n",INPUT);
tsuparit 0:5e60f85d6c26 163 }
tsuparit 0:5e60f85d6c26 164 else if ( (rx_buffer[0]=='a') & (rx_buffer[1]==('0'+boardaddress)) & (rx_buffer[2]=='2')) // Write Output "aX2"
tsuparit 0:5e60f85d6c26 165 {
tsuparit 2:82dbbbff7518 166 //writer
tsuparit 2:82dbbbff7518 167 unsigned char b3,b2,b1;
tsuparit 2:82dbbbff7518 168 unsigned int outdata=0;
tsuparit 2:82dbbbff7518 169
tsuparit 2:82dbbbff7518 170 if (rx_buffer[3]!=0)
tsuparit 2:82dbbbff7518 171 {
tsuparit 2:82dbbbff7518 172 outdata=rx_buffer[3]-'0';
tsuparit 2:82dbbbff7518 173 }
tsuparit 2:82dbbbff7518 174 if (rx_buffer[4]!=0)
tsuparit 2:82dbbbff7518 175 {
tsuparit 2:82dbbbff7518 176 outdata=outdata*10+rx_buffer[4]-'0';
tsuparit 2:82dbbbff7518 177 }
tsuparit 2:82dbbbff7518 178 if (rx_buffer[5]!=0)
tsuparit 2:82dbbbff7518 179 {
tsuparit 2:82dbbbff7518 180 outdata=outdata*10+rx_buffer[5]-'0';
tsuparit 2:82dbbbff7518 181 }
tsuparit 3:e658376f6e27 182 int OUTBUF=0;
tsuparit 3:e658376f6e27 183 if bitchk(outdata,0) {OUT0=ON;OUTBUF=OUTBUF+1;} else OUT0=OFF;
tsuparit 3:e658376f6e27 184 if bitchk(outdata,1) {OUT1=ON;OUTBUF=OUTBUF+2;} else OUT1=OFF;
tsuparit 3:e658376f6e27 185 if bitchk(outdata,2) {OUT2=ON;OUTBUF=OUTBUF+4;} else OUT2=OFF;
tsuparit 3:e658376f6e27 186 if bitchk(outdata,3) {OUT3=ON;OUTBUF=OUTBUF+8;} else OUT3=OFF;
tsuparit 2:82dbbbff7518 187
tsuparit 3:e658376f6e27 188 if bitchk(outdata,4) {OUT4=ON;OUTBUF=OUTBUF+16;} else OUT4=OFF;
tsuparit 3:e658376f6e27 189 if bitchk(outdata,5) {OUT5=ON;OUTBUF=OUTBUF+32;} else OUT5=OFF;
tsuparit 3:e658376f6e27 190 if bitchk(outdata,6) {OUT6=ON;OUTBUF=OUTBUF+64;} else OUT6=OFF;
tsuparit 3:e658376f6e27 191 if bitchk(outdata,7) {OUT7=ON;OUTBUF=OUTBUF+128;} else OUT7=OFF;
tsuparit 3:e658376f6e27 192 OUTPUT=OUTBUF;
tsuparit 3:e658376f6e27 193 pc.printf("%dOK\n",outdata);
tsuparit 0:5e60f85d6c26 194 }
tsuparit 0:5e60f85d6c26 195 else if ( (rx_buffer[0]=='a') & (rx_buffer[1]==('0'+boardaddress)) & (rx_buffer[2]=='3')) // Write Output "aX2"
tsuparit 0:5e60f85d6c26 196 {
tsuparit 3:e658376f6e27 197 pc.printf("%dOK\n",OUTPUT);
tsuparit 0:5e60f85d6c26 198 }
tsuparit 0:5e60f85d6c26 199 else
tsuparit 0:5e60f85d6c26 200 {//unknow / handle comand
tsuparit 2:82dbbbff7518 201 //pc.printf( "UNKNOWN %s=>%s,%s\n",rx_buffer,rx_buffer_CMD,rx_buffer_ARG);
tsuparit 2:82dbbbff7518 202 pc.printf( "UNKNOWN %s=>%s,%s\n",rx_buffer);
tsuparit 2:82dbbbff7518 203 }
tsuparit 0:5e60f85d6c26 204 rx_pointer=0;//Reset at the end
tsuparit 0:5e60f85d6c26 205 com_timer.stop();
tsuparit 2:82dbbbff7518 206 break;//exit while
tsuparit 2:82dbbbff7518 207 } //end foud "terminal of command//
tsuparit 2:82dbbbff7518 208
tsuparit 0:5e60f85d6c26 209
tsuparit 2:82dbbbff7518 210
tsuparit 2:82dbbbff7518 211 } //end while data read aviable
tsuparit 3:e658376f6e27 212
tsuparit 2:82dbbbff7518 213
tsuparit 0:5e60f85d6c26 214
tsuparit 0:5e60f85d6c26 215 }
tsuparit 0:5e60f85d6c26 216
tsuparit 0:5e60f85d6c26 217
tsuparit 0:5e60f85d6c26 218 int main()
tsuparit 0:5e60f85d6c26 219 {
tsuparit 0:5e60f85d6c26 220
tsuparit 0:5e60f85d6c26 221
tsuparit 0:5e60f85d6c26 222
tsuparit 0:5e60f85d6c26 223
tsuparit 0:5e60f85d6c26 224 LiquidCrystal_I2C_SETUP(0x27,16,2);
tsuparit 0:5e60f85d6c26 225 LiquidCrystal_I2Cinit();
tsuparit 0:5e60f85d6c26 226 LiquidCrystal_I2Cbacklight();
tsuparit 0:5e60f85d6c26 227
tsuparit 0:5e60f85d6c26 228 LiquidCrystal_I2CsetCursor(0,1);
tsuparit 0:5e60f85d6c26 229 sprintf (str, " SCHAFFNER ");
tsuparit 0:5e60f85d6c26 230 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 231 LiquidCrystal_I2CsetCursor(0,0);
tsuparit 0:5e60f85d6c26 232 sprintf (str, "SerailDIO v:%.2f ",1.00) ;
tsuparit 0:5e60f85d6c26 233 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 234
tsuparit 2:82dbbbff7518 235 #ifdef USBSerialOption
tsuparit 2:82dbbbff7518 236
tsuparit 2:82dbbbff7518 237 #else
tsuparit 2:82dbbbff7518 238 pc.baud(9600); // set what you want here depending on your terminal program speed
tsuparit 2:82dbbbff7518 239 #endif
tsuparit 2:82dbbbff7518 240
tsuparit 0:5e60f85d6c26 241
tsuparit 0:5e60f85d6c26 242 com_timer.start();
tsuparit 0:5e60f85d6c26 243 com_timer.stop();
tsuparit 0:5e60f85d6c26 244 com_timer.reset();
tsuparit 0:5e60f85d6c26 245
tsuparit 3:e658376f6e27 246 wait(0.1);
tsuparit 3:e658376f6e27 247
tsuparit 3:e658376f6e27 248 pc.attach(&serial_pc_rx_services); // Use interrupt services !!
tsuparit 0:5e60f85d6c26 249 while(1)
tsuparit 0:5e60f85d6c26 250 {
tsuparit 3:e658376f6e27 251 Input_sampling(512);
tsuparit 0:5e60f85d6c26 252 LiquidCrystal_I2CsetCursor(0,0);
tsuparit 3:e658376f6e27 253 sprintf (str, "I:%d O:%d ",INPUT,OUTPUT);
tsuparit 3:e658376f6e27 254 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 255 LiquidCrystal_I2CsetCursor(0,1);
tsuparit 3:e658376f6e27 256 float processtime=1000.0*com_timer.read();
tsuparit 3:e658376f6e27 257 if (processtime<10.0)
tsuparit 3:e658376f6e27 258 {
tsuparit 3:e658376f6e27 259 sprintf (str, "%.1f ms:%s ",processtime,rx_buffer);
tsuparit 3:e658376f6e27 260 }
tsuparit 3:e658376f6e27 261 else
tsuparit 3:e658376f6e27 262 {
tsuparit 3:e658376f6e27 263 sprintf (str, " %.1f ms:%s ",processtime,rx_buffer);
tsuparit 3:e658376f6e27 264 }
tsuparit 0:5e60f85d6c26 265 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 266 if (com_timer.read()>5.0)
tsuparit 0:5e60f85d6c26 267 {
tsuparit 0:5e60f85d6c26 268 rx_pointer=0;//Reset at the end
tsuparit 0:5e60f85d6c26 269 com_timer.stop();
tsuparit 0:5e60f85d6c26 270 }
tsuparit 0:5e60f85d6c26 271
tsuparit 0:5e60f85d6c26 272 }
tsuparit 0:5e60f85d6c26 273
tsuparit 0:5e60f85d6c26 274
tsuparit 0:5e60f85d6c26 275 }