Klassen

Dependencies:   mbed

Committer:
corsa1600
Date:
Mon Feb 04 16:59:33 2019 +0000
Revision:
0:8a6521c9d48e
Klassen

Who changed what in which revision?

UserRevisionLine numberNew contents of line
corsa1600 0:8a6521c9d48e 1 #include "mbed.h"
corsa1600 0:8a6521c9d48e 2
corsa1600 0:8a6521c9d48e 3
corsa1600 0:8a6521c9d48e 4 //-------------------Inherited Switch Event Class from InterruptIn----------------------
corsa1600 0:8a6521c9d48e 5
corsa1600 0:8a6521c9d48e 6 class SwEventInh : public InterruptIn // Verknüpft mir auf meine Klasse eine andere
corsa1600 0:8a6521c9d48e 7 {
corsa1600 0:8a6521c9d48e 8
corsa1600 0:8a6521c9d48e 9 volatile int16_t _pressed; // volatile => damit nur auf einer CPU gearbeitet wird
corsa1600 0:8a6521c9d48e 10 void _risingISR(); // ruft die Funktion auf
corsa1600 0:8a6521c9d48e 11
corsa1600 0:8a6521c9d48e 12 public:
corsa1600 0:8a6521c9d48e 13 SwEventInh(PinName pin) : InterruptIn(pin) // create the InterruptIn on the pin specified to SwEvent
corsa1600 0:8a6521c9d48e 14 {
corsa1600 0:8a6521c9d48e 15 rise(callback(this, &SwEventInh::_risingISR)); // attach ISR-function of this SwEvent instance
corsa1600 0:8a6521c9d48e 16 _pressed=0;
corsa1600 0:8a6521c9d48e 17
corsa1600 0:8a6521c9d48e 18
corsa1600 0:8a6521c9d48e 19 }
corsa1600 0:8a6521c9d48e 20
corsa1600 0:8a6521c9d48e 21 int checkFlag(); // must in do-condition (while(true)-loop) continuously interrogated
corsa1600 0:8a6521c9d48e 22 };
corsa1600 0:8a6521c9d48e 23 // ---------------- Switch Event Class Methodes --------------------------
corsa1600 0:8a6521c9d48e 24
corsa1600 0:8a6521c9d48e 25 int SwEventInh :: checkFlag() // :: Scope Operator => verweist
corsa1600 0:8a6521c9d48e 26 {
corsa1600 0:8a6521c9d48e 27 if( _pressed ) // true/False Abfrage
corsa1600 0:8a6521c9d48e 28 {
corsa1600 0:8a6521c9d48e 29 _pressed = 0;
corsa1600 0:8a6521c9d48e 30 return 1;
corsa1600 0:8a6521c9d48e 31 }
corsa1600 0:8a6521c9d48e 32 return 0;
corsa1600 0:8a6521c9d48e 33 }
corsa1600 0:8a6521c9d48e 34
corsa1600 0:8a6521c9d48e 35 void SwEventInh::_risingISR()
corsa1600 0:8a6521c9d48e 36 {
corsa1600 0:8a6521c9d48e 37 if( read() )
corsa1600 0:8a6521c9d48e 38 _pressed = 1;
corsa1600 0:8a6521c9d48e 39 }
corsa1600 0:8a6521c9d48e 40
corsa1600 0:8a6521c9d48e 41
corsa1600 0:8a6521c9d48e 42
corsa1600 0:8a6521c9d48e 43
corsa1600 0:8a6521c9d48e 44 SwEventInh sw1(p14);
corsa1600 0:8a6521c9d48e 45
corsa1600 0:8a6521c9d48e 46 DigitalOut myled(LED1);
corsa1600 0:8a6521c9d48e 47
corsa1600 0:8a6521c9d48e 48 int main()
corsa1600 0:8a6521c9d48e 49 {
corsa1600 0:8a6521c9d48e 50
corsa1600 0:8a6521c9d48e 51 myled=1;
corsa1600 0:8a6521c9d48e 52 wait(1);
corsa1600 0:8a6521c9d48e 53 myled=0;
corsa1600 0:8a6521c9d48e 54
corsa1600 0:8a6521c9d48e 55 printf("Hello");
corsa1600 0:8a6521c9d48e 56 while (1)
corsa1600 0:8a6521c9d48e 57 {
corsa1600 0:8a6521c9d48e 58 sw1.read();
corsa1600 0:8a6521c9d48e 59 if(sw1.checkFlag())
corsa1600 0:8a6521c9d48e 60 myled= ! myled;
corsa1600 0:8a6521c9d48e 61 }
corsa1600 0:8a6521c9d48e 62
corsa1600 0:8a6521c9d48e 63
corsa1600 0:8a6521c9d48e 64 }