CQ出版社セミナ "実習・Armマイコン内蔵ペリフェラルを活用するためのC++プログラミング" で使う外付け回路のテスト

Dependencies:   mbed UIT_SetOutputPortType UIT_AQM1602 UIT_ADT7410

Committer:
MikamiUitOpen
Date:
Thu Apr 02 03:47:14 2020 +0000
Revision:
2:3f2be675f975
Parent:
1:0a21041026c7
3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:8c850cf6285d 1 //----------------------------------------------------------------
MikamiUitOpen 0:8c850cf6285d 2 // InterruptIn, Timeout を利用してチャタリングを防止するクラス
MikamiUitOpen 0:8c850cf6285d 3 // 割込みサービス・ルーチンは非 static 関数にしている
MikamiUitOpen 0:8c850cf6285d 4 //
MikamiUitOpen 1:0a21041026c7 5 // 2019/03/22, Copyright (c) 2019 MIKAMI, Naoki
MikamiUitOpen 0:8c850cf6285d 6 //----------------------------------------------------------------
MikamiUitOpen 0:8c850cf6285d 7
MikamiUitOpen 0:8c850cf6285d 8 #include "PushButton.hpp"
MikamiUitOpen 0:8c850cf6285d 9
MikamiUitOpen 0:8c850cf6285d 10 using namespace Mikami;
MikamiUitOpen 0:8c850cf6285d 11
MikamiUitOpen 0:8c850cf6285d 12 // コンストラクタ
MikamiUitOpen 0:8c850cf6285d 13 PushButton::PushButton(PinName pin, PinMode mode, RiseFall rf,
MikamiUitOpen 0:8c850cf6285d 14 void (*Func)(), float time)
MikamiUitOpen 0:8c850cf6285d 15 : pbSw_(InterruptIn(pin, mode)), fp_(Func), time_(time)
MikamiUitOpen 0:8c850cf6285d 16 {
MikamiUitOpen 0:8c850cf6285d 17 if (rf == RISE)
MikamiUitOpen 0:8c850cf6285d 18 pbSw_.rise(callback(this, &PushButton::IsrIntrIn));
MikamiUitOpen 0:8c850cf6285d 19 else
MikamiUitOpen 0:8c850cf6285d 20 pbSw_.fall(callback(this, &PushButton::IsrIntrIn));
MikamiUitOpen 0:8c850cf6285d 21 }
MikamiUitOpen 0:8c850cf6285d 22
MikamiUitOpen 0:8c850cf6285d 23 // InterruptIn の割込みサービス・ルーチン
MikamiUitOpen 0:8c850cf6285d 24 void PushButton::IsrIntrIn()
MikamiUitOpen 0:8c850cf6285d 25 {
MikamiUitOpen 0:8c850cf6285d 26 pbSw_.disable_irq();
MikamiUitOpen 0:8c850cf6285d 27 enabler_.attach(callback(this, &PushButton::IsrTimeout), time_);
MikamiUitOpen 1:0a21041026c7 28 fp_(); // コンストラクタの引数で与えられた関数が実行される
MikamiUitOpen 0:8c850cf6285d 29 }
MikamiUitOpen 0:8c850cf6285d 30
MikamiUitOpen 0:8c850cf6285d 31 // Timeout の割込みサービス・ルーチン
MikamiUitOpen 0:8c850cf6285d 32 void PushButton::IsrTimeout()
MikamiUitOpen 0:8c850cf6285d 33 {
MikamiUitOpen 0:8c850cf6285d 34 pbSw_.enable_irq();
MikamiUitOpen 0:8c850cf6285d 35 }
MikamiUitOpen 1:0a21041026c7 36