FC2ブログ

名張市つつじが丘おもちゃ病院

三重県名張市つつじが丘でおもちゃの病院を開院しています。年中無休で修理は無料、部品代のみ実費です。おもちゃの修理依頼は tutuji@cb4.so-net.ne.jp へメールにてご連絡下さい。なお、宅配便での受け付けは行っておりません。このブログにはおもちゃ等の修理事例やツール製作などを載せていきます。故障診断や修理方法の改善等、ご意見をお寄せ下さい。

PICプログラマーでW25Q16の読み込み不具合の対策(続報)

PICプログラマー
プログラマー外観

【その後の調査状況】
PICプログラマーでSPIフラッシュのW25Q16の読み込みがデタラメになるトラブル」を対策したのだが、対策を思い付くヒントは 「フラッシュライターでは発生しない」 ことだった。 フラッシュROMライター ではターゲットへのVcc供給を制御マイコンのポートから直接行っているので、そのためトラブルが発生しない、と思っていた。PICプログラマーの旧版はターゲットへのVcc供給に関してはフラッシュROMライターと同じであるので、PICプログラマーの旧版でもトラブルは発生しないと思っていた。しかし、実際に動作確認すると、PICプログラマーの旧版でもトラブルが再現した。

フラッシュROMライターは1台しか作っていないし、PICプログラマーの旧版も手持ちは3台しかない。そのうちPICプログラマーの旧版の2台でトラブルが再現した。この結果から、再現しないのは顕在化していないだけだと認識し、フラッシュROMライターでもPICプログラマーと同様の対策をすることにした。なお、PICプログラマーはソケットアダプタ側で対策を行っているので、PICプログラマーは新版と旧版の両方で対策済みとなっている。

【対策】
フラッシュROMライターの対策後の回路図と配線図

シリアルフラッシュROMライターの製作回路図1

シリアルフラッシュROMライターの製作回路図2改
シリアルフラッシュROMライターの製作配線図改

・なお、本件に関してファームウェアとPC側の制御ソフトの改訂はない。


【ダウンロード】
PICプログラマーとフラッシュROMライターの設計資料と開発プロジェクトは ここから ダウンロードできる。
スポンサーサイト
  1. 2019/07/05(金) 09:29:45|
  2. プログラマー
  3. | コメント:0

PICプログラマーでW25Q16の読み込み不具合の対策

PICプログラマー
プログラマー外観

PICプログラマーでSPIフラッシュのW25Q16の読み込みがデタラメになるトラブルが発生していたのだが、対策したので改善版の公開を案内する。


【不具合の発生状況】
・PICプログラマーでW25Q16を読み込むと、読み込み結果がデタラメになっている。

・書き込みは正しく行われるが、書込み後の照合でエラーを検出し、処理結果としては「書込み失敗」となる。

フラッシュROMライターでは不具合は発生しない。

・W25Q64では不具合は発生しない。


【原因の調査】
・SPIの信号を観測して、原因箇所がPICプログラマー側なのか、W25Q16側なのかを切り分ける。

Readコマンド送信部分
PICプログラマーでW25Q16の読み込み不具合の改修(SPI信号波形1)
読み込みコマンド(0x03)が正しく送信されている。信号レベルとタイミングはW25Q16の要求条件を満たしている。

続けてアドレスを送信するまで
PICプログラマーでW25Q16の読み込み不具合の改修(SPI信号波形2)
24ビットアドレス(0x000000)も正しく送信されている。

読み込みデータの受信開始部分
PICプログラマーでW25Q16の読み込み不具合の改修(SPI信号波形3)
データ受信の動作開始まで時間を要しているが、W25Q16のタイミング要件はDCからとなっているので、極端に言えば1年後でも構わない。

受信の後続部分
PICプログラマーでW25Q16の読み込み不具合の改修(SPI信号波形4)
データ読み込みの途中で DO がHに張り付いている。


・DOがHに張り付く前から読み込みデータは壊れ始めていて、その壊れ方を調べた。

読み込み結果(HEXファイル)は
(正解) :10004000638395666CAA617D837F885D9E745F9FE4
(誤読) :10004000638395666CAA617D837F885B3CE8BF3ED5

誤読している部分をビット展開すると
(正解)5D9Eの部分 0101110110011110
(誤読)5B3Cの部分 0101101100111100

先頭から4~6ビット目の部分でビットずれが生じている。波形観測の結果では CLK は正しく出ているので、W25Q16が1ビット飛ばして送ってきているように見える。


【不具合の発生原因】
・不明。ホントに不明なので、是非、有識者の見解をいただきたい。

・W25Q16と同じインタフェースであるW25Q64は正しく動作していることと、前述の【原因の調査】の結果から、W25Q16の誤動作としか思えない。しかし、PIC電子オルゴールでW25Q16を使っているが、このトラブルは発生していないので、PICプログラマーに固有の問題があるのかも知れない。

・フラッシュROMライターでは発生せずPICプログラマーでのみ発生することから、両者の差異に着目して切り分けを進めた。

・ファームウェアのSPIフラッシュに関する部分はソースコードレベルで全く同じである。

・ハードウェアは、ターゲットへのVcc供給の仕掛けが違う。フラッシュROMライターでは制御マイコン(16F1454)のポートから直接W25Q16のVccピンへ電源を供給している。PICプログラマーではターゲットへの電源供給はFETのSWで行っている。

・Vccの供給条件にトラブル発生の要因があるのでは、と思って、PICプログラマーからVcc供給をしないようにして、外部の電源器からVccを供給して、Vcc電圧を増減させて振る舞いを観察した。その結果、PICプログラマーの電源電圧よりもターゲットのVcc電圧を低くすると読み込み動作が正常になることが判った。フツウはSPI信号のHレベルがVccを超えることは宜しくないと思うのだが、現実にはそのような設定をしないと正常動作しない。

・W25Q16のVccをPICのVccより若干下げれば不具合事象を避けられるのではないかと思われる。

・しかし、PIC電子オルゴールでは、W25Q16へのVccはPICのVddと共通に給電しているにも拘らず正常に動作している。


【対策】
・PICプログラマーからのVcc供給の経路にショットキーダイオードを噛ませて、ターゲットのVccを若干下げる。

・W25Q16に対する個別対応と考えて、ソケットアダプタで対応する。

対策後のソケットアダプタの回路
PICプログラマーでW25Q16の読み込み不具合の改修(W25Q16ソケットアダプタ回路)

・なお、本件に関してファームウェアとPC側の制御ソフトの改訂はない。


【ダウンロード】
PICプログラマーとフラッシュROMライターの設計資料と開発プロジェクトは ここから ダウンロードできる。
  1. 2019/07/04(木) 16:57:37|
  2. プログラマー
  3. | コメント:0

断線チェッカーの製作

(新潟)おもちゃ病院 新津様から、「断線チェッカー」のファームウェアの開発依頼があった。

「断線チェッカー」とは、おもちゃパソコンのマウスコードや有線リモコンで使われている多芯コードが断線しているときに、その断線箇所を特定するツールとのこと。それをタッチセンスでやる発想だ。

【設計】
タッチセンサーにタッチパッドとして多芯コードの1本の芯線を繋ぐということで、フツウのタッチセンスのファームウェアでよい。

タッチSWの場合はオン/オフの認識ができればよいのでセンスの精度は大雑把でよいのだが、断線チェッカーでは微妙なタッチ度合いを把握する必要があるので、CPSを使ってキチンとセンスしないといけない。また、参照電圧と電流レンジを設定して、タッチセンスの感度を稼ぐ必要がある。

CPSのカウンタにはTMR1を充てて、カウント値が16ビットに収まり、最大になるように、実機でモニタしながら最適な設定をカット&トライで決めた。その結果はソースコードを参照。

