PICキットとは何だ・・・

PIC用ライタの事ではありません。
当局が小学生の頃、「エレキット」なる、部品単体をプラ板に張り付けたモジュール方式で、それを付属のコードでモジュール間を接続し各種回路が出来上がると言った代物がありました。
ゲルマニウムトランジスタや抵抗、コンデンサ、クリスタルマイクやイヤホン、バリコン、コイル等があったと記憶していますが、
部品数は少なかったと思います。
何とそれを親にねだって買ってもらう事に成功しました・・・
その中で、ラジオを組み立てても、まったく聞こえなかった記憶があります・・・
今考えれば、キットのラジオは感度が悪く、さらに当地の電界強度が弱いのが原因と思いますが。
もちろん当局内で現存していません・・・ (-_-;) ザンネン

さて、その「エレキット」と同じ事をやってみようと思い立ち・・・と言うのは大ウソで、
PIC実験回路をブレッドボードで毎回シコシコと同じ基本配線を組むのは、もう飽きた。
部品が散らかるし、結線が不安定だし、そもそも使い勝手が悪く面倒くさ
ならば、最初から基本配線を行った、PICが交換可能な実験用基板があれば、楽ちんだろうと言う、
極めてぐうたらな考えで各種基本モジュール基板を作ってみたら・・・これがなかなか便利でやめられません
ハタと気が付くと、子供の頃の「エレキット」と何か同じ感じじゃん・・・っと気が付いたのでした。
それをここにまとめただけです・・・ Hi

まだモジュールの種類が少ないですが、今後徐々に増やしていきたいと思います。
未熟ながらも、必要に応じてドライバ的ルーチンも用意していきます。
PIC別の基本プログラム構成はアッセンブラ・ソースファイルです。
これは、CPU別インクルード、コンフィグレーション、基本変数定義(BANK0)、ウエイト等、および基本的内部モジュール設定、
INT、INIT、MAIN等の骨格的節目のラベル定義です。
それに必要に応じて各種モジュールの制御ルーチンを付け加えて行く形です。
メインルーチンは、その場その時に、各モジュール用ルーチンを呼び出します。
呼び出すモジュール用ルーチンは、引数および戻り値が存在し、C言語の関数的な使用方法(CALL命令ですが)をイメージしてます。
それらを機能的に配置する事により、結果として、1つのプログラムが出来上がります。
え? 最初からXC8でやれって?・・・ それは使用する人のお好みでと言う事で・・・
当局は8ビットCPUでのシンプルなアッセンブラが好きなもので・・・ m(__)m

さて、ハードウエアもソフトウエア同様、機能的に接続していく構成としていきます。
その様にしてPICマイコンを弄って遊んでいる内に・・・自在に、どっぷりPICにのめり込みます・・・
PicKit3がちょっと高価ですが、開発用PCはその辺に捨てられているXPマシンで十分、(注1)
基板やPIC本体は秋月電子で揃えれば、安価に済みます。
これで、十分楽しめるし、ボケ防止に効果的といいことづくめです・・・ (^_^;)
もちろん当局もそのコンセプト?で行っています。

注1)
ただし、ハードディスクは消耗品です。プロジェクトファイルは、今やただ同然のUSBメモリ等にバックアップしよう


↑ PIC14ピン用CPUモジュール




↑ PIC14ピンCPUモジュール 上面図




↑ PIC14ピンCPUモジュール 回路図
NO-001 14ピンPIC16F用 CPUモジュール

これは大概の8ピン、14ピンPICが使用できますが、ピン配置には注意して下さい。
すべての8・14ピンPICが使用できる訳ではありません。
基本的には、16F1705、16F1823等、PIC F1シリーズで
秋月電子で安価で入手できる、14ピン8ビットマイコンを想定しています。
もちろん、16F688等、旧PICも使用できます。
14ピンでも最大11ピンのI/Oが取れますし、RBポートと同じ状態変化割り込みも、
RAポートでとりあえず使用できます。
また、秋月のD基板にCPUが乗ってしまうのが良いですね。
サブルーチン・ライブラリの実験・開発には持って来いの基板です。
もちろん、「初めてのPICF1シリーズ」にもピッタリです。
このモジュール基板で、Pickit3を接続しての書込み、オンボードデバッグ等
MPLAB'X IDEと共に、どっぷりハマる事間違い無し・・・ (^_^;)

