2012年11月15日 星期四

把新的控制晶片載入bootloader -做自己的ARDUINO!-1



如果想要把系統建在全新的板子上,就要:
1.買一個新的晶片
2. 把新的晶片載入bootloader
3.寫入程式(用Arduino程式環境)
所以本文的目標: 把晶片寫入bootloader,然後獨立運作~!
使用的Arduino : UNO 3 (晶片是ATMEGA328p), Arduino 1.0.1

參考官網的:Building an Arduino on a Breadboard

http://arduino.cc/en/Main/Standalone


在麵包板上把必要零件豆上去,手工做的ARDUINO

全新的晶片買來,要先把bootloader 寫進去,當然也有現成的:
[飆機器人網站] 上面賣的,一顆寫好的只要$190 , 可能比市場上零售的空白的還要便宜= =a
http://www.playrobot.com/cart/shop.php?id=687&factory=&header=&sub=&Fno=&date_buy=

算了,還是來研究如何寫空白的吧~ 不然再看下去我就會想說那直接訂UNO3就好了也不用研究了....

還是參考官網的這篇 :
http://arduino.cc/en/Tutorial/ArduinoISP

你可以用兩塊ARDUINO ,一個寫,一個上面要被寫入。
上面這個設定是使用在UNO3 的板子,上面那塊插著新晶片,下面則是原本的沒動來做為寫入器。


也可以把要被寫入的放在麵包板上:


如果不要用外部晶體則要設定使用內部晶體。




細節參考這:
http://arduino.cc/en/Tutorial/ArduinoToBreadboard


我怕用內建晶振有什麼限制(其實就官網上的說明來看,只差下載一個套件做一下內振設定而已),所以很乾脆地就接了有外振電路的方式(其實是想接接看外振晶體XD):
文中有建議最好接LED 來顯示燒錄器是否有運作,是否有錯誤以及燒入動作中指示:
Put an LED (with resistor) on the following pins:
// 9: Heartbeat   - shows the programmer is running
// 8: Error       - Lights up if something goes wrong (use red if that makes sense)
// 7: Programming - In communication with the slave

所以很偷懶的用了LED 矩陣的三個點來表示,有總比沒有好~
它的心跳顯示真有質感, 有空再研究研究怎麼做的~
這個嗎 ?

Another example, fade an LED up and down with one for loop:
void loop()
{
  int x = 1;
  for (int i = 0; i > -1; i = i + x){
     analogWrite(PWMpin, i);
     if (i == 255) x = -1;             // switch direction at peak
     delay(10);
  }
}

我接的線路,其實就是多了一個LED dot matrix ...囧
首先要把要當成燒錄器的UNO3 載入燒錄程式:

勾選   檔案->範例->ArduinoISP  , 接著按上載把程式寫到UNO3

接著勾選    工具->燒錄器->Arduino as ISP


接著同樣在工具選單最下方選 "Burn Bootloader" , 就會看到三顆燈一陣亂閃,




使用以上方法已寫入3顆晶片,看來沒有異常發生,而第二顆開始都是用第一顆燒進去的晶片載入燒錄工具,所以可驗證使用無問題。
重覆寫入看來也ok, 不限於一定要原廠空白晶片, 不過就沒試過寫到一半去中斷它....也沒必要這樣試巴XD。










分類