CPSのカウント結果をPWM周期に反映し、音程の高低でタッチセンスの状況を表示する。その音の微妙な変化を聴いて、人が断線箇所を特定する。実際の運用方法は 【デモ動画】 を参照。

依頼元からLEDへの表示も要望されたので、10エレメントのバーLEDへの表示機能も付けた。LED表示が必要無ければ12F1822、必要なら16F1823を使う。それぞれのタイプのファームウェアを用意した。

こういったツールは電源を切り忘れることが多いので、5分で電源が切れるようにオートパワーオフの機能も付けた。それで、電源SWは不要だ。FタイプのPICでは、Sleep時の消費電流は24uAとなった。LFタイプにすると1uA以下になるハズだ。オートパワーオフの動作は以下の通り。

・Vddの印加ですぐにSleepする。
・SW押下で稼働開始する。
・5分間稼働すると、Sleepする。
・稼働中にSWを押下すると、オートパワーオフの時限がクリアされ、その時点から5分間稼働する。
・稼働中にSWを長押し(1秒)すると、すぐにSleepする。

バーLEDを付けないタイプは稼働中かどうか解り辛いので、稼働中はパイロットランプを点灯するようにした。

【回路図】
LED表示無し(12F1822)
断線チェッカー回路図1822

LED表示有り(16F1823)
断線チェッカー回路図1823

CPSのポートに挿入している1kΩは、ポートの保護用である。実験では、10kΩでタッチセンスの感度に影響が出た。

【実装】
LED表示無し(12F1822)
断線チェッカー1822

LED表示有り(16F1823)
断線チェッカー1823
断線チェッカーLED

被試験コードへの接続
断線チェッカークリップ
断線している芯線にCPSに割り当てたポートを繋ぐ。その他の芯線は開放のままでよい。
ノイズを拾って誤動作するのを防止するために、GNDラインを手で持つ(人をGNDレベルにする)とよい。

【デモ動画】


【ダウンロード】
設計資料と開発プロジェクトは ここから ダウンロードできる。

【感想】
断線チェッカーの構想は古くからあって、数々の製作例がある。しかし、断線検出部分をIC(マイコン)1個だけで構成しているものは今まで見たことが無い。時代の流れとともに、同じ要件でも実現方法が大きく変わってきている。おもちゃの修理も同じだな。

見えないところの断線箇所を当てる仕掛けは面白いのだが、修理としては新しいコードに交換するので、断線箇所が判ったとしても益は無い。まぁ、よもやま話のネタにでもなればいいかな。
  1. 2019/05/27(月) 11:16:43|
  2. その他のツール
  3. | コメント:2

PICプログラマーの機能改善(ハードウェアエラーの表示)

PICプログラマー
プログラマー外観

フラッシュライター
シリアルフラッシュROMライターの製作外観説明

【前振り】
I2Cフラッシュへのアクセスで、SCL・SDAの操作で異常があったときは、単に「アクセスエラー」が表示されるだけで、エラーの詳細内容が表示されなかった。プログラマーの内部ではエラーが発生したタイミングを押さえているのだが、それをPC側へ通知していなかった。そこで、詳細なエラーコードをPC側へ伝えて、ISP.EXE及びEEPROM.EXEの画面に表示するように改善した。

ハードウェアの動作不良の場合は信号波形を観測しないと原因の切り分けは難しいが、どのタイミングで異常を検知したかの情報があると切り分け作業が楽になる。

【表示画面】
I2Cアクセスでハードエラーを検知したときの表示画面で、ログ表示エリア(一番下)にエラーコードが表示される。
PICプログラマー操作画面(ハードエラー表示)
例えば、エラーコード15はSDAがHにならないとき、18はアクノリッジが返らないとき。その他のエラーコードはソースコードを参照。

【ダウンロード】
設計資料と開発プロジェクトは ここから ダウンロードできる。

PICプログラマーとフラッシュライターのファームウェアとPC側の制御ソフトを入れ替える必要がある。
  1. 2019/05/08(水) 08:51:40|
  2. プログラマー
  3. | コメント:0

PICプログラマーで ATtiny85の高電圧シリアルプログラミング をサポート

プログラマー外観

【前振り】
おもちゃの修理で壊れたICの代替品として使うのは殆どがPICなのだが、PIC以外ではATtiny13Aだけはコストパフォーマンスがよいので採用することがある。しかし、ATtiny13Aはプログラムフラッシュが512ワードしか無く、デバグ行を入れるとパンクしてしまい、デバグがやり難い。そこで、デバグは兄貴分のATtiny85で実施しようと考えている。それをやるには、先ずATtiny85の高電圧シリアルプログラミングをサポートする必要がある。

この記事のタイトルは「PICプログラマー・・・」となっているが、このプログラマーはPICを中心として、AVRやシリアルEEPROMなど、僕が使いたいデバイスをサポートしている。

【改造の要点】
ATtiny85とATtiny13Aのプログラミング仕様を比較すると、プログラムフラッシュの読み書きとチップ消去のコマンドシーケンスは同じだ。

ATtiny85はEEPROMが512バイトあるので、読み書きするアドレスの設定が9ビットになり、コマンドシーケンスにアドレス上位を設定する必要がある。また、書き込みのコマンドシーケンスには、アドレス上位を示す1バイトを追加する必要がある。

EEPROMの読み込みは、既存のATtiny13Aのソースコードに手入れして、ATtiny13AとATtiny85の両者で共通のものにする。

EEPROMの書き込みは、既存のATtiny13Aのソースコードをベースに、ATtiny85用を新規に作る。

ATtiny85とATtiny13Aのピン接は同じなので、ソケットアダプタは、ATtiny13A用のものを共用できる。

なお、低電圧シリアルプログラミングは使う事が無いので、サポートしない。

【ダウンロード】
改造後のPICプログラマーの設計資料とプログラマー制御マイコンのファームウェアの開発プロジェクト、PC側の制御ソフトの開発プロジェクトは ここから ダウンロードできる。

なお、今回の改造はPC側の制御ソフトのみなので、 ディレクトリ ISP¥ISP¥bin 配下の ISP.exe と ISPdll.dll のみの入れ替えとなる。

【使い方】
デバイス一覧の中から 「tiny85-HV」 を選択する。HVのキーワードが高電圧シリアルプログラミングを表している。

実行機能は 「読込み」 「書込み」 「チップ消去」 「RUN」 が使える。
  1. 2019/04/26(金) 17:55:01|
  2. プログラマー
  3. | コメント:0

PICプログラマーのバグ改修(COM10以上のとき)

PICプログラマーのバグ改修版のリリース案内です。

【バグ内容】
PC側のCOMポートが 「COM10」 以上のときにポートが開けない。
Windowsのお作法で、COM10以上のデバイス名の頭に 「¥¥.¥」 を付けるのを忘れていた。

【影響範囲】
PC側の制御ソフトの 「ISP」 と 「EEPROM」 の両方に影響する。

【ダウンロード】
修正版を含む開発プロジェクトの一式は ここから ダウンロードできる。

今回の更新ファイルは、 ISP\ISP\bin\ISPdll.dll と ISP\EEPROM\bin\ISPdll.dll。両者の内容は同じ。
  1. 2019/03/05(火) 14:12:29|
  2. プログラマー
  3. | コメント:0

PICプログラマーのバグ改修(AVRでEEPの読み込みができない)

PICプログラマーとフラッシュライターで、 「不用意に読み込みを行って既存のHEXファイルを上書きしてしまうのを防止する」 改善を行ったのだが、そのときに 「AVRのEEPが読み込めない」 というバグが混入してしまった。

