PICへのプログラム書込みについて

PICへのプログラムの書き込みは以下の方法があります。

・PICライタによる書き込み
・PICKITによる書き込み
・ICDによる書き込み
・その他

・PICKIT3によるプログラムの書き込みについて

 チップごとの配線を図で記載いたしました。ご参考にしてください。
チップごとで配線する場所が異なりますので、ご注意ください。

PICKIT3の配線

・その他

 オンボード書き込み対応CPUにつきましては、事前にオンボード用に変換した
HEXファイルをPICに書き込んでいただくと、シリアル通信(UART)により
プログラムが書き込めます。
 シリアルポートをレベル変換し接続するか、USBシリアル変換器で接続するか、
Wifiシリアル変換器で接続し、連枝よりプログラムの書き込みをお願いいたします。

スペースを含むファイル・フォルダ名変換不可について

 ファイル名やフォルダ名に全角文字が含まれると、PICのHEX変換時に動作が停止いたします。
また、スペースを含むファイル名や、フォルダ名の場合、HEX変換せず、
アプリケーションが停止いたします。
 過去のバージョンでは、発生しなかったとのご連絡をいただいております。

 原因を特定して、ライブラリを修正いたしました。
ご迷惑をおかけしておりますが、ご了承ください。

連枝のCPUごとでの機能対応表(参考)

連枝における機能や仕様などが分かりづらいため、一覧表にしました。
ヘルプやデータシートから起こしたものです。

実際の動作につきましては、順次検証したいと思っております。
間違い等お気づきの際はお知らせいただけると幸いです。

皆様にとって、ご利用いただきやすいように
ライブラリのバージョンアップ等を検討中です。
ご要望などございましたら、お知らせください。

連枝の機能表

4525割込み内でI2C通信

 4525の割込みライブラリ(452-INT-LB)をご使用いただき、
割込みプログラム内で、汎用I2C通信(I2CINF-LB)などを使用した場合、
IO(Y)が正常に動作しない不具合が見つかりました。

 CPUのライブラリの不具合が原因でした。
現在は、改善しております。

ご迷惑をおかけいたしました。

4525でI2C経由でRTCとの通信(汎用のI2Cライブラリ)

汎用のI2Cライブラリと、その他のライブラリの違いということでご質問いただくことがございます。
今回は、汎用のI2Cライブラリについて、ご紹介いたします。

汎用のI2CライブラリではI2Cのプロトコルをラダーで記載することで機器と通信が行えます。
クロックのEnableやアドレスの指定、データの指定取り込みといった手順をラダーで記載しますので、
複雑な機器の場合は、ラダーが長くなります。

一方、その手順を書けば通信ができますので、様々なセンサやIOなどと通信が可能です。
その手順や方法をご紹介いたします。

4525によるI2C経由でのLCD制御

以前お問い合わせいただいたI2CのLCD制御についてご紹介いたします。
この制御は、2つのライブラリで制御が行えます。

・PIC18F4525(2525)、4520(2520)、4585(2585)PIC18F46K22(26K22)用変換ライブラリー
P18F4525-LB
・I2C液晶モジュール(SB1602B、SB1602E)(AQM0802AーRM-GBW)用変換ライブラリー
P452-LC I2C-LB

PICに搭載されているI2Cのピン(RC3(SCL)、RC4(SDA))とLCDをつないでいただき、プルアップしてください。
また、ラダーの命令としては、LCDHとLCDLの2つのコマンドを使用して表示内容を指示します。
サンプルのラダーの画像を表示します。
注意事項としては、LCDのコントラストの設定が必要になります。しなくても問題ないかもしれませんが必要に応じてライブラリのファイルの設定値を変更してください。(「¥PIC¥8F55¥LCD¥LCDI2CD2.H」内のcontrastの値を変更する)

I2CLCDのプログラム

また、動画で解説しております。下記の動画をご覧ください。

チャッタ防止のプログラムについて

お客様からのご要望でチャッタ防止のプログラムをライブラリ化するしたいのですが、なかなか実現しておりません。
CPUごとでメモリの状況やプログラムが異なるため、もう少し時間がかかりそうです。

 一方、ラダーの容量が増えますが、ラダー上でソフトウェアチャッタ防止が行えますので、そちらをご紹介いたします。
チャッタ防止の一般的な方法は入力の取り込み間隔を長くすることです。
それをタイマーを組み合わせることで実現可能です。
CPUのチャッタ防止を使用しないので、スキャンタイムがあまり伸びず、また、入力信号ごとでチャッタ防止の使用と不使用を選択できます。

スイッチなどの信号とハードウェアからのパルス信号といった信号の組み合わせの場合、パルス信号幅を測定しようとするとチャッタ防止が影響して短い時間での測定ができないことが多いと思います。

また、チャッタの継続時間もハードウェアにより異なりますので、時間調整ができた方が良いかと思います。10msタイマーをご使用いただければ、10ms区切りでチャッタ防止の時間を調整できますのでお勧めです。

サンプルでは、チャッタ防止の時間を20msごとに設定しています。
また、X0およびX1の入力をM0およびM1に転送することで、防止前の信号ならX0やX1をそのままご利用ください。
チャッタ防止を行った信号を使用したい場合は、M0(X0)、M1(X1)をご使用いただければと思います。

PIC16F84だけでなく、多くのCPUで採用できる良い方法ですので、
ぜひご活用ください。

PIC16F84のスキャンタイムとタイマーの精度

お問い合わせの中で、スキャンタイムとタイマーの精度についてがありましたので、調べた結果をアップいたします。
MPLABXのシミュレーションレベルですが、以下の通りです。
ラダーは25行程度。

チャッタ防止チェック無し・・・56マイクロs
チャッタ防止チェックあり・・・2.5ms

上記の計測値は、機能が動作していない時の計測値ですが、チャッタ防止チェック無しとしていただくと
スキャンタイムは悪くても1msと考えられます。そのため、T200およびT201の10msタイマーの
誤差はほぼないと思われます。(+-1msくらいですか)

 一方、チャッタ防止ありの場合は、チャッタ除去のため待ち時間を入れているので2.5msとなります。
こちらについては、スキャンタイムが悪くても1msと考えると、+-5msぐらいと考えます。

こちらは、あくまでも参考値としていただき、ご利用者様で実機にて検証をお願いいたします。

※EEPROMなどのLリレーをご利用いただいた場合は、この限りではございません。
 Lリレーは変更された場合、書き込むプログラムとなっているため、変化したときのスキャンタイムは20msふえることになります。
※他のCPUでスキャンタイムをMPLABXのシミュレータで検証する場合、ハードウェアや通信などにより大きくスキャンタイムが変わりますので、その点ご注意ください。

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

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

しかし、検証環境が整っていないため、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の連携