DCC/MM2シールドR5Dを半田付けする [DCC/MM2シールド]
なんか、半田付けの記事ばかりのような気がしますが、MP3の表面実装でなかなかだったので、心機一転、今度はYaasan様と物々交換したDCC/MM2シールドR5Dを半田付けしました。こちらは2.54mmピッチなので楽勝と思って適当にやったら大変なことになりました・・・。
の前に、交換していただいたのは、基板とターミナルブロックでDSCore(書き込み済み)が無い・・・。ヒューズビットとやらも書き込まないといけないらしい。昔、ArduinoでHexファイルは書けますよと言われたような記憶が・・・。
ということで、まずはデコーダ開発ボードとSmileWriterでATMega328PにDSCoreファームを書き込むため、avrdudeを一生懸命いじりました。なかなか動きませんでしたが、日も暮れたころにやっと書き込めました。途中AtmelStudio入れてみたりとかやってみましたが、書き込めないし・・・。
参考にしたページは、
(1)ArduinoISPを汎用AVRライタとして使う(2)と
(2)Arduinoにスケッチをコンパイルせずに書き込む
で、(1)のページのコマンドを参考にさせていただきつつ、(2)のバッチファイルを流用しています。
出来上がったバッチファイルが以下です。(ソースそのまま)
@echo off
setlocal
rem 書き込み対象の種類 m328p
set ARDUINO_TARGET="m328p"
rem 引数の存在チェック
if "%1" == "" goto usage
if "%2" == "" goto usage
rem write COM3 DSGatewayR217_ATMEGA328P.hex
rem 書き込み指示
rem プログラム
".\hardware\tools\avr\bin\avrdude" -C.\hardware/tools/avr/etc/avrdude.conf -c avrisp -p %ARDUINO_TARGET% -P%1 -b19200 -D -Uflash:w:"%2":i
rem Fuseビット書きこみ
".\hardware\tools\avr\bin\avrdude" -C.\hardware/tools/avr/etc/avrdude.conf -c avrisp -p %ARDUINO_TARGET% -P%1 -b19200 -D -U lfuse:w:0xe2:m -U hfuse:w:0xd9:m -U efuse:w:0x07:m
rem Fuseビット読み込み
".\hardware\tools\avr\bin\avrdude" -C.\hardware/tools/avr/etc/avrdude.conf -c avrisp -p %ARDUINO_TARGET% -P%1 -b19200 -D -U lfuse:r:con:h -U hfuse:r:con:h -U efuse:r:con:h
goto :EOF
:usage
echo Usage: %0 port hex_file
上記を、write.batという名前でセーブします。(メモ帳を開いて、上のソースを貼り付けて、write.batというファイル名で保存します。拡張子を見えない設定にしているとこっそりwite.bat.txtとかになって、全くコマンドプロンプトから使えないです)
バッチの説明を(適当に)しますと、%1のシリアルを開いて、%2のHexファイルを書き込むのですが、
まず、プログラムの書き込みをします。
次に、Fuseビットの書き込みをします。
最後にFuseビットの読み込みをしてます。別に確認はしておりませんので、目視でビットが正しいことを確認してください。
そして、上記バッチファイルはhexファイル(今回は、DSGatewayR217_ATMEGA328P.hex)と一緒にArduinoIDEのルートフォルダ(私だと”C:\Program Files (x86)\Arduino”)に置きます。Win10だからなのか「管理者じゃないとダメ」とか怒られますが、管理者なのでかまわずに続けます。
で、コマンドプロンプトを起動して、ArduinoIDEのルートフォルダ(私なら”C:\Program Files (x86)\Arduino”)フォルダをカレントフォルダにします。以下の命令と一緒です。
CD C:\Program Files (x86)\Arduino
とコマンドを打ってEnterを押せば移動できます。
ここで、
write COM3 DSGatewayR217_ATMEGA328P.hex
と打って、Enterを押せば、めでたくATMega328PにDSCoreが書き込まれます。
なお”COM3”はSmileWriterのCOM番号に合わせてください。COM9以降はエラーが立つかもです。その場合は、"\\.\COM10"のように指定する必要があります。(確かWindowsの仕様です)
で、めでたくDSCore R217が書き込めました。
次に適当にDCC/MM2シールドを組み立てたらやらかしてしまいました。まずはCN5 ISPのテストピンを上下逆につけてしまいました。仕方ないので半田をいっぱい盛って、6ピンとも半田ごてに当たりつつ融けている状態で引き抜いて、つけなおしました。ピンは半田で汚くなっているので長い部分は切ってしまいました。(もう重ねられない)
そして、電源を入れたらPowerLEDすらつきません。でも、DCCデコーダは動きます。つまりステータスLEDを三つとも逆にはんだ付けしてました。全部つけなおしたら、一部基板のパターンははがれて断線しました。
で、まあ、DCC部分はちゃんとやっと動くようになりました。(S88は未確認)
DCC/MM2シールドR5DはS88のRJ45端子が付いているので、これでいくつか自動運転をやってみたいと思っています。が、今日は力尽きました。
の前に、交換していただいたのは、基板とターミナルブロックでDSCore(書き込み済み)が無い・・・。ヒューズビットとやらも書き込まないといけないらしい。昔、ArduinoでHexファイルは書けますよと言われたような記憶が・・・。
ということで、まずはデコーダ開発ボードとSmileWriterでATMega328PにDSCoreファームを書き込むため、avrdudeを一生懸命いじりました。なかなか動きませんでしたが、日も暮れたころにやっと書き込めました。途中AtmelStudio入れてみたりとかやってみましたが、書き込めないし・・・。
参考にしたページは、
(1)ArduinoISPを汎用AVRライタとして使う(2)と
(2)Arduinoにスケッチをコンパイルせずに書き込む
で、(1)のページのコマンドを参考にさせていただきつつ、(2)のバッチファイルを流用しています。
出来上がったバッチファイルが以下です。(ソースそのまま)
@echo off
setlocal
rem 書き込み対象の種類 m328p
set ARDUINO_TARGET="m328p"
rem 引数の存在チェック
if "%1" == "" goto usage
if "%2" == "" goto usage
rem write COM3 DSGatewayR217_ATMEGA328P.hex
rem 書き込み指示
rem プログラム
".\hardware\tools\avr\bin\avrdude" -C.\hardware/tools/avr/etc/avrdude.conf -c avrisp -p %ARDUINO_TARGET% -P%1 -b19200 -D -Uflash:w:"%2":i
rem Fuseビット書きこみ
".\hardware\tools\avr\bin\avrdude" -C.\hardware/tools/avr/etc/avrdude.conf -c avrisp -p %ARDUINO_TARGET% -P%1 -b19200 -D -U lfuse:w:0xe2:m -U hfuse:w:0xd9:m -U efuse:w:0x07:m
rem Fuseビット読み込み
".\hardware\tools\avr\bin\avrdude" -C.\hardware/tools/avr/etc/avrdude.conf -c avrisp -p %ARDUINO_TARGET% -P%1 -b19200 -D -U lfuse:r:con:h -U hfuse:r:con:h -U efuse:r:con:h
goto :EOF
:usage
echo Usage: %0 port hex_file
上記を、write.batという名前でセーブします。(メモ帳を開いて、上のソースを貼り付けて、write.batというファイル名で保存します。拡張子を見えない設定にしているとこっそりwite.bat.txtとかになって、全くコマンドプロンプトから使えないです)
バッチの説明を(適当に)しますと、%1のシリアルを開いて、%2のHexファイルを書き込むのですが、
まず、プログラムの書き込みをします。
次に、Fuseビットの書き込みをします。
最後にFuseビットの読み込みをしてます。別に確認はしておりませんので、目視でビットが正しいことを確認してください。
そして、上記バッチファイルはhexファイル(今回は、DSGatewayR217_ATMEGA328P.hex)と一緒にArduinoIDEのルートフォルダ(私だと”C:\Program Files (x86)\Arduino”)に置きます。Win10だからなのか「管理者じゃないとダメ」とか怒られますが、管理者なのでかまわずに続けます。
で、コマンドプロンプトを起動して、ArduinoIDEのルートフォルダ(私なら”C:\Program Files (x86)\Arduino”)フォルダをカレントフォルダにします。以下の命令と一緒です。
CD C:\Program Files (x86)\Arduino
とコマンドを打ってEnterを押せば移動できます。
ここで、
write COM3 DSGatewayR217_ATMEGA328P.hex
と打って、Enterを押せば、めでたくATMega328PにDSCoreが書き込まれます。
なお”COM3”はSmileWriterのCOM番号に合わせてください。COM9以降はエラーが立つかもです。その場合は、"\\.\COM10"のように指定する必要があります。(確かWindowsの仕様です)
で、めでたくDSCore R217が書き込めました。
次に適当にDCC/MM2シールドを組み立てたらやらかしてしまいました。まずはCN5 ISPのテストピンを上下逆につけてしまいました。仕方ないので半田をいっぱい盛って、6ピンとも半田ごてに当たりつつ融けている状態で引き抜いて、つけなおしました。ピンは半田で汚くなっているので長い部分は切ってしまいました。(もう重ねられない)
そして、電源を入れたらPowerLEDすらつきません。でも、DCCデコーダは動きます。つまりステータスLEDを三つとも逆にはんだ付けしてました。全部つけなおしたら、一部基板のパターンははがれて断線しました。
で、まあ、DCC部分はちゃんとやっと動くようになりました。(S88は未確認)
DCC/MM2シールドR5DはS88のRJ45端子が付いているので、これでいくつか自動運転をやってみたいと思っています。が、今日は力尽きました。
2016-02-28 23:41
コメント(0)
トラックバック(0)
コメント 0