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的值。
以上的過程純粹是個人猜測,沒有實驗和數據的依據。