そのときの改善方法は、読み込みファイル名を $.hex に固定する と言うことだった。しかし、AVRの 「読込み」 では、ファイル名の拡張子が eep ならEEPの読み込みと判断していたので、改善の結果、EEPからの読み込みが指示できなくなってしまっていた。

そこで、EEPの読み込みを指示するチェックボックスを設けて、それがチェックされていれば、読み込みファイル名を $.eep に固定することにした。

修正版は ここから ダウンロードできる。
入れ替えは PC側の制御ソフトの 「ISP」 だけでよい。フラッシュライターの 「EEPROM」 はAVRを対象としないので変更は無い。
  1. 2019/02/03(日) 09:11:44|
  2. プログラマー
  3. | コメント:0

PICプログラマーの機能改善(AT24Cxxxのサポート、他)

この記事の話題は下記の3項目だ。

・AT24Cxxxをサポートしたこと
・読み込み時のHEXファイル名を $.hex に固定したこと
・「シリアル通信エラー(タイムアウト)」の対策をしたこと

PICプログラマー
プログラマー外観

フラッシュライター
シリアルフラッシュROMライターの製作外観説明

【前振り】
I2Cシリアルフラッシュは今まで秋月から調達していたのだが、AliExpressに廉価に出ているを見付けた。AliExpressはいつも見ているのだが、今頃気が付いた。

256kビットは、秋月では24FC256が@90円、AliExpressではAT24C256Nが@18円くらい。
512kビットは、秋月では24FC512が@140円、AliExpressではAT24C512Cが@44円くらい。
AliExpressのATはSOP8だが、ピッチ変換基板のコストを加味してもATの方が断然安い。

早速注文して届いたので、PICプログラマーで読み書きをやってみたら、 「アドレス設定エラー」 となってしまう。24FCxxxとAT24Cxxxは読み書きのインタフェースが違うらしい。

と言うことで、PICプログラマーでAT24Cxxxをサポートした。今更ながらって感じだ。

【設計】
AT24Cxxxは24FCxxxと同じ手順で読み書きできると思っていた。実際、ミミクリ換装基板ではAT24C256に差し替えても動作している。なのに、PICプログラマーでデバイスを24FC256に設定しても、「アドレス設定エラー」 になる。

24FC1025はA2ピンをVccに繋ぐことを要求している。それで、ソケットアダプタを共用するために24FCxxxの読み書きでは、一律にA2ピンはHとし、PICプログラマーでは制御バイトはA2ビット=1で読み書きを行っていた。
ところが、AT24C1024ではA2ピンに相当するピン3はNCで、読み書きの制御バイトはA2=0を要求している。
つまり、ソケットアダプタの共用とプログラマーの読み書き手順の共用は両立し得ないのだ。
それで、ソケットアダプタを共用することを優先して、プログラマーの読み書き手順をAT24Cxxx用に別に設けることにした。

改造のやり方は、24FCxxx用のソースコードをコピペして、制御バイトを変更するだけでよい。


【おまけ】
PC側の制御ソフトのISPとEEPROMでは、デバイスからの 「読込み」 の結果は 「HEXファイル名」 のテキストボックスで指定されたファイルに書き出している。不用意に 「読込み」 を実行してしまって既存のHEXファイルを壊してしまうことが度々あった。それで、 「読込み」 では書き出すファイルをカレントディレクトリの $.hex に固定することにした。この改善(?)もダウンロードファイルに反映した。

もう1点、ついでに反映したことがある。
PICプログラマー(及びフラッシュライター)を接続して最初に使うときに、 「シリアル通信エラー(タイムアウト)」 のエラーが出ることがある。この原因は判明していないのだが、再度 「実行」 すると正常動作することと、デバグ情報の取得ではトラブル発生時は最初の1バイトがPICプログラマーへ届いていないことが判っている。USBに絡む事象のようで、これ以上の分析は僕には難しい。そのため、対症療法として、プログラマー機能の実行前にダミーデータを送信することにした。ダミーデータは届いても届かなくても動作に影響の出ないデータにした。

この改善は、ファームウェアとPC側制御ソフトの両方の手入れとなったので、入れ替えは同時に実施する必要がある。


【ダウンロード】
設計資料と開発プロジェクトは ここから ダウンロードできる。

前述したとおり、PICプログラマーとフラッシュライターのファームウェアとPC側の制御ソフトを同時に入れ替える必要がある。
  1. 2019/01/20(日) 18:22:24|
  2. プログラマー
  3. | コメント:0

シリアルフラッシュROMライター(差し替えファイル)

シリアルフラッシュROMライターの製作外観説明

【ファイルの差し替え】
PICプログラマーのバグ改修(16F88のプログラム不良) でPICプログラマーの入れ替えファイルをリリースした。

PICプログラマーから派生した シリアルフラッシュライター はPICプログラマーとファイルを共用しているので、必然的にシリアルフラッシュライターもファイルが更新されている。

現行のシリアルフラッシュライターは動作上の問題は無く、差し替えは必須では無いが、僕の都合でファイルを別管理したくないので最新版を公開する。(現行版は削除されている)


【ダウンロード】
詳細な製作資料とファームおよびPC側制御ソフトの開発プロジェクトは ここから ダウンロードできる。

PC側の制御ソフトはGUIとプログラマー制御の2つから成る。
①GUIを担うVBプロジェクト資材は「EEPROM」、実行ファイルは「EEPROM\bin\EEPROM.exe」
カレントディレクトリを 「EEPROM\bin」 に置いて起動すればよい。

②プログラマー制御を担うVCプロジェクト資材は「ISPdll」、DLLファイルは「ISPdll\Release\ISPdll.dll」

プログラマー側の制御ソフトは
③16F1454のファームウェアでMPLABXプロジェクトは 「ISPpic16F1454\apps\usb\device\cdc_basic\firmware\ISPpic16F1454.X」
USBドライバー組み込みに必要な inf と cat は 「ISPpic16F1454\Windows」 にある。


なお、今回の改修は上記の①から③のすべてが更新されているので、同時に差し替える必要がある。
  1. 2018/11/06(火) 15:51:08|
  2. プログラマー
  3. | コメント:0

PICプログラマーのバグ改修(16F88のプログラム不良)

プログラマー外観

【経緯】
いつの間にやらPICプログラマーで16F88のプログラムができなくなっていた。読み込みデータがオール0になるので、プログラミングモードに移行できていないようだ。

最近使っているデバイスでは問題は出ていないので、手持ちの古いデバイスで動作確認してみたところ、16F88のみで発生した。16F88は既に陳腐化していて久しく触っていないが、その昔には使っていてプログラムの実績はある。PICプログラマーの度重なる手入れの過程でデグレしてしまったようだ。

あらためて16F88のプログラミング仕様を確認すると、「VddオンからVppオンまでの時間が250us以内であること」が強調されている。

PICプログラマーはターゲット基板に装着された状態でのプログラムを可能にしていて、ターゲットに大容量の電源パスコンが設置されていることを想定して、その充電時間としてVddオンからVppオンまでの間を100ms空けている。この時間を10usに短縮してみたら正常にプログラムできるようになった。

原因は明らかになったが、ターゲットへのVdd供給機能はデバグ作業では使い便利なので、この機能を廃止する訳には行かない。そこで16F88についてはターゲット基板に装着された状態でのプログラムは諦めて、PICプログラマー上のソケットに挿して行うことにして、VddオンからVppオンまでの待ち時間を操作画面で変更できるようにした。

Vpp先行の手順では行けるかと試してみたが、16F88はVpp先行では動かない。プログラミング仕様書にはVdd先行の手順しか示されていない。なので、VddオンからVppオンまでの時間を短くするしか手立てが無い。


【考察】
ターゲットの電源パスコンの容量が10uFとすると、250us以内にVddが2.5Vまで立ち上がるためには100mAの充電電流が必要になる。

