表 Atmel社(Microchip Technologyに買収された)純正のICEやAVRデバッガの購入検討中のワテ
ワレコ
さて、ワテもいよいよワンチップマイコンを使った電子工作に挑戦を開始したのだ。
具体的にはAVRと言うマイコンを使ってみる事にした。
ワンチップマイコンはPICも有名だが、AVRも同じくらい有名だ。Arduinoボードに搭載されているのがAVRマイコンだ。
AVRマイコンを使うにあたり、まずはライターを自作する事にした。
ライターとは、ワンチップマイコンにプログラムを書き込む装置だ。ライターにはいろんな種類のものがあるが、最近ではパソコンとUSB接続出来るタイプのライターが多い。
当初は冒頭の写真で示したメーカー純正のライター兼デバッガーや安い互換品が幾つか販売されているので、どれかを買う事を検討していた。
その調査過程で、ネットにも各種のAVRライターあるいやPICライターの自作記事が有る事を発見した。そこでたまたま見付けたPICerFTと言うPICとAVRの両方に対応しているライターを作ってみたのだ。
前回までの記事は以下の通り。
この前回記事で説明したように、KiCadで設計した基板に間違いが有った。その根本原因はPICerFTを公開している人のサイトにある回路図をワテが見ながらKiCadに入力したのだが、その回路図の入力作業で配線を間違えてしまったのだw
その間違った配線のまま、PCBWayさんに専用基板の製作を依頼してしまった。
当記事では、その失敗基板を改造してPICerFTがある程度動作するところまで漕ぎつける事が出来たので、その実験過程を紹介したい。
結論としては、PICerFTの挙動が今一つ良く分からないので、Atmel純正のライターを買おうかなあと検討中だw
では、本題に入ろう。
PICerFTをAVRライター専用に改造した
下写真が前回記事で紹介したPICerFTだ。ワテ設計のプリント基板にパーツの半田付けが完了している。ただし、配線間違いがあるので動かない。
そこでこの失敗作を改造する。
PICerFTはPICとAVRの両方のライター機能を持っている。
でも、今回はAVR専用として動けば良いのだ。
PICerFTを公開している人のサイトにはPIC専用の場合の回路図やプリント基板レイアウト、AVR専用の場合の回路図やプリント基板レイアウトもそれぞれ公開されている。
なので、ワテの失敗作をAVR専用の配線に変更するのだ。
白光FM-206半田ステーションを使ってPICerFTをAVR専用に改造する
まずは、半田付けしている部品を取り外す作業だ。
ワテの場合、昨年末に白光のソルダリングステーションFM-206を衝動買いしてしまったのだが、まあそれを使って部品を取り外してみた。
FM-206の詳細記事はこちら。
あと、下写真のはんだシュッ太郎NEOも使う。
半田付けした部品取り外しにはホットツイーザーが大活躍
白光FM-206半田ステーションにはホットツイーザー本体(二本の板状コテ先で挟むタイプ)が標準で付いているが、そのコテ先(別売り)も買っていた(下写真)。
今回の解体作業では、このホットツィザーが大活躍した。
ワテが買った「白光 HAKKO T8-1006 8L型 T8シリーズ交換こて先」は幅8mmだ。
例えばトランジスタ2SC1815のECBの三本の足は、2.54ミリピッチ間隔の三つのランドに半田付けしている。なので5.08mmの幅がある。
この8mm幅のホットツィザーを使うと、ECBの三本のリード線を固定している三カ所の半田を同時に加熱する事が出来るのだ。
その瞬間にトランジスタのモールド部分を持って引っ張れば、簡単に抜き取れる。
感動もんだ!
今までは一本の半田ごて、半田シュッ太郎、そして半田吸い取り銅網線などを使って、EBCの足の半田を一箇所ずつ除去して、悪戦苦闘しながら数分掛けて一つのトランジスタを外していた。
それが、ホットツィザーを使うと3秒くらいでトランジスタを抜き取れるぞ!
いや~、半田付けの素人こそFM-206のようなステーションタイプの半田付け装置を使うと良いと思う。
同じく、電解コンデンサの二本の足も、2.54ミリや5.08ミリピッチが多いので、ホットツィザーを使えば、二箇所の半田を同時に溶かす事が出来るので、一瞬にして抜き取れる。
いや~、すばらしいぞFM-206。
今までなら、半田吸い取り銅網線やシュッ太郎を使って半田を吸い取って、でも、スルーホールに残った半田がしぶとくくっ付いているのでコンデンサが中々抜き取れない。
コンデンサをクネクネしたり、何度も半田吸い取り網線を使ったり、その最中に、ウッカリ半田ごてで火傷したり、兎に角、半田付けした部品の除去ほど面倒な作業は無い。
それが、白光FM-206を使うとこんなに楽ちんなのか!と言うだけでもFM-206を買って良かったと思っている。
無事にパーツの除去が完了
さて、10分ほどで下写真に示すように、殆どの部品の除去に難なく成功した。
PICerFTをAVR専用に使うには、三つの抵抗と2CS1815一個だけの簡素な回路で可能だ。
あとは、下写真に示すように、一箇所の配線を変更した。
下写真のように裏側に引っ張ったケーブルが邪魔にならないようにマスキングテープを貼っておいた。
これで、PICerFTをAVRライター専用機に変更できた(はずだ)。
ちなみに、ワテが使っているのが、半田シュッ太郎NEO。知る人ぞ知る名品だ。
手動式吸い取りポンプに先端が筒状の半田ごてが合体した構造だ。ポンプを圧縮しておいて、半田除去したい箇所を先端の筒状コテ先で温める。半田が溶けた瞬間にポンプのボタンを押すとポンプが膨張して溶けた半田が吸い取られるのだ。
最近では類似品もある↴
本当は、下写真のような本格的な電動半田吸い取り機が有れば便利だが。
あるいは白光FM-206半田ステーションには、別売りでポンプ式の半田除去ツールもある。
ヤフオクで色んな不用品を売り払って小遣いが溜まったらこれを買うかな。
AVRライター専用機に改造したPICerFTを使ってみる
自分で組み立てた秋月USBシリアル変換モジュールキット[AE-UM232R]をDIP24ソケットに挿す。
そのUSBミニB端子(miniB)にUSBケーブルを挿してWindows10パソコンと接続した。
写真 左:ArduinoUNOと右:PICdrFT(AVRライター専用機)
FT232RL USBシリアル変換モジュールキット
[AE-UM232R]
通販コード K-06693
発売日 2013/05/14
メーカーカテゴリ 株式会社秋月電子通商
定番のFT232を使用したUSBシリアル変換モジュールのキットです。
FT232RL・USBコネクタ搭載済み
■通信速度:300bps~460kbps
■256バイト受信バッファ、128バイト送信バッファ内蔵
■電源はホストからUSBで供給されます。
■仮想COMポートによりCOMポートとして使用できます。
■RS232CではなくTTL(CMOS)レベルでの変換を行います。
RS232CレベルはK-01798(販売終了)です。
■4本のデジタルI/O
■USBミニB端子(miniB)
■基板サイズ:34x19mmセット内容
・基板(パーツ実装済)/細ピンヘッダ(C-04397)/ジャンパーピン/紙データ※この商品は組み立てキットです、完成品もあります⇒ K-01977。違いは、完成品であるほかに、ピンヘッダのタイプが通常タイプ(黒い部分の高さが2.5mm)になっています。
※USBケーブルは別売りです⇒ C-07606
引用元 https://akizukidenshi.com/catalog/g/gK-06693/
FT232RL USBシリアル変換モジュールキットのドライバーをインストール
以下の公式サイトからドライバーをダウンロードした。
Operating System | Windows |
Release Date | 2017–08-30 |
X86 (32-Bit) / X64 (64-Bit) | X64 (64-Bit) |
Version | 2.12.28 |
ダウンロードしたのは以下のファイル。
CDM v2.12.28 WHQL Certified.zip
このZIPを解凍しておいて、デバイスマネージャーを起動(下図)。
上図のように不明なUSBデバイスがあるので、ドライバーの更新を実行して先ほどのZIP解凍フォルダを指定した。
そうすると、ドライバーが更新された。
なお、ドライバーの更新は二回行った。
一回だけだと上図のUSB Serial Port左にある ❢マークが解消しなかったので、もう一回ドライバー更新したら無事に下画面に変った。
たぶん二種類のドライバーをインストールする必要があったのだろう。
いよいよPICerFTを使ってみる
PICerFT.exeなど一式を含んだZIPファイルを作者さんのサイトからダウンロードして入手した。
解凍したファイルは、当初は、パス名の長い深いサブフォルダに保管していたのだが、PICerFT.exeを実行すると下図のエラーが出る。
なんか良く分からんがファイルに関するエラーの感じ。
ワテの直感では、パス名が長いとかパスに日本語を含んでいるなどが原因のような気がしたので、以下のフォルダに移動した。
Dドライブ直下のフォルダだ。
D:\PICerFT7
ここからPICerFT.exeを実行したら無事に起動した。
でも何となく嫌な感じ。つまり長いパスや日本語パスだとエラーで動かないなんて言うプログラムは、完成度が高くない可能性もある(あくまで推測だが)。
Arduinoブートローダー書き込み済のATmega328Pを挿した
秋月で買ったArduinoブートローダー書き込み済のATmega328P(下写真)を挿してみた。
Arduino Bootloader書込済(5V 16MHz仕様) ATmega328P
発売日 2017/12/27
Arduino Bootloader(スケッチの書き込みに対応するための最小限のプログラム)を予めATmega328Pマイコンに書き込み済みとしたものです。 ATmega168/328マイコンボードキット(K-04590)などと使用すれば、Arduino互換機としてお使いいただけます。■主な仕様
・シリーズ:ATMEGA
・電源電圧:1.8~5.5V
・コア:megaAVR
・コアサイズ:8bit
・クロック:20MHz
・プログラムメモリ:32kB
・EEPROM:1kB
・RAM:2kB
・GPIO:23pin
・UART/USART:1Ch
・I2C:1Ch
・SPI:1Ch
・タイマ:3Ch
・オシレータ:外付
・パッケージ:DIP28
・ADC:6Ch
引用元 https://akizukidenshi.com/catalog/g/gI-12774/
Detect実行できた
まずはDetectボタンをクリックすると無事に検出できたようだ(下写真)。
Readでメモリの中身を読み取ってみる
次に、Readボタンをクリックして、メモリの中身を読み取ってみる。
その結果、一分ほど掛かって無事に成功したようだ。
読み取ったデータはPICerFT.exeの起動フォルダ(下図)にhexとtxtの二種類のファイル形式で保管されたようだ。
いちおう、エディタで開いてみたが、中身もちゃんとあるのでArduinoのブートローダーのReadには成功したのかな?
Checkと言うのも実行してみた
良く分からんが、Checkと言うボタンもクリックしてみた。
その結果、上図のようにブランクではありませんと出ているので、それはブートローダー書き込み済のAVRチップを挿しているので妥当なメッセージだ。
ここまではいい感じで動いている(ように思う)。
新品未使用のATmega328Pを挿して書き込み実験
では、書き込み(Write)の実験をしてみよう。
ここで、Arduinoブートローダー書き込み済のATmega328Pを外して、新品未使用ATmega328Pを挿した。
PICerFT.exeを一回終わって再実行した。
下図はDetectボタンをクリックした直後の画面。
でも実は新品未使用では無くて、このブログを書くために何度かPICerFTで読み書き実験したやつなのでデータが書き込んである。
Eraseを実行した
Eraseを実行するとデータが消えるのかな?たぶんそうだろう。
無事に消えたのかな。
Checkした
Checkを実行してみる。
エラーも無く、いい感じなのだ。
さて、先ほどブートローダー書き込み済のATmega328Pから読み取った拡張子.hexのデータを書き込んでみた。
書き込み方法は、PICerFTの公式サイトの説明では、hexファイルをドラッグアンドドロップすれば良いとの事だ。なので、以下のファイル
$PICer$.hex
をドラッグアンドドロップでPICerFTのウインドウにドロップしてみた。
そうするとWriteが始まった。
ところが、一分後くらいに下図のエラーで失敗。
確かWriteしたあとのVerifyの最後で上図が出たと思う。
なので、データの書き込みは実行されたようだが、Verifyで何かエラーを検出したようだ。
書き込みエラーしたがReadしてみる
そこで試しにReadしてみる。
まず、最初に出力していたブートローダー書き込み済のATmega328Pから読み取ったhexとtxtのファイルは上書きされないように別のフォルダに移動しておいた。
そしてReadを実行。
その結果、Readは成功して、hexとtxtの二つのファイルが出力された。
さて、ブートローダー書き込み済のATmega328Pから読み取ったhexデータと、それを書き込み途中でエラーしたATmega328Pから読み取ったhexデータとで何が違うのか調べてみた。
Notepad++に二つのhexファイルを読み込んでCompareを実行してみた(下図)。
図 Notepad++で開いたhex(左:ブートローダー書き込み済ATmega328Pから読み取ったhex、右:その書き込みでエラーしたATmega328Pから読み取ったhex)
ファイル比較した結果、一箇所で相違が有った。
上図の色表示されている行だ。
まあファイルの中身に相違があると言う事なので、書き込み後のVerifyでエラーした理由はこれだろう。
では、なぜ、両者が同じデータにならなかったのか?それが良く分からない。
以下の可能性が考えられる。
- 書き込み操作で何か問題があったのか?
- AVR専用ライターに改造したPICerFTにまだ欠陥があり不完全なのか?
- そもそもワテのやっている事が間違っているのか?
さてどうするか?
まとめ
ワレコ
PICerFTをAVR専用ライターに改造したが、今一つ良く分からんw
当記事では、AVRマイコンやPICマイコンのライターであるPICerFTの動作実験の過程を紹介した。
PICerFTの公式サイトで公開されている通りの回路図の通りにKiCadで設計して基板を製作(PCBWay)して貰ったのだが、ワテがKiCadに入力した回路図に入力ミスがあり、間違った基板が出来上がってしまった。
そこで、白光FM-206ソルダリングステーションを使って基板を改造して、PICライター機能は除去して、AVRライター専用機に改造した。PICerFT公式サイトにはPICerFTをPICライター専用機にする場合の回路図や基板レイアウト、AVRライター専用機にする場合の回路図や基板レイアウトも掲載されている。
そのAVR専用機の回路図や基板レイアウトを入念にチェックしてワテの基板を改造したので、ワテ自作PICerFT(AVR専用)は、正しく製作出来ているはずなのだが。
実際、Detect、Read、Check、Eraseなどの機能は動いている感じ(エラーは出ないので)。
一方、書き込み(Write)に関しては、ブートローダー書き込み済のATmega328Pから読み取ったhexデータを別のATmega328Pに書き込んでみたところ、書き込みは出来ているのだが、検証作業Verifyで書き込み内容に相違が見つかりエラーが出る。
そこで試しに、ネットで見付けた他のhexファイルなど適当に書き込んでみたら、エラーなく書き込める場合もある。
と言う事で、良く分からん。
そもそもワテが何か根本的な初歩的な間違いを犯しているのかも知れない。
まあ、AVRマイコンを始めるに当たり、一個人の人が作ったPICerFTと言うのを作ったのは間違いだったのかな。
つまり、PICerFTと言うのは有名なライターのようで、製作して使っている人も多いようだ。だから正しく作れば正しく動くだろう。
ワテの場合は、AVR初心者なので、PICerFTの製作ミス、PICerFTの操作ミスなど、色んな可能性が入り込む。
そう言う点では、やはり、メーカー純正のライターやデバッガーを使う方が良かった。なぜなら、それらの純正品を使う限りは、書き込み装置側に問題がある可能性は排除できる。
あとはワテがそれらの純正ライターの操作を正しく行えば、正しい結果が得られる訳だから…
純正ライターを買うかな。
(続く)
コメント