denshikobo’s blog

PICプログラミングやPCの操作で感じた日々の由無し事を綴ります

PIC_colo Common_Frameが動いた

 PIC_coloを使ったGUIアプリケーションのテンプレートとして用意したCustom_Frame(<==以前はUser_Frameと呼んでいた)をサンプル・プログラム用に作り直したCommon_Frameが動きました。

f:id:denshikobo:20180524165415p:plain

Name欄にレジスタ名や変数名を入力すると、Value欄に現在値を表示します。入力に誤りがあるとValue欄に”null”を表示します。(<==get_infoコマンドで返るnullを表示している)

 

 Updateボタンをクリックするとチェックを付けた変数あるいはレジスタValue欄の値を更新します。

 また、Value欄の値を書き換えるとName欄に表示されたレジスタあるいは変数を書き換えます。

 さらに、Repeatボタンをクリックするとチェックを付けた変数あるいはレジスタValue欄の値を1秒ごとに更新します。

 パチパチ~

 

 少しずつ、機能を組み込んできたPIC_coloコンソールですが、Common_Frameの登場であちこち機能の重複が目立ってきました。Common_Frame自体も、人手でコマンドの送受を行うつもりで組み込んだ機能が、処理状態を表示する窓になってしまいました。orz

 

 最初に仕様をがっちり固めないで、その時々の思いつきで開発を進めた弊害と言えば、その通りなんですが・・・

 まぁ、しょうがない!(<==懲りない奴)

ーーーーーーーーーーーーーーーーーーーーー

最初の頃のUser_Frameはこんな感じでした。

f:id:denshikobo:20180128140209p:plain

PIC_colo Thereminの開発初期に使っていたのはこれです。

f:id:denshikobo:20180504125515p:plain

 思えば、Custom_Frameも立派に育ったものです。

『PIC_coloの手引き』をCommon_Frameを使ったものに書き換えなくては・・・

 

PIC_colo_Thereminのセンサーを変更することにした

PIC_colo_Thereminのセンサーには超音波センサ(これ↓)を使う予定でした。

http://akizukidenshi.com/catalog/g/gM-11009/

 

ところが期待したほどの測距可能距離が得られません。

orz

 

10数個のセンサで測距可能距離を調べても、大きな違いは無かったので、PIC_colo_Thereminに使ったセンサの不具合では無さそうです。

 

さらに・・・

超音波センサの感度を調べていて別の問題に気づきました。センサの反応が0.2~0.3秒遅れるのです。

 

超音波センサ内部の計測処理で何らかのフィルタリングを行った結果だと推察しています。

 

別の光学センサ(これ↓)を調べてみると測距可能距離の改善は期待できることが確認されました。反応の遅れも(少し遅延はあるものの)超音波センサよりは良さそうです。

http://akizukidenshi.com/catalog/g/gI-02551/

操作に用いる発泡スチロールの玉との相性も良いのですが、計測電圧から測距値への変換に少し工夫が必要です。

f:id:denshikobo:20180520170155p:plain

5cm以内では操作しないことにすれば、簡単な変換テーブルでなんとか行けそうです。

 

PIC_colo_Thereminは赤外線測距センサを使って、再設計することを決意しました。

 

Custom_Frameの扱いを変更しようと考えた

『PIC_coloの手引き』(こんな奴↓)にPIC_coloの操作手順をまとめようとしています。

f:id:denshikobo:20180504125410p:plain

基板とソフトウェアだけ配布しても使って頂けないことは明白なので、頑張って作るしかないのですが作業はなかなか進みません。しかも、構想がぶれて書き直しになることも度々あります。今もCustom_Frameの扱いに関して変更しようと考え始めました。

 

これまでCustom_Frameは、アプリケーション・プログラムのユーザ・インターフェースと位置づけ、ユーザがカスタマイズして使うものと考えていました。例えば、PIC_colo_Thereminのデバッグ用Custom_Frameはこんな感じです。 

f:id:denshikobo:20180504125515p:plain

 

Blink(Lチカ)ではCustom_Frameを非表示にして、PIC_coloコンソールで行う変数操作機能を紹介しようとは考えていたのですが、その操作がなんともまどろっこしい・・・

「これを嬉々として行うのは作った本人だけ何じゃないの?」

 手引きに手順を記述して初めて気づきました。orz

 

Custom_Frameには、ユーザがアプリケーションを作るときの手助けとなるように変数操作機能(get_varコマンドとset_varコマンド)が用意されています。これを使った変数操作機能を紹介した方が良いのではないか?

 

 サンプル・プログラム共通で使うCommon_Frameを設るとか・・・

そんなことを思いついて、早速試して見ました。

f:id:denshikobo:20180504125430p:plain

 

(1)Sendウィンドウに”get_var blink_interval”と書いてSendボタンを押す。(2)Recieveウィンドウに”0a"(10)が表示される。
(3)Sendウィンドウを”set_var blink_interval 05”に書き換えてSendボタンを押す。(4)Recieveウィンドウに”complete"が書き足され、Lチカの周期が1秒から0.5秒に
   変わる。

 

