极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17658|回复: 2

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

[复制链接]
发表于 2017-2-3 20:54:08 | 显示全部楼层 |阅读模式
本帖最后由 lilho_e2 于 2017-2-3 20:55 编辑

用tme1中断产生方波,用pulseIn检测
结果检测到的方波和设置的有很大的出入
代码如下:
#include "TimerOne.h"
unsigned long  durationH, 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
请教是什么原因?
回复

使用道具 举报

发表于 2017-2-6 11:02:45 | 显示全部楼层
做事是需要花時間的,單片機也不例外,那跟理想不同的時間差異,就是單片機花了時間在工作的証明。
回复 支持 反对

使用道具 举报

发表于 2017-2-10 18:18:39 | 显示全部楼层
而且波形也不会像理论上那样那么方,从0到1的切换时间不可能是0.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 07:56 , Processed in 0.041515 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表