回路構成
RA0-2、RA4-5、RC0-5のすべてをそのまま入出力用ピンに接続
RA3は10KΩでプルアップ
電源入出力3ポート
ICSPポート
I/Oポート11ピン
INPUTポート(RA3)1ピン
以上の超簡単な構成で、安価に製作できます。

使用部品
秋月電子 D基板、ブレッドボード配列(普通配列でも可)
ピンヘッダ
14ピン丸穴ソケット
0.1uF積層セラミックコンデンサ2個
電解コンデンサ 220uF
10KΩ抵抗1個
以上、当局はすべて秋月電子で揃えています。

↑ PIC20ピンCPUモジュール




↑ PIC20ピンCPUモジュール 上面図



NO-002  PIC20ピン用 CPUモジュール

これは大概の8ピン、14ピン、20ピンPICが使用できますが、
すべての8・14・20ピンPICが使用できる訳ではありません。
因みに18ピンPICは使用不可です。
基本的には、16F1828、16F1829等、PICF1シリーズで
秋月電子で安価で入手できる、20ピン8ビットマイコンを想定しています。
もちろん、16F690等、旧20ピンPICも使用できます。
20ピンでは最大18ピンのI/Oが取れますし、RBポートの一部もあり、
応用範囲がぐっとひろがり、大概の電子工作用途に対応できます。

回路構成(14ピンとほぼ同じ、I/Oピンが増えただけ)
RA0-2、RA4-5、RC0-7、RB4-7のすべてをそのまま入出力用ピンに接続
RA3は10KΩでプルアップ
電源入出力3ポート
ICSPポート
I/Oポート17ピン
INPUTポート(RA3)1ピン
以上の超簡単な構成で、安価に製作できます。
使用部品は14ピン用とほぼ同じです。
ソケットは少々高くても、必ず丸ピンを使用して下さい。
使用ツール

MPLABX’ IDE (PCのソフトウエア)
MPLABX’ IPE (PCのソフトウエア)
PicKit3 プログラマ(ハードウエアです)

IPEは無くても可能だが、使い分けると便利
当局は、IDE+エミュレータ(メインPC)
IPE+PicKit3(サブPC側で書き込み)
これが基本パターン
場合によっては、
IDE+PicKit3(サブPC側)で、
書込みして、オンボードデバッグ
この場合、RA0,1,3の使用を避ける

注意
最近のMPLABXIDEのソースファイル
メモ帳では見られなくなりました。



PIC16F1705用
アッセンブラ基本プログラム
ディスプレイ「DFR0090」版
PIC16F1705 BASICソースファイル

16F1705_BASIC_DFR90_01.asm




PIC16F1709用
アッセンブラ基本プログラム
ディスプレイ「DFR0090」版
PIC16F1709 BASICソースファイル

16F1709_BASIC_DFR90_01.asm

基本プログラム

CPU別に用意しており、当局が過去に作成したプログラムの基本形を使います。
詳細はソースファイルを見て下さい

構成
(1)CPU定義
  2行で済みますが、これが無いとアッセンブルしません。
(2)コンフィグレーション定義
 1)システムクロック内部発振指定
   イニシャル時に周波数設定、4xPLL使用で、最高32MHZ
 2)システムクロックX’TAL発振指定
   8MHZのX’TALを使用する事を想定、
   イニシャル時に4xPLL使用で32MHZとなる

(3)基本変数定義、
  とりあえず勝手に定義していますが、自由に変更して下さい
  演算やウエイトで使用している、必須のものもあります

(4)ウエイトルーチン
  必ず必要になるので、基本プログラム末項付近に置いてあります。
  FOSC=32MHZ、8MHZの2種を用意、コピペで取り替えて使用します。
  8MHZ用は、「END」命令の後に存在します。
  BANK0で使用する必要があります

