2011年8月15日星期一

Arduino中digitalWrite的一点疑惑

做Blink试验时,就曾经有点疑惑,digitalWrite往某个pin写入HIGH或LOW之后,该pin的状态是如何维护的呢?用万用表量输出脚的电压时,HIGH状态时是4.90v,LOW状态时是0.00v,但是示波器查看到的波形却有点不一致:

pin13电压波形图


采集到的电压峰值为正负0.3v,中间处于0v上下
从图上看出,状态设置为HIGH or LOW之后,该输出脚的状态处在一个中间值,而并不是一直处于HIGH or LOW,跟万用表量到的数据似乎有点矛盾。

源代码:

int P13=13;
boolean val=true;
void setup()
{
  pinMode(P13,OUTPUT);
  Serial.begin(96000);
}

void loop()
{
  if (val)
    digitalWrite(P13,HIGH);
  else
    digitalWrite(P13,LOW);
  delay(1500);
  val = !val;
  //Serial.println(val);
}


1 条评论:

  1. 原因可能跟虚拟示波器的限制有关,此处应该检测的是DC信号,但是声卡虚拟示波器只能检测交流信号,对直流信号不起作用。

    回复删除