<p>相关信息请先参考东成兄在这个帖子中的讨论:</p><p><a href="http://www.shoudian.org/dispbbs.php?boardid=10&id=34951&page=1">http://www.shoudian.org/dispbbs.php?boardid=10&id=34951&page=1</a></p><p>这里我的问题是:</p><p>我用的是atmel的attiny25,atmel的单片机,口线都采用这种形式:</p><p>
[讨论]关于断电切档的问题
<br />每个口线对VCC有个反置保护二极管。上面的二极管指向VCC,而下面的二极管从GNG指向口线。</p><p>假如采用jet或者东成兄现在的方法,在某个脚接电容,当断电的时候,电容会通过这个二极管向VCC放电,而VCC一般会接一个滤波电容。这导致一个问题,如果接的电容太大,在断电的过程中这个电容持续供电,mcu根本就不会关闭,而同时这个引脚的电平也一直是高电平,mcu方面没法觉察外部供电的变化。如果电容太小,断电后,由于二极管的放电,这个引脚被拉至低电平,mcu在重新供电后,读取这个引脚的信息始终是低电位,也就不能起到记忆作用。</p><p>我现在的想法是,使用ADC采样获取这个引脚上的电压,因为二极管有个正向压降(约0.8V),这会导致短时间内电容的放电会截止在这个正向压降左右,如果读取这个引脚的电压低于某个值(比如0.4V)就认为是掉电时间很长,反之就认为是短暂切断。</p><p>不知道有没有更好的方法:)</p>[此帖子已经被作者于[lastedittime]1183695222[/lastedittime]编辑过] |