Oliver Ainhirn
/
18_10_2018
Klassen
main.cpp@0:8a6521c9d48e, 2019-02-04 (annotated)
- Committer:
- corsa1600
- Date:
- Mon Feb 04 16:59:33 2019 +0000
- Revision:
- 0:8a6521c9d48e
Klassen
Who changed what in which revision?
User | Revision | Line number | New 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 | } |