I=CV/t=10uFx2.5V/250us=100mA

PICkit3のVdd供給能力は高々30mAとされていてアウトだ。

僕のPICプログラマーでは100mAのVdd供給は可能だが、ターゲット基板の電源パスコンが10uFを超える場合はプログラミング仕様を守れない。

電源も信号線もターゲットの周辺回路から切り離すのなら、ICSPという言い方は詭弁だと思う。


【改修後】
PICプログラマーの操作画面
PICプログラマー操作画面
「Vddスロー」のチェックボックスがチェックされていると、今までと同様にターゲット基板の電源立ち上がりを100ms待ってからVppをオンする。デフォルトはチェックされている。チェックを外すと電源立ち上がり時間を待たずにVddオン後すぐにVppをオンする。

ターゲットに大きな電源パスコンが設置されている状態で、「Vddスロー」のチェックを外してプログラムを実行すると、過渡的な充電電流によってPICプログラマー側のVddが瞬低して制御用PICがBORする可能性がある。


【ダウンロード】
PICプログラマーの設計資料とソフトウェアは ここから ダウンロードできる。

PC側の制御ソフトはGUIとプログラマー制御の2つから成る。
①GUIを担うVBプロジェクトは「ISP\ISP\ISP.sln」、実行ファイルは「ISP\ISP\bin\ISP.exe」

②プログラマー制御を担うVCプロジェクトは「ISP\ISPdll\ISPdll\ISPdll.sln」、DLLファイルは「ISP\ISPdll\Release\ISPdll.dll」

プログラマー側の制御ソフトは
③18F14K50のファームウェアのディレクトリは「ISPpic18F14K50」、プロジェクトは「ISP\ISPpic18F14k50\apps\usb\device\cdc_basic\firmware\ISPpic18F14K50.X」、HEXファイルは「ISP\ISPpic18F14k50\apps\usb\device\cdc_basic\firmware\ISPpic18F14K50.X\dist\LPCUSBDK_18F14K50\production\ISPpic18F14K50.X.production.hex」

④16F1459のファームウェアのディレクトリは「ISPpic16F1459」、プロジェクトは「ISP\ISPpic16F1459\apps\usb\device\cdc_basic\firmware\ISPpic16F1459.X」、HEXファイルは「ISP\ISPpic16F1459\apps\usb\device\cdc_basic\firmware\ISPpic16F1459.X\dist\LPCUSBDK_16F1459\production\ISPpic16F1459.X.production.hex」

⑤16F1454のファームウェアのディレクトリは「ISPpic16F1454」、プロジェクトは「ISP\ISPpic16F1454\apps\usb\device\cdc_basic\firmware\ISPpic16F1454.X」、HEXファイルは「ISP\ISPpic16F1454\apps\usb\device\cdc_basic\firmware\ISPpic16F1454.X\dist\LPCUSBDK_16F1459\production\ISPpic16F1454.X.production.hex」

今回のバージョンアップは上記の①と②が更新されているので、PC側の制御ソフトだけを差し替えればよい。

PC側の制御ソフトは、OSへのインストールは必要なく、任意の1つのフォルダにISP.exeとISPdll.dllをコピーするだけで良い。
VisualStudio2008のランタイムが無いと言われたら、ビルゲイツの指示に従って別途インストールする。

PICプログラマーを始めて導入するときはUSBドライバーの登録が必要である。USBドライバー本体はWindows標準のものを使用する。infファイルとcatファイルは「PICプログラマー\ISP\ISPpic18F14k50\Windows」、「PICプログラマー\ISP\ISPpic16F1459\Windows」、「PICプログラマー\ISP\ISPpic16F1454\Windows」にある。

ハードウェアの設計書は「USB接続簡易共用プログラマー設計・回路図・配線図.xls」。
各デバイス毎のソケットアダプタ結線は、シート名「ソケット・・・」を参照。


なお、今回の改修は上記の①から⑤のすべてが更新されているので、同時に差し替える必要がある。


【後日談】
実は、本件は勘違いであったことが後日判明した。

16F88が読み書きできなかったのはプロテクトが掛かっていたからのようだ。読み込み結果のCONFIG領域は正しく読めていたことが後で判った。

Vddオン後に10msの時間を置いてVppオンしても、16F88はプログラミングモードに入ることが実験で確認できた。

結果としては今回の修正は必要では無かったが、プログラミング仕様を順守するということで。。。
  1. 2018/11/06(火) 15:31:19|
  2. プログラマー
  3. | コメント:0

シリアルフラッシュROM(24/25)ライターの製作

先日は PICプログラマーで大容量SPIフラッシュをサポート したが、PICプログラマーから派生した I2CインタフェースEEPROM(24シリーズ)ライター でも大容量SPIフラッシュをサポートした。これで 「シリアルフラッシュROM(24/25)ライター」となった。


【外観】
シリアルフラッシュROMライターの製作外観説明


【回路図】

シリアルフラッシュROMライターの製作回路図1
シリアルフラッシュROMライターの製作回路図2


【配線図】
シリアルフラッシュROMライターの製作配線図


【操作】

シリアルフラッシュROMライターの製作画面

各リストボックスで該当するアイテムを選択して、「実行」をクリックすると読み書きが行われる。

メモリの容量をフルに読み書きすると長時間を要するので、実使用量に合わせて相当するW25Qxxの設定で読み書きを実行すれば時間短縮になる。


【設計】
・ポートの遣り繰り
①I2Cの信号線SCLとSDAをSPIのSCKとMOSIに兼用させる。
②SPIのMISOとSSは新たにポートを割り当てる。
③前作では空きポートを束ねてターゲットの電源供給に充てていたので、それから1本を剥ぎ取りSSに充てる。
④MISOにはMCLRを充てる。

・SPIの実装
①ISPのファームウェア「ISPpic16F1459」からソフトSPIの部分を移植する。
②SPIに割り当てたポートの初期設定は「CS(SS)をH」の実行機能と同時に実施することで、I2Cとの競合を避ける。

・ターゲットはPICプログラマーと同じとする。
①SPIフラッシュ
25AA320A
25AA640A
25AA128
25AA256
25AA512
25AA1024
SST25xx020
SST25xx040
SST25xx080
SST26xx016
SST26xx032
SST26xx064
W25Q16
W25Q32
W25Q64
W25Q128

②I2Cフラッシュ
24FC32A
24FC64
24FC128
24FC256
24FC512
24FC1025
24FC1026
AT24C1024B
CAT24M01
S-24CM01C


【ダウンロード】
詳細な製作資料とファームおよびPC側制御ソフトの開発プロジェクトは ここから ダウンロードできる。

PC側の制御ソフトはGUIとプログラマー制御の2つから成る。
①GUIを担うVBプロジェクト資材は「EEPROM」、実行ファイルは「EEPROM\bin\EEPROM.exe」
カレントディレクトリを 「EEPROM\bin」 に置いて起動すればよい。

②プログラマー制御を担うVCプロジェクト資材は「ISPdll」、DLLファイルは「ISPdll\Release\ISPdll.dll」

プログラマー側の制御ソフトは
③16F1454のファームウェアでMPLABXプロジェクトは 「ISPpic16F1454\apps\usb\device\cdc_basic\firmware\ISPpic16F1454.X」
USBドライバー組み込みに必要な inf と cat は 「ISPpic16F1454\Windows」 にある。
  1. 2018/10/04(木) 18:49:55|
  2. プログラマー
  3. | コメント:0

PICプログラマーの機能改善(大容量SPIフラッシュのサポート)

