之前一直使用arduino uno當作atmega的燒錄器,
但是每次要燒錄時都要把線拔掉,
雖然不是有特別的障礙,但總是覺得有點麻煩。
但是每次要燒錄時都要把線拔掉,
雖然不是有特別的障礙,但總是覺得有點麻煩。
於是花了一百多塊台幣,在網路上買了一個燒錄arduino的USB to TTL的FTDI小板,
背面寫著Deek-Robot,
(焊點旁助焊劑的痕跡超明顯。 完全符合他的價格)
(照片來自一位外國先生的網誌,google翻譯了一下好像不是在說這東西好話的樣子)
收到之後,試了半天,完全燒不進去,一直跳出下面的錯誤訊息
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xb7
然後就一路從1 of 10數到10 of 10,
ZzZzZz..
接著就燒錄失敗
找了一堆資料之後,與有同樣症頭的朋友們分享。
**有人說IC裡面要有bootloader,由於我沒有沒有bootloader的IC,所以沒有試驗。
DTR要連到C3那顆0.1uf(104)的陶瓷電容,再接到RESET,但是我沒有104的電容,
只有103的陶瓷電容,可以工作。
也試了104的塑膠電容,也可以工作。
3. 軟體設置
板子要設置成arduino duemilanove or diecimila
處理器選你的IC,我是Atmega328所以就選這個,
之後就直接按上傳就好
各位可以試試看blink的程式試試看有沒有成功囉
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. Most Arduinos have an on-board LED you can control. On the Uno and Leonardo, it is attached to digital pin 13. If you're unsure what pin the on-board LED is connected to on your Arduino model, check the documentation at http://arduino.cc This example code is in the public domain. modified 8 May 2014 by Scott Fitzgerald */ // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. pinMode(13, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) delay(500); // wait for a second digitalWrite(13, LOW); // turn the LED off by making the voltage LOW delay(500); // wait for a second }
ps:可以燒錄sketch,不能燒錄bootloader喔, 要燒錄bootloader的話可以用arduino uno當作ISP方式燒錄。 謝謝各位。
參考資料
UPDATE
2015/06/17 00:51
剛剛換了一顆IC,就沒辦法燒錄,
後來把軟體的board改成arduino uno之後又可以了...
(一樣的IC,一樣的接線)
Overriding Baud Rate : 115200
莫名其妙。
UPDATE
2015/06/17 01:00
有時顯示Overriding Baud Rate :57600也可以燒錄
燒錄要靠運氣。
有時可以,有時不行,
原因不明。
:'(
這個100多塊錢的FTDI不穩定。
跟第一張圖的原作者說的一樣。
UPDATE
2015/06/17
都要做一塊PCB了,就做成共用的,
FTDI以及UNO燒錄的腳位,都放上快速插座預留。
這樣就算被FTDI弄得一肚子鳥氣的時候,
還是可以搬出UNO來對應。
UNO燒錄方法
由於硬體把LED抓到了第9腳去, 要測試有沒有成功燒錄,就試試看這個呼吸燈code吧。
int brightness = 0; int fadeAmount = 5; int delayDuration = 30; void setup() { pinMode(9, OUTPUT); } // the loop function runs over and over again forever void loop() { analogWrite(9, brightness); brightness = brightness + fadeAmount; if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount ; } delay(delayDuration); }實測OK
ps2:查詢的過程中,看到了一句話覺得很有意思,分享給大家。
"If
you want to build a ship, don't drum up people to collect wood and
don't assign them tasks and work, but rather teach them to long for the
endless immensity of the sea" - Antoine de Saint-Exupéry
如果你要打造一艘船,比起讓人們去撿木頭或安排他們工作,更好的方法是激發他們對海洋的熱情。
(以上我亂翻的啦,英文不好請見諒)