Keisuke Sehara
/
STM32_Whisking
fast-feedback virtual target task code on STM Nucleo
core/intr.cpp@32:1416e015016c, 2018-12-13 (annotated)
- Committer:
- gwappa
- Date:
- Thu Dec 13 07:18:43 2018 +0000
- Revision:
- 32:1416e015016c
- Parent:
- 26:b4421d1ee57a
change to use the Staged state
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gwappa | 26:b4421d1ee57a | 1 | #include "intr.h" |
gwappa | 26:b4421d1ee57a | 2 | |
gwappa | 26:b4421d1ee57a | 3 | InterruptHandler::InterruptHandler(PinName pin, const int& debounce_ms, const bool& logged): |
gwappa | 26:b4421d1ee57a | 4 | in_(pin), logged_(logged) |
gwappa | 26:b4421d1ee57a | 5 | { |
gwappa | 26:b4421d1ee57a | 6 | in_.rise(callback(this, &InterruptHandler::trigger)); |
gwappa | 26:b4421d1ee57a | 7 | setDebounce(debounce_ms); |
gwappa | 26:b4421d1ee57a | 8 | } |
gwappa | 26:b4421d1ee57a | 9 | |
gwappa | 26:b4421d1ee57a | 10 | void InterruptHandler::trigger() |
gwappa | 26:b4421d1ee57a | 11 | { |
gwappa | 26:b4421d1ee57a | 12 | trialtime_t stamp_ms = TrialTimer.read_ms(); |
gwappa | 26:b4421d1ee57a | 13 | if (stamp_ms < refrac_) { |
gwappa | 26:b4421d1ee57a | 14 | return; |
gwappa | 26:b4421d1ee57a | 15 | } |
gwappa | 26:b4421d1ee57a | 16 | |
gwappa | 26:b4421d1ee57a | 17 | if (logged_) { |
gwappa | 26:b4421d1ee57a | 18 | events_.add(stamp_ms); |
gwappa | 26:b4421d1ee57a | 19 | } |
gwappa | 26:b4421d1ee57a | 20 | if (handler_) { |
gwappa | 26:b4421d1ee57a | 21 | handler_(); |
gwappa | 26:b4421d1ee57a | 22 | } |
gwappa | 26:b4421d1ee57a | 23 | refrac_ = stamp_ms + debounce_; |
gwappa | 26:b4421d1ee57a | 24 | } |
gwappa | 26:b4421d1ee57a | 25 | |
gwappa | 26:b4421d1ee57a | 26 | void InterruptHandler::attach(Callback<void ()> cb) |
gwappa | 26:b4421d1ee57a | 27 | { |
gwappa | 26:b4421d1ee57a | 28 | handler_ = cb; |
gwappa | 26:b4421d1ee57a | 29 | } |
gwappa | 26:b4421d1ee57a | 30 | |
gwappa | 26:b4421d1ee57a | 31 | void InterruptHandler::detach() |
gwappa | 26:b4421d1ee57a | 32 | { |
gwappa | 26:b4421d1ee57a | 33 | handler_ = 0; |
gwappa | 26:b4421d1ee57a | 34 | } |
gwappa | 26:b4421d1ee57a | 35 | |
gwappa | 26:b4421d1ee57a | 36 | void InterruptHandler::setDebounce(const int& value_ms) |
gwappa | 26:b4421d1ee57a | 37 | { |
gwappa | 26:b4421d1ee57a | 38 | debounce_ = value_ms; |
gwappa | 26:b4421d1ee57a | 39 | refrac_ = value_ms; |
gwappa | 26:b4421d1ee57a | 40 | } |
gwappa | 26:b4421d1ee57a | 41 | |
gwappa | 26:b4421d1ee57a | 42 | void InterruptHandler::reset(const int& debounce_ms, const bool& logged) |
gwappa | 26:b4421d1ee57a | 43 | { |
gwappa | 26:b4421d1ee57a | 44 | setDebounce(debounce_ms); |
gwappa | 26:b4421d1ee57a | 45 | events_.clear(); |
gwappa | 26:b4421d1ee57a | 46 | logged_ = logged; |
gwappa | 26:b4421d1ee57a | 47 | } |
gwappa | 26:b4421d1ee57a | 48 | |
gwappa | 26:b4421d1ee57a | 49 | void InterruptHandler::writeToSerial(const trialtime_t& origin) |
gwappa | 26:b4421d1ee57a | 50 | { |
gwappa | 26:b4421d1ee57a | 51 | events_.writeToSerial(origin); |
gwappa | 26:b4421d1ee57a | 52 | } |
gwappa | 26:b4421d1ee57a | 53 |