串行监视器上的计时器值

时间:2019-08-28 10:03:44

标签: timer arduino

我想将变化的值(我在查找表中声明,在以下示例中未显示)与Arduino的计时器0(TCNT0)进行比较。

一个oszi向我显示的结果是我没有得到想要的东西。因此,我尝试查看计时器的值(显然,我期望看到0-255之间的值)。但是串行监视器告诉我,我得到的值之间只有很大的差距。

我的问题是:串行监视器是否太慢而无法显示所有值,或者我的方法是否错误?

int PIN11 = 11; 

void setup() 
{
  Serial.begin(9600);
  pinMode(PIN11, OUTPUT);
}

void loop() 
{
  if(TCNT0 < 100)
  {
    digitalWrite(PIN11, HIGH);
  }
  else
  {
    digitalWrite(PIN11, LOW);
  }
  Serial.println(TCNT0);
}

串行监视器返回以下输出:

  

期望值:0 1 2 3 ...
实际值:14 30 46 62 78 94 110   130150170190190210230250 14 ...

TimerValues

1 个答案:

答案 0 :(得分:0)

是的,您的UART太慢了。
您的mainloop会以最快的速度运行,而不必等待UART准备就绪。在Serial.println(TCNT0);之后等待,直到准备就绪。或在Serial.println(TCNT0);之后放置一小段延迟时间(大约1毫秒)
但是,如果您想查看期望值,只需在循环中增加一个整数值并将其发送到UART。请勿使用计时器值。