void Interrupt::reattach() { if (!callback_ptr_) { return; } if (!callback_ptr_->getFunctor()) { return; } if (mode_ptr_ == &interrupt::mode_low) { resetIsr(); detachInterrupt(digitalPinToInterrupt(pin_)); enablePullup(); attachInterrupt(digitalPinToInterrupt(pin_), isr_, LOW); } else if (mode_ptr_ == &interrupt::mode_change) { resetIsr(); detachInterrupt(digitalPinToInterrupt(pin_)); enablePullup(); attachInterrupt(digitalPinToInterrupt(pin_), isr_, CHANGE); } else if (mode_ptr_ == &interrupt::mode_rising) { resetIsr(); detachInterrupt(digitalPinToInterrupt(pin_)); enablePullup(); attachInterrupt(digitalPinToInterrupt(pin_), isr_, RISING); } else if (mode_ptr_ == &interrupt::mode_falling) { resetIsr(); detachInterrupt(digitalPinToInterrupt(pin_)); enablePullup(); attachInterrupt(digitalPinToInterrupt(pin_), isr_, FALLING); } }
void main(void) { initSquareWear(); setModeOutput(pinC7); setModeInput(pinB4); enablePullup(pinB4); // enable internal pullup while(1) { if (getValue(pinB4)==0) { latC7 = 1; } else { latC7 = 0; } } }