我想将变化的值(我在查找表中声明,在以下示例中未显示)与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 ...
答案 0 :(得分:0)
是的,您的UART太慢了。
您的mainloop会以最快的速度运行,而不必等待UART准备就绪。在Serial.println(TCNT0);
之后等待,直到准备就绪。或在Serial.println(TCNT0);
之后放置一小段延迟时间(大约1毫秒)
但是,如果您想查看期望值,只需在循环中增加一个整数值并将其发送到UART。请勿使用计时器值。