我希望有一个与Atmel AVR微 Controller 有关的简单问题。因此,我想使用ATTiny85的模拟比较器来确定信号是高于还是低于阈值。此信号通常为“ float ”信号,并且在“事件”状态下将拉向地面(即,它是事件的低开集电极信号)。如果通过执行以下操作启用了输入引脚(也是比较器输入)上的上拉电阻:

DDRB  = 0x00; // DDRB.1  = 0 = input
PORTB = 0xFF; // PORTB.1 = 1 = internal pullup enabled

如果我使用模拟比较器并选择PORTB.1作为AIN1,内部上拉电路将应用于我的输入信号吗?我希望某人有个人经验来验证此行为。希望这个问题对于堆栈溢出不是太“面向硬件”。谢谢!

编辑
回应以下有关“为什么不对其进行数字处理”的评论,这是因为我的“信号”是由传感器(即光学IR传感器)生成的。我不能确定它会拉低“足够硬”以被数字化解释为零,因此我将使用内部2.56V基准作为我的开关阈值。我只是在尝试“IR事件”,所以这对我来说似乎是最简单的方法。

另外,通过使用模拟比较器,我可以使用ISR“异步”检测事件。当然,有些管脚可以在数字边缘上触发中断,但是一个管脚不希望依赖于将响应降至V_IL以下。

最佳答案

datasheet图10-5中可以看到,模拟级的输入受上拉的影响。

因此,您可以将内部上拉电路与比较器一起使用。如数据表所述,您可能希望禁用该端口的数字输入级以降低功耗-当然,仅当您不将其用于数字输入时才可以。

笔记:
float 引脚可能会导致数字输入级消耗大量电流。尽量避免它们。

关于embedded - AVR模拟比较器+内部上拉?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2597369/

10-11 21:45