【前振り】
先日 PIC電子オルゴールVer5_7で大容量SPIフラッシュメモリ(W25Q64)をサポート したのだが、その機能を利用するには大容量SPIフラッシュメモリに音声データを書き込む手段が必要になる。24/25系ライターのCH341Aが安価(2018年10月AliExpressで$2以下)に出回っているのでそれを買えばいいのだが、それでは「製作の自己完結」が損なわれる。僕はこの考えを重視していて、USB接続のPICプログラマーの製作にあたり、その制御マイコンを書込みための鶏プラグラムの製作から始めている。
それで、今回もPICプログラマーで大容量SPIフラッシュの書き込みをサポートした。


【設計】
対象デバイスは、SST25xx、SST26xxなどの信号線や命令コード、処理シーケンスが25系の標準のものとする。
おもちゃ修理に利用可能な低価格で入手出来るW25Qxxは外せない。

おもちゃ修理が使用目的なので、書き込みプロテクトは一切サポートしない。

標準インタフェースのSPIフラッシュメモリは従来からサポートしているので、今回の機能改善はデバイステーブルの新規作成とチップ消去機能の追加だ。


【使い方】

プログラマー操作画面

各リストボックスで該当するアイテムを選択して、「実行」をクリックすると読み書きが行われる。

メモリの容量をフルに読み書きすると長時間を要するので、実使用量に合わせて相当するW25Qxxの設定で読み書きを実行すれば時間短縮になる。


【ダウンロード】
PICプログラマーの設計資料とソフトウェアは ここから ダウンロードできる。

PC側の制御ソフトはGUIとプログラマー制御の2つから成る。
①GUIを担うVBプロジェクトは「ISP\ISP\ISP.sln」、実行ファイルは「ISP\ISP\bin\ISP.exe」

②プログラマー制御を担うVCプロジェクトは「ISP\ISPdll\ISPdll\ISPdll.sln」、DLLファイルは「ISP\ISPdll\Release\ISPdll.dll」

プログラマー側の制御ソフトは
③18F14K50のファームウェアのディレクトリは「ISPpic18F14K50」、プロジェクトは「ISP\ISPpic18F14k50\apps\usb\device\cdc_basic\firmware\ISPpic18F14K50.X」、HEXファイルは「ISP\ISPpic18F14k50\apps\usb\device\cdc_basic\firmware\ISPpic18F14K50.X\dist\LPCUSBDK_18F14K50\production\ISPpic18F14K50.X.production.hex」

④16F1459のファームウェアのディレクトリは「ISPpic16F1459」、プロジェクトは「ISP\ISPpic16F1459\apps\usb\device\cdc_basic\firmware\ISPpic16F1459.X」、HEXファイルは「ISP\ISPpic16F1459\apps\usb\device\cdc_basic\firmware\ISPpic16F1459.X\dist\LPCUSBDK_16F1459\production\ISPpic16F1459.X.production.hex」

⑤16F1454のファームウェアのディレクトリは「ISPpic16F1454」、プロジェクトは「ISP\ISPpic16F1454\apps\usb\device\cdc_basic\firmware\ISPpic16F1454.X」、HEXファイルは「ISP\ISPpic16F1454\apps\usb\device\cdc_basic\firmware\ISPpic16F1454.X\dist\LPCUSBDK_16F1459\production\ISPpic16F1454.X.production.hex」

今回のバージョンアップは上記の①と②が更新されているので、PC側の制御ソフトだけを差し替えればよい。

PC側の制御ソフトは、OSへのインストールは必要なく、任意の1つのフォルダにISP.exeとISPdll.dllをコピーするだけで良い。
VisualStudio2008のランタイムが無いと言われたら、ビルゲイツの指示に従って別途インストールする。

PICプログラマーを始めて導入するときはUSBドライバーの登録が必要である。USBドライバー本体はWindows標準のものを使用する。infファイルとcatファイルは「PICプログラマー\ISP\ISPpic18F14k50\Windows」、「PICプログラマー\ISP\ISPpic16F1459\Windows」、「PICプログラマー\ISP\ISPpic16F1454\Windows」にある。

ハードウェアの設計書は「USB接続簡易共用プログラマー設計・回路図・配線図.xls」。
各デバイス毎のソケットアダプタ結線は、シート名「ソケット・・・」を参照。
  1. 2018/10/03(水) 20:50:07|
  2. プログラマー
  3. | コメント:0

PICプログラマーの機能改善(EEPROMの速度向上)

PICプログラマー
プログラマー外観
PICプログラマーと呼んでいるが、シリアルEEPROMやAVRもサポートしている。
当初の製作記事は ここ
その後の改善記事は、「PICプログラマー」 でブログ内を検索。


【改善事項】
シリアルEEPROMの読み書き速度を向上した。

1Mビットの24FC1025のフル書き込み/照合が改善前の41秒から、改善後は22秒に短縮された。読み込みは9秒で終わる。

【改善内容】
アクセス速度の遅いデバイスを考慮してSCLとSDAの信号タイミングを遅めに設計していたが、遅いものを今まで使うことがなかったので、400kbps以上のデバイスに合わせた。

PC側の制御ソフトで信号線の「セットアップタイム」の設定を可能としていたが、これも廃止した。

信号の速度が速くなったので、I2Cのプルアップ抵抗を3.3kΩに変更した。

【ダウンロード】
PICプログラマーの設計資料とソフトウェアは ここから ダウンロードできる。

PC側の制御ソフトはGUIとプログラマー制御の2つから成る。
①GUIを担うVBプロジェクトは「ISP」、実行ファイルは「ISP\bin\ISP.exe」

②プログラマー制御を担うVCプロジェクトは「ISPdll」、実行ファイルは「ISPdll\Release\ISPdll.dll」

プログラマー側の制御ソフトは制御用マイコンの型番により3種がある。
③18F14K50
ディレクトリは 「ISPpic18F14K50」
MPLABXプロジェクトは 「ISPpic18F14k50\apps\usb\device\cdc_basic\firmware\ISPpic18F14K50.X」
HEXファイルは 「ISPpic18F14k50\apps\usb\device\cdc_basic\firmware\ISPpic18F14K50.X\dist\LPCUSBDK_18F14K50\production\ISPpic18F14K50.X.production.hex」
USBドライバー組み込みに必要な inf と cat は 「ISPpic18F14k50\Windows」 にある。

④16F1459
ディレクトリは 「ISPpic16F1459」
MPLABXプロジェクトは 「ISPpic16F1459\apps\usb\device\cdc_basic\firmware\ISPpic16F1459.X」
HEXファイルは 「ISPpic16F1459\apps\usb\device\cdc_basic\firmware\ISPpic16F1459.X\dist\LPCUSBDK_16F1459\production\ISPpic16F1459.X.production.hex」
USBドライバー組み込みに必要な inf と cat は 「ISPpic16F1459\Windows」 にある。

⑤16F1454
ディレクトリは 「ISPpic16F1454」
MPLABXプロジェクトは 「ISPpic16F1454\apps\usb\device\cdc_basic\firmware\ISPpic16F1454.X」
HEXファイルは 「ISPpic16F1454\apps\usb\device\cdc_basic\firmware\ISPpic16F1454.X\dist\LPCUSBDK_16F1454\production\ISPpic16F1454.X.production.hex」
USBドライバー組み込みに必要な inf と cat は 「ISPpic16F1455\Windows」 にある。


今回のバージョンアップは上記の①②③④⑤のすべてが更新されているので、PC側の制御ソフトとプログラマー側のファームウェアをともに差し替える必要がある。

PC側の制御ソフトは、OSへのインストールは必要なく、任意の1つのフォルダにISP.exeとISPdll.dllをコピーするだけで良い。
VisualStudio2008のランタイムが無いと言われたら、ビルゲイツの指示に従って別途インストールする。

