그 Arduino 핀은 중단할 수 없습니다
3065 단어 arduinostaticassertinterrupt
그러나 그것은 작동하지 않았습니다. 전체page on
attachInterrupt
를 읽었지만 일부 핀을 인터럽트에 사용할 수 없다는 직감 외에는 아무것도 얻지 못했습니다.그래서 코드를 살펴봐야 했고, 여기서 이 작은 스니펫(
Arduino.h
)을 찾았습니다.#define NOT_AN_INTERRUPT -1
그리고
$HOME/.arduino15/packages/arduino/hardware/avr/1.8.5/variants/gemma/pins_arduino.h
에서 다음을 읽었습니다.#define digitalPinToInterrupt(p) \
((p) == 2 ? 0 : NOT_AN_INTERRUPT)
그래서 여기 당신을 위한 아이디어가 있습니다: 당신의 스케치에 약간의 스니펫을 추가하세요:
template<int PIN>
constexpr int interruptFor() {
constexpr auto i = digitalPinToInterrupt(PIN);
static_assert(i != NOT_AN_INTERRUPT,
"board can't use this pin for an interrupt");
return i;
}
대신 다음 함수를 사용하세요.
namespace my_wiring {
constexpr auto BUTTON_PIN = 2;
}
constexpr auto BUTTON_INTERRUPT =
interruptFor<my_wiring::BUTTON_PIN>();
이제 내 Gemma(ATtiny85 사용)에서 내
BUTTON_PIN
를 예를 들어 1:sketch_aug14a.ino: In instantiation of
'constexpr int interruptFor() [with int PIN = 1]':
sketch_aug14a/sketch_aug14a.ino:19:70: required from here
sketch_aug14a/sketch_aug14a.ino:11:3: error: static assertion failed:
board can't use this pin for an interrupt
static_assert(i != NOT_AN_INTERRUPT,
^~~~~~~~~~~~~
그것은 시간을 절약했을 것입니다! 어쩌면 나는 이것을 arduino 헤더에도 소개할 것을 제안할 것입니다. 시간이 있을 때.
Reference
이 문제에 관하여(그 Arduino 핀은 중단할 수 없습니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/xtofl/that-arduino-pin-cant-interrupt-a4h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)