マイクロコントローラ Basic Stamp
 
 米国Parallax社が開発したBasicStampというBASIC言語でプログラミング可能な制御用コンピュータを利用して初歩の制御の学習を行います。
 BasicStamp は郵便切手(Stamp)サイズのプリント基板にワンチップ・マイクロプロセッサ,プログラム用のEEPROM(electrically erasable programmable read only memory),クロック発信器,RS232Cインターフェース,及び+5Vのレギュレータを搭載した小規模な制御用コンピュータです。利用されているマイクロプロセッサは比較的小さな装置を制御する目的で設計されていて,汎用のワンチップ・マイクロプロセッサほどの能力はありません。このように電子機器の制御用に最適化された小規模のマイクロプロセッサをマイクロコントローラ(microcontroller)と呼んでいます。BasicStampはこのマイクロコントローラをBASIC言語でプログラミングできるように,BASICインタープリタをEEPROMに搭載したマイクロコントローラ(μコントローラ)です。
                    
1.Basic Stamp
(1) 規格
利用するBasicStampのモデルはBS2-ICで24-pinDIP サイズ(約3cm×1.5cm)の基盤にクロック周波数20MHzで動作するμコントローラPIC16C56c,2KByteのEEPROM,定電圧電源ICが実装されています。
 表1がBS2-ICの規格で,自由に読み書きできるメモリ:RAMは合計で32バイト,その中の6バイトは入出力(I/O)ピンの読み書き及び属性(入力か出力モードか)の設定で使われています。したがって自由に利用できるRAMは26バイトしかありません。
 μコントローラがどのような使われ方をするのかを示したものが図12-1です。16本ある入出力ピンの3本にLEDを接続して順に点灯させる動作を行う回路を実例として取りあげました。
 BasicStampを利用するとBasicでプログラムを書くことができます。プログラムはスタンプエディタと言うBasicStamp用に作られたソフトをパソコンで実行し作成します。そしてシリアルケーブルで接続したBasicStampにプログラムを転送し即実行させる事ができます。
 パソコンはプログラムの作成を行うだけで,プログラムはBasicStampの中で動作する。
 パソコンとBasicStampはRS232Cを通して通信を行うことができるので,BasicStampで計算した結果をパソコンに表示させることもできるので,まるでパソコンで計算しているように錯覚するくらいです。
 
(2) 学習用基板            
実習では本校で開発したBS2-ICを実装した学習用基盤を利用します。この基盤には電源として実習で製作した電源装置を接続するための端子と,ACアダプターを接続する端子があり,電気的にどちらか一方が自動的に利用できるような構造になっています。なお,定電圧電源装置が実装されているので電源端子に7V以上の電圧を加えると動作します。消費電流が少ないため006Pを接続しても動作可能です。プログラミングとプログラムが実行している時にパソコンと通信するためのシリアルコネクタがあります。BS2-ICの16本ある入出力ピンのP0〜P7にはスイッチ,P8〜P15にはLEDが接続してあります。このように,プログラミングと動作確認が簡単にできるように工夫されています。さらに16本のI/Oピンに接続されたコネクターが実装されていて,簡単な実験回路を組んでBasicStampで制御の実習が可能です。
 図がBasic Stampでのプログラムの作成から実行までの概念を説明しています。パソコンでプログラムを作成し,シリアルケーブル経由でBasicStampに転送し(ダウンロード),間違いがないか動作させながら確認します。完成後はケーブルを外しBasicStampだけで実行させることができます。プログラムはEEPROMに格納されているので電源を切っても消えません。また電源ONで自動的に実行が開始されます。 
 
(3) PBASICの概要
BasicStamp用のBasic,PBASICの概要を説明します。BasicStampに利用されているμコントローラPIC16C56cは機械語で動作しますが,内蔵されたBASICインタープリタで命令は解釈・実行されるので外から見ると全く機械語は見えません。機械語でのプログラミングはできない仕様になっています。このことからPBASICがBasicStampの機械語であると考えることもできます。従って内部の構造も入出力ピンの16本とシリアル通信に2本,26バイトのRAM,2KバイトのROMをもったCPUと考えることができます。表2のプログラムを実行するとLEDが順に点滅します。このプログラムを実行したときのメモリーマップ(メモリーの使用状況を一覧にした図)は図4になります。
 ダウンロードされた命令は,PBASICが解釈できる中間コードに変換されてEEPROMに保存されます。プログラムは最終番地(7FF)から最初の番地に向かって割り当てられていきます。この中間コードをPBASICインタープリターがμコントローラPIC16C56cの機械語に翻訳しながら実行していきます。
 プログラムの中で利用されるデータ,または計測などで測定したデータをWRITE命令でEEPROMに書き込んでいくとデータは最初の番地から最終番地に向かって割り当てられていきます。このことからプログラムメモリとデータメモリの合計は2Kバイトに制限されています。少ないように感じますが,命令が中間コードに置き換えられているのでPICの機械語に換算すると数倍の命令数に対応し,かなり複雑なことも可能です。
 
2.プログラム作成からデバッグまで
 BasicStampでプログラムの作成からデバッグ,実際の動作までの流れを3つのLEDを順に点滅させる簡単なプログラムを使って解説することにします。学習用基板に7V以上15V以下の電圧を加えます。このとき発光ダイオードが点滅を繰り返す場合があります。これは以前に作成したプログラムが自動的に動作しているためです。次にパソコンとRS232Cケーブルで接続し,BasicStampEditerを起動します。
(1) 回路の説明
 この基板には8個のLEDが実装されています。このLEDは電流制限抵抗を介してBS2-ICのI/OピンP8〜P15に接続されています。LEDの下に記載されている数字がI/Oピンの番号で,I/Oピンの出力を1にするとI/Oピンに5Vが出力され,対応するLEDが点灯します。
(2) スタンプエディター 
@BASIC Stamp Editor v2.2.5のアイコンをクリックしスタンプエディターを起動します。初めに
メニューバー:Directiveより次の設定をします。
 Stamp   → BS2 
 PBASIC  → Version2.5
 Port → COM1   を選択する。
 
なお,COM1以外のポートに接続されている場合もあるので,うまく認識できない場合は切り替える。
A右のプログラムをキーボードから打ち込む。
B をクリックする。文法がチェックされ間違いがあればデバッグし,再度を押し間違いがなければプログラムはシリアルケーブル経由で
BS2-ICにダウンロードされ,実行される。
CLEDが順に点滅する。    
(3) 命令の説明  
@ outh ピン変数。I/Oピン割り当てられた変数。outhは上位8ビットの出力値を設定する
A dirh dirhは1で出力,0で入力に設定するピン変数
B goto 制御の流れを変えジャンプする命令 start:はラベルでジャンプする位置を示す
C PAUSE  500 500mS(0.5秒)間命令の実行を停止する。