Saturday, September 13, 2014

FT-232Rベースのプログラマー作成方法集

ATmega/ATtinyなどのファームウエアーを最初に書き込む際には、専用のプログラマーが必要です。

もちろんARDUINOを一つ持っていれば、教科書通り新品のATMega328Pにブートローダーを書き込むことができます。http://arduino.cc/en/Tutorial/ArduinoISP

何かの拍子でARDUINO上のATMega328Pを壊すと回復不能のようで不安ですよね。ARDUINOに頼らずにプログラマーを確保する一番簡単な方法はFT-232Rを使うプログラマーです。この際ホストPC側のプログラムにはAVRDUDEというプログラム(6.1-2以降)が必要です。(この話は後で書きます)

ここで重要なのは、FT232Rというのは単なる非同期シリアルへの変換だけでなくかなり高機能な同期シリアル変換機能を持っているということです。この機能を使うと「遅い」といわれたシリアルポートを使ったbitbang(ビット叩き)とは異次元の高速書き込みができることです。

FTDI製のFT-232Rという石はUNOになる前のUSBのARDUINO duemilenoveには乗っていて、この場合うまくジャンパー飛ばしてつなげばプログラマーとして使えるとのことです。
 http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html

この特性に注目した設計をされているUncompatinoというARDUINO (UNOの前の)Duemilenove (半)互換ボードは、通常のICSPコネクターはないもののボード上のFT232Rチップを使ってブートローダーを書き込めるようにできたショートピン2*4本が立っています。(たしか基板+部品で1300円程度とお買い得ですが、表面実装のFT-232Rの半田づけがあるので中上級者用)
 http://akizukidenshi.com/catalog/g/gP-07487/
 http://akizukidenshi.com/download/ds/akizuki/k6096_manual_20130816.pdf

またTTL-232R-5Vという、既製のUSBからTTLレベル非同期シリアル変換ケーブルもプログラマーとして使えるはずです。
 http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm
 http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_TTL-232R_CABLES.pdf
具体的には上記ケーブル(私は秋月で1,580円で購入)とICSP用の6PINメスが両方についたケーブル(私はマルツで【LFCBL06-01】6ピンフラットケーブルを154円で購入)を購入します。6PINにコネクターのみを探してもまず見つからないし高いので注意しましょう。そして2列のピンヘッダーを3+1+9=13本の幅で切り出しこれの後ろ側を半田付で結線するだけでアダプターになります。(コネクター間に1本分余裕が要ります)

 # TTL-232R GND 1 Black  -> ICPS GND   (6 pin)
 # TTL-232R CTS 2 Brown  -> ICPS MOSI  (4 pin)
 # TTL-232R VCC 3 Red    -> ICPS VCC   (2 pin)
 # TTL-232R TXD 4 Orange -> ICPS RESET (5 pin)
 # TTL-232R RXD 5 Yellow -> ICPS SCK   (3 pin)
 # TTL-232R RTS 6 Green  -> ICPS MISO  (1 pin)



実写真へのリンク: 配線直後 と 安定化後(ホットメルトの接着剤で固めて配線が切れたりするのを防止。半田付け/接着剤の両工程はピンヘッダーをブレッドボードなどに刺し固定して行うこと。途中で動かすとピンが動いてしまいます。)

GNDとVCC以外はAVRDUDEの設定でなんとでもなるので、配線しやすいようにしてください。(以下の表のD0-D7の数字をavrdude.confや~/.arduino/.avrduderc内のprogramer設定で使用します。ICの脚番号、ソケットの番号とうややこしいので要注意。)

FT232RL
FT232RL
Bit-banging data
Diecimila/Duemilnove
TTL-232R
ttl232r Adapter
Uncompatino
TXD (1)
D0

4 ORANGE
5 (RESET)
→ 2 ATmega
RXD (5)
D1

5 YELLOW
3 (SCK)
→ 3 ATmega
RTS# (3)
D2

6 GREEN
1 (MISO)

CTS# (11)
D3
X3-1
2 BROWN
4 (MOSI)
o o→ MISO
DTR# (2)
D4




DSR# (9)
D5
X3-2


o o→ SCK
DCD# (10)
D6
X3-3


o o→ MOSI
RI# (6)
D7
X3-4


o o→ RESET
VCC


3 RED
2 (VCC)

GND


1 BLACK
6 (GND)


Arduino main MCU side
ATMega328
ICPS
Arduino
MOSI (17)
4
J3-4 (D11)
MISO (18)
1
J3-5 (D12)
SCK (19)
3
J3-6 (D13)
RESET (1)
5
Switch
VCC
2

GND
6


AVRDUDE: -c ttl232r と指定してください。本結線に合わせた設定になります。
(-c ft232r では「Device is not responding to program enable. Check connection.」といわれて動きません。ご注意ください)

No comments:

Post a Comment