test
Dependencies: EthernetInterface MODSERIAL mbed-rtos mbed
Fork of UDPEchoServer by
main.cpp@8:115dc06a8764, 2018-09-07 (annotated)
- Committer:
- vibe
- Date:
- Fri Sep 07 10:44:11 2018 +0000
- Revision:
- 8:115dc06a8764
- Parent:
- 7:42bc53611fc7
test
Who changed what in which revision?
User | Revision | Line number | New 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 | } |