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

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

PICプログラマーで 16F18313/18325 をサポート

お馴染みの「USB接続PICプログラマー」のソフトウェアをバージョンアップした。

++++++++++++++++++++++++++++++++++
2016年11月14日の改変

秋月から今秋に発売になった 16F18313/18325 をサポートした。

「12F609/615/16F610/12HV609/615/16HV610/12F617/16F616/16HV616 
 ←616/617以外では消去書込みで消去されない不具合あり、未解決
 12F615等の1ワード書込みデバイスではRowEraseはできないのではないか?」
上記は当然な話と思う。それで、 616/617 以外は消去書込みの機能を削除した。従って、「消去」と「書込み」の2つに分けて操作して貰うことになる。

「RUN」するときにもVdd指定値のチェックをしているが、プログラミング仕様での規定値を基準にしている。しかも、バルクイレースやチップイレース等のより厳しいケースの値を使っている。これはヘンな考え方で、プログラミング時の規定を「RUN」時にも適用するのは不適切だ。例えば12F509をVdd=3Vで「RUN」させようとすると、「Vdd指定値(30)がデバイスの最小値(45)未満である」と言われてイラっとしてしまう。それで、「RUN」時のVdd値の下限チェックを行わないようにした。上限のチェックは従前どおりに行う。

【サポートデバイス一覧】
// 10F200/204/220/202/206/222
// 10F320/322
// 12F508/509/510/16F506 ←12F510のチップ消去がVpp先行でないと働かないことが未解決
// 16F54/57/59 ←57/59も1ワード書込み、実機テストは54と57で実施
// 12F609/615/16F610/12HV609/615/16HV610/12F617/16F616/16HV616
// 16F627/628/LF627/628
// 16F627A/628A/648A/LF627A/628A/648A
// 12F629/675/16F630/676
// 12F6xx/16F6xx
// 16C711
// 16F716
// 16F785/HV785
// 16F818/819
// 16F84A
// 16F87/88
// 16F87x
// 16F87xA
// 16F88x
// 16F91X/946 ←机上チェックのみ
// 16F145x/LF145x ←机上チェックのみ
// 12F1501/LF1501/16F150x/LF150x ←実機テストは12F1501、16F1503のみ実施
// 16F151x/LF151x/F152x/LF152x ←机上チェックのみ
// 12F1612/LF1612/16F1613/LF1613 ←実機テストは12F1612のみ実施
// 16F170x/LF170x ←実機テストは16F1705のみ実施
// 16F171x/LF171x ←机上チェックのみ
// 16F178x/LF178x ←机上チェックのみ
// 12F182x/LF182x/16F182x/LF182x
// 12F1840/LF1840 ←机上チェックのみ
// 16F18313/18325
// 16LF190x/F193x/LF193x/F194x/LF194x ←実機テストは16F1938のみ実施
// 18F1320/2320 ←机上チェックのみ
// 18F2550/4550
// 18F1xK22/LF1xK22/F1xK50
// 18F2xK20/4xK20
// 18F2xK22/4xK22
// 18F2xJxx/4xJxx
// 24FJxxxGA0xx
// 30F ←机上チェックのみ
// 33F/24H
// 32MX
// 24FCxxx(ページサイズ32バイト以上のデバイス) ←実機テストは24FC256、24FC512のみ実施
// 24FC1025/1026 ←実機テストは24FC1025のみ実施
// CAT24M01 ←机上チェックのみ
// 25AAxxx/LCxxx(ページサイズ32バイト以上のデバイス) ←机上チェックのみ
// 90S1200 ←ID読込みがオール0となるがチップのバグ?
// 90S2313
// 90S2323 ←ID読込みがオール0となるがチップのバグ? Vcc=5Vでの書込みが失敗する
// tiny2313
// tiny13 ←机上チェックのみ
// mega48/88/168/328 ←実機テストはmega328のみ実施

【今回の変更プログラム】
ISPdll.dll
ISP.exe

【ダウンロード】
「USB接続PICプログラマー」の最新のソフトウェアは ここから ダウンロードできる。

【当初の製作記事】
プログラマーのハードウェアを含む全体の製作記事は こちら を参照。

++++++++++++++++++++++++++++++++++
2016年7月1日の改変

今更な話だが、PIC内蔵オシレータのキャリブレーション値の扱いについて、ずっと悩み続けてきた。プログラミング仕様書には 「デバイスを消去する場合はキャリブレーション値の退避/回復をせよ」 と書かれている。しかし、その通りにやっていても何らかのトラブルで書込み動作が中断されてしまったときはどうするのか。そのための良い方法がある。デバイスに荷札を付けて工場出荷時の値を書き留めておけばよいのだ。

そもそもプログラム領域の消去でキャリブレーション値も消えてしまうような設計が間違っている。後に出てきたデバイスでは安易には消されないところに 「バックアップキャリブレーション値」 が格納されるようになった。そのため荷札は必要がなくなり、キャリブレーション値が消えても 「バックアップキャリブレーション値」 から復元することが可能になった。今回はデバイスの書き込み時におけるキャリブレーション値の引継ぎ方法を整理した。

リセットベクタに内蔵オシレータのキャリブレーション値を置くデバイス(10F2xx、12F5xx、12F629/675、16F54/57/59)でHEXファイルにキャリブレーション値が指定されていない場合はデバイスから引き継ぐようにした。処理倫理は以下の通り。

1.HEXファイルのキャリブレーション値を最優先する。

