PIC SPI機器プログラム開発用実験基板の製作
SPIモジュール等のライブラリプログラムの作成
SPIは結構高速かつ柔軟なシリアル通信方式で、返信不要ならばMSSPに頼らなくとも、とりあえず制御が可能です。
アクセス速度をそれ程要求しないセンサ等のインターフェイスはI2Cが多いですが、HC595等便利で面白いデジタルICを高速で制御可能です。
左記画像から見ても解りますが、「南波君」の基板そのものを改造しています。
南波君はジャンク箱でヒマそうにゴロゴロしてたので、たたき起こしました・・・
SPIは結構高速かつ柔軟なシリアル通信方式で、返信不要ならばMSSPに頼らなくとも、とりあえず制御が可能です。
アクセス速度をそれ程要求しないセンサ等のインターフェイスはI2Cが多いですが、HC595等便利で面白いデジタルICを高速で制御可能です。
左記画像から見ても解りますが、「南波君」の基板そのものを改造しています。
南波君はジャンク箱でヒマそうにゴロゴロしてたので、たたき起こしました・・・
↑ 実験基板回路図
↑ 基板正面
画像上部が4bitポート
画像右側が2bitポート
画像左側が電源入力ピン
↑ 基板上面
画像左側から
ICSPポートピン
左側から
①ピン:VPP
②ピン:VDD
③ピン:VSS
④ピン:PGD
⑤ピン:PGC
⑥ピン:VLP(NC)
RC3ジャンパピン
JPピン接続でLEDのON/OFF
RC3=0で発光、1で消灯
JPピン開放でRC3I/O利用可
4bitポート
左側から
RC0(ピン下はGND)
RC1(ピン下はGND)
RC2(ピン下はGND)
RC3(排他的にLED利用)
VDDピン
ピン上が5V出力
ピン下がGND
↑ 基板右側面 2bitポート
2bitポートピン左側から
RA4(ピン下はGND)
RA5(ピン下はGND)
VDDピン(ピン下はGND)
↑ 4bitロータリーDIPスイッチ
SPI実験基板の製作と言うか改造ポイント
20ピンPIC仕様なので、基板を破壊せず簡単に改造できる事を念頭に行いました。
(1)4bit連続のパラレルポートを作る
これはRBポートかRCポートを開放する事になります。
RBポートはロータリーDIPスイッチに接続されています。
これはこれで、残した方が便利、RCポートを使う事に。
で、LCDの制御ポートのみを移動、RC0-RC3が確保できました。
RC4-RC7はそのままLCDデータポートとして使用
制御ポートはRA0-RA2に移動させる事にしました。
(2)2bit連続のポートを作る
これはRA4-RA5を開放する事にしました。
ここはLEDが接続されていたので、1つはただの電源オンのPLとした。
残りはRC3にジャンパピンで接続/切断可能として残す事に。
(3)その他
割り込み用スイッチは撤去
電源用の7805も撤去
これは電源自体を3.3Vで使用する事もあるかも知れないためです。
(1)(2)ポート傍には電源ピンを増設
20ピンPIC仕様なので、基板を破壊せず簡単に改造できる事を念頭に行いました。
(1)4bit連続のパラレルポートを作る
これはRBポートかRCポートを開放する事になります。
RBポートはロータリーDIPスイッチに接続されています。
これはこれで、残した方が便利、RCポートを使う事に。
で、LCDの制御ポートのみを移動、RC0-RC3が確保できました。
RC4-RC7はそのままLCDデータポートとして使用
制御ポートはRA0-RA2に移動させる事にしました。
(2)2bit連続のポートを作る
これはRA4-RA5を開放する事にしました。
ここはLEDが接続されていたので、1つはただの電源オンのPLとした。
残りはRC3にジャンパピンで接続/切断可能として残す事に。
(3)その他
割り込み用スイッチは撤去
電源用の7805も撤去
これは電源自体を3.3Vで使用する事もあるかも知れないためです。
(1)(2)ポート傍には電源ピンを増設
既存のXC8ライブラリファイルです。
ただ、この基板用にポートを合わせています
インクルード・関数群
搭載LCD用
SC1602v1_SPIB.h_
SC1602v1_SPIB.c
ロータリーエンコーダ用
R_ENCODERv1.h
R_ENCODERv1.c
ただ、この基板用にポートを合わせています
インクルード・関数群
搭載LCD用
SC1602v1_SPIB.h_
SC1602v1_SPIB.c
ロータリーエンコーダ用
R_ENCODERv1.h
R_ENCODERv1.c
基本ライブラリファイルの初期設定
PIC16F18346及びXC8で作ります。
もちろん、他の20ピンPIC16F1でもOKです。
必要な情報はSC1602LCDに表示します。
よって、パラレルLCDライブラリを基本装備とします。
XC8 SC1602ライブラリの詳細については別項を参照して下さい。
(1)SC1602 4ビットパラレルLCDライブラリ Ver1.0
1)SC1620ヘッダーファイルのマクロによるI/Oポート設定
SC1602v1ライブラリを使用しています。
使用ポートは下記の通りに変更しています。
RC7:DB7
RC6:DB6
RC5:DB5
RC4:DB4
RA2:R/S
RA1:R/W
RA1:E
(2)4bitポートの使用について
1)SPI
特に制限は無いので自由にポート設定します。
当局の好みとしては、RC0がCLK、RC1がDAT、RC2がLAT、
と言った所でしょうか
戻りポートとしてはRC3となりますが、LEDと排他的使用です。
2)MSSP1使用の場合のポート設定
当局標準のポート設定で大丈夫だと思います。
PICによって違いがありますので、ここでは16F18326用に設定
また、RC0はSCL、RC1はSDAと設定します。
PMD4 = 0x04;
SSP1CLKPPS = 0x10; // RC0の入力先はSCL
SSP1DATPPS = 0x11; // RC1の入力先はSDA
RC0PPS = 0x18; // RC0の出力源はSCL
RC1PPS = 0x19; // RC1の出力源はSDA
3)ロータリーエンコーダ
2bitポートがX’TALユニットを差し込んだ等、使えない場合。
その場合、残りポートはRC0-1の2ポートとなります。
NCOやPWM等パルス出力制御実験に・・・
RC2:REAポート
RC3:REBポート
関数名:「R_ENCORDERv1_RC23」
(3)2bitポートの使用について
1)ロータリーエンコーダ
左記にあるファイルは、
RA4:REAポート
RA5:REBポート
と、設定されています。
2)X’TALユニット
RA4-5を使用したX’TALユニットNO2が使用可能です
PIC16F18346及びXC8で作ります。
もちろん、他の20ピンPIC16F1でもOKです。
必要な情報はSC1602LCDに表示します。
よって、パラレルLCDライブラリを基本装備とします。
XC8 SC1602ライブラリの詳細については別項を参照して下さい。
(1)SC1602 4ビットパラレルLCDライブラリ Ver1.0
1)SC1620ヘッダーファイルのマクロによるI/Oポート設定
SC1602v1ライブラリを使用しています。
使用ポートは下記の通りに変更しています。
RC7:DB7
RC6:DB6
RC5:DB5
RC4:DB4
RA2:R/S
RA1:R/W
RA1:E
(2)4bitポートの使用について
1)SPI
特に制限は無いので自由にポート設定します。
当局の好みとしては、RC0がCLK、RC1がDAT、RC2がLAT、
と言った所でしょうか
戻りポートとしてはRC3となりますが、LEDと排他的使用です。
2)MSSP1使用の場合のポート設定
当局標準のポート設定で大丈夫だと思います。
PICによって違いがありますので、ここでは16F18326用に設定
また、RC0はSCL、RC1はSDAと設定します。
PMD4 = 0x04;
SSP1CLKPPS = 0x10; // RC0の入力先はSCL
SSP1DATPPS = 0x11; // RC1の入力先はSDA
RC0PPS = 0x18; // RC0の出力源はSCL
RC1PPS = 0x19; // RC1の出力源はSDA
3)ロータリーエンコーダ
2bitポートがX’TALユニットを差し込んだ等、使えない場合。
その場合、残りポートはRC0-1の2ポートとなります。
NCOやPWM等パルス出力制御実験に・・・
RC2:REAポート
RC3:REBポート
関数名:「R_ENCORDERv1_RC23」
(3)2bitポートの使用について
1)ロータリーエンコーダ
左記にあるファイルは、
RA4:REAポート
RA5:REBポート
と、設定されています。
2)X’TALユニット
RA4-5を使用したX’TALユニットNO2が使用可能です
感想
簡単改造の割にちょっとした実験には使い勝手の良い基板になったと思います。
ロータリーDIPスイッチ内蔵は実験には何かと便利です。
2bitポートはロータリーエンコーダ接続に便利
今後は各種の実験に登場してくれそうです。
簡単改造の割にちょっとした実験には使い勝手の良い基板になったと思います。
ロータリーDIPスイッチ内蔵は実験には何かと便利です。
2bitポートはロータリーエンコーダ接続に便利
今後は各種の実験に登場してくれそうです。
追記事項がありましたら、ここに記載します