test

Dependencies:   MINI8I8O5A000 mbed EEPROM_P4 IICLCD_LOWCOST

Committer:
tsuparit
Date:
Tue Oct 13 08:50:26 2015 +0000
Revision:
2:82dbbbff7518
Parent:
1:d9ab13cdf377
Child:
3:e658376f6e27
Fix problem ( time issued for RX serial), change polling to interrupt medthod

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tsuparit 0:5e60f85d6c26 1 float firmware_version = 1.00;
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 2:82dbbbff7518 19 Serial pc(USBTX, USBRX);
tsuparit 2:82dbbbff7518 20
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 0:5e60f85d6c26 78 {
tsuparit 2:82dbbbff7518 79
tsuparit 0:5e60f85d6c26 80
tsuparit 2:82dbbbff7518 81 inchar =pc.getc();
tsuparit 2:82dbbbff7518 82
tsuparit 2:82dbbbff7518 83
tsuparit 2:82dbbbff7518 84 myled = 0;
tsuparit 2:82dbbbff7518 85
tsuparit 2:82dbbbff7518 86
tsuparit 2:82dbbbff7518 87
tsuparit 2:82dbbbff7518 88
tsuparit 2:82dbbbff7518 89
tsuparit 2:82dbbbff7518 90 if ( rx_pointer==0) //first incoming character clear old buffer
tsuparit 0:5e60f85d6c26 91 {
tsuparit 0:5e60f85d6c26 92 for (i=0;i<RXBUFFERSIZE;i++) rx_buffer[i]=0; //clear old buffer
tsuparit 2:82dbbbff7518 93 // com_timer.reset();
tsuparit 2:82dbbbff7518 94 // com_timer.start();
tsuparit 0:5e60f85d6c26 95 }
tsuparit 0:5e60f85d6c26 96
tsuparit 2:82dbbbff7518 97
tsuparit 0:5e60f85d6c26 98 rx_buffer[rx_pointer]=inchar; //keep char in buffer...
tsuparit 0:5e60f85d6c26 99
tsuparit 0:5e60f85d6c26 100 rx_pointer++;
tsuparit 0:5e60f85d6c26 101
tsuparit 0:5e60f85d6c26 102
tsuparit 0:5e60f85d6c26 103 if (rx_pointer>=(RXBUFFERSIZE-10))
tsuparit 0:5e60f85d6c26 104 {
tsuparit 0:5e60f85d6c26 105 //rx_pointer=200;
tsuparit 0:5e60f85d6c26 106 //rx_buffer[rx_pointer]=0;
tsuparit 0:5e60f85d6c26 107 rx_pointer=0;//Error buffer overflow
tsuparit 2:82dbbbff7518 108 pc.printf("ERR:buffer overflow\n");
tsuparit 0:5e60f85d6c26 109 }
tsuparit 0:5e60f85d6c26 110
tsuparit 2:82dbbbff7518 111
tsuparit 2:82dbbbff7518 112
tsuparit 0:5e60f85d6c26 113 if ((inchar=='\r')|(inchar=='\n'))
tsuparit 0:5e60f85d6c26 114 {
tsuparit 2:82dbbbff7518 115
tsuparit 0:5e60f85d6c26 116 rx_buffer[rx_pointer-1]=0;//mark end of string, remove terminate char
tsuparit 0:5e60f85d6c26 117
tsuparit 0:5e60f85d6c26 118 i=0;
tsuparit 0:5e60f85d6c26 119 j=0;
tsuparit 0:5e60f85d6c26 120 char cmd_done=0;
tsuparit 0:5e60f85d6c26 121 while (rx_buffer[i]!=0)
tsuparit 0:5e60f85d6c26 122 {
tsuparit 0:5e60f85d6c26 123 if (cmd_done==0)
tsuparit 0:5e60f85d6c26 124 {
tsuparit 0:5e60f85d6c26 125 rx_buffer_CMD[i]=rx_buffer[i];//copy cmd part
tsuparit 0:5e60f85d6c26 126 if (rx_buffer_CMD[i]==' ')
tsuparit 0:5e60f85d6c26 127 {
tsuparit 0:5e60f85d6c26 128 cmd_done=1;
tsuparit 0:5e60f85d6c26 129 rx_buffer_CMD[i+1]=0;
tsuparit 0:5e60f85d6c26 130 }
tsuparit 0:5e60f85d6c26 131 }
tsuparit 0:5e60f85d6c26 132 else
tsuparit 0:5e60f85d6c26 133 {
tsuparit 0:5e60f85d6c26 134 rx_buffer_ARG[j]=rx_buffer[i];//copy cmd part
tsuparit 0:5e60f85d6c26 135 j++;
tsuparit 0:5e60f85d6c26 136 }
tsuparit 0:5e60f85d6c26 137 i++;
tsuparit 0:5e60f85d6c26 138
tsuparit 0:5e60f85d6c26 139 }
tsuparit 1:d9ab13cdf377 140 rx_buffer_ARG[j]=0; //end of string ++++
tsuparit 0:5e60f85d6c26 141
tsuparit 2:82dbbbff7518 142 //pc.printf("rxbuffer: %s",rx_buffer); //test direct echo
tsuparit 0:5e60f85d6c26 143
tsuparit 0:5e60f85d6c26 144 if (strcmp(rx_buffer,"*IDN?")==0)
tsuparit 0:5e60f85d6c26 145 {
tsuparit 0:5e60f85d6c26 146 pc.printf("Schaffner SerIO, ver %.1f\n",firmware_version);
tsuparit 0:5e60f85d6c26 147 }
tsuparit 0:5e60f85d6c26 148 else if (strcmp(rx_buffer,"*RST")==0)
tsuparit 0:5e60f85d6c26 149 {
tsuparit 0:5e60f85d6c26 150 pc.printf("Instrumnet Reset\n");
tsuparit 0:5e60f85d6c26 151 ser_para_reset=1; //pass flag stop all operation
tsuparit 0:5e60f85d6c26 152 //LCDI2C4Bit_init();
tsuparit 0:5e60f85d6c26 153 LiquidCrystal_I2Cinit();
tsuparit 0:5e60f85d6c26 154 LCDI2C4Bit_clear();
tsuparit 0:5e60f85d6c26 155 //LCDI2C4Bit_backLight(true);
tsuparit 0:5e60f85d6c26 156 LiquidCrystal_I2Cbacklight();
tsuparit 0:5e60f85d6c26 157
tsuparit 0:5e60f85d6c26 158 LCDI2C4Bit_cursorTo(0,0);
tsuparit 0:5e60f85d6c26 159 sprintf (str," --- RESET ----");
tsuparit 0:5e60f85d6c26 160 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 161 wait(0.25);
tsuparit 0:5e60f85d6c26 162 NVIC_SystemReset();//softreser
tsuparit 0:5e60f85d6c26 163 }
tsuparit 0:5e60f85d6c26 164 else if (strcmp(rx_buffer,":SYS:VER")==0)
tsuparit 0:5e60f85d6c26 165 {
tsuparit 0:5e60f85d6c26 166 pc.printf("%.1f\n",firmware_version);
tsuparit 0:5e60f85d6c26 167 }
tsuparit 0:5e60f85d6c26 168 else if (strcmp(rx_buffer,":SYST:ERR")==0)
tsuparit 0:5e60f85d6c26 169 {
tsuparit 0:5e60f85d6c26 170 pc.printf("0\n");
tsuparit 0:5e60f85d6c26 171 }
tsuparit 0:5e60f85d6c26 172 //else if (strcmp(rx_buffer,"a11000")==0) //Read Input "aX1"
tsuparit 0:5e60f85d6c26 173 else if ( (rx_buffer[0]=='a') & (rx_buffer[1]==('0'+boardaddress)) & (rx_buffer[2]=='1')) // Write Output "aX1"
tsuparit 0:5e60f85d6c26 174 {
tsuparit 0:5e60f85d6c26 175 pc.printf("OK%d\n",11);
tsuparit 0:5e60f85d6c26 176 }
tsuparit 0:5e60f85d6c26 177 else if ( (rx_buffer[0]=='a') & (rx_buffer[1]==('0'+boardaddress)) & (rx_buffer[2]=='2')) // Write Output "aX2"
tsuparit 0:5e60f85d6c26 178 {
tsuparit 2:82dbbbff7518 179 //writer
tsuparit 2:82dbbbff7518 180 unsigned char b3,b2,b1;
tsuparit 2:82dbbbff7518 181 unsigned int outdata=0;
tsuparit 2:82dbbbff7518 182
tsuparit 2:82dbbbff7518 183 if (rx_buffer[3]!=0)
tsuparit 2:82dbbbff7518 184 {
tsuparit 2:82dbbbff7518 185 outdata=rx_buffer[3]-'0';
tsuparit 2:82dbbbff7518 186 }
tsuparit 2:82dbbbff7518 187 if (rx_buffer[4]!=0)
tsuparit 2:82dbbbff7518 188 {
tsuparit 2:82dbbbff7518 189 outdata=outdata*10+rx_buffer[4]-'0';
tsuparit 2:82dbbbff7518 190 }
tsuparit 2:82dbbbff7518 191 if (rx_buffer[5]!=0)
tsuparit 2:82dbbbff7518 192 {
tsuparit 2:82dbbbff7518 193 outdata=outdata*10+rx_buffer[5]-'0';
tsuparit 2:82dbbbff7518 194 }
tsuparit 2:82dbbbff7518 195
tsuparit 2:82dbbbff7518 196 if bitchk(outdata,0) OUT0=ON; else OUT0=OFF;
tsuparit 2:82dbbbff7518 197 if bitchk(outdata,1) OUT1=ON; else OUT1=OFF;
tsuparit 2:82dbbbff7518 198 if bitchk(outdata,2) OUT2=ON; else OUT2=OFF;
tsuparit 2:82dbbbff7518 199 if bitchk(outdata,3) OUT3=ON; else OUT3=OFF;
tsuparit 2:82dbbbff7518 200
tsuparit 2:82dbbbff7518 201 if bitchk(outdata,4) OUT4=ON; else OUT4=OFF;
tsuparit 2:82dbbbff7518 202 if bitchk(outdata,5) OUT5=ON; else OUT5=OFF;
tsuparit 2:82dbbbff7518 203 if bitchk(outdata,6) OUT6=ON; else OUT6=OFF;
tsuparit 2:82dbbbff7518 204 if bitchk(outdata,7) OUT7=ON; else OUT7=OFF;
tsuparit 2:82dbbbff7518 205
tsuparit 2:82dbbbff7518 206
tsuparit 2:82dbbbff7518 207
tsuparit 2:82dbbbff7518 208 pc.printf("OK%d\n",outdata);
tsuparit 0:5e60f85d6c26 209 }
tsuparit 0:5e60f85d6c26 210 else if ( (rx_buffer[0]=='a') & (rx_buffer[1]==('0'+boardaddress)) & (rx_buffer[2]=='3')) // Write Output "aX2"
tsuparit 0:5e60f85d6c26 211 {
tsuparit 0:5e60f85d6c26 212 pc.printf("OK%d\n",33);
tsuparit 0:5e60f85d6c26 213 }
tsuparit 0:5e60f85d6c26 214 else
tsuparit 0:5e60f85d6c26 215 {//unknow / handle comand
tsuparit 2:82dbbbff7518 216 //pc.printf( "UNKNOWN %s=>%s,%s\n",rx_buffer,rx_buffer_CMD,rx_buffer_ARG);
tsuparit 2:82dbbbff7518 217 pc.printf( "UNKNOWN %s=>%s,%s\n",rx_buffer);
tsuparit 2:82dbbbff7518 218 }
tsuparit 0:5e60f85d6c26 219 rx_pointer=0;//Reset at the end
tsuparit 0:5e60f85d6c26 220 com_timer.stop();
tsuparit 2:82dbbbff7518 221 break;//exit while
tsuparit 2:82dbbbff7518 222 } //end foud "terminal of command//
tsuparit 2:82dbbbff7518 223
tsuparit 0:5e60f85d6c26 224
tsuparit 2:82dbbbff7518 225
tsuparit 2:82dbbbff7518 226 } //end while data read aviable
tsuparit 2:82dbbbff7518 227 myled = 1;
tsuparit 2:82dbbbff7518 228
tsuparit 0:5e60f85d6c26 229
tsuparit 0:5e60f85d6c26 230 }
tsuparit 0:5e60f85d6c26 231
tsuparit 0:5e60f85d6c26 232
tsuparit 0:5e60f85d6c26 233 int main()
tsuparit 0:5e60f85d6c26 234 {
tsuparit 0:5e60f85d6c26 235
tsuparit 0:5e60f85d6c26 236
tsuparit 0:5e60f85d6c26 237
tsuparit 0:5e60f85d6c26 238
tsuparit 0:5e60f85d6c26 239 LiquidCrystal_I2C_SETUP(0x27,16,2);
tsuparit 0:5e60f85d6c26 240 LiquidCrystal_I2Cinit();
tsuparit 0:5e60f85d6c26 241 LiquidCrystal_I2Cbacklight();
tsuparit 0:5e60f85d6c26 242
tsuparit 0:5e60f85d6c26 243 LiquidCrystal_I2CsetCursor(0,1);
tsuparit 0:5e60f85d6c26 244 sprintf (str, " SCHAFFNER ");
tsuparit 0:5e60f85d6c26 245 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 246 LiquidCrystal_I2CsetCursor(0,0);
tsuparit 0:5e60f85d6c26 247 sprintf (str, "SerailDIO v:%.2f ",1.00) ;
tsuparit 0:5e60f85d6c26 248 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 249
tsuparit 2:82dbbbff7518 250 #ifdef USBSerialOption
tsuparit 2:82dbbbff7518 251
tsuparit 2:82dbbbff7518 252 #else
tsuparit 2:82dbbbff7518 253 pc.baud(9600); // set what you want here depending on your terminal program speed
tsuparit 2:82dbbbff7518 254 #endif
tsuparit 2:82dbbbff7518 255
tsuparit 0:5e60f85d6c26 256
tsuparit 0:5e60f85d6c26 257 //pc.printf( "RST\n");
tsuparit 0:5e60f85d6c26 258 com_timer.start();
tsuparit 0:5e60f85d6c26 259 com_timer.stop();
tsuparit 0:5e60f85d6c26 260 com_timer.reset();
tsuparit 0:5e60f85d6c26 261
tsuparit 0:5e60f85d6c26 262 wait(1);
tsuparit 0:5e60f85d6c26 263
tsuparit 2:82dbbbff7518 264 while(0)
tsuparit 2:82dbbbff7518 265 {
tsuparit 2:82dbbbff7518 266 serial_pc_rx_services();
tsuparit 2:82dbbbff7518 267 }
tsuparit 0:5e60f85d6c26 268
tsuparit 2:82dbbbff7518 269
tsuparit 2:82dbbbff7518 270 pc.attach(&serial_pc_rx_services); //
tsuparit 0:5e60f85d6c26 271 while(1)
tsuparit 0:5e60f85d6c26 272 {
tsuparit 2:82dbbbff7518 273
tsuparit 0:5e60f85d6c26 274 LiquidCrystal_I2CsetCursor(0,0);
tsuparit 0:5e60f85d6c26 275 sprintf (str, " I:%d O:%d ",255,255);
tsuparit 0:5e60f85d6c26 276 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 277
tsuparit 0:5e60f85d6c26 278
tsuparit 0:5e60f85d6c26 279 LiquidCrystal_I2CsetCursor(0,1);
tsuparit 0:5e60f85d6c26 280 sprintf (str, "%.2fs:%s ",com_timer.read(),rx_buffer);
tsuparit 0:5e60f85d6c26 281 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 282 if (com_timer.read()>5.0)
tsuparit 0:5e60f85d6c26 283 {
tsuparit 0:5e60f85d6c26 284 rx_pointer=0;//Reset at the end
tsuparit 0:5e60f85d6c26 285 com_timer.stop();
tsuparit 0:5e60f85d6c26 286 }
tsuparit 0:5e60f85d6c26 287
tsuparit 0:5e60f85d6c26 288 }
tsuparit 0:5e60f85d6c26 289
tsuparit 0:5e60f85d6c26 290
tsuparit 0:5e60f85d6c26 291 }