うん、この方がず~っと良い!

 

組み込む機能は要検討ですが、サンプル・プログラムはCommon_Frameを利用する方針に変更します。

 

PIC_coloの機能がまた一歩前進して、PIC_coloの手引きの完成はまた一歩後退しました。orz

 

YouTubeに動画を投稿した

YouTubeに動画を投稿しました。これ(↓)です。

youtu.be

初めてなので戸惑うことも多かったのですが、録画したビデオから音声トラックを取り出す方法とか、早送りする方法とか・・・必要に迫られて動画編集の技も色々覚えました。

次は音楽編集の技を習得して、音声トラックをもっと格好良く仕上げたいあなぁ~

 

 

FusionPCBにアクセス出来なく成った

FusionPCB(↓)にアクセスしようとすると・・・

「安全な接続ができませんでした・・・・・・ への接続中にエラーが発生しました。 SSL peer cannot verify your certificate. エラーコード: SSL_ERROR_BAD_CERT_ALERT」と表示されアクセス出来ません。www.seeedstudio.com

やむなく、PIC_colo用のユニバーサル基板はelecrow(↓)に発注しました。

Elecrow.com® Custom PCB Assembly, Fabrication and DIY Electronics

 

FusionPCBには色々サポートしてもらっているので、次の基板は是非FusionPCBにお願いしたいと思い、SSL_ERROR_BAD_CERT_ALERTの対策を調べてみました。

 

しかし、googleで検索を掛けて出てきた対策(about:configにアクセスして設定値を変更するとか、特定サイトのSSL証明のチェックを無効にするとか)を試してみたのですが改善しません。orz

 

認証関連の不具合全般に検索範囲を広げ、あれこれ調べてみると・・・

「%APPDATA%¥MozillaFirefox¥Profiles¥以下にあるcert8.dbを削除する」という対策(↓)に行き着きました。

Deleting Cert8.db for Firefox - IS&T Contributions - Hermes

 

SSL_ERROR_BAD_CERT_ALERTに関する対策では無かったのですが、認証関連のデータを初期化する方法らしいので藁をも掴む気持ちで試して見ると・・・

ビンゴ~~

ようやくFusionPCBに接続することが出来るようになりました。

やれやれ

ーーーーーーーーーーーーーーーーーーーーーーーーーー

実際に削除したのは以下の二つです。

%APPDATA%¥MozillaFirefox¥Profiles¥amgibljy.default¥cert8.db

%APPDATA%¥MozillaFirefox¥Profiles¥ amgibljy.default¥cert9.db

Firefoxを再起動するとcert8.dbとcert9.dbが新たに作り直され、FusionPCBに接続出来ました。詳しいメカニズムを理解してやったことではないので、この方法を試すのは自己責任でお願いします。

 

先のサイトにも以下のような注意書きが記されています。

Make sure you've tried other alternatives before deleting cert8.db.

Pic_coloにRESETモニタ機能を加えた

Pic_colo_Thereminを5Vで動かそうとして、暫く嵌まりました。
 
VddをUSB電源(5V)から直接とって、DAC1のVref+にVddを接続するとPIC STATUSがERRORになるという症状に見舞われました。Pic_coloコンソールとPic_coloデバッガ間の通信異常です。何が起きているのか全く分からず、(やむなく禁じ手の)Pickit3で動作を調べてみると、Vref+にVddを接続したときにResetが掛かっていました。
 
とりあえず状況は分かりましたが・・・
 
 『Pickit3無しでPICのプログラム開発が出来る』と謳っているのに、これでは形無しです。orz
 
そこで、PCONレジスタの値をpcon_reg(@0x0e8)にコピーする機能と、Pic_coloデバッガが起動した回数をreset_counter(@0x0e9)に記録する機能を新たに追加しました。User_FrameからPICのメモリを操作する機能は既に組み込んであるので、これだけでRESETモニタの完成です。

f:id:denshikobo:20180128140209p:plain

1 set_val 0xe8 0000で初期化する(completeが返ってくる)
2 メイン・コンソールのResetをクリックする
3 get_val 0xe8 2でpcon_regとreset_counterを読み取る(1b01が返ってくる)
4 DAC1のVref+にVddを接続する(PIC STATUS ERRORになる)
5 Vref+の接続を除く(PIC STATUS IDLEになる)
6 get_val 0xe8 2でpcon_regとreset_counterを読み取る(1c85が返ってくる)
 
/PORと/BORが落ちているのでVddの瞬停が起きていること、reset_counterが0x85なので何度もResetを繰り返していることなどが分かるようになりました。
 
『Pickit3無しでReset状況が分かる』というのが大変重要なポイントです。
 
3.3Vのレギュレータを通せばDAC1のVref+にVddを接続しても大丈夫なので、Pic_colo_Thereminの電源は3.3Vにして、超音波センサーの信号は分圧して受けることにします。
 
ひとしきりジタバタしましたが、Pic_coloのデバッグ機能がまた一つ向上したので、まぁ良しとしましょう。
 
やれやれ