スキャンタイムのシミュレーションによる計測

お客様からのお問い合わせで、当方が行っている時間計測方法をご紹介いたします。
プログラムの実行速度や精度のお問い合わせをいただくのですが、本来で行けば実機等を使用し、検証する必要があります。

しかし、検証環境が整っていないため、PICの開発環境を使用し実行速度を検証しています。
お客様とのやり取りの中で、この方法を知りたいとのご希望をいただきましたので、資料として簡単にまとめました。

MPLABXのインストールから計測までとマイコンのプログラム開発になれない方には難しいかもしれませんが、
当方の製品をご使用いただくときの選定の参考としていただければと思います。

MPLABXのシミュレーション機能は、なかなかいろんな機能があるので、また時間があればご紹介いたします。

スキャンタイムのシミュレーション計測

18F4525のIOをI2Cで増やす方法(I2CINF-LB)

連枝を使用して、ラダーで制御プログラムを作成します。
PICマイコンでは、制御するIOポートが足りなくなってきます。
また、LCDや7セグなどを使用しだすと、さらにIOポートが足りなくなります。拡張機能を使用すれば、増やすことができますが、ラダーのROMを多く使用してしまうため、使用できるプログラム領域が少なくなります。

 そのことなら、連枝では、CPUを別々に用意し、それをI2Cで通信を行うことで、デバイスを共有します。
これにより、IOはCPU分増え、さらにそれぞれのCPUでラダーを記述することができます。
I2Cで共有するデバイスはB00やB10といった共有デバイスを使用します。数値等はW00のデバイスとなります。

詳しくは動画をご確認ください。

参考ページ
通信拡張ページ

連枝によるI2Cを使ったPICの連携

16F84のT201高速タイマについて

16F84の高速タイマがマニュアルではT200、T201の二つあります。
しかし、実機において、動作させるとT200しか動作しておりませんでした。
T201の不良動作につきましては、ライブラリのバグが原因でした。

修正したライブラリをダウンロードサイトにアップいたしました。

お手数ではございますが、差し替えをお願い申し上げます。

ダウンロードサイト

HEXファイルのファイル名や製作日時について

以前お問い合わせいただいた内容について記載いたします。
連枝では、作成したHEXファイル名およびmbs作成日時をhexファイルの最後に出力する機能がございます。

HEXファイルを生成したデータの末尾にアスキーコードで文字を書き出しております。

ファイルのバージョン管理等にご利用ください。
以下がその例です。

(例)以下は、ファイル名「test.HEX」で、生成日時は
「2018/04/16 14:06」の末尾の情報です。

5 2 ー t e s t . /
:107FC000350032002D0074006500730074002E002F
.  .  . .  . . . . 1
:107FD0002E002E002E002E002E002E002E002E0031
.  .  . 1  8 0 4 ー cr   
:107FE0002E002E002E0031003800300034002D000D
     1 6  -  1 4  0 6 $
:0E7FF000310036002D00310034003000360024
:020000040030CA
:04000000FFFEF6F811
:08000600FAFFFFFFFFFFFFFFFF
:00000001FF

PWMの出力について

最近お問い合わせいただいた件を記します。
ラジコン用のサーボモータの制御を連枝で行いたいとのことでした。
調べてみたのですが、今の連枝では、ご要望にお応えすることは
難しいようです。調べた結果が以下の通り。

ラジコン用のサーボモータの制御信号(PWM)
周期14.4ms パルス幅 1~2.1ms

(連枝でできること)
・ DACO命令(DA変換機能)を利用し、
周期128μs(変更不可)、分解能0.5μs
P版のみで出力可
パルス幅は、0~255範囲で、データレジスタで指定可能
 
・PULSE命令を利用し、
周期20ms(可変) 
分解能100μs 0~99の設定値で可能
ただし、設定値データレジスタではなく、
プログラムに直値で指定
 また、PULSE命令はソフトウェア割込みで実現
しているので、通信機能など使用時は、パルスが
不安定になる。

 との結果になりました。将来的には、ラジコン用のサーボモータ
の制御が連枝でできるようにしたいと思っております。
DA変換機能を改造して、ラジコン用のサーボモータを
制御できるようにしたいですね。
 

汎用I2Cライブラリについて(4525)

連枝では、汎用のI2C通信を標準のポートを利用して、ソフトウェア上で通信を行っております。

今回、お問い合わせをいただき、確認いたしました。当方も覚書として記載させていただきます。

使用するI/Oピンは、下記のいずれかが可能です。

・RB1:SCL RB5:SDA
・RC1:SCL RC5:SDA
・RD1:SCL RD5:SDA

通信時のタイミングの本来の仕様は下記のサイトの30ページに記載されております。

