Arudino烧录的时候,可以通过连接下载器的DTR引脚做到自动重启烧录。引脚图如下:
以前不太懂,不知道C2这个电容是做什么用的。现在用学会点皮毛来分析下。
在未下载程序的时候,DTR端的电压是高电平。而Reset这端被电阻R2拉高了电压。因此认为C2两边的电势差为0。
在IDE里面点击了下载程序按钮,DTR这端就会将电压置为低。而电容两端的电压无法跳变。因此RESET这端也变为低电平。然后VCC通过R2缓慢给他充电。R2比较大,C2也比较大,所以充电时间长能保持RESET这端在一段时间内都是低电平。这个时间应该需要大于100ms,这样Arduino才能重启开始烧录程序。
但是为什么不直接将DTR和RESET接在一起,然后用DTR的高低电平来控制RESET呢。
我测了下DTR接烧录器这边的电压,大约是3.4V。所以最有可能的是,这个引脚的高电平电压不能让Arduino认为是高(烧录器电平和Arduino的电平不同。这是我猜的,没有依据)。所以加上了R2这个上拉电阻。
那么当DTR降为0V的时候,RESET这边还有大约5-3.4=1.6V电压。电容C2从1.6V升到Arduino认为的最小高电平电压值的时候,充电结束。这个时间需要>100ms。所以能算出电容C2的值。
以上的过程纯粹是个人猜测,没有实验和数据的依据。