7ABELI_Projekt

Dependencies:   mbed

Revision:
0:b69a47c4639b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Nov 29 17:17:23 2018 +0000
@@ -0,0 +1,118 @@
+#include "mbed.h"
+#include "C12832.h"
+
+
+//      LEDS
+DigitalOut Led1(LED1, 0);
+DigitalOut Led2(LED2, 0);
+DigitalOut Led3(LED3, 0);
+DigitalOut Led4(LED4, 0);
+
+//      Joystick
+InterruptIn  Sw1(p14);      // CENTER
+
+//      Prototyping
+void StateMachine();
+//void ST_Error (void);
+void ST_EIN (void);
+void ST_AUS (void);
+//void rise(void);
+void Sw1Rise(void);
+//bool CheckFlag() ;
+bool CheckSw1(void);
+void Time (void);
+void TimeOut(void); 
+void Flip (void);
+void TempOut (void);
+void TimeOutError(void);
+void ErrorBlinken(void);
+void TimeOver(void);
+
+//bool pressed = false;
+bool volatile Sw1Pressed;
+
+//***** VARIABLEN ******
+
+enum State {ST_AUS, ST_EIN, ST_Error};
+//State state;
+State volatile state;
+Timer getTime; //Timer-Schnittstelle dient zum Erstellen, Starten, Stoppen und Lesen eines Timers 
+Ticker TickFlip;//für blinken der LED     //wiederkehrenden Interrupt 
+Timeout resetTime;//Die Timeout-Schnittstelle wird verwendet, um einen Interrupt 
+                    //einzurichten, um eine Funktion nach einer bestimmten Verzögerung aufzurufen.
+
+volatile int counter; // Volatile, damit es nicht auf unterschiedlichen Cores ausgeführt wird
+
+
+
+class IsAnEvent : public InterruptIn {
+        volatile int16_t _pressed;
+        void _RisingISR(); 
+    public:
+        IsAnEvent() : InterruptIn(p15) {};
+        IsAnEvent(PinName pin) : InterruptIn(pin) {
+             rise(callback(this, &IsAnEvent::_RisingISR)); 
+            _pressed=0; 
+        };
+        int CheckFlag();
+        void InitIsr();
+};
+
+int main()
+{
+    
+    Sw1.rise(&Sw1Rise);      //.fall(&fall)
+    state = ST_AUS;
+    Sw1Pressed = 0;
+    Led1 = 0;
+    Led2 = 0;
+    Led3 = 0;
+    Led4 = 0;
+    counter=0;
+
+    while(1)
+    {
+        
+        StateMachine();
+    }
+}
+
+void IsAnEvent::InitIsr() { 
+    rise(callback(this, &IsAnEvent::_RisingISR)); 
+}
+
+void IsAnEvent::_RisingISR() {
+    wait_ms(50);
+    if( read() )
+        _pressed = true;
+}
+int IsAnEvent::CheckFlag() {
+    if( _pressed ) { 
+        _pressed = false; 
+        return 1; 
+    }
+    return 0;
+}
+
+    
+void Sw1Rise(void) {
+         if(state == ST_EIN || state == ST_AUS) {
+            // wenn Taste getrückt wird wechsel je welcher status
+            Sw1Pressed = true;// Umschalten auf WAHR, es wurde gedrückt
+            wait_ms(200);
+        }// Entprellung der Taste, bei mir 100ms da der Taster furchtbar prellt...
+    } 
+
+              
+void StateMachine()  //mit den ganzen möglichen Statuse
+{
+    switch (state) 
+    {
+        case ST_AUS:          Aus()      ;break;
+        case ST_EIN:          Ein()      ;break;
+        case ST_TimeOut:      TimeOut()     ;break;
+        case ST_TempOut:      TempOut()     ;break;
+        case ST_Error:        TimeOver()    ;break;
+                        
+    }
+}
\ No newline at end of file