Arduino 测量两次外部中断之间的时间

Arduino 测量两次外部中断之间的时间,arduino,Arduino,我想测量两个不同相的信号之间的时间,我用的是arduino Uno。我已经将2个正弦信号转换成方波,并分别将它们输入INT0和INT1。为了测量两个信号之间的延迟,我想测量使用中断的信号上升沿或下降沿之间的时间。在接收到第一个上升沿时,我想启动计时器,比如说计时器3,在接收到第二个上升沿时,我想停止计时器。我的问题是,我找不到一个库,它允许我启动和停止计时器3,并使用它存储的值。我怎么做呢?假设您谈论的是边缘之间的整数微秒,您可以创建一个全局变量来存储触发第一个中断的时间INT0LastTime

我想测量两个不同相的信号之间的时间,我用的是arduino Uno。我已经将2个正弦信号转换成方波,并分别将它们输入INT0和INT1。为了测量两个信号之间的延迟,我想测量使用中断的信号上升沿或下降沿之间的时间。在接收到第一个上升沿时,我想启动计时器,比如说计时器3,在接收到第二个上升沿时,我想停止计时器。我的问题是,我找不到一个库,它允许我启动和停止计时器3,并使用它存储的值。我怎么做呢?

假设您谈论的是边缘之间的整数微秒,您可以创建一个全局变量来存储触发第一个中断的时间
INT0LastTime=micros()
,并获取第二个中断,将“现在的时间”与第一个中断的时间进行比较。
Lag=micros()-INT0LastTime

谢谢让我试试,但是micros()方法不使用中断,因为我读了一些文章,其中说如果启用中断,则该方法仅在几个micros内正常运行,那么其行为将失控,很抱歉,如果我的问题太琐碎或者我对MCST这个领域不熟悉,那是因为其他中断可能会干扰任何依赖于“micros()”的代码。假设您有一个while循环,在每个循环上检查“micros()”,并在x个micros通过后执行某些操作;这会带来不准确的风险,因为中断可能会在计时器到期时决定执行某些操作,而while循环必须等待。在这种情况下,我们在中断中使用micro,所以问题不大(我想!我不是中断方面的专家)。无论如何,微秒仅精确到4毫秒,假设时钟速度为16mhz,较低的时钟(例如内部时钟)将不太精确。