[Arduino memo]
盡信書不如無書,愛爬文只能在地上爬。
為了幫目前作的電路加上紅外線遙控,但 PIN 腳已經快不夠用了。所以用到了 PIN 0,然後就開始出現燒錄上的問題。例如:
avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
avrdude: stk500_cmd(): programmer is out of sync
或者
avrdude stk500_recv() programmer is not responding
或者
avrdude stk500_getsync() not in sync resp=0x00
我也去爬了一些文,大多都是講要 reset, 要重新插 USB,我也真的試了一下,不是很穩定。
最後,我發現一件事,只要把 PIN 0 的線拔掉再燒錄就一切正常。
而這事可能的原因在那裡?或許是 arduino 把 PIN 0 跟 PIN 1 當作 RX 跟 TX 使用,而讓一開始的訊號對它的程式運作產生干擾,造成燒錄程式誤判。
總之,這事的關鍵應該在這裡,是資源有限的情況下常見的 side effects。
寫在這裡提醒自己一下....
彭帟絃
2016-04-18 22:48:23
pin0在燒錄時要當auto reset用,所以pin0如果沒拔掉,就不能拉(low or high)有一段時間沒玩了。
彭帟絃
2016-04-18 22:50:00
如果是IC的控制或是資料的傳輸可以用I2C來做,只要用掉2pin就可以串接多個裝置,沒支援I2C的也可以用軟體模擬。
Keisuke Lin
2016-04-18 23:21:18
Robin Hsu
2016-04-18 23:37:05
這個我之前在玩常遇到說, 尤其是拿 pin 13 led 來玩 閃動的太快的時候, 常常會造成 下一次的上傳出現這樣的問題.
通常是在 reset 之後, 有個瞬間能更新成功 XD