发生的方波和检测到的不一样
本帖最后由 lilho_e2 于 2017-2-3 20:55 编辑用tme1中断产生方波,用pulseIn检测
结果检测到的方波和设置的有很大的出入
代码如下:
#include "TimerOne.h"
unsigned longdurationH, durationL;
unsigned long timeout;
int pin = 2;
void setup()
{
Serial.begin(9600);
pinMode(pin, INPUT);
pinMode(10, OUTPUT);
Timer1.initialize(100);
Timer1.attachInterrupt(callback);
timeout = millis();
}
void callback()
{
digitalWrite(10, digitalRead(10) ^ 1);
}
void loop()
{
durationH = pulseIn(pin, HIGH);
durationL = pulseIn(pin, LOW);
if (millis() - timeout > 200)
{
Serial.println(durationH + durationL);
timeout = millis();
}
}
上面设置10端口100us一次中断,由7端口检测,检测出来只有80多us
请教是什么原因? 做事是需要花時間的,單片機也不例外,那跟理想不同的時間差異,就是單片機花了時間在工作的証明。
而且波形也不会像理论上那样那么方,从0到1的切换时间不可能是0.
页:
[1]