チャタリング防止できそうなものです。

Dependents:   2019NHK_A_manual_red 2019NHK_A_manual_red 2019NHK_A_manual_blue

Committer:
skouki
Date:
Fri Aug 30 06:29:48 2019 +0000
Revision:
0:443871490643
Child:
2:866aa77e2fd6
v1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
skouki 0:443871490643 1 #include"chatteringremoval.h"
skouki 0:443871490643 2
skouki 0:443871490643 3 chatteringremoval::chatteringremoval(PinName pin):
skouki 0:443871490643 4 d_in(pin)
skouki 0:443871490643 5 {
skouki 0:443871490643 6 d_in.mode(PullUp);
skouki 0:443871490643 7 flag = false;
skouki 0:443871490643 8 }
skouki 0:443871490643 9
skouki 0:443871490643 10 unsigned int chatteringremoval::getCount()
skouki 0:443871490643 11 {
skouki 0:443871490643 12 return count;
skouki 0:443871490643 13 }
skouki 0:443871490643 14
skouki 0:443871490643 15 void chatteringremoval::setInvalidationtime_s(unsigned int time)
skouki 0:443871490643 16 {
skouki 0:443871490643 17 _time = time * 1000 * 1000;
skouki 0:443871490643 18 thread.start(callback(this, &chatteringremoval::threadloop));
skouki 0:443871490643 19 }
skouki 0:443871490643 20
skouki 0:443871490643 21 void chatteringremoval::setInvalidationtime_ms(unsigned int time)
skouki 0:443871490643 22 {
skouki 0:443871490643 23 _time = time * 1000 ;
skouki 0:443871490643 24 thread.start(callback(this, &chatteringremoval::threadloop));
skouki 0:443871490643 25 }
skouki 0:443871490643 26
skouki 0:443871490643 27 void chatteringremoval::setInvalidationtime_us(unsigned int time)
skouki 0:443871490643 28 {
skouki 0:443871490643 29 _time = time;
skouki 0:443871490643 30 thread.start(callback(this, &chatteringremoval::threadloop));
skouki 0:443871490643 31 }
skouki 0:443871490643 32
skouki 0:443871490643 33 void chatteringremoval::countreset()
skouki 0:443871490643 34 {
skouki 0:443871490643 35 count = 0;
skouki 0:443871490643 36 }
skouki 0:443871490643 37 void chatteringremoval::threadloop()
skouki 0:443871490643 38 {
skouki 0:443871490643 39 while(true){
skouki 0:443871490643 40 bool b = d_in.read();
skouki 0:443871490643 41
skouki 0:443871490643 42 if(!b && !flag){
skouki 0:443871490643 43 flag = true;
skouki 0:443871490643 44 count++;
skouki 0:443871490643 45 t.reset();
skouki 0:443871490643 46 t.start();
skouki 0:443871490643 47 }
skouki 0:443871490643 48
skouki 0:443871490643 49
skouki 0:443871490643 50 if(t.read_us() >= _time && b){
skouki 0:443871490643 51 flag = false;
skouki 0:443871490643 52 }
skouki 0:443871490643 53 }
skouki 0:443871490643 54 }