test

Dependencies:   EthernetInterface MODSERIAL mbed-rtos mbed

Fork of UDPEchoServer by Mbed

Committer:
vibe
Date:
Fri Sep 07 10:44:11 2018 +0000
Revision:
8:115dc06a8764
Parent:
7:42bc53611fc7
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 0:3e54841149df 1 #include "mbed.h"
emilmont 1:3f409cd0bede 2 #include "EthernetInterface.h"
vibe 7:42bc53611fc7 3 #include "MODSERIAL.h"
vibe 7:42bc53611fc7 4 #include "IO.h"
emilmont 1:3f409cd0bede 5
vibe 7:42bc53611fc7 6 extern "C" void mbed_reset();
vibe 7:42bc53611fc7 7
vibe 7:42bc53611fc7 8 char Version[50] = "# AF_IO V05 22.07.2018\r\n";
vibe 7:42bc53611fc7 9 char NoPower[50] = "# Keine 24V Versorgung ! \r\n";
vibe 7:42bc53611fc7 10 char LineStr[50] = "####################################\r\n";
vibe 7:42bc53611fc7 11
vibe 7:42bc53611fc7 12 MODSERIAL USB(USBTX, USBRX); // HardwareBuffer tx, rx
vibe 7:42bc53611fc7 13 I2C I2CIO(p28, p27); // I2C DigIOs onBoard
vibe 7:42bc53611fc7 14 InterruptIn INTI2C01(p21); // I2C DigIn Interupt
vibe 7:42bc53611fc7 15 InterruptIn INT_TMC1(p11); // I2C DigIn Interupt
vibe 7:42bc53611fc7 16 InterruptIn INT_TMC2(p12); // I2C DigIn Interupt
vibe 7:42bc53611fc7 17 int IOBase_IOs = 0x40; // I2C Adresse
vibe 7:42bc53611fc7 18 SPI spi(p5, p6, p7); // DA-Wandler mosi, miso, sclk
vibe 7:42bc53611fc7 19
vibe 7:42bc53611fc7 20 IO mIO; // Init IO-Modul
vibe 7:42bc53611fc7 21 //EthernetInterface eth;
vibe 7:42bc53611fc7 22 //UDPSocket server;
vibe 7:42bc53611fc7 23 //Endpoint client;
vibe 7:42bc53611fc7 24 //const int SERVER_PORT = 50020;
vibe 7:42bc53611fc7 25
vibe 7:42bc53611fc7 26 DigitalOut led1(LED1);
vibe 7:42bc53611fc7 27 DigitalOut led2(LED2);
vibe 7:42bc53611fc7 28 DigitalOut led3(LED3);
vibe 7:42bc53611fc7 29 DigitalOut DAC_CS1(p13); // DA-Wandler
vibe 7:42bc53611fc7 30 DigitalOut TriggerOut(p18); // AD-Wandler Mesurement
vibe 7:42bc53611fc7 31
vibe 7:42bc53611fc7 32 DigitalOut US1_Pos(p14);
vibe 7:42bc53611fc7 33 DigitalOut US1_Gnd(p22);
vibe 7:42bc53611fc7 34 DigitalOut US2_Pos(p23);
vibe 7:42bc53611fc7 35 DigitalOut US2_Gnd(p24);
vibe 7:42bc53611fc7 36
vibe 7:42bc53611fc7 37 Timeout US_ResetTeach;
vibe 7:42bc53611fc7 38 bool US_TeachDone=false;
vibe 7:42bc53611fc7 39 bool US_TeachAktiv=false;
vibe 7:42bc53611fc7 40
vibe 7:42bc53611fc7 41 bool DataAsyncSend=true;
vibe 7:42bc53611fc7 42 bool DataSyncRunning = false;
vibe 7:42bc53611fc7 43
vibe 7:42bc53611fc7 44 AnalogIn ain1(p20); // US-Sensor1
vibe 7:42bc53611fc7 45 AnalogIn ain2(p19); // US-Sensor2
vibe 7:42bc53611fc7 46 AnalogIn ain3(p17); // P17 - Faulhaber MotorError
vibe 7:42bc53611fc7 47 AnalogIn ain4(p16); // 24V
vibe 7:42bc53611fc7 48 AnalogIn ain5(p15); // 5V
vibe 7:42bc53611fc7 49
vibe 7:42bc53611fc7 50 double U_Analog1 = 0; // US-Sensor1
vibe 7:42bc53611fc7 51 double U_Analog2 = 0; // US-Sensor2
vibe 7:42bc53611fc7 52 double U_Analog3 = 0; // P17
vibe 7:42bc53611fc7 53 double U_Analog4 = 0; // 24V
vibe 7:42bc53611fc7 54 double U_Analog5 = 0; // 5V
vibe 7:42bc53611fc7 55
vibe 7:42bc53611fc7 56 bool DigIN_Change = false;
vibe 7:42bc53611fc7 57 char DigIN01 = 0; // 8 Bit Input
vibe 7:42bc53611fc7 58 char DigOUT01 = 0; // 8 Bit Output
vibe 7:42bc53611fc7 59
vibe 7:42bc53611fc7 60 int MainLoopCnt = 0;
vibe 7:42bc53611fc7 61 int MainLoopCnt2 = 0;
vibe 7:42bc53611fc7 62 int MainLoopCnt3 = 0;
vibe 7:42bc53611fc7 63
vibe 7:42bc53611fc7 64 //char UDP_CharBuf[256];
vibe 7:42bc53611fc7 65 bool EthernetConnection = false;
vibe 7:42bc53611fc7 66
vibe 7:42bc53611fc7 67 Ticker AnalogDataTimer;
vibe 7:42bc53611fc7 68 int AD_uSek = 4000;
vibe 7:42bc53611fc7 69 int DataPoints= 500;
vibe 7:42bc53611fc7 70 double Data1[1000];
vibe 7:42bc53611fc7 71 double Data2[1000];
vibe 7:42bc53611fc7 72 int Coordinate[1000];
vibe 7:42bc53611fc7 73 int DataCnt=0;
vibe 7:42bc53611fc7 74 int DataOutCnt=0;
vibe 7:42bc53611fc7 75 double GainFactor=1.6f;
vibe 7:42bc53611fc7 76
vibe 7:42bc53611fc7 77 //#####################################################################################
vibe 7:42bc53611fc7 78 // Init Hardware
vibe 7:42bc53611fc7 79 //#####################################################################################
vibe 7:42bc53611fc7 80 void Init_HW()
vibe 7:42bc53611fc7 81 {
vibe 7:42bc53611fc7 82 US1_Pos=false;
vibe 7:42bc53611fc7 83 US1_Gnd=false;
vibe 7:42bc53611fc7 84 US2_Pos=false;
vibe 7:42bc53611fc7 85 US2_Gnd=false;
vibe 7:42bc53611fc7 86
vibe 7:42bc53611fc7 87 USB.baud(57600);wait_ms(100);
vibe 7:42bc53611fc7 88 USB.printf("\r\n");wait_ms(100);
vibe 7:42bc53611fc7 89 USB.printf(LineStr);wait_ms(100);
vibe 7:42bc53611fc7 90 USB.printf(Version);wait_ms(100);
vibe 7:42bc53611fc7 91 USB.printf(LineStr);wait_ms(100);
vibe 7:42bc53611fc7 92
vibe 7:42bc53611fc7 93 int ret = mIO.Init_I2C_IOs();
vibe 7:42bc53611fc7 94 USB.printf("# Init I2C: %d\r\n",ret); wait_ms(100);
vibe 7:42bc53611fc7 95 DigOUT01 = 0;
vibe 7:42bc53611fc7 96 USB.printf("# Init SPI\r\n"); wait_ms(100);
vibe 7:42bc53611fc7 97 spi.format(16,0);
vibe 7:42bc53611fc7 98 spi.frequency(50000);
vibe 7:42bc53611fc7 99 wait_ms(50);
vibe 7:42bc53611fc7 100 U_Analog1 = ain1.read()* 3.3f;
vibe 7:42bc53611fc7 101 U_Analog2 = ain2.read()* 3.3f;
vibe 7:42bc53611fc7 102 U_Analog3 = ain3.read()* 3.3f;
vibe 7:42bc53611fc7 103 U_Analog4 = ain4.read()* (24/0.76);;
vibe 7:42bc53611fc7 104 U_Analog5 = ain5.read()* (5/0.76);
vibe 7:42bc53611fc7 105 USB.printf("# Analog IN: %1.2f %1.2f %1.1f %1.1f %1.1f \r\n",U_Analog1,U_Analog2,U_Analog3,U_Analog4,U_Analog5);
vibe 7:42bc53611fc7 106 wait_ms(10);
vibe 7:42bc53611fc7 107 }
vibe 7:42bc53611fc7 108
vibe 7:42bc53611fc7 109 //#############################################################################
vibe 7:42bc53611fc7 110 // IO - Write Output
vibe 7:42bc53611fc7 111 //#############################################################################
vibe 7:42bc53611fc7 112 void WR_IO()
vibe 7:42bc53611fc7 113 {
vibe 7:42bc53611fc7 114 DigOUT01 = mIO.WR_Output(1,DigOUT01); // 8 Bit
vibe 7:42bc53611fc7 115 }
vibe 7:42bc53611fc7 116
vibe 7:42bc53611fc7 117 //#############################################################################
vibe 7:42bc53611fc7 118 // IO - Read Input Change Interrupt
vibe 7:42bc53611fc7 119 //#############################################################################
vibe 7:42bc53611fc7 120 void RD_IO()
vibe 7:42bc53611fc7 121 {
vibe 7:42bc53611fc7 122 wait_ms(5); // Taste entprellen !
vibe 7:42bc53611fc7 123 DigIN01 = mIO.RD_Input(0); // 8 Bit
vibe 7:42bc53611fc7 124 DigIN_Change=true;
vibe 7:42bc53611fc7 125 }
vibe 7:42bc53611fc7 126
vibe 7:42bc53611fc7 127 //#############################################################################
vibe 7:42bc53611fc7 128 // US-Sensor Read - Timer Interrupt
vibe 7:42bc53611fc7 129 //#############################################################################
vibe 7:42bc53611fc7 130 void GetAnalogData()
vibe 7:42bc53611fc7 131 {
vibe 7:42bc53611fc7 132 Data1[DataCnt] = ain1.read()* 3.3f*GainFactor;
vibe 7:42bc53611fc7 133 Data2[DataCnt] = ain2.read()* 3.3f*GainFactor;
vibe 7:42bc53611fc7 134 if (DataCnt<DataPoints) { DataCnt+=1; }
vibe 7:42bc53611fc7 135 led3=!led3;
vibe 7:42bc53611fc7 136 TriggerOut=led3;//!=TriggerOut;
vibe 7:42bc53611fc7 137 }
vibe 7:42bc53611fc7 138
vibe 7:42bc53611fc7 139 //#############################################################################
vibe 7:42bc53611fc7 140 // US-Sensor Read - Position Interrupt - Trinamic X-Achse
vibe 7:42bc53611fc7 141 //#############################################################################
vibe 7:42bc53611fc7 142 void GetAnalogDataX()
vibe 7:42bc53611fc7 143 {
vibe 7:42bc53611fc7 144 Data1[DataCnt] = ain1.read()* 3.3f*GainFactor;
vibe 7:42bc53611fc7 145 Data2[DataCnt] = ain2.read()* 3.3f*GainFactor;
vibe 7:42bc53611fc7 146 Coordinate[DataCnt] = 0;
vibe 7:42bc53611fc7 147 if (DataCnt<1000) { DataCnt+=1; }
vibe 7:42bc53611fc7 148 }
vibe 7:42bc53611fc7 149
vibe 7:42bc53611fc7 150 //#############################################################################
vibe 7:42bc53611fc7 151 // US-Sensor Read - Position Interrupt - Trinamic Y-Achse
vibe 7:42bc53611fc7 152 //#############################################################################
vibe 7:42bc53611fc7 153 void GetAnalogDataY()
vibe 7:42bc53611fc7 154 {
vibe 7:42bc53611fc7 155 Data1[DataCnt] = ain1.read()* 3.3f*GainFactor;
vibe 7:42bc53611fc7 156 Data2[DataCnt] = ain2.read()* 3.3f*GainFactor;
vibe 7:42bc53611fc7 157 Coordinate[DataCnt] = 1;
vibe 7:42bc53611fc7 158 if (DataCnt<1000) { DataCnt+=1; }
vibe 7:42bc53611fc7 159 }
vibe 7:42bc53611fc7 160
emilmont 2:6b1012d93eb2 161
vibe 7:42bc53611fc7 162 //#############################################################################
vibe 7:42bc53611fc7 163 // DataArray Send Data
vibe 7:42bc53611fc7 164 //#############################################################################
vibe 7:42bc53611fc7 165 void SendAnalogData(int anz)
vibe 7:42bc53611fc7 166 {
vibe 7:42bc53611fc7 167 USB.printf("# Send Data...\r\n");wait_ms(10);
vibe 7:42bc53611fc7 168 for (int i=0;i<anz-9;i+=10)
vibe 7:42bc53611fc7 169 {
vibe 7:42bc53611fc7 170 for (int ii=0;ii<10;ii++)
vibe 7:42bc53611fc7 171 {
vibe 7:42bc53611fc7 172 USB.printf("&%1.3f %1.3f ",Data1[i+ii],Data2[i+ii]);
vibe 7:42bc53611fc7 173 }
vibe 7:42bc53611fc7 174 USB.printf("\r\n");
vibe 7:42bc53611fc7 175 }
vibe 7:42bc53611fc7 176 USB.printf("# Messungen: %d\r\n",anz);//wait_ms(10);
vibe 7:42bc53611fc7 177 }
vibe 7:42bc53611fc7 178
vibe 7:42bc53611fc7 179 //#############################################################################
vibe 7:42bc53611fc7 180 // US-Sensor TeachInputs
vibe 7:42bc53611fc7 181 //#############################################################################
vibe 7:42bc53611fc7 182 void USRes()
vibe 7:42bc53611fc7 183 {
vibe 7:42bc53611fc7 184 US1_Gnd=false;
vibe 7:42bc53611fc7 185 US1_Pos=false;
vibe 7:42bc53611fc7 186 US2_Gnd=false;
vibe 7:42bc53611fc7 187 US2_Pos=false;
vibe 7:42bc53611fc7 188 US_TeachDone=true;
vibe 7:42bc53611fc7 189 }
vibe 7:42bc53611fc7 190
vibe 7:42bc53611fc7 191 //##################################################################################
vibe 7:42bc53611fc7 192 // USB Steuerbefehle vom PC ausführen
vibe 7:42bc53611fc7 193 //##################################################################################
vibe 7:42bc53611fc7 194 void ReadPC_Command()
vibe 7:42bc53611fc7 195 {
vibe 7:42bc53611fc7 196 char s[20]={'\0'};
vibe 7:42bc53611fc7 197 char Header = '\0';
vibe 7:42bc53611fc7 198 char Command = '\0';
vibe 7:42bc53611fc7 199 int CharAnz = USB.rxBufferGetCount();
vibe 7:42bc53611fc7 200 // USB.printf("# BufCnt: %d =%s\r\n",CharAnz, s);
vibe 7:42bc53611fc7 201 int digout=0;
vibe 7:42bc53611fc7 202 //int value=0;
vibe 7:42bc53611fc7 203 double mSek =0;
vibe 7:42bc53611fc7 204 if (CharAnz>2)
vibe 7:42bc53611fc7 205 {
vibe 7:42bc53611fc7 206 Header = USB.getc();
vibe 7:42bc53611fc7 207 Command = USB.getc();
vibe 7:42bc53611fc7 208 USB.move(s,CharAnz-3);
vibe 7:42bc53611fc7 209 if (Header =='%')
vibe 7:42bc53611fc7 210 {
vibe 7:42bc53611fc7 211 switch(Command)
vibe 7:42bc53611fc7 212 {
vibe 7:42bc53611fc7 213 case 'D': DataAsyncSend=true; USB.printf("# Async US_Data Start\r\n");
vibe 7:42bc53611fc7 214 break;
vibe 7:42bc53611fc7 215 case 'd': DataAsyncSend=false; USB.printf("# Async US_Data Stopp\r\n");
vibe 7:42bc53611fc7 216 break;
vibe 7:42bc53611fc7 217 case 'o': sscanf (s,"%d",&digout);
vibe 7:42bc53611fc7 218 DigOUT01 = digout & 0xFF;
vibe 7:42bc53611fc7 219 USB.printf("%%OK o%d\r\n",DigOUT01);
vibe 7:42bc53611fc7 220 WR_IO();
vibe 7:42bc53611fc7 221 break;
vibe 7:42bc53611fc7 222 case 'r' : USB.printf("!OK reset\r\n");wait_ms(100);
vibe 7:42bc53611fc7 223 DigOUT01=0;
vibe 7:42bc53611fc7 224 WR_IO();
vibe 7:42bc53611fc7 225 mbed_reset();wait_ms(100);
vibe 7:42bc53611fc7 226 break;
vibe 7:42bc53611fc7 227 case 's': USB.printf("# Start Measurement\r\n");
vibe 7:42bc53611fc7 228 DataAsyncSend=false;
vibe 7:42bc53611fc7 229 DataCnt=0;
vibe 7:42bc53611fc7 230 DataOutCnt=0;
vibe 7:42bc53611fc7 231 AnalogDataTimer.attach_us(&GetAnalogData, AD_uSek);
vibe 7:42bc53611fc7 232 DataSyncRunning=true;
vibe 7:42bc53611fc7 233 break;
vibe 7:42bc53611fc7 234 case 'p': AnalogDataTimer.detach();
vibe 7:42bc53611fc7 235 SendAnalogData(DataCnt);
vibe 7:42bc53611fc7 236 break;
vibe 7:42bc53611fc7 237 case 'a': U_Analog1 = ain1.read()* 3.3f;
vibe 7:42bc53611fc7 238 U_Analog2 = ain2.read()* 3.3f;
vibe 7:42bc53611fc7 239 U_Analog3 = ain3.read()* 3.3f;
vibe 7:42bc53611fc7 240 U_Analog4 = ain4.read()* (24/0.76);;
vibe 7:42bc53611fc7 241 U_Analog5 = ain5.read()* (5/0.76);
vibe 7:42bc53611fc7 242 USB.printf("# Analog IN: %1.2f %1.2f %1.1f %1.1f %1.1f \r\n",U_Analog1,U_Analog2,U_Analog3,U_Analog4,U_Analog5);
vibe 7:42bc53611fc7 243 wait_ms(10);
vibe 7:42bc53611fc7 244 break;
vibe 7:42bc53611fc7 245 }
vibe 7:42bc53611fc7 246 }
vibe 7:42bc53611fc7 247 if (Header =='!')
vibe 7:42bc53611fc7 248 {
vibe 7:42bc53611fc7 249 switch(Command)
vibe 7:42bc53611fc7 250 {
vibe 7:42bc53611fc7 251 case 't': sscanf (s,"%lf",&mSek);
vibe 7:42bc53611fc7 252 if (mSek<1) { mSek=1; }
vibe 7:42bc53611fc7 253 if (mSek>50){ mSek=50; }
vibe 7:42bc53611fc7 254 AD_uSek = mSek*1000;
vibe 7:42bc53611fc7 255 USB.printf("# Set to %d uSek/Mess\r\n",AD_uSek);wait_ms(100);
vibe 7:42bc53611fc7 256 break;
vibe 7:42bc53611fc7 257 case 'a': USB.printf("# US-Sensor1 Cal. Max.Signal\r\n"); US1_Pos=true; US_ResetTeach.attach(&USRes,3.0); US_TeachAktiv=true;
vibe 7:42bc53611fc7 258 break;
vibe 7:42bc53611fc7 259 case 'b': USB.printf("# US-Sensor1 Cal. Min.Signal\r\n"); US1_Gnd=true; US_ResetTeach.attach(&USRes,3.0); US_TeachAktiv=true;
vibe 7:42bc53611fc7 260 break;
vibe 7:42bc53611fc7 261 case 'c': USB.printf("# US-Sensor2 Cal. Max.Signal\r\n"); US2_Pos=true; US_ResetTeach.attach(&USRes,3.0); US_TeachAktiv=true;
vibe 7:42bc53611fc7 262 break;
vibe 7:42bc53611fc7 263 case 'd': USB.printf("# US-Sensor2 Cal. Min.Signal\r\n"); US2_Gnd=true; US_ResetTeach.attach(&USRes,3.0); US_TeachAktiv=true;
vibe 7:42bc53611fc7 264 break;
vibe 7:42bc53611fc7 265 }
vibe 7:42bc53611fc7 266 }
vibe 7:42bc53611fc7 267 USB.rxBufferFlush();
vibe 7:42bc53611fc7 268 }
vibe 7:42bc53611fc7 269 }
vibe 7:42bc53611fc7 270
vibe 7:42bc53611fc7 271 int main (void)
vibe 7:42bc53611fc7 272 {
vibe 7:42bc53611fc7 273 Init_HW();
vibe 7:42bc53611fc7 274 US_ResetTeach.attach(&USRes,0.1);
vibe 7:42bc53611fc7 275 RD_IO();
vibe 7:42bc53611fc7 276 //Init_Ethernet();
vibe 7:42bc53611fc7 277 INTI2C01.fall(&RD_IO);
vibe 7:42bc53611fc7 278 //INT_TMC1.fall(&GetAnalogDataX);
vibe 7:42bc53611fc7 279 //INT_TMC2.fall(&GetAnalogDataY);
vibe 7:42bc53611fc7 280 wait_ms(200);
vibe 7:42bc53611fc7 281 US_TeachDone=false;
vibe 7:42bc53611fc7 282
vibe 7:42bc53611fc7 283 while (true) // Loop
vibe 7:42bc53611fc7 284 { // USB Kommando ? ########################################
vibe 7:42bc53611fc7 285 if (USB.rxGetLastChar()=='\n') { ReadPC_Command(); }
vibe 7:42bc53611fc7 286 // DigIn Interupt ? ########################################
vibe 7:42bc53611fc7 287 if (DigIN_Change) { DigIN_Change=false; USB.printf("# Dig.IN: %d\r\n", DigIN01); wait_ms(10); }
vibe 7:42bc53611fc7 288 // Send US-Data to PC ######################################
vibe 7:42bc53611fc7 289 if (DataAsyncSend)
vibe 7:42bc53611fc7 290 { // Send Async Data (100mSek)############################
vibe 7:42bc53611fc7 291 if (MainLoopCnt2<100){ MainLoopCnt2++; }
vibe 7:42bc53611fc7 292 else
vibe 7:42bc53611fc7 293 { MainLoopCnt2=0; led2=!led2;
vibe 7:42bc53611fc7 294 DataCnt=0;
vibe 7:42bc53611fc7 295 DataOutCnt=0;
vibe 7:42bc53611fc7 296 GetAnalogData();
vibe 7:42bc53611fc7 297 USB.printf("$ %1.3f %1.3f\r\n",Data1[0],Data2[0]);
vibe 7:42bc53611fc7 298 }
vibe 7:42bc53611fc7 299 }
vibe 7:42bc53611fc7 300 else
vibe 7:42bc53611fc7 301 { // Send Sync Data from DataArray(Timer/Interrupt)##########
vibe 7:42bc53611fc7 302 if (DataCnt>=DataOutCnt+10)
vibe 7:42bc53611fc7 303 { //USB.printf("# %d %d ",DataCnt,DataOutCnt);
vibe 7:42bc53611fc7 304 for (int ii=0;ii<10;ii++)
vibe 7:42bc53611fc7 305 { USB.printf("&%1.3f %1.3f ",Data1[DataOutCnt+ii],Data2[DataOutCnt+ii]); }
vibe 7:42bc53611fc7 306 USB.printf("\r\n");wait_ms(10);
vibe 7:42bc53611fc7 307 DataOutCnt+=10;
vibe 7:42bc53611fc7 308 }
vibe 7:42bc53611fc7 309 }
vibe 7:42bc53611fc7 310 // DataArray full ########################################
vibe 7:42bc53611fc7 311 if (DataSyncRunning & DataCnt>=DataPoints)
vibe 7:42bc53611fc7 312 { AnalogDataTimer.detach();
vibe 7:42bc53611fc7 313 DataSyncRunning=false;
vibe 7:42bc53611fc7 314 USB.printf("# Stopp Measurement\r\n");
vibe 7:42bc53611fc7 315 led3=false;
vibe 7:42bc53611fc7 316 TriggerOut=false;
vibe 7:42bc53611fc7 317 }
vibe 7:42bc53611fc7 318 // SlowLoop (500mSek) #####################################
vibe 7:42bc53611fc7 319 if (MainLoopCnt<500){ MainLoopCnt++; }
vibe 7:42bc53611fc7 320 else
vibe 7:42bc53611fc7 321 { MainLoopCnt=0; led1=!led1;
vibe 7:42bc53611fc7 322 if(US_TeachDone) { US_TeachDone=false;US_TeachAktiv=false; USB.printf("# US Teach done...\r\n", DigIN01);}
vibe 7:42bc53611fc7 323 WR_IO();
vibe 7:42bc53611fc7 324 //if (EthernetConnection) { Call_UDP_Server(); }
vibe 7:42bc53611fc7 325 }
vibe 7:42bc53611fc7 326 wait_ms(1);
vibe 7:42bc53611fc7 327 }
emilmont 1:3f409cd0bede 328
emilmont 1:3f409cd0bede 329 }