Arduino定时器中断无法正常工作

时间:2019-08-07 21:15:46

标签: timer arduino

我正在对Arduino进行编程,以了解从高到低或从低到高的时间。但是我正在从计时器中断值中获取恒定值。它是1246 * 10ms =12460。此代码出了什么问题。我正在用示波器跟踪信号。实际时间约为250毫秒。请帮帮我。

#include <TimerOne.h>

void setup(void)
{
  pinMode(7, INPUT);
  Timer1.initialize(100);//1000000=1s
  Timer1.attachInterrupt(blinkLED);
  Serial.begin(9600);
}


int ledState = LOW,T=0,state0=0,state1=0;
volatile unsigned long blinkCount = 0;  variables

void blinkLED(void)
{
  T++;
}

void loop(void)
{
  state0=state1;
  state1=digitalRead(7);
  if(state0!=state1)
  {
    //Serial.print("state1=");
    //Serial.print(state1);
    //Serial.print("  T=");
    Serial.println(T);
    T=0;
  }
}

1 个答案:

答案 0 :(得分:0)

首先,请确保您发布的代码有效。我认为“变量”应该发表评论吗?另外,您的代码不是很可读(请添加一些注释)。

为了测量脉冲的长度,Arduino具有一个称为“ pusleIn()”的内置函数。看看他documentation

如果要测量高脉冲和低脉冲,还应查看“ attachInterrupt()”,其模式设置为“ CHANGE”。

希望这对您有所帮助。