Christian Weiß
/
TINF_Test1_7ABELI
7ABELI_Projekt
main.cpp@0:b69a47c4639b, 2018-11-29 (annotated)
- Committer:
- Wizo
- Date:
- Thu Nov 29 17:17:23 2018 +0000
- Revision:
- 0:b69a47c4639b
7ABELI_Projekt
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Wizo | 0:b69a47c4639b | 1 | #include "mbed.h" |
Wizo | 0:b69a47c4639b | 2 | #include "C12832.h" |
Wizo | 0:b69a47c4639b | 3 | |
Wizo | 0:b69a47c4639b | 4 | |
Wizo | 0:b69a47c4639b | 5 | // LEDS |
Wizo | 0:b69a47c4639b | 6 | DigitalOut Led1(LED1, 0); |
Wizo | 0:b69a47c4639b | 7 | DigitalOut Led2(LED2, 0); |
Wizo | 0:b69a47c4639b | 8 | DigitalOut Led3(LED3, 0); |
Wizo | 0:b69a47c4639b | 9 | DigitalOut Led4(LED4, 0); |
Wizo | 0:b69a47c4639b | 10 | |
Wizo | 0:b69a47c4639b | 11 | // Joystick |
Wizo | 0:b69a47c4639b | 12 | InterruptIn Sw1(p14); // CENTER |
Wizo | 0:b69a47c4639b | 13 | |
Wizo | 0:b69a47c4639b | 14 | // Prototyping |
Wizo | 0:b69a47c4639b | 15 | void StateMachine(); |
Wizo | 0:b69a47c4639b | 16 | //void ST_Error (void); |
Wizo | 0:b69a47c4639b | 17 | void ST_EIN (void); |
Wizo | 0:b69a47c4639b | 18 | void ST_AUS (void); |
Wizo | 0:b69a47c4639b | 19 | //void rise(void); |
Wizo | 0:b69a47c4639b | 20 | void Sw1Rise(void); |
Wizo | 0:b69a47c4639b | 21 | //bool CheckFlag() ; |
Wizo | 0:b69a47c4639b | 22 | bool CheckSw1(void); |
Wizo | 0:b69a47c4639b | 23 | void Time (void); |
Wizo | 0:b69a47c4639b | 24 | void TimeOut(void); |
Wizo | 0:b69a47c4639b | 25 | void Flip (void); |
Wizo | 0:b69a47c4639b | 26 | void TempOut (void); |
Wizo | 0:b69a47c4639b | 27 | void TimeOutError(void); |
Wizo | 0:b69a47c4639b | 28 | void ErrorBlinken(void); |
Wizo | 0:b69a47c4639b | 29 | void TimeOver(void); |
Wizo | 0:b69a47c4639b | 30 | |
Wizo | 0:b69a47c4639b | 31 | //bool pressed = false; |
Wizo | 0:b69a47c4639b | 32 | bool volatile Sw1Pressed; |
Wizo | 0:b69a47c4639b | 33 | |
Wizo | 0:b69a47c4639b | 34 | //***** VARIABLEN ****** |
Wizo | 0:b69a47c4639b | 35 | |
Wizo | 0:b69a47c4639b | 36 | enum State {ST_AUS, ST_EIN, ST_Error}; |
Wizo | 0:b69a47c4639b | 37 | //State state; |
Wizo | 0:b69a47c4639b | 38 | State volatile state; |
Wizo | 0:b69a47c4639b | 39 | Timer getTime; //Timer-Schnittstelle dient zum Erstellen, Starten, Stoppen und Lesen eines Timers |
Wizo | 0:b69a47c4639b | 40 | Ticker TickFlip;//für blinken der LED //wiederkehrenden Interrupt |
Wizo | 0:b69a47c4639b | 41 | Timeout resetTime;//Die Timeout-Schnittstelle wird verwendet, um einen Interrupt |
Wizo | 0:b69a47c4639b | 42 | //einzurichten, um eine Funktion nach einer bestimmten Verzögerung aufzurufen. |
Wizo | 0:b69a47c4639b | 43 | |
Wizo | 0:b69a47c4639b | 44 | volatile int counter; // Volatile, damit es nicht auf unterschiedlichen Cores ausgeführt wird |
Wizo | 0:b69a47c4639b | 45 | |
Wizo | 0:b69a47c4639b | 46 | |
Wizo | 0:b69a47c4639b | 47 | |
Wizo | 0:b69a47c4639b | 48 | class IsAnEvent : public InterruptIn { |
Wizo | 0:b69a47c4639b | 49 | volatile int16_t _pressed; |
Wizo | 0:b69a47c4639b | 50 | void _RisingISR(); |
Wizo | 0:b69a47c4639b | 51 | public: |
Wizo | 0:b69a47c4639b | 52 | IsAnEvent() : InterruptIn(p15) {}; |
Wizo | 0:b69a47c4639b | 53 | IsAnEvent(PinName pin) : InterruptIn(pin) { |
Wizo | 0:b69a47c4639b | 54 | rise(callback(this, &IsAnEvent::_RisingISR)); |
Wizo | 0:b69a47c4639b | 55 | _pressed=0; |
Wizo | 0:b69a47c4639b | 56 | }; |
Wizo | 0:b69a47c4639b | 57 | int CheckFlag(); |
Wizo | 0:b69a47c4639b | 58 | void InitIsr(); |
Wizo | 0:b69a47c4639b | 59 | }; |
Wizo | 0:b69a47c4639b | 60 | |
Wizo | 0:b69a47c4639b | 61 | int main() |
Wizo | 0:b69a47c4639b | 62 | { |
Wizo | 0:b69a47c4639b | 63 | |
Wizo | 0:b69a47c4639b | 64 | Sw1.rise(&Sw1Rise); //.fall(&fall) |
Wizo | 0:b69a47c4639b | 65 | state = ST_AUS; |
Wizo | 0:b69a47c4639b | 66 | Sw1Pressed = 0; |
Wizo | 0:b69a47c4639b | 67 | Led1 = 0; |
Wizo | 0:b69a47c4639b | 68 | Led2 = 0; |
Wizo | 0:b69a47c4639b | 69 | Led3 = 0; |
Wizo | 0:b69a47c4639b | 70 | Led4 = 0; |
Wizo | 0:b69a47c4639b | 71 | counter=0; |
Wizo | 0:b69a47c4639b | 72 | |
Wizo | 0:b69a47c4639b | 73 | while(1) |
Wizo | 0:b69a47c4639b | 74 | { |
Wizo | 0:b69a47c4639b | 75 | |
Wizo | 0:b69a47c4639b | 76 | StateMachine(); |
Wizo | 0:b69a47c4639b | 77 | } |
Wizo | 0:b69a47c4639b | 78 | } |
Wizo | 0:b69a47c4639b | 79 | |
Wizo | 0:b69a47c4639b | 80 | void IsAnEvent::InitIsr() { |
Wizo | 0:b69a47c4639b | 81 | rise(callback(this, &IsAnEvent::_RisingISR)); |
Wizo | 0:b69a47c4639b | 82 | } |
Wizo | 0:b69a47c4639b | 83 | |
Wizo | 0:b69a47c4639b | 84 | void IsAnEvent::_RisingISR() { |
Wizo | 0:b69a47c4639b | 85 | wait_ms(50); |
Wizo | 0:b69a47c4639b | 86 | if( read() ) |
Wizo | 0:b69a47c4639b | 87 | _pressed = true; |
Wizo | 0:b69a47c4639b | 88 | } |
Wizo | 0:b69a47c4639b | 89 | int IsAnEvent::CheckFlag() { |
Wizo | 0:b69a47c4639b | 90 | if( _pressed ) { |
Wizo | 0:b69a47c4639b | 91 | _pressed = false; |
Wizo | 0:b69a47c4639b | 92 | return 1; |
Wizo | 0:b69a47c4639b | 93 | } |
Wizo | 0:b69a47c4639b | 94 | return 0; |
Wizo | 0:b69a47c4639b | 95 | } |
Wizo | 0:b69a47c4639b | 96 | |
Wizo | 0:b69a47c4639b | 97 | |
Wizo | 0:b69a47c4639b | 98 | void Sw1Rise(void) { |
Wizo | 0:b69a47c4639b | 99 | if(state == ST_EIN || state == ST_AUS) { |
Wizo | 0:b69a47c4639b | 100 | // wenn Taste getrückt wird wechsel je welcher status |
Wizo | 0:b69a47c4639b | 101 | Sw1Pressed = true;// Umschalten auf WAHR, es wurde gedrückt |
Wizo | 0:b69a47c4639b | 102 | wait_ms(200); |
Wizo | 0:b69a47c4639b | 103 | }// Entprellung der Taste, bei mir 100ms da der Taster furchtbar prellt... |
Wizo | 0:b69a47c4639b | 104 | } |
Wizo | 0:b69a47c4639b | 105 | |
Wizo | 0:b69a47c4639b | 106 | |
Wizo | 0:b69a47c4639b | 107 | void StateMachine() //mit den ganzen möglichen Statuse |
Wizo | 0:b69a47c4639b | 108 | { |
Wizo | 0:b69a47c4639b | 109 | switch (state) |
Wizo | 0:b69a47c4639b | 110 | { |
Wizo | 0:b69a47c4639b | 111 | case ST_AUS: Aus() ;break; |
Wizo | 0:b69a47c4639b | 112 | case ST_EIN: Ein() ;break; |
Wizo | 0:b69a47c4639b | 113 | case ST_TimeOut: TimeOut() ;break; |
Wizo | 0:b69a47c4639b | 114 | case ST_TempOut: TempOut() ;break; |
Wizo | 0:b69a47c4639b | 115 | case ST_Error: TimeOver() ;break; |
Wizo | 0:b69a47c4639b | 116 | |
Wizo | 0:b69a47c4639b | 117 | } |
Wizo | 0:b69a47c4639b | 118 | } |