lilho_e2 发表于 2017-2-3 20:54:08

发生的方波和检测到的不一样

本帖最后由 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
请教是什么原因?

eddiewwm 发表于 2017-2-6 11:02:45

做事是需要花時間的,單片機也不例外,那跟理想不同的時間差異,就是單片機花了時間在工作的証明。

Stormer 发表于 2017-2-10 18:18:39

而且波形也不会像理论上那样那么方,从0到1的切换时间不可能是0.
页: [1]
查看完整版本: 发生的方波和检测到的不一样