摇滚一族 发表于 2024-8-9 08:59:28

请教IO空接如何读为0?

最近想做一个外电平高低检测,不接设备,想IO读状态为0,如何实现?

高阻+禁上拉,读回来还是1,IC是8H
现在想到的办法是外加一个下拉电阻,除了此办法,请教各位大侠还有没有其它办法?

御坂美琴我老婆 发表于 2024-8-9 09:09:53

设置成开漏试试,不行就把内置下拉电阻开了

摇滚一族 发表于 2024-8-9 09:49:35

御坂美琴我老婆 发表于 2024-8-9 09:09
设置成开漏试试,不行就把内置下拉电阻开了

8H 没有内置下拉

DebugLab 发表于 2024-8-9 09:54:56

IO设置高阻,外部10K下拉

soma 发表于 2024-8-9 10:09:51

除了下拉电阻,估计没有其他办法。

御坂美琴我老婆 发表于 2024-8-9 11:45:05

本帖最后由 御坂美琴我老婆 于 2024-8-9 11:59 编辑

摇滚一族 发表于 2024-8-9 09:49
8H 没有内置下拉
哦哦,我这边也试了,开漏也确实会读到高电平,你如果不加外置下拉电阻确实不行了,但我也给你想了个昏招

P20=0;//泄放寄生电容
P20=1;//寄生电容开始充电
NOP2();//等待充电
DMABufferTX1 =P20;//读出

这样,设置成开漏,先让检测脚=0,对地下拉,然后再=1,回到不导通的读取状态,这个时候,漏电流会对引脚和板子的寄生电容充电,然后趁他没充满的时候读电平,由于如果有外接高电平的情况下,对这个寄生电容充电就会快,可以根据你要检测的外部高电平的输出能力调整等待时间

我这边测试45M主频的情况下,外部高电平为其他IO口,输出能力大概只有几十uA,等待时间要60个nop才能区分,如果外部高电平驱动能力有大概1mA的时候,等待时间只需要2个左右的nop就好,你根据你板子的情况看看能不能调的动

然后要注意的就是这种方法得对地下拉一瞬间,被测试的这个外部高电平的输出能力不能太大,必须有限流,不然会损坏管脚

摇滚一族 发表于 2024-8-9 12:08:17

御坂美琴我老婆 发表于 2024-8-9 11:45
哦哦,我这边也试了,开漏也确实会读到高电平,你如果不加外置下拉电阻确实不行了,但我也给你想了个昏招
...

好主意,我试试,谢谢

网老四 发表于 2024-8-9 14:08:27

高阻状态,芯片管脚自身的泄漏电流不是固定不变的,同一芯片不同管脚,不同芯片,可能读出的结果都不一样.
楼主这个悬空读0的想法一开始就是不合适的.搞研发就怕总体方案出问题.方案不合适的话,后续要花太多精力去补救.
大的多数场合更喜欢开弱上拉然后管脚悬空读1.

lzl1okOK 发表于 2024-8-9 14:43:06

好像只能接下拉电阻没其他办法了

摇滚一族 发表于 2024-8-9 17:10:29

网老四 发表于 2024-8-9 14:08
高阻状态,芯片管脚自身的泄漏电流不是固定不变的,同一芯片不同管脚,不同芯片,可能读出的结果都不一样.
楼主 ...

设备不接,显示0,设备接了,根据设备的输出状态显示0或1,这应该是很常见的情况吧
页: [1] 2
查看完整版本: 请教IO空接如何读为0?