Arduino库中的中断例程从未调用过

时间:2017-12-18 22:14:31

标签: arduino interrupt

我正在尝试编写一个使用中断例程的Arduino库。一切似乎都没问题,没有抛出编译错误,但它不起作用,因为永远不会调用isr例程。

在这个简化版本中,while循环永远运行,尽管触发了正确的中断触发器。如果我在库外测试它,它可以正常工作。

这里可能有什么问题?

图书馆代码:

class test {
  public:
    int read(int clockPin);
    volatile unsigned long called;
}

volatile unsigned long called=0;

static void isr() {
  called++;
}

int test::read(int clockPin) {
  attachInterrupt(digitalPinToInterrupt(clockPin), reinterpret_cast<void (*)()>(&isr), FALLING);
  // or attachInterrupt(digitalPinToInterrupt(clockPin), isr, FALLING);
  // none of them raise an error but it does not work
  while (called==0) { delay(1); }
  detachInterrupt(digitalPinToInterrupt(clockPin));
  ...
  ...
}

0 个答案:

没有答案