denshikobo’s blog

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

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のデバッグ機能がまた一つ向上したので、まぁ良しとしましょう。
 
やれやれ
 

User_Frameが良い感じに動き出した

先日、User_FrameからPICのメモリやレジスタに直接アクセスできるように仕様変更したのですが、良い感じに動き出しました。

f:id:denshikobo:20180117180822p:plain

DAC_ADC用のUser Frame)

 

以下のコマンドを中段のText_Areaに書き込み、Sendボタンをクリックすると、結果が下段のText_Areaに表示されます。

 

get_var  変数名

set_var  変数名 書き込みデータ

get_reg  レジスタ

set_reg  レジスタ名 書き込みデータ

 

TextAreaを介さずコマンド・バッファに直接コマンドを書き込めば、ユーザ・アプリケーションから簡単にPICを操作できます。

 

配列なども扱えるともっと使いやすくなりますが、Pic_coloコンソールで行う変数の表示/編集機能との使い分けが課題になりそうです。

 

 

 

 

Pic_coloの仕様を変更することにした

Pic_coloには自由にカスタマイズできるユーザ・フレームが用意されています。

ユーザ・フレーム表示のON/OFFは、Setting==>Other==>CustomWindowをクリックして切り替えます。

f:id:denshikobo:20180115151838p:plain

(背景が水色のウィンドウがデフォールトのユーザ・フレームです)

 

ユーザ・アプリケーションは、ユーザ・フレームとPICプログラム間でデータを送受することになるのですが・・・

 

このデータ送受を、Pic_coloコンソール(JAVAプログラム)とPic_coloデバッガ(PICプログラム)間で行うUART通信で、カプセル化して中継しようと考えて(<==未だ実装していなかった)いました。いよいよ、ユーザ・フレームとPICプログラム間のデータ送受を組み込もうとして、ユーザ・アプリケーションにとってデータ通信というのは手段にすぎないということに気付きました。

 

通信文字列を組み立て、それを解釈実行して、応答文字列を組み立て・・・

 

そんなことをやるよりも、データはPICのメモリやレジスタ上にあるのですから、それを直接読み書きする方がずっと簡単です。Pic_coloに組み込んであるPICの変数やレジスタをRead/Writeする機能をユーザ・フレームから呼び出せれば良いのです。

 

これは良いことを思いつきました。

新年、最初のヒットです!