(5)演算ルーチン
  ちょくちょく使用しますので、とりあえずおいてあります。
  引数と戻り値があります。
 1)16bit加算ルーチン 「ADD16B」
   hex(0-1)=hex(0-1)+hexw(0-1)
  a)引数
    hex0 加算される数下位8bit
    hex1 加算される数上位8bit
    hexw0 加算する数下位8bit
    hexw1 加算する数上位8bit
  b)戻り値
    hex0 結果下位8bit
    hex1 結果上位8bit
  c)結果フラグ
    オーバーフローしても何もしません
  e)呼び出し方法
    CALL ADD16B

 2)16bit減算ルーチン 「SUB16B」
   hex(0-1)=hex(0-1)-hexw(0-1)
  a)引数
    hex0 引かれる数下位8bit
    hex1 引かれる数上位8bit
    hexw0 引く数下位8bit
    hexw1 引く数上位8bit
  b)戻り値
    hex0 結果下位8bit
    hex1 結果上位8bit
  c)結果フラグ
    正常終了の時、Wreg=0
    異常終了の時、Wreg=1 ボロー発生の時で、戻り値は不確定値となります
  e)呼び出し方法
    CALL SUB16B

 3)32bit加算ルーチン 「ADD32B」
   hex(0-3)=hex(0-3)+hexw(0-3)
  a)引数
    hex(0-3) 加算される数32bit
    hexw(0-3) 加算する数32bit
  b)戻り値
    hex(0-3) 結果32bit
  c)フラグ
    オーバーフローしても何もしません
  e)呼び出し方法
    CALL ADD32B

 4)32bit減算ルーチン 「SUB32B」
   hex(0-3)=hex(0-3)-hexw(0-3)
  a)引数
    hex(0-3) 引かれる数32bit
    hexw(0-3) 引く数32bit
  b)戻り値
    hex(0-3) 結果32bit
  c)結果フラグ
    正常終了の時、Wreg=0
    異常終了の時、Wreg=1 ボロー発生の時で、戻り値は不確定値となります
  e)呼び出し方法
    CALL SUB32B

 5)32bitBCD変換ルーチン 「BCD」
  a)引数
    hex(0-3)32bit
  b)戻り値
    digit12 下位4bit=BCD1桁目、上位4bit=BCD2桁目
    digit34 下位4bit=BCD3桁目、上位4bit=BCD4桁目
    digit56 下位4bit=BCD5桁目、上位4bit=BCD6桁目
    digit78 下位4bit=BCD7桁目、上位4bit=BCD8桁目
    digit9A 下位4bit=BCD9桁目、上位4bit=BCD10桁目
    以上の40bit

(6)基本表示ルーチン
   これが無いと不便です
 1)8桁7セグLEDモジュール用送信データ生成ルーチン
   MAX2719用(aitendo M7SEGX8R-7219)
  a)引数
    digit12 ~ digit78までの4bit×8の32bitBCD
    digit12の場合、下位4bitが1桁目のBCD、上位4bitが2桁目のBCD
    FLG:表示指令バイト
     bit0-2
            001 2桁表示
            011 4桁表示
            101 6桁表示
            111 8桁表示
     bit3      0 ゼロブランキングしない
              1 ゼロブランキングする
     bit4-6  000 ドット表示しない
            001 2,5桁にドット表示
            010 3,6桁にドット表示
            100 4,7桁にドット表示
     bit7    エラーフラグ等、自由に使用


  b)戻り値
    DBUF0~DBUF7
  c)結果フラグ
    無
  e)呼び出し方法
    CALL SETBUF

 2)8桁7セグLEDモジュール送信ルーチン(aitendo M7SEGX8R-7219)
   MAX2719使用8桁7セグLED ディスプレイドライバ
  a)引数
    DBUF0~DBUF7(MAX2719用(aitendo M7SEGX8R-7219)の送信データ)
  b)戻り値
    無
  c)結果フラグ
    無
  e)呼び出し方法
    CALL PUTL

過去のプログラム保存場所(お墓)

Aitendo 「K-M7S8D2719」対象

PIC16F1823用基本プログラム
PIC16F1823BASIC 01 ソースファイル

 16f1823_basic01.asm


PIC16F1705用基本プログラム
PIC16F1705BASIC 01 ソースファイル

 16f1705_basic01.asm


PIC16F1828用基本プログラム
PIC16F1828BASIC 01 ソースファイル

 16f1828_basic01.asm


追記 2017年09月

現在AitendoのHPには2種類表示があります。
①K-M7S8D7219
  ここで対象としている完成品モジュールです。
②M7SEGX8R-7219
  SOPのMAX2719をはんだ付けする組立キット形式です
  これは7セグLEDが大きくて、さらに見易いです

 しばらく部品箱に転がっていた②を組み立ててみた所・・・
 ①用のプログラムでは、②は正常動作しない事が判明しました
 両者はソフトウエア完全互換品では無い様です
 最大の問題点は、どちらも在庫切れのまま放置されています。 (-_-メ)
 これでは「PICキット」の標準モジュールとしては不適格です。

追記 2018年03月

ここで対象とする8桁7セグLEDモジュールを変更とします <m(__)m>
秋月電子で販売されている「DFR0090」としました。
今までのBASICプログラムは過去物として扱います
順次プログラムを対応していきます。
戻る  実験・製作の記録TOPへ戻る