【发布时间】:2011-11-07 17:38:36
【问题描述】:
我正在使用面包板arduino。在我的中断函数中,我想读取我的一个 GPIO 引脚的值,然后在它为低时增加一个计数器。我正在使用以下方法进行操作。
displayValues[4]++;
hasButtonPushed = true;
if(digitalRead(BUTTON_A) == LOW) {
displayValues[5]++;
}
if(digitalRead(BUTTON_B) == LOW) {
displayValues[6]++;
}
if(digitalRead(BUTTON_C) == LOW) {
displayValues[7]++;
}
但是,即使输入线直接连接到高电平,代码也会返回低电平。我不相信我的 Atmel 损坏了。有什么想法吗?
【问题讨论】:
-
您是否将按钮声明为输入?
-
这实际上可能是 EE 堆栈交换的一个问题——我的猜测是,它与你的引脚如何接地比任何事情都更重要。电,就像水一样,遵循阻力最小的路径,如果它可以通过任何其他按钮或任何其他连接而不是 Atmel 到达地面(它将提供 2.5+v 或任何阈值),它会。您需要确保 Atmel 是电阻最小的路径,否则电压不会达到高状态。
-
我会尝试在那里发帖谢谢,是的,引脚已被声明为输入。我的万用表读数很高,但 atmel 没有。
-
@secretformula 您是否尝试过在一个简单的主循环()示例中而不是在中断处理程序中进行测试?处理程序对时间等做了一些奇怪的事情
-
LOW 为 0。我最终通过在原生 AVR 中重写数字输入来解决问题,一切都解决了。他们的代码库肯定有问题