PICプログラマーを始めて導入するときにUSBドライバーの登録が必要な場合がある。USBドライバー本体はWindows標準のものを使用するので、inf と cat の所在のみをビルゲイツに伝える。

ハードウェアの設計書は「USB接続簡易共用プログラマー設計・回路図・配線図.xls」。
各デバイス毎のソケットアダプタ結線は、シート名「ソケット・・・」を参照。
  1. 2018/06/11(月) 09:36:14|
  2. プログラマー
  3. | コメント:0

I2CインタフェースEEPROM(24シリーズ)ライターの製作(PC側制御ソフト)

I2CインタフェースEEPROM(24シリーズ)ライターの製作 で作ったのはライターのハードウェアだけだった。
PC側の制御ソフトは 「USB接続PICプログラマー」 の ISP.EXE を流用していた。しかし、ISP.EXE はEEPROM以外の機能が一杯あって邪魔になる。それで、ISP.EXE からEEPROM以外の機能を取り去り、操作し易くした。これで誤操作による「爆発する恐れ」が無くなった。

【操作】
EEPROMライター操作画面

各リストボックスで該当するアイテムを選択して、「実行」をクリックすると読み書きが行われる。

【ダウンロード】
PC側の制御ソフトは ここから ダウンロードできる。
ディレクトリ ISP\EEPROM にVisualStudio2008のVBプロジェクトが入っている。
実行ファイルは ISP\EEPROM\bin\EEPROM.exe
実行ファイルと ISPdll.dll は同じディレクトリに置くこと。
  1. 2018/05/14(月) 10:58:19|
  2. プログラマー
  3. | コメント:0

I2CインタフェースEEPROM(24シリーズ)ライターの製作

PIC電子オルゴールで外付けのEEPROMから音声再生をさせる事例を公開したら、方々からEEPROMへの書き込み手段についての問い合わせを多くいただいた。PICユーザの多くはPICkit3を使っていると思うが、PICkit3では24シリーズの書き込みができない。ドキュメント「PICkit3アプリケーション」のReadMe.txtによると、24シリーズに書くためにはPICkit3の基板から部品を2個(TR3とR50)取り外す改造を行うように指示されている。しかし、実際にそれをやる人は少ないのではないかと思う。

I2C_EEPROMライターPICkit3改造

24シリーズに書き込みができるライターが出回っている。例えば下記は24と25に対応していて、250円くらいだ。
I2C_EEPROMライターCH341A


僕の PICプログラマー は24と25に対応しているので、EEPROM書き込み環境としてお薦めするが、製作がやや面倒だ。そこで、PICプログラマーから24の書き込み機能のみを抜き出して、超簡易な 「I2C_EEPROMライター」 を作ったので紹介する。

今流行りの16F1454(@130円2018秋月価格)を使って廉価にした。200円くらいで作れる。

【外観】
I2C_EEPROMライター外観

【回路図】
I2C_EEPROMライター回路図

USBの+5VからLEDのVf分を降下させて、3.3Vを作っている。デバイスによっては動作電圧が3.6V以下のものがあるので、このようにしている。どうしても5Vで書きたいときはショートピンを挿す。

【配線図】
I2C_EEPROMライター配線図

【ソフトウェア】
PC側の制御ソフトはPICプログラマーの 「ISP」 をそのまま使う。

ライターのファームウェアはPICプログラマーの16F1459のものを16F1454に移植した。ピン数が少なくなるので、buildエラーにならないだけの必要最小限の変更に止めた。

【ダウンロード】
詳細な製作資料とファームおよびPC側制御ソフトの開発プロジェクトは ここから ダウンロードできる。

PC側の制御ソフトはGUIとプログラマー制御の2つから成る。
①GUIを担うVBプロジェクトは「ISP」、実行ファイルは「ISP\bin\ISP.exe」
カレントディレクトリを 「ISP\bin」 に置いて起動すればよい。

②プログラマー制御を担うVCプロジェクトは「ISPdll」、DLLファイルは「ISPdll\Release\ISPdll.dll」

プログラマー側の制御ソフトは
③16F1454のファームウェアでMPLABXプロジェクトは 「ISPpic16F1454\apps\usb\device\cdc_basic\firmware\ISPpic16F1454.X」
USBドライバー組み込みに必要な inf と cat は 「ISPpic16F1454\Windows」 にある。

【注意事項】
PC側の制御ソフトでは24シリーズ以外もデバイスの選択ができるが、それを選択してプログラムを実行すると爆発する恐れがあるので注意されたい。
  1. 2018/05/01(火) 19:15:59|
  2. プログラマー
  3. | コメント:0

PICプログラマー(18F14K50)のファームウェアのMPLABXへの移行

プログラマー外観

前作の USB接続PICプログラマー は制御マイコンに18F14K50を使っているが、開発開発環境が旧MPLABで、アプリケーションライブラリも古いものを使っている。それで、今回はMPLABXとMLAへ開発環境の移行を行った。

開発環境の移行のみで、プログラマーとしての機能は変わらない。

【新環境】
・MPLABX Ver4.10
・XC8 Ver1.45
・MLA v2017_03_06

【ダウンロード】
詳細な製作資料とファームウェアおよびPC側制御ソフトの開発プロジェクトは ここから ダウンロードできる。

ディレクトリ 「ISP」 はPC側ソフトのGUIを実現するVBのWindowsアプリケーション
VBプロジェクトは 「ISP\ISP.sln」
カレントディレクトリを 「ISP\bin」 に置いて起動すればよい。

ディレクトリ 「ISPdll」 はデバイスのプログラミング仕様を実現するC言語のDLL
VCプロジェクトは 「ISPdll\ISPdll.sln」

ディレクトリ 「ISPpic18F14K50」 は今回の新環境へ移行したプログラマー側のファームウェア
MPLABXプロジェクトは 「ISPpic18F14k50\apps\usb\device\cdc_basic\firmware\ISPpic18F14K50.X」
USBドライバー組み込みに必要な inf と cat は 「ISPpic18F14k50\Windows」 にある。
  1. 2018/04/29(日) 09:34:56|
  2. プログラマー
  3. | コメント:0

PICプログラマーの製作(16F1459)

プログラマー外観

前作の USB接続PICプログラマー は制御マイコンに18F14K50を使っているが、それが値上がりしているのと代わりに16F1459が廉価に売り出されたので制御マイコンを16F1459に替えた。16F1459は内部オシレータの精度が向上していて外部のクロック発振子が不要なので、更に安く作れる。

回路は18F14K50を使ったものを踏襲し、以下を変更した。

・外部のクロック発振子を無くした。

・USBのステータス表示用のLEDを1個にした。これは最新のMLAがそのように変わったので、それに合わせた。

上記の回路の変更をしなくても、18F14K50を今回の16F1459に差し替えても構わない。実は僕もそのようにして使っているので、記事トップに掲示している外観画像は回路の変更をしていないものである。


【回路図】
プログラマー回路図(16F1459)

【ダウンロード】
詳細な製作資料とファームおよびPC側制御ソフトの開発プロジェクトは ここから ダウンロードできる。

ディレクトリ 「ISP」 はPC側ソフトのGUIを実現するVBのWindowsアプリケーション
VBプロジェクトは 「ISP\ISP.sln」
カレントディレクトリを 「ISP\bin」 に置いて起動すればよい。

ディレクトリ 「ISPdll」 はデバイスのプログラミング仕様を実現するC言語のDLL
VCプロジェクトは 「ISPdll\ISPdll.sln」

ディレクトリ 「ISPpic16F1459」 はプログラマー側のファームウェア
MPLABXプロジェクトは 「ISPpic16F1459\apps\usb\device\cdc_basic\firmware\ISPpic16F1459.X」
USBドライバー組み込みに必要な inf と cat は 「ISPpic16F1459\Windows」 にある。
  1. 2018/04/29(日) 09:30:45|
  2. プログラマー
  3. | コメント:0

