fast-feedback virtual target task code on STM Nucleo

Dependencies:   mbed

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?

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