Test

Dependencies:   mbed-dev-OS5_10_4

Committer:
kevman
Date:
Fri Aug 07 07:24:21 2020 +0000
Revision:
0:014fad4dfb9d
Test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kevman 0:014fad4dfb9d 1 /*-------------------------------------------------------------------------------
kevman 0:014fad4dfb9d 2 Programm Name: Main.C
kevman 0:014fad4dfb9d 3 Version: 1.0
kevman 0:014fad4dfb9d 4 Sprache: C++
kevman 0:014fad4dfb9d 5 Compiler: mbed
kevman 0:014fad4dfb9d 6 Autor: PS
kevman 0:014fad4dfb9d 7 Copyright: PS
kevman 0:014fad4dfb9d 8
kevman 0:014fad4dfb9d 9
kevman 0:014fad4dfb9d 10 Funktion: Main Funktionen
kevman 0:014fad4dfb9d 11 04.08.2016: Projekt: EcmComFrdm
kevman 0:014fad4dfb9d 12 -------------------------------------------------------------------------------*/
kevman 0:014fad4dfb9d 13 #include "Headers.h"
kevman 0:014fad4dfb9d 14
kevman 0:014fad4dfb9d 15 // #define Ad0IsRdyDown() (LPC_GPIO0->FIOCLR & 0x000800000)
kevman 0:014fad4dfb9d 16 // #define Ad1IsRdyDown() (LPC_GPIO0->FIOCLR & 0x001000000)
kevman 0:014fad4dfb9d 17
kevman 0:014fad4dfb9d 18 //const char* MyIp = "192.168.2.99";
kevman 0:014fad4dfb9d 19 //const char* HostIp = "192.168.2.8";
kevman 0:014fad4dfb9d 20 //const char* MySub = "255.255.255.0";
kevman 0:014fad4dfb9d 21 //const char* MyGw = "0.0.0.0";
kevman 0:014fad4dfb9d 22
kevman 0:014fad4dfb9d 23
kevman 0:014fad4dfb9d 24
kevman 0:014fad4dfb9d 25 /*-------------------------------------------------------------------------------
kevman 0:014fad4dfb9d 26 Main Funktion.
kevman 0:014fad4dfb9d 27 -------------------------------------------------------------------------------*/
kevman 0:014fad4dfb9d 28 int main()
kevman 0:014fad4dfb9d 29 {
kevman 0:014fad4dfb9d 30
kevman 0:014fad4dfb9d 31 InitMain();
kevman 0:014fad4dfb9d 32 ConnectIrq();
kevman 0:014fad4dfb9d 33 g_fDisableDataRead = false;
kevman 0:014fad4dfb9d 34 // Ad7739Start(0, 0,1);
kevman 0:014fad4dfb9d 35 // MVars.m_fMessDlgOpened = true;
kevman 0:014fad4dfb9d 36 MVars.nAktMittelAfter = 500;
kevman 0:014fad4dfb9d 37 while (true)
kevman 0:014fad4dfb9d 38 {
kevman 0:014fad4dfb9d 39 CheckAnalogIn();
kevman 0:014fad4dfb9d 40
kevman 0:014fad4dfb9d 41 if(nMyTimer > 0) // Scanner Verarbeitung
kevman 0:014fad4dfb9d 42 {
kevman 0:014fad4dfb9d 43 CheckTimerHandlingAndScanner();
kevman 0:014fad4dfb9d 44 }
kevman 0:014fad4dfb9d 45 /*
kevman 0:014fad4dfb9d 46 if(g_nChn1Counter > 1000)
kevman 0:014fad4dfb9d 47 {
kevman 0:014fad4dfb9d 48 printf("%c#DG#Channel 1 Counter: %ld %c\n", STX, g_nChn1Counter, ETX);
kevman 0:014fad4dfb9d 49 g_nChn1Counter = 0;
kevman 0:014fad4dfb9d 50 }
kevman 0:014fad4dfb9d 51 else if(g_nChn2Counter > 1000)
kevman 0:014fad4dfb9d 52 {
kevman 0:014fad4dfb9d 53 printf("%c#DG#Channel 2 Counter: %ld %c\n", STX, g_nChn2Counter, ETX);
kevman 0:014fad4dfb9d 54 g_nChn2Counter = 0;
kevman 0:014fad4dfb9d 55 }
kevman 0:014fad4dfb9d 56 */
kevman 0:014fad4dfb9d 57 if(HostIf.nInTel > 0)
kevman 0:014fad4dfb9d 58 CheckCommInterface();
kevman 0:014fad4dfb9d 59
kevman 0:014fad4dfb9d 60 CheckEcmWinConnect();
kevman 0:014fad4dfb9d 61
kevman 0:014fad4dfb9d 62 #ifdef TOUCH_DISPLAY
kevman 0:014fad4dfb9d 63 CheckEvent(); // TFT Event
kevman 0:014fad4dfb9d 64 #endif
kevman 0:014fad4dfb9d 65 #ifdef DO_AUTO_START
kevman 0:014fad4dfb9d 66 if(g_fDoAutostart == true)
kevman 0:014fad4dfb9d 67 g_fDoAutostart = CheckAutoStart(); // kommt false zurueck, dann wird der Aufruf beendet
kevman 0:014fad4dfb9d 68 #endif
kevman 0:014fad4dfb9d 69 CheckZustand(); // Zustand der Messung
kevman 0:014fad4dfb9d 70 }
kevman 0:014fad4dfb9d 71
kevman 0:014fad4dfb9d 72 }
kevman 0:014fad4dfb9d 73 /*-------------------------------------------------------------------------------
kevman 0:014fad4dfb9d 74 Funktion CheckCommInterface prüft ob ueber die Kommunikationsschnittstelle
kevman 0:014fad4dfb9d 75 eine Anforderung kommt.
kevman 0:014fad4dfb9d 76 -------------------------------------------------------------------------------*/
kevman 0:014fad4dfb9d 77 int CheckCommInterface()
kevman 0:014fad4dfb9d 78 {
kevman 0:014fad4dfb9d 79 if(TransferSioTel() == true)
kevman 0:014fad4dfb9d 80 {
kevman 0:014fad4dfb9d 81 // ChangeLedColor();
kevman 0:014fad4dfb9d 82 // printf("%c#DG#HostIf.strTelAwBuf: %s%c\r\n",STX, HostIf.strTelAwBuf, ETX);
kevman 0:014fad4dfb9d 83 CheckTel();
kevman 0:014fad4dfb9d 84 }
kevman 0:014fad4dfb9d 85 return(true);
kevman 0:014fad4dfb9d 86 }
kevman 0:014fad4dfb9d 87 /*-------------------------------------------------------------------------------
kevman 0:014fad4dfb9d 88 Funktion CheckEcmWinConnect: Bearbeitet alle Methoden die mit der Messung ueber
kevman 0:014fad4dfb9d 89 EcmWin zu tun haben.
kevman 0:014fad4dfb9d 90 -------------------------------------------------------------------------------*/
kevman 0:014fad4dfb9d 91 int CheckEcmWinConnect()
kevman 0:014fad4dfb9d 92 {
kevman 0:014fad4dfb9d 93 if(!MVars.m_fMessDlgOpened)
kevman 0:014fad4dfb9d 94 {
kevman 0:014fad4dfb9d 95 g_nChn2Counter++;
kevman 0:014fad4dfb9d 96 if(g_nChn2Counter > 50000)
kevman 0:014fad4dfb9d 97 {
kevman 0:014fad4dfb9d 98 // printf("%c#DG#Channel 2 Counter: %ld %c\n", STX, g_nChn2Counter, ETX);
kevman 0:014fad4dfb9d 99 ChangeLedColor();
kevman 0:014fad4dfb9d 100 g_nChn2Counter = 0;
kevman 0:014fad4dfb9d 101 }
kevman 0:014fad4dfb9d 102 }
kevman 0:014fad4dfb9d 103
kevman 0:014fad4dfb9d 104 if(MVars.m_fMessDlgOpened)
kevman 0:014fad4dfb9d 105 {
kevman 0:014fad4dfb9d 106 // ReadAllAdChannels();
kevman 0:014fad4dfb9d 107 if(MVars.nMittelTimer >= MVars.nAktMittelAfter)
kevman 0:014fad4dfb9d 108 {
kevman 0:014fad4dfb9d 109 CheckDaAd();
kevman 0:014fad4dfb9d 110 MVars.nMittelTimer -= MVars.nAktMittelAfter;
kevman 0:014fad4dfb9d 111 ChangeLedColor();
kevman 0:014fad4dfb9d 112 }
kevman 0:014fad4dfb9d 113 CheckZustand();
kevman 0:014fad4dfb9d 114 }
kevman 0:014fad4dfb9d 115 #ifdef DO_AUTO_START
kevman 0:014fad4dfb9d 116 else if(m_fAutoStart == true) // ist in der Autostart Funktion
kevman 0:014fad4dfb9d 117 {
kevman 0:014fad4dfb9d 118 if(MVars.nMittelTimer >= MVars.nAktMittelAfter) // nAktMittelAfter muss ueber die Sequenz neu gestzt werden
kevman 0:014fad4dfb9d 119 {
kevman 0:014fad4dfb9d 120 if(CheckDaAd() == false)
kevman 0:014fad4dfb9d 121 {
kevman 0:014fad4dfb9d 122 DisableAutoMode();
kevman 0:014fad4dfb9d 123 }
kevman 0:014fad4dfb9d 124 MVars.nMittelTimer -= MVars.nAktMittelAfter;
kevman 0:014fad4dfb9d 125 ChangeLedColor();
kevman 0:014fad4dfb9d 126 }
kevman 0:014fad4dfb9d 127 if (g_nTftTimer >= 1000)
kevman 0:014fad4dfb9d 128 {
kevman 0:014fad4dfb9d 129 RequestDateTime();
kevman 0:014fad4dfb9d 130 g_nTftTimer = 0;
kevman 0:014fad4dfb9d 131 if(m_fAutoStart == true)
kevman 0:014fad4dfb9d 132 DoStatusLed = !DoStatusLed;
kevman 0:014fad4dfb9d 133 }
kevman 0:014fad4dfb9d 134 }
kevman 0:014fad4dfb9d 135 #endif
kevman 0:014fad4dfb9d 136 else
kevman 0:014fad4dfb9d 137 {
kevman 0:014fad4dfb9d 138 if (g_nTftTimer >= 1000)
kevman 0:014fad4dfb9d 139 {
kevman 0:014fad4dfb9d 140 // RequestDateTime();
kevman 0:014fad4dfb9d 141 g_nTftTimer = 0;
kevman 0:014fad4dfb9d 142 }
kevman 0:014fad4dfb9d 143 }
kevman 0:014fad4dfb9d 144 return(true);
kevman 0:014fad4dfb9d 145 }
kevman 0:014fad4dfb9d 146
kevman 0:014fad4dfb9d 147 /*-------------------------------------------------------------------------------
kevman 0:014fad4dfb9d 148 DoReInit: Initialisieren des AD Wandlers
kevman 0:014fad4dfb9d 149 -------------------------------------------------------------------------------*/
kevman 0:014fad4dfb9d 150 int DoReInit()
kevman 0:014fad4dfb9d 151 {
kevman 0:014fad4dfb9d 152 uint8_t Status0, Status1;
kevman 0:014fad4dfb9d 153 // DigitalOut Test(PTC16);
kevman 0:014fad4dfb9d 154 #ifdef TFT_DEBUG
kevman 0:014fad4dfb9d 155 printf("DOR_C: %08X DIR_C: %08X DDR_C:%08X \r\n", GPIOC->PDOR, GPIOC->PDIR, GPIOC->PDDR); // PTC 16 auf Output schalten
kevman 0:014fad4dfb9d 156 #endif
kevman 0:014fad4dfb9d 157
kevman 0:014fad4dfb9d 158 // GPIOC->PDDR |= 0x00010000; // PTC 16 auf Output schalten
kevman 0:014fad4dfb9d 159
kevman 0:014fad4dfb9d 160 MVars.fAdReInit = false;
kevman 0:014fad4dfb9d 161 MVars.m_nSendValues = 1; // fängt an, in Grundstellung zu senden
kevman 0:014fad4dfb9d 162 g_fRdy0 = false; g_fRdy1 = false;
kevman 0:014fad4dfb9d 163
kevman 0:014fad4dfb9d 164 // ConnectIrq();
kevman 0:014fad4dfb9d 165 g_fDisableDataRead = false;
kevman 0:014fad4dfb9d 166 Ad7739Start(0, 0,1); // 0=Kanal mit dem begonnen wird, Wandler 0, Mode
kevman 0:014fad4dfb9d 167 // Ad7739CommonStart(0, 1);
kevman 0:014fad4dfb9d 168
kevman 0:014fad4dfb9d 169 nMyTimer = 0;
kevman 0:014fad4dfb9d 170 g_nAdSetPos = 0; g_nAdGetPos = 0;
kevman 0:014fad4dfb9d 171 g_nAdCount = 0;
kevman 0:014fad4dfb9d 172 MVars.m_nSendValues = 1; // fängt an, in Grundstellung zu senden
kevman 0:014fad4dfb9d 173 ZustandsTimer = 0;
kevman 0:014fad4dfb9d 174
kevman 0:014fad4dfb9d 175 return(true);
kevman 0:014fad4dfb9d 176 }
kevman 0:014fad4dfb9d 177 /*-------------------------------------------------------------------------------
kevman 0:014fad4dfb9d 178 Funktion CheckZustand prüft alle eingehenden Telegramme auf Inhalt und Befehl
kevman 0:014fad4dfb9d 179 -------------------------------------------------------------------------------*/
kevman 0:014fad4dfb9d 180 int CheckZustand()
kevman 0:014fad4dfb9d 181 {
kevman 0:014fad4dfb9d 182
kevman 0:014fad4dfb9d 183 if(MVars.fAdReInit == true)
kevman 0:014fad4dfb9d 184 {
kevman 0:014fad4dfb9d 185 MVars.fAdReInit = false;
kevman 0:014fad4dfb9d 186 DoReInit();
kevman 0:014fad4dfb9d 187 }
kevman 0:014fad4dfb9d 188
kevman 0:014fad4dfb9d 189 if(MVars.m_nSendValues == 0) // nichts senden
kevman 0:014fad4dfb9d 190 {
kevman 0:014fad4dfb9d 191 nMyTimer = 0;
kevman 0:014fad4dfb9d 192 ZustandsTimer = 0;
kevman 0:014fad4dfb9d 193 return(0);
kevman 0:014fad4dfb9d 194 }
kevman 0:014fad4dfb9d 195
kevman 0:014fad4dfb9d 196 // MVars.dbAdSum[0] += (long double)AdcHs1.read_u16();
kevman 0:014fad4dfb9d 197 // MVars.dbAdSum[1] += (long double)AdcHs2.read_u16();
kevman 0:014fad4dfb9d 198 // MVars.nMwMittelCount++;
kevman 0:014fad4dfb9d 199 #ifdef TFT_DEBUG
kevman 0:014fad4dfb9d 200 // printf("AdResult_0: %f \n",MVars.dbAdSum[0]);
kevman 0:014fad4dfb9d 201 #endif
kevman 0:014fad4dfb9d 202 // g_nAdGetPos++; g_nAdGetPos &= 0x3FF;
kevman 0:014fad4dfb9d 203
kevman 0:014fad4dfb9d 204
kevman 0:014fad4dfb9d 205 // AdVal->AdRingBuf[0][g_nAdSetPos] = AdcHs1.read_u16();
kevman 0:014fad4dfb9d 206 // AdVal->AdRingBuf[1][g_nAdSetPos] = AdcHs2.read_u16();
kevman 0:014fad4dfb9d 207 // g_nAdSetPos++; g_nAdSetPos &= 0x03FF;
kevman 0:014fad4dfb9d 208 // g_nAdCount++;
kevman 0:014fad4dfb9d 209
kevman 0:014fad4dfb9d 210
kevman 0:014fad4dfb9d 211 // CheckDaAd();
kevman 0:014fad4dfb9d 212
kevman 0:014fad4dfb9d 213 if(ZustandsTimer >= 100) // die Zustände werden dadurch alle 100ms überprüft
kevman 0:014fad4dfb9d 214 {
kevman 0:014fad4dfb9d 215 MVars.nSecCounter[0] += 100;
kevman 0:014fad4dfb9d 216 IrComp.n100msCounter++;
kevman 0:014fad4dfb9d 217 ZustandsTimer -= 100;
kevman 0:014fad4dfb9d 218
kevman 0:014fad4dfb9d 219 if(MVars.m_nSendValues == 1) // senden in Grundstellung
kevman 0:014fad4dfb9d 220 {
kevman 0:014fad4dfb9d 221 CheckGrundZustand();
kevman 0:014fad4dfb9d 222 }
kevman 0:014fad4dfb9d 223 else if(MVars.m_nSendValues == 2) // senden während Messung
kevman 0:014fad4dfb9d 224 {
kevman 0:014fad4dfb9d 225 CheckRunZustand();
kevman 0:014fad4dfb9d 226 }
kevman 0:014fad4dfb9d 227 }
kevman 0:014fad4dfb9d 228
kevman 0:014fad4dfb9d 229 return(0);
kevman 0:014fad4dfb9d 230 }
kevman 0:014fad4dfb9d 231
kevman 0:014fad4dfb9d 232 /*-------------------------------------------------------------------------------
kevman 0:014fad4dfb9d 233 CheckGrundZustand:
kevman 0:014fad4dfb9d 234 -------------------------------------------------------------------------------*/
kevman 0:014fad4dfb9d 235 int CheckGrundZustand()
kevman 0:014fad4dfb9d 236 {
kevman 0:014fad4dfb9d 237 MVars.m_fDisableStopTel = false;
kevman 0:014fad4dfb9d 238 return(true);
kevman 0:014fad4dfb9d 239 }
kevman 0:014fad4dfb9d 240 /*-------------------------------------------------------------------------------
kevman 0:014fad4dfb9d 241 CheckRunZustand:
kevman 0:014fad4dfb9d 242 -------------------------------------------------------------------------------*/
kevman 0:014fad4dfb9d 243 int CheckRunZustand()
kevman 0:014fad4dfb9d 244 {
kevman 0:014fad4dfb9d 245
kevman 0:014fad4dfb9d 246 switch(MVars.nMessZustand[0])
kevman 0:014fad4dfb9d 247 {
kevman 0:014fad4dfb9d 248 case -1:
kevman 0:014fad4dfb9d 249 break;
kevman 0:014fad4dfb9d 250 case 0:
kevman 0:014fad4dfb9d 251 break;
kevman 0:014fad4dfb9d 252 case 1:
kevman 0:014fad4dfb9d 253 break;
kevman 0:014fad4dfb9d 254 case 2:
kevman 0:014fad4dfb9d 255 MVars.nSecCounter[0] = 0;
kevman 0:014fad4dfb9d 256 break;
kevman 0:014fad4dfb9d 257 case 3:
kevman 0:014fad4dfb9d 258 break;
kevman 0:014fad4dfb9d 259 case 4:
kevman 0:014fad4dfb9d 260 break;
kevman 0:014fad4dfb9d 261 case 5:
kevman 0:014fad4dfb9d 262 if(MPara.RpDauerNach[0] > 0)
kevman 0:014fad4dfb9d 263 {
kevman 0:014fad4dfb9d 264 if(MVars.nSecCounter[0] >= 1000)
kevman 0:014fad4dfb9d 265 {
kevman 0:014fad4dfb9d 266 MVars.nSecCounter[0] -= 1000;
kevman 0:014fad4dfb9d 267 MPara.RpDauerNach[0]--;
kevman 0:014fad4dfb9d 268 }
kevman 0:014fad4dfb9d 269 }
kevman 0:014fad4dfb9d 270 else
kevman 0:014fad4dfb9d 271 {
kevman 0:014fad4dfb9d 272 MVars.m_fDoFinishMeasurement = true;
kevman 0:014fad4dfb9d 273 MVars.m_fDisableStopTel = true;
kevman 0:014fad4dfb9d 274 }
kevman 0:014fad4dfb9d 275 break;
kevman 0:014fad4dfb9d 276 case 6: // schickt nur kontinuierlich die Werte
kevman 0:014fad4dfb9d 277 break;
kevman 0:014fad4dfb9d 278 default:
kevman 0:014fad4dfb9d 279 break;
kevman 0:014fad4dfb9d 280
kevman 0:014fad4dfb9d 281 }
kevman 0:014fad4dfb9d 282 if(MVars.m_fDoFinishMeasurement == true) // wird von Stopkommando aus EcmTel gesetzt
kevman 0:014fad4dfb9d 283 {
kevman 0:014fad4dfb9d 284 MVars.m_fDoFinishMeasurement = false;
kevman 0:014fad4dfb9d 285 MVars.m_fFinishMeasurement = true;
kevman 0:014fad4dfb9d 286 MVars.m_fScan = false;
kevman 0:014fad4dfb9d 287 #ifdef SIO_DEBUG
kevman 0:014fad4dfb9d 288 printf("MessZustand: %d \n",MVars.nMessZustand[0]);
kevman 0:014fad4dfb9d 289 printf("SwOCP:%d\n",MVars.SwitchChn[0]);
kevman 0:014fad4dfb9d 290 #endif
kevman 0:014fad4dfb9d 291
kevman 0:014fad4dfb9d 292 }
kevman 0:014fad4dfb9d 293 return(true);
kevman 0:014fad4dfb9d 294 }
kevman 0:014fad4dfb9d 295 /*-------------------------------------------------------------------------------
kevman 0:014fad4dfb9d 296 ChangeConversionTime: Im Fall dass die Wandlungszeit geändert werden muss
kevman 0:014fad4dfb9d 297 -------------------------------------------------------------------------------*/
kevman 0:014fad4dfb9d 298 void ChangeConversionTime()
kevman 0:014fad4dfb9d 299 {
kevman 0:014fad4dfb9d 300 MVars.fChangeCt = false;
kevman 0:014fad4dfb9d 301 SetAdConversionTime();
kevman 0:014fad4dfb9d 302 // wait(0.2);
kevman 0:014fad4dfb9d 303 // led1 = !led1;
kevman 0:014fad4dfb9d 304 }
kevman 0:014fad4dfb9d 305 /*-------------------------------------------------------------------------------
kevman 0:014fad4dfb9d 306 SendMessungStart: Startet die Messung
kevman 0:014fad4dfb9d 307 -------------------------------------------------------------------------------*/
kevman 0:014fad4dfb9d 308 int SendMessungStart()
kevman 0:014fad4dfb9d 309 {
kevman 0:014fad4dfb9d 310 sprintf(HostIf.strTempBuf,"%c#MG#%c", STX, ETX);
kevman 0:014fad4dfb9d 311 SendTelToHost(false, false, false);
kevman 0:014fad4dfb9d 312 return(0);
kevman 0:014fad4dfb9d 313 }
kevman 0:014fad4dfb9d 314 /*-------------------------------------------------------------------------------
kevman 0:014fad4dfb9d 315 SendMessungStop: Stoppt die Messung
kevman 0:014fad4dfb9d 316 -------------------------------------------------------------------------------*/
kevman 0:014fad4dfb9d 317 int SendMessungStop()
kevman 0:014fad4dfb9d 318 {
kevman 0:014fad4dfb9d 319 sprintf(HostIf.strTempBuf,"%c#MS#%c", STX, ETX);
kevman 0:014fad4dfb9d 320 SendTelToHost(false, false, false);
kevman 0:014fad4dfb9d 321 return(0);
kevman 0:014fad4dfb9d 322 }