PICプログラマーの機能改善 (S-24CM1C AT24C1024B をサポート)

PICプログラマー
プログラマー外観
PICプログラマーと呼んでいるが、シリアルEEPROMやAVRもサポートしている。
当初の製作記事は ここ
その後の改善記事は、「PICプログラマー」 でブログ内を検索。


【今回の改善事項】

I2CインタフェースのシリアルEEPROM 「S-24CM1C」 と 「AT24C1024B」 をサポートした。

また、I2CインタフェースのシリアルEEPROMの書込み時間を短縮した。
従来は、32バイト単位での書き込みをしていたが、256バイトのページ書き込みにした。
1Mビット分のフル書き込み/照合で41秒となった。

【ソケットアダプタ】
ソケットアダプタの結線は以下の通りで、24FCxxxなどと同じ。
PICプログラマーI2CシリアルEEPROMソケットアダプタ

【サポートデバイス一覧】

10F200/204/220
10F202/206/222
10F320
10LF320
10F322
10LF322
12F508
12F509/510/16F506
16F54
16F57/59
12F609/615/16F610
12HV609/615/16HV610
12F617/16F616
16HV616
16F627/LF627
16F628/LF628
16F627A/LF627A
16F628A/LF628A
16F648A/LF648A
12F629/675/16F630/676
16F631
12F635
16F636/639
12F683/16F684/677/687
16F685/688/689/690
16C711
16F716
16F785
16HV785
16F818
16F819
16F84A
16F87/88
16F870/871/872
16F873/874
16F876/877
16F873A/874A
16F876A/877A
16F882
16F883/884
16F886/887
16F913/914
16F916/917/946
16F1454/1455/1459
16LF1454/1455/1459
12F1501
12LF1501
16F1503/7
16LF1503/7
16F1508
16LF1508
16F1509
16LF1509
16F1571
16LF1571
16F1572
16LF1572
16F1574/8
16LF1574/8
16F1575/9
16LF1575/9
12F1612/16F1613
12LF1612/16LF1613
16F1614/1618
16LF1614/1618
16F1615/1619
16LF1615/1619
16F1703/1707
16LF1703/1707
16F1704/1708/1713
16LF1704/1708/1713
16F1705/1709/1716/1717
16LF1705/1709/1716/1717
16F1718/1719
16LF1718/1719
16F1782
16LF1782
16F1783/1784
16LF1783/1784
16F1786/1787
16LF1786/1787
16F1788/1789
16LF1788/1789
12F1822/16F1823
12LF1822/16LF1823
12F1840/16F1824/1828
12LF1840/16LF1824/1828
16F1825/1829/1847
16LF1825/1829/1847
16F1826
16LF1826
16F1827
16LF1827
16F18313/18323
16LF18313/18323
16F18324/18344
16LF18324/18344
16F18325/18345
16LF18325/18345
16F18326/18346
16LF18326/18346
16F18854
16LF18854
16F18855/18875
16LF18855/18875
16F18856/18876
16LF18856/18876
16F18857/18877
16LF18857/18877
16LF1902
16LF1903/1904
16LF1906/1907
16F1933/1934
16LF1933/1934
16F1936/1937/1946
16LF1936/1937/1946
16F1938/1939/1947
16LF1938/1939/1947
18F1320/2320
18F22x1
18F23x1
18F24x0/24x3/44x0/44x3
18F24x5/24x8/44x5/44x8
18F25x0/25x3/45x0/45x3
18F25x5/45x5
18F26x0/46x0
18F26x2/46x2
18F26x5/46x5
18F13K22
18LF13K22
18F14K22
18LF14K22
18F13K50
18LF13K50
18F14K50
18LF14K50
18F23K20/43K20
18F23K22/43K22
18LF23K22/LF43K22
18F24K20/44K20
18F24K22/44K22
18LF24K22/LF44K22
18F25K20/45K20
18F25K22/45K22
18LF25K22/LF45K22
18F26K20/46K20
18F26K22/46K22
18LF26K22/LF46K22
18F24Jxx/44Jxx
18F25Jxx/45Jxx
18F26Jxx/46Jxx
18F27Jxx/47Jxx
24FJ16GA0xx
24FJ32GA0xx
24FJ64GA0xx
24FJ96GA0xx
24FJ128GA0xx
30F1010
30F2010
30F2011/2012
30F2020/2023
30F301x
30F401x
30F501x
30F6010/0A/2/2A/4/4A/5
30F6011/1A/3/3A
33FJ/24HJ12GP201/202
33FJ32GP/MC202/204
33FJ32GP/MC302/304
33FJ64GP/MCx02/x04
33FJ128GP/MCx02/x04
33FJ256GP/MCx06/x08/x10/A
32MX110/210
32MX120/220
32MX130/230
32MX150/250
24FC32A
24FC64
24FC128
24FC256
24FC512
24FC1025
24FC1026
AT24C1024B  ←今回追加したデバイス
CAT24M01
S-24CM1C  ←今回追加したデバイス
25AA320A
25AA640A
25AA128
25AA256
25AA512
25AA1024
90S1200
90S2313
90S2323
tiny13/13A
tiny13/13A-HV(高電圧シリアルプログラミング)
tiny2313
mega48
mega88
mega168
mega328


【ダウンロード】

PICプログラマーの設計資料とソフトウェアは ここから ダウンロードできる。

PC側の制御ソフトはGUIとプログラマー制御の2つから成る。
①GUIを担うVBプロジェクトは「ISP」、実行ファイルは「ISP\bin\ISP.exe」

②プログラマー制御を担うVCプロジェクトは「ISPdll」、実行ファイルは「ISPdll\Release\ISPdll.dll」

プログラマー側の制御ソフトは
③18F14K50のファームウェアでプロジェクトは「ISPpic18F14K50」、実行ファイルは「ISPpic18F14K50\USB\ISPpic18F14K50\Firmware\ISPpic18F14K50.hex」

今回のバージョンアップは上記の①②③のすべてが更新されているので、PC側の制御ソフトと18F14K50のファームウェアをともに差し替える必要がある。

PC側の制御ソフトは、OSへのインストールは必要なく、任意の1つのフォルダにISP.exeとISPdll.dllをコピーするだけで良い。
VisualStudio2008のランタイムが無いと言われたら、ビルゲイツの指示に従って別途インストールする。

PICプログラマーを始めて導入するときはUSBドライバーの登録が必要である。USBドライバー本体はWindows標準のものを使用する。infファイルとcatファイルは「ISPpic18F14K50\USB\ISPpic18F14K50\inf」にある。

ハードウェアの設計書は「USB接続簡易共用プログラマー設計・回路図・配線図.xls」。
各デバイス毎のソケットアダプタ結線は、シート名「ソケット・・・」を参照。
  1. 2018/04/19(木) 17:08:16|
  2. プログラマー
  3. | コメント:0

USB-シリアル変換器(16F1454)簡易版の製作

「16F1454を使ったUSB-シリアル変換器」 の簡易版を作った。

一般の用途ではシリアルのハードウェアフロー制御は使わないことが多い。また、CTS以外の制御線も殆ど使わない。
それで制御線を外部へ引き出すのをやめて、電源供給の機能も割愛してコンパクトにした。

【概観】
USB-Comエミュレータ(16F1454)簡易版概観

ピンソケットは使わずにTxとRxだけをリード線で引き出した。そのため基板面積はPICマイコンのみの大きさになった。

USB-シリアル変換器はデバグや実験で使うことが多いので、リード線の先端にICクリップを付けている。

信号線とICクリップの色の対応は以下のように覚え易くした。
Txは GOで Green
Rxは BACKで Blue

