Arduino ISPによるArduinoのAVRライター化(3V対応)

参考リンク

http://arduino.cc/en/Tutorial/ArduinoISP

http://hlt.media.mit.edu/?p=1706

http://www.geocities.jp/arduino_diecimila/use/arduino_dev.html

作成目的

  • Arduino IDE からの書き込みはしない。コマンドラインでavrdude -c arduinoでライターとしてのみ使う。
  • 3.3Vのデバイスにも書き込めるようにする。

動作環境

OS

MacOSX 10.7.4

avrdude

 >avrdude -v
 >avrdude: Version 5.11, compiled on Aug 25 2012 at 08:54:59

Arduino IDE

Arduino v 1.0.1

テストしたArduino

Duemilanove(Atmega328)

Diecimila(Atmega168)


設定

手順

  • Arduino IDEから、ファイル→スケッチ例でArduino ISPを開き、同スケッチをArduinoに書き込む
  • ブレッドボードで対象のMCUと配線を行う
  • avrdude -c arduino -p m8 -P /dev/tty.usbserial-チップ名 -b 19200 -v (ATmega8の例) でテスト

配線上の注意:

  • ArduinoのSPIピン(D10-D13)と対象MCUピンを合わせる。
  • Arduino側のRESET(3.3V/5V/GNDが並んでるコネクタピン)を100ohm程度の抵抗でプルアップすること(*1)。この2点である。
 【配線図】
    Arduino側
    5V             GND D13 D12  D11  D10 RESET<-100ohm->5V
     |              |   |   |   |    | 
    VCC/AVCC-0.1uF-GND SCK MISO MOSI RESET
   対象MCU(ATmega8の例)

はまったこと

当初avrdudeのボーレートを明示的に指定しなかったために programmer is not respondingのエラーが出て小2時間考え込んだ。

3.3V対応

MOSFETでレベルシフトを行う。回路はsparkfunのLogic Level Converterのままで、BSS138を四個使う。

no title


基板作成

no title


使いふるしたDiecimilaを利用することにした。

以上、このページ終わり。

追記




*1: Arduinoの自動リセット対策。無いと動作しない。http://www.arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection

this file --> last modified:2012-09-06 01:35:56