AVR模拟比较器+内部上拉?

vic*_*tcu 5 hardware embedded microcontroller avr avr-gcc

我希望有一个关于Atmel AVR微控制器的简单问题.所以我想使用ATTiny85的模拟比较器来确定信号是高于还是低于阈值.当"有效"时(即,它是一个有效的低开路集电极信号),该信号通常是"浮动"并被拉向地.如果我通过执行以下操作启用输入引脚上的上拉(也是比较器输入):

DDRB  = 0x00; // DDRB.1  = 0 = input 
PORTB = 0xFF; // PORTB.1 = 1 = internal pullup enabled
Run Code Online (Sandbox Code Playgroud)

如果我使用模拟比较器并选择PORTB.1作为AIN1,内部上拉应用于我的输入信号?我希望有人有个人经验来验证这种行为.希望这个问题对于堆栈溢出来说不是"硬件导向".谢谢!

编辑 响应下面的一些评论"为什么不以数字方式对待"的效果,这是因为我的"信号"是由传感器(即光学红外传感器)产生的.我无法保证它会"足够硬"地将其解释为零数字,因此我将使用内部2.56V参考作为切换阈值.我只是想拿起"IR事件",所以这对我来说似乎是最简单的方式.

此外,通过使用模拟比较器,我可以使用ISR"异步"检测事件.当然,有些引脚可以在数字边沿上调用中断,但是不希望依赖于响应低于V_IL.

zig*_*tar 4

数据表图 10-5 中您可以看到模拟级的输入受到上拉的影响。

因此,您可以将内部上拉电阻与比较器一起使用。正如数据表中提到的,您可能希望禁用该端口的数字输入级以降低功耗 - 当然前提是您不将其用于数字输入。

注意:浮动引脚可能会导致数字输入级消耗大量电流。尽量避开他们。