2.HEXファイルにキャリブレーション値が無い場合はデバイスのキャリブレーション値を引継ぐ。

3.デバイスにキャリブレーション値が設定されていない(消去されている)場合はバックアップキャリブレーション値をリセットベクタに書込む。但し、バックアップキャリブレーション値を持たないデバイス(12F629/675、16F54/57/59)は除く。

この機能を活かすために消去書込みの実行機能を新設する。但し、消去はプログラム領域とコンフィギュレーションワードのみとするため、ID領域とバックアップキャリブレーション値の書換えはしない。

どのキャリブレーション値を採ればよいかはケースバイケースだと思う。それで、操作画面の CalErase チェックボタンの設定で判断を変えられるようにした。チェックされている場合は、デバイスのキャリブレーション値を消去してHEXファイルのキャリブレーション値を書き込む意図があると理解して、上述のロジックで動く。

CalErase がチェックされていない場合は、デバイスのキャリブレーション値は消さない意図があると理解して、以下のロジックで動く。

1.デバイスのキャリブレーション値を引継ぐ。

2.デバイスにキャリブレーション値が設定されていない(消去されている)場合はバックアップキャリブレーション値をリセットベクタに書込む。但し、バックアップキャリブレーション値を持たないデバイス(12F629/675、16F54/57/59)は除く。

【今回の変更プログラム】
ISPdll.dll

【ダウンロード】
「USB接続PICプログラマー」の最新のソフトウェアは ここから ダウンロードできる。

【当初の製作記事】
プログラマーのハードウェアを含む全体の製作記事は こちら を参照。

++++++++++++++++++++++++++++++++++
2016年6月19日の改変

2016年5月末頃に秋月で新発売となったデバイスを中心に兄弟分もまとめてサポートした。

・16F145x (16FでUSB内蔵。@230円で値上げ後の18F14K50と同じだが、メモリが大きい)
・12F1612/1613
・16F151x/152x
・12F1612/16F1613
・16F170x/171x/178x
・16F182x/184x
・CAT24M1 (ONセミのI2Cインタフェース1MビットEEPROM、@150円安い!)

【サポートデバイス一覧】
10F200/204/220/202/206/222 
10F320/322 
12F508/509/510/16F506 
16F54/57/59 ←57/59も1ワード書込み、実機テストは54のみ実施 
12F609/615/16F610/12HV609/615/16HV610/12F617/16F616/16HV616 
 ←616/617以外では消去書込みで消去されない不具合あり、未解決
 12F615等の1ワード書込みデバイスではRowEraseはできないのではないか?
16F627/628/LF627/628 
16F627A/628A/648A/LF627A/628A/648A 
12F629/675/16F630/676 
12F6xx/16F6xx 
16C711 
16F716 
16F785/HV785 
16F818/819
16F84A
16F87/88
16F87x
16F87xA
16F88x
16F91X/946 ←机上チェックのみ
16F145x/LF145x ←机上チェックのみ
12F1501/LF1501/16F150x/LF150x ←実機テストは12F1501、16F1503のみ実施
16F151x/LF151x/F152x/LF152x ←机上チェックのみ
12F1612/LF1612//16F1613/LF1613 ←机上チェックのみ
16F170x/LF170x ←実機テストは16F1705のみ実施
16F171x/LF171x ←机上チェックのみ
16F178x/LF178x ←机上チェックのみ
12F182x/LF182x/16F182x/LF182x
12F1840/LF1840 ←机上チェックのみ
16LF190x/F193x/LF193x/F194x/LF194x ←実機テストは16F1938のみ実施
18F1320/2320 ←机上チェックのみ
18F2550/4550
18F1xK22/LF1xK22/F1xK50
18F2xK20/4xK20
18F2xK22/4xK22
18F2xJxx/4xJxx
24FJxxxGA0xx
30F ←机上チェックのみ
33F/24H
32MX
24FCxxx(ページサイズ32バイト以上のデバイス) ←実機テストは24FC256、24FC512のみ実施
24FC1025/1026 ←実機テストは24FC1025のみ実施
CAT24M01 ←机上チェックのみ
25AAxxx/LCxxx(ページサイズ32バイト以上のデバイス) ←机上チェックのみ
90S1200 ←ID読込みがオール0となるがチップのバグ?
90S2313
90S2323 ←ID読込みがオール0となるがチップのバグ? Vcc=5Vでの書込みが失敗する
tiny2313
tiny13 ←机上チェックのみ
mega48/88/168/328 ←実機テストはmega328のみ実施

【今回の変更プログラム】
ISPdll.dll
ISP.exe
スポンサーサイト
  1. 2016/11/14(月) 22:20:46|
  2. 製作記事
  3. | コメント:0
<<プロポ受信機「FutabaFP-R114H」の修理(RFC断線) | ホーム | トイザらスのラジコンカー_PT8A977の修理(送信機新調)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

プロフィール

大泉茂幸

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

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

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

本ブログで公開している技術情報や成果物のご利用および再配布はフリーです。読者様の技術活動のお役に立てば幸いです。ご利用いただいた結果や感想等を記事へのコメントやメールでフィードバックしていただけると有難いです。

最新記事

最新コメント

月別アーカイブ

カテゴリ

おもちゃ病院 (7)
技術情報 (9)
修理事例 (143)
製作記事 (77)
ドクター研修会 (2)
PIC開発 (9)
未分類 (9)

訪問者数

検索フォーム

RSSリンクの表示

リンク

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

ブロとも申請フォーム

この人とブロともになる

QRコード

QR