Test
Dependencies: mbed-dev-OS5_10_4
MySources/LoopTimer.cpp@0:014fad4dfb9d, 2020-08-07 (annotated)
- Committer:
- kevman
- Date:
- Fri Aug 07 07:24:21 2020 +0000
- Revision:
- 0:014fad4dfb9d
Test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kevman | 0:014fad4dfb9d | 1 | /*------------------------------------------------------------------------------- |
kevman | 0:014fad4dfb9d | 2 | Programm Name: LoopTimer.cpp |
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: RpaAnalyse |
kevman | 0:014fad4dfb9d | 12 | -------------------------------------------------------------------------------*/ |
kevman | 0:014fad4dfb9d | 13 | #include "Headers.h" |
kevman | 0:014fad4dfb9d | 14 | |
kevman | 0:014fad4dfb9d | 15 | |
kevman | 0:014fad4dfb9d | 16 | |
kevman | 0:014fad4dfb9d | 17 | Ticker flipper; // Timerinterrupt |
kevman | 0:014fad4dfb9d | 18 | // Variablen, die in Interruptroutinen verwendet werden |
kevman | 0:014fad4dfb9d | 19 | volatile int nMyTimer; |
kevman | 0:014fad4dfb9d | 20 | int ZustandsTimer; |
kevman | 0:014fad4dfb9d | 21 | int g_nSendDisableTimer; |
kevman | 0:014fad4dfb9d | 22 | int g_nTftTimer; // wird vor allem fuer das Abfragen der Uhr genommen |
kevman | 0:014fad4dfb9d | 23 | |
kevman | 0:014fad4dfb9d | 24 | |
kevman | 0:014fad4dfb9d | 25 | /*------------------------------------------------------------------------------- |
kevman | 0:014fad4dfb9d | 26 | Interrupt Funktion. Wird auf 1ms gesetzt |
kevman | 0:014fad4dfb9d | 27 | -------------------------------------------------------------------------------*/ |
kevman | 0:014fad4dfb9d | 28 | void flip() |
kevman | 0:014fad4dfb9d | 29 | { |
kevman | 0:014fad4dfb9d | 30 | nMyTimer++; |
kevman | 0:014fad4dfb9d | 31 | } |
kevman | 0:014fad4dfb9d | 32 | /*------------------------------------------------------------------------------- |
kevman | 0:014fad4dfb9d | 33 | |
kevman | 0:014fad4dfb9d | 34 | -------------------------------------------------------------------------------*/ |
kevman | 0:014fad4dfb9d | 35 | void DetachMyTicker() |
kevman | 0:014fad4dfb9d | 36 | { |
kevman | 0:014fad4dfb9d | 37 | flipper.detach(); |
kevman | 0:014fad4dfb9d | 38 | g_fTimerIsRunning = false; |
kevman | 0:014fad4dfb9d | 39 | } |
kevman | 0:014fad4dfb9d | 40 | /*------------------------------------------------------------------------------- |
kevman | 0:014fad4dfb9d | 41 | |
kevman | 0:014fad4dfb9d | 42 | -------------------------------------------------------------------------------*/ |
kevman | 0:014fad4dfb9d | 43 | void AttachMyTicker() |
kevman | 0:014fad4dfb9d | 44 | { |
kevman | 0:014fad4dfb9d | 45 | #ifdef SEND_DEBUG_TO_HOST |
kevman | 0:014fad4dfb9d | 46 | sprintf(HostIf.strTempBuf, "%c#DG#Attach Ticker%c",STX, ETX); |
kevman | 0:014fad4dfb9d | 47 | SendTelToHost(false, false, false); |
kevman | 0:014fad4dfb9d | 48 | #endif |
kevman | 0:014fad4dfb9d | 49 | |
kevman | 0:014fad4dfb9d | 50 | flipper.attach_us(&flip, 1000); // setup flipper to call flip after 1000 us |
kevman | 0:014fad4dfb9d | 51 | nMyTimer = 0; |
kevman | 0:014fad4dfb9d | 52 | MVars.nMittelTimer = 0; |
kevman | 0:014fad4dfb9d | 53 | MVars.nSendTimer = 0; |
kevman | 0:014fad4dfb9d | 54 | g_fTimerIsRunning = true; |
kevman | 0:014fad4dfb9d | 55 | g_nSendDisableTimer = 0; |
kevman | 0:014fad4dfb9d | 56 | } |
kevman | 0:014fad4dfb9d | 57 | /*------------------------------------------------------------------------------- |
kevman | 0:014fad4dfb9d | 58 | SetTimerInterrupt: |
kevman | 0:014fad4dfb9d | 59 | -------------------------------------------------------------------------------*/ |
kevman | 0:014fad4dfb9d | 60 | void SetTimerInterrupt(int Flag) |
kevman | 0:014fad4dfb9d | 61 | { |
kevman | 0:014fad4dfb9d | 62 | if(Flag == 0) // ausschalten |
kevman | 0:014fad4dfb9d | 63 | { |
kevman | 0:014fad4dfb9d | 64 | if(g_fTimerIsRunning == true) |
kevman | 0:014fad4dfb9d | 65 | { |
kevman | 0:014fad4dfb9d | 66 | DetachMyTicker(); |
kevman | 0:014fad4dfb9d | 67 | } |
kevman | 0:014fad4dfb9d | 68 | } |
kevman | 0:014fad4dfb9d | 69 | else |
kevman | 0:014fad4dfb9d | 70 | { |
kevman | 0:014fad4dfb9d | 71 | if(g_fTimerIsRunning == false) |
kevman | 0:014fad4dfb9d | 72 | { |
kevman | 0:014fad4dfb9d | 73 | AttachMyTicker(); |
kevman | 0:014fad4dfb9d | 74 | } |
kevman | 0:014fad4dfb9d | 75 | } |
kevman | 0:014fad4dfb9d | 76 | } |
kevman | 0:014fad4dfb9d | 77 | /*------------------------------------------------------------------------------- |
kevman | 0:014fad4dfb9d | 78 | Funktion CheckTimerHandlingAndScanner: prüft ob Messdaten reinkommen |
kevman | 0:014fad4dfb9d | 79 | -------------------------------------------------------------------------------*/ |
kevman | 0:014fad4dfb9d | 80 | int CheckTimerHandlingAndScanner() |
kevman | 0:014fad4dfb9d | 81 | { |
kevman | 0:014fad4dfb9d | 82 | MVars.nMittelTimer++; |
kevman | 0:014fad4dfb9d | 83 | MVars.nSendTimer++; |
kevman | 0:014fad4dfb9d | 84 | // nScreenSaverTimer++; // 2017-02-02 UFa: Timer ScreenSaver |
kevman | 0:014fad4dfb9d | 85 | ZustandsTimer++; |
kevman | 0:014fad4dfb9d | 86 | nMyTimer--; |
kevman | 0:014fad4dfb9d | 87 | g_nTftTimer++; |
kevman | 0:014fad4dfb9d | 88 | if(g_nSendDisableTimer > 0) g_nSendDisableTimer--; |
kevman | 0:014fad4dfb9d | 89 | |
kevman | 0:014fad4dfb9d | 90 | if(MVars.nSendTimer >=500) |
kevman | 0:014fad4dfb9d | 91 | { |
kevman | 0:014fad4dfb9d | 92 | // g_fDoCheckIRange = true; |
kevman | 0:014fad4dfb9d | 93 | MVars.nSendTimer = 0; |
kevman | 0:014fad4dfb9d | 94 | } |
kevman | 0:014fad4dfb9d | 95 | |
kevman | 0:014fad4dfb9d | 96 | // Der SAetGenValues wäre für RPA nicht notwendig, wenn m_fScan aber auf false |
kevman | 0:014fad4dfb9d | 97 | // bleibt, dann sollte das kein Problem sein |
kevman | 0:014fad4dfb9d | 98 | #ifndef PGU_RPA |
kevman | 0:014fad4dfb9d | 99 | if(MVars.m_fScan == true) // wenn true, dann wird gescannt |
kevman | 0:014fad4dfb9d | 100 | SetGenValues(); |
kevman | 0:014fad4dfb9d | 101 | #endif |
kevman | 0:014fad4dfb9d | 102 | return(true); |
kevman | 0:014fad4dfb9d | 103 | } |
kevman | 0:014fad4dfb9d | 104 | /*------------------------------------------------------------------------------- |
kevman | 0:014fad4dfb9d | 105 | Funktion RequestDateTime |
kevman | 0:014fad4dfb9d | 106 | -------------------------------------------------------------------------------*/ |
kevman | 0:014fad4dfb9d | 107 | int RequestDateTime() |
kevman | 0:014fad4dfb9d | 108 | { |
kevman | 0:014fad4dfb9d | 109 | #ifdef USE_RTC |
kevman | 0:014fad4dfb9d | 110 | // Uhrzeit //UFa Timer |
kevman | 0:014fad4dfb9d | 111 | if(m_fTimeAlternate == true) |
kevman | 0:014fad4dfb9d | 112 | { |
kevman | 0:014fad4dfb9d | 113 | if(g_fDisableTimeRead == false) |
kevman | 0:014fad4dfb9d | 114 | { |
kevman | 0:014fad4dfb9d | 115 | seconds = time(NULL); |
kevman | 0:014fad4dfb9d | 116 | MyTm = localtime(&seconds); // seconds = time(NULL); vorher |
kevman | 0:014fad4dfb9d | 117 | sprintf(DtTime.cTimeBuffer,"%02d:%02d:%02d", MyTm->tm_hour, MyTm->tm_min,MyTm->tm_sec); |
kevman | 0:014fad4dfb9d | 118 | sprintf(DtTime.cDateBuffer,"%04d:%02d:%02d", MyTm->tm_year + 1900, MyTm->tm_mon +1 , MyTm->tm_mday); |
kevman | 0:014fad4dfb9d | 119 | m_fTimeAlternate = false; |
kevman | 0:014fad4dfb9d | 120 | } |
kevman | 0:014fad4dfb9d | 121 | } |
kevman | 0:014fad4dfb9d | 122 | else |
kevman | 0:014fad4dfb9d | 123 | m_fTimeAlternate = true; |
kevman | 0:014fad4dfb9d | 124 | #endif |
kevman | 0:014fad4dfb9d | 125 | return(true); |
kevman | 0:014fad4dfb9d | 126 | } |
kevman | 0:014fad4dfb9d | 127 | |
kevman | 0:014fad4dfb9d | 128 |