Dependents:   BULME-TIMER_V1 BULME-TIMER_V2 Diplomarbeit_V1

Committer:
04M04
Date:
Thu Jun 23 18:59:00 2016 +0000
Revision:
2:33f7ace525c1
Parent:
button.h@0:e627eaaa3dc2
dPrell

Who changed what in which revision?

UserRevisionLine numberNew 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 };