Dependents: BULME-TIMER_V1 BULME-TIMER_V2 Diplomarbeit_V1
button.h@0:e627eaaa3dc2, 2016-04-22 (annotated)
- Committer:
- ladner
- Date:
- Fri Apr 22 21:10:28 2016 +0000
- Revision:
- 0:e627eaaa3dc2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ladner | 0:e627eaaa3dc2 | 1 | #include "mbed.h" |
ladner | 0:e627eaaa3dc2 | 2 | |
ladner | 0:e627eaaa3dc2 | 3 | class dPrell |
ladner | 0:e627eaaa3dc2 | 4 | { |
ladner | 0:e627eaaa3dc2 | 5 | public: |
ladner | 0:e627eaaa3dc2 | 6 | dPrell(PinName pin):data(pin),interrupt(pin) |
ladner | 0:e627eaaa3dc2 | 7 | { |
ladner | 0:e627eaaa3dc2 | 8 | time = 500; |
ladner | 0:e627eaaa3dc2 | 9 | Run(); |
ladner | 0:e627eaaa3dc2 | 10 | interrupt.rise(this,&dPrell::druck); |
ladner | 0:e627eaaa3dc2 | 11 | interrupt.fall(this,&dPrell::druck); |
ladner | 0:e627eaaa3dc2 | 12 | } |
ladner | 0:e627eaaa3dc2 | 13 | void rise(void (*fptr)(void)) |
ladner | 0:e627eaaa3dc2 | 14 | { |
ladner | 0:e627eaaa3dc2 | 15 | press.attach(fptr); |
ladner | 0:e627eaaa3dc2 | 16 | } |
ladner | 0:e627eaaa3dc2 | 17 | void fall(void (*fptr)(void)) |
ladner | 0:e627eaaa3dc2 | 18 | { |
ladner | 0:e627eaaa3dc2 | 19 | release.attach(fptr); |
ladner | 0:e627eaaa3dc2 | 20 | } |
ladner | 0:e627eaaa3dc2 | 21 | void setTime(timestamp_t in) |
ladner | 0:e627eaaa3dc2 | 22 | { |
ladner | 0:e627eaaa3dc2 | 23 | time = in; |
ladner | 0:e627eaaa3dc2 | 24 | } |
ladner | 0:e627eaaa3dc2 | 25 | void mode(PinMode mode) |
ladner | 0:e627eaaa3dc2 | 26 | { |
ladner | 0:e627eaaa3dc2 | 27 | interrupt.mode(mode); |
ladner | 0:e627eaaa3dc2 | 28 | } |
ladner | 0:e627eaaa3dc2 | 29 | void trig() |
ladner | 0:e627eaaa3dc2 | 30 | { |
ladner | 0:e627eaaa3dc2 | 31 | Run(); |
ladner | 0:e627eaaa3dc2 | 32 | } |
ladner | 0:e627eaaa3dc2 | 33 | protected: |
ladner | 0:e627eaaa3dc2 | 34 | void druck() |
ladner | 0:e627eaaa3dc2 | 35 | { |
ladner | 0:e627eaaa3dc2 | 36 | if (last == data) |
ladner | 0:e627eaaa3dc2 | 37 | return; |
ladner | 0:e627eaaa3dc2 | 38 | else |
ladner | 0:e627eaaa3dc2 | 39 | { |
ladner | 0:e627eaaa3dc2 | 40 | if (data&En) |
ladner | 0:e627eaaa3dc2 | 41 | { |
ladner | 0:e627eaaa3dc2 | 42 | press.call(); |
ladner | 0:e627eaaa3dc2 | 43 | En=0; |
ladner | 0:e627eaaa3dc2 | 44 | res.attach_us(this,&dPrell::Run,time); |
ladner | 0:e627eaaa3dc2 | 45 | } |
ladner | 0:e627eaaa3dc2 | 46 | if((data==0)&En) |
ladner | 0:e627eaaa3dc2 | 47 | { |
ladner | 0:e627eaaa3dc2 | 48 | release.call(); |
ladner | 0:e627eaaa3dc2 | 49 | En=0; |
ladner | 0:e627eaaa3dc2 | 50 | res.attach_us(this,&dPrell::Run,time); |
ladner | 0:e627eaaa3dc2 | 51 | } |
ladner | 0:e627eaaa3dc2 | 52 | } |
ladner | 0:e627eaaa3dc2 | 53 | last = data; |
ladner | 0:e627eaaa3dc2 | 54 | } |
ladner | 0:e627eaaa3dc2 | 55 | void Run() |
ladner | 0:e627eaaa3dc2 | 56 | { |
ladner | 0:e627eaaa3dc2 | 57 | last = data; |
ladner | 0:e627eaaa3dc2 | 58 | En = 1; |
ladner | 0:e627eaaa3dc2 | 59 | } |
ladner | 0:e627eaaa3dc2 | 60 | timestamp_t time; |
ladner | 0:e627eaaa3dc2 | 61 | DigitalIn data; |
ladner | 0:e627eaaa3dc2 | 62 | Timeout res; |
ladner | 0:e627eaaa3dc2 | 63 | InterruptIn interrupt; |
ladner | 0:e627eaaa3dc2 | 64 | char last; |
ladner | 0:e627eaaa3dc2 | 65 | char En; |
ladner | 0:e627eaaa3dc2 | 66 | FunctionPointer press; |
ladner | 0:e627eaaa3dc2 | 67 | FunctionPointer release; |
ladner | 0:e627eaaa3dc2 | 68 | }; |