Base kernel Logo(4,742bytes)
Electronics branch Logo(5,335bytes)
 Copyright (C) by Base Kernel Co,.Ltd, Sapporo, Japan, since 1998.

PICNICキット(旧版)

 ※ 現在は、新しいバージョンに切り替わっております。→ (新)PIC-NIC/New PIC Network Interface Card kit
 ここに記載している内容は、旧バージョンのPICNIC に対応したものになります。

PICNIC Ver.1  秋月電子通商などで販売されている Tristate 製 PICNICの紹介です。
 PICNICは、それ単体ではあまり面白いことは出来ません。
 応用はPICNICを手にした方々自身が開拓していく代物です。
 PICNIC自体がそれ自身で完結していない代物だからです。

 弊社では、PICNICを、温度センサーの計測データを Web サイトに表示させるために使用するLANインタフェースに利用しています。

 PICNICには Ethernet と RS232C、Web ブラウザ経由で制御できる簡単なI/O ポート制御ファームウェアが PIC16F877 に組み込まれていますが、これだけだと出来る事が限られてしまうことも事実です。

 加えて、まとまったデータがトランジスタ技術 2001年1月号にしかなく、当方のようにこれを買えなかったり、2001年1月以降に PICNIC を知った方々にとっては、「使って見たくてもなかなか使えない」代物であることも否定できません。

 ここでは、PICNIC の制御方法を紹介します。(LCDを除く)

PICNIC 使用温度センサーについてはこちらDS1820温度センサー

PICNIC 制御方法

予備知識として...(PICNIC 付属の説明書と合わせてご覧ください)

CN2 ピンアサイン(PICNIC 付属の説明書と合わせてご覧ください)

26252423 222120 19181716 1514
GGGG GGGG GGGG G
RA0RA1RA2RA3RB0RB1RB2 RB3RB4RB5RB6RB7+5V
123 4567 891011 1213
RA0-RA3 回路
RB4-RB7 回路

 RA0-RA3、RB4-RB7 に外部装置を接続する際、PICNIC 側の回路は提示するような回路になっているので、
 場合によっては考慮する必要があります。

 RA0-RA3 はアナログ入力ピン(A-Dコンバータ内蔵)、RB0-RB7 はディジタル入出力ピン。
 RA4は PIC16F877 の仕様上、オープンドレインです。

 RA5は アナログ出力タイプの温度センサー LM35DZ を接続するように意図されています。

 RAポートのA−D変換精度は 10bit 、Vref は電源電圧(+5V) です。
 ディジタル入出力ピンのうち、RB0-RB3 は初期状態では入力、RB4-RB7 は初期状態では出力。
 RB0-RB7 の入出力は、パラレルポートに対して後述するプロトコルに従ってデータを送信することで、変更可能です。

パラレルポートプロトコル
コマンド機能の説明コードデータ
GetStatusPICNIC 側の現在のI/O ポートの状態取得 00 
SetHigh/SetInputPIC16F877のPortのビット番号 Bitを「H」/入力にする 01PortBit 
SetLow/SetOutputPIC16F877のPortのビット番号 Bitを「L」/出力にする 02PortBit 
SetWholePIC16F877のPortへデータ出力 03PortSizeMaskVal [MaskVal]...
GetADCPIC16F877の指定ch のA−D変換 04chWait 
SetRBPUPIC16F877 RB ポートの内蔵プルアップ 05flag 
コマンド機能の説明
GetStatusPICNIC 側の現在のI/O ポートの状態取得
00 
SetHigh/SetInputPIC16F877のPortのビット番号 Bitを「H」/入力にする
01PortBit 
SetLow/SetOutputPIC16F877のPortのビット番号 Bitを「L」/出力にする
02PortBit 
SetWhole
PIC16F877のPortへデータ出力
03PortSizeMaskVal[MaskVal]...
GetADC
PIC16F877の指定ch のA−D変換
04chWait 
SetRBPU
PIC16F877 RB ポートの内蔵プルアップ
05flag 

 上記のバイナリデータ列をバイト単位でパラレルポートに送信することで、
 必ず以下の8バイト長のレスポンスが返る仕様になっています。

RARBTRIS_RATRIS_RBAD_HAD_LADCON100

 (UDPなので、レスポンスが確認出来ない時の再送処理等のリトライがアプリケーションプログラム側で必要です)
 ※ 後ろ1バイトは、必ずしも 00H ではなく、無意味なデータが入る場合があります。

 レスポンス時に得られる情報は、PIC16F877 の内部レジスタのデータそのものです。
 AD_H、AD_L は、A−D変換の結果が入り、GetADC コマンド以外は、意味の無いデータになります。
 RA0-RA3 の実測値は、(AD_H * 256 + AD_L) / 1024 * Vref で計算できます。


※ データ部に指定できるパラメータなど
PortPIC16F877 のレジスタアドレス 05H=PORTA/06H=PORTB/85H=TRISA/86H=TRISB
Bitレジスタのビット位置 0=LSB .... 7=MSB
Size出力データ数 Mask+Value の対の数(1以上でなければならない)
Mask出力データマスク(通常は 00H を指定) I/O 状態を維持したいビットを1にする(AND演算)
Value出力実データ 出力したいデータそのもの
chA−D変換対象チャンネル指定 81H=RA0/89H=RA1/91H=RA2/99H=RA3/A1H=RA5
WaitA−D変換サンプリング時間 5μs 単位で指定。00H 指定の場合は、100H 指定と同様。
flag有効/無効00H で無効、00H 以外の値で有効。