【回路図】
USB-Comエミュレータ(16F1454)簡易版回路図
空中配線でもよいくらい簡単だ。

【配線図】
USB-Comエミュレータ(16F1454)簡易版配線図
赤色楕円はUSBコードを基板に固定するためのステンレス線を意味し、これはICソケットを付ける前に基板穴に通しておく。

【ピン割り当て】
USB-Comエミュレータ(16F1454)簡易版ピン割り当て

【ファームウェア】
ファームウェアは 「16F1454を使ったUSB-シリアル変換器」 と共通にしている。

「ハードウェアハンドシェイクする」 を選択しているが、CTSを10kΩでプルダウンすることで送信が抑止されることはない。
フロー制御を機能させたいときはRC3ピンをCTSとして接続する。
CTS以外の制御線もピンには出ているので、必要なときは繋ぐことができる。

設計資料と開発プロジェクトは ここから ダウンロードできる。

MLAはディレクトリ階層が深くて、HEXファイルは下記にある。
USB-Com_Emulator_16F1454\apps\usb\device\cdc_serial_emulator\firmware\USBDevice-CDC-SerialEmulator.X\dist\LPCUSBDK_16F1454\production\USBDevice-CDC-SerialEmulator.X.production.hex

PC側のUSBドライバはWindows標準のものを使うので、MLAではUSBドライバーは提供されない。
本器を初めてPCに繋いだときにUSBドライバのインストール画面が現れたら下記のディレクトリを指定する。(Windowsの場合)
USB-Com_Emulator_16F1454\utilities\usb_drivers\mplab_comm\Windows
  1. 2018/04/11(水) 18:45:29|
  2. USB-シリアル変換
  3. | コメント:0

USB-シリアル変換器(16F1454)の製作

前作のUSB-シリアル変換器 は18F14K50を使っている。当時は@170円だったが、現在は値上げされて@220円(2018年秋月)になっている。
また、18F14K50は20ピンだが、USB-シリアル変換器を作るのにピン数はそんなに沢山要らないので、ピン数が少なくてより廉価なデバイスがいい。
こんな不満に応えてくれるデバイスとして16F1454が販売開始されたことは知っていたが、前作のUSB-シリアル変換器 で事足りているので、改めて16F1454で作ることは考えていなかった。

16F1454はUSBモジュールを内蔵したデバイスとしては最も廉価(@130円2018年秋月)だ。しかも、内部オシレータの精度が改善されていて、内部オシレータでUSBが使えるので更に安く作れる。
これからUSB-シリアル変換器を作るのなら 16F1454 をお勧めする。
人に勧めるからには、自分でも動作確認しておかないといけないと思った。ブログネタにもなるし。。。

デバイスが安くても使い難かったら嫌だ、と思われるだろうが、そこはMLA(Microchipアプリケーション用ライブラリ)が用意されていて、USBを全く知らなくてもUSB機器が作れるようになっている。
USB-シリアル変換器ならMLAのデモ用プロジェクトがそのまま使える。

と言うことで、作ったのがこれ。
USB-Comエミュレータ(16F1454)外観1

8×6穴のユニバーサル基板に載せた。
殆どPICとピンソケットの面積で、前作の半分の大きさになった。これなら持ち歩いても荷にならない。

【回路図】
USB-Comエミュレータ(16F1454)回路図
ハードウェアハンドシェイクが有効になっていて、相手からCTSを制御されることを期待している。それが期待できないときのためにCTSを10kΩでプルダウンしている。これによりCTSを繋がなくても、送信が抑止されることはない。

回路実験するときに便利な+5Vと+3.3Vの電源を供給できるようにしている。

GPIO0とGPIO1の機能は現時点では未実装。

【配線図】
USB-Comエミュレータ(16F1454)配線図1
赤色楕円はUSBコードを基板に固定するためのステンレス線を意味し、これはICソケットを付ける前に基板穴に通しておく。

USB-Comエミュレータ(16F1454)配線図2

【ピン割り当て】
PICとピンソケットのピン割り当ては以下の通り
USB-Comエミュレータ(16F1454)ピン割り当て

【ファームウェア】
MLAのデモ用プロジェクトは16F1459用のもので、16F1454で動かすには若干の設定変更が必要になる。
僕が実施した変更は以下の通り。

USB-Comエミュレータ(16F1454)カスタマイズ内容

開発中に気が付いたことで、16F1454はアナログ機能がないのにANSELが存在するということだ。実験してみるとANSELをクリアしておかないとデジタル入力の結果は常に0になる。これはポートピンをデジタル入力から切り離す効用を狙っての仕様だと解釈した。

このファームエアのプロジェクトはデバイスを16F1454で設定しているが、ANSELクリアを書いていて、HEXファイルは16F1454と16F1455のどちらでも正常に動作する。
USB-Comエミュレータ(16F1454)外観2

【ダウンロード】
このUSB-シリアル変換器の設計資料と開発プロジェクトは ここから ダウンロードできる。

MLAはディレクトリ階層が深くて、HEXファイルは下記にある。
USB-Com_Emulator_16F1454\apps\usb\device\cdc_serial_emulator\firmware\USBDevice-CDC-SerialEmulator.X\dist\LPCUSBDK_16F1454\production\USBDevice-CDC-SerialEmulator.X.production.hex

PC側のUSBドライバはWindows標準のものを使うので、MLAではUSBドライバーは提供されない。
本器を初めてPCに繋いだときにUSBドライバのインストール画面が現れたら下記のディレクトリを指定する。(Windowsの場合)
USB-Com_Emulator_16F1454\utilities\usb_drivers\mplab_comm\Windows
  1. 2018/04/03(火) 15:08:33|
  2. USB-シリアル変換
  3. | コメント:0
次のページ

プロフィール

大泉茂幸

Author:大泉茂幸
名張市つつじが丘おもちゃ病院
名張市つつじが丘南3番町129
tutuji@cb4.so-net.ne.jp
090-5534-6494
連絡は上記のメール、またはSMSでお願いします。

子どもの頃から趣味は電子工作一筋でやってきました。理科離れが進む中で科学技術に興味を持つ子どもが少しでも増えて行くことを願って、子ども達に電子工作の活動の場を提供しています。

1981年からおもちゃ病院の活動を始め、2014年に三重県名張市への移住を機に「つつじが丘おもちゃ病院」を開院しました。自分でおもちゃを設計し製作する【おもちゃ工房】と、マイコンを応用した電子工作を楽しむ【マイコンクラブ】も併設しています。新規参加メンバーを募集しています。

当ブログで公開している技術情報や成果物の複製、改変および再配布はフリーです。読者様のおもちゃ病院活動のお役に立てば幸いです。ご利用いただいた結果や感想等を記事へのコメントやメールでフィードバックしていただけると有難いです。なお、公開ファイルは最新版を載せているので、古い記事の内容から変わっている場合があります。

カテゴリ

おもちゃ修理技術 (119)
¦ ・電子オルゴール+音声再生 (48)
¦ ・音声再生・録音再生 (13)
¦ ・2.4GHzラジコン (34)
¦ ・レガシーラジコン (13)
¦ ・赤外線リモコン (4)
¦ ・RFID (3)
¦ ・タッチセンス (4)
ツール製作 (34)
¦ ・プログラマー (26)
¦ ・USB-シリアル変換 (3)
¦ ・その他のツール (5)
修理事例 (157)
¦ ・マイコン換装 (75)
¦ ・電子・電気修理 (59)
¦ ・メカ修理 (23)
製作記事 (4)
PIC開発 (4)
おもちゃ病院 (9)
ドクター研修会 (2)
未分類 (1)

最新記事

最新コメント

月別アーカイブ

訪問者数

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

QRコード

QR