http://ekousaku.web.fc2.com/doc/I2C.pdf#search=%27%EF%BC%A9%EF%BC%92%EF%BC%A3+%E3%83%95%E3%82%A3%E3%83%AA%E3%83%83%E3%83%97%E3%82%B9+%E4%BB%95%E6%A7%98%27

今回、調査した結果、プログラムで待ちを利用しながらソフトウェアでの通信となっております。
通信等のタイミングのお問い合わせがありましたので調べた結果が以下の通りです。

 ただし、従来の連枝では書込(CPUから外部機器)はタイミングを合わせていますが、読込(外部機器からCPU)はタイミングを合わせていないようです。

 そのため、相手機器によってはデータの読み出しが上手く行かない場合も想定されます。この点については、今後の検討課題としてとらえております。

 連枝で設定する場合、汎用のI2CならCPUの設定は通信にはチェックは入れません。

一方、ラダーについてですが、以下の命令が使用できます。

STA2C・・・I2Cのスタート信号
STP2C・・・I2Cのストップ信号
W2CO・・・相手機器のアドレス指定と書き込み指定
W2CDO・・・メモリアドレスの指定またはデータの指定
R2CO・・・相手機器のアドレス指定と読み出し指定
AC2CI・・相手機器から送られたデータを取り込み

ちなみに、下記の指定で、K2Y10と書いている場合は、RB1とRB5を使用する。K2Y30ならRC、K2Y40ならRDです。

・相手機器のアドレスが(51)hで1番地からの読み出し
STA2C K2Y20  ・・・・ スタート信号をRC1とRC5から発出
W2CO  H51  K2Y20・・・ 相手機器のアドレス指定とWモード
W2CDO H1   K2Y20・・・ 対象のメモリアドレス指定
STP2C K2Y20 ・・・ ストップ信号をRC1とRC5から発出

STA2C K2Y20・・・・ スタート信号をRC1とRC5から発出
R2CO  H51  K2Y20・・・ 相手機器のアドレス指定とRモード
AC2CI K2Y20 D10・・・相手機器からのデータ受信
AC2CI K2Y20 D11・・・相手機器からのデータ受信
STP2C K2Y20 ・・・ ストップ信号をRC1とRC5から発出

・相手機器のアドレスが(51)hで1番地から書き込み
STA2C K2Y20・・・・ スタート信号をRC1とRC5から発出
W2CO  H51  K2Y20・・・・相手機器のアドレス指定とWモード 
W2CDO H1   K2Y20・・・ 対象のメモリアドレス指定
W2CDO D10   K2Y20・・・D10を1番地に書き込み
W2CDO D11   K2Y20・・・D11を2番地に書き込み
STP2C K2Y20 ・・・ ストップ信号をRC1とRC5から発出

今回、通信のチェックで活用したのは、
秋月電子通商様が販売されているRTCのモジュールキットです。

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

デバッガ(動作モニタ)

連枝では、シリアルポート経由で動作中のデバイスの状態を
ラダー上に表示させることができます。
ビルド時にDBXファイルを生成し、PICに書き込むと
動作からデバッグを選択すると、ラダー上に現在の動作状態を
表示することができます。
その動作中の画面のキャプチャしたものを
動画で掲載いたします。

デバッガ(動作モニタ)

オンボードROM書き

連枝では、開発中のラダーをシリアルポート経由で
変更することができます。
最初のプログラムの書き込みは、ライタで書き込む必要が
ありますが、2回目以降、特殊な機能や割込みなどを
使用しない場合は、オンボードROM書きで変更することが
できます。動画をご確認ください。

オンボードROM書き

連枝のデバッグ環境について

 こんばんは。
連枝を引き継いだCAHの吉田です。
皆様には、ご協力いただいてすごく感謝しております。

 また、このような状況の中ご購入希望を
いただいていることを身に染みております。
 ご希望は多くはございませんが、
熱い想いは伝わっております。
また、購入後も連枝の改善に向けて、レポートや
ご報告をいただいていること、その対応に対して
温かい目で見守っていただいていることに
大変感謝しております。
 以前からお問い合わせいただいております
お客様からのバグレポートはとても助かっております。

 当方の技量不足でお待ちいただいているところは
ございますが、徐々に改良してよいものにしていきたいと
思っております。
 ご協力のほどよろしくお願いいたします。

 と、本題からそれましたが、皆様からの
お問い合わせで色々デバッグに関する方法を
教えていただいております。
使って、感動している使い方をご紹介いたします。

 とりあえず、デバッグ中の画面を掲載いたします。

 これは、動作の動作画面から表示できる
画面の一部です。事前にDBXを
書き込んでおくとシリアルポートを持つPICについては、
パソコンとPICで通信を行い、使用しているデバイスの
状態や値をラダー上に表示することができます。
 その構成を写真に撮りました。

 プログラムの書き込みは、PICKIT3で、
デバッグおよび一部のプログラム書き換えはDB-509を
使用しております。

 感動したので、アップしました。