PICAXE -Basicで動かすマイクロコントローラ

20年以上前になるがBasicStampというベーシックで動かせるマイクロコントローラーが世の中に出てきた。(今でも健在) それなりに興味があったわけだけれど、始めるのに100ドルくらいはかかりそうだったので、それがバリアになり、手を出さずにいた。 PICマイコンというのが世の中に出回り始め, Basic StampというのはこのPICをベースにしたBasic 内蔵のボードだったわけで、 面白そうだったけれど開発環境を作るのが面倒くさそうで手を出さずにいた。
そのうちAVRマイコンを使ったArduinoが開発され、これは30ドルのボードを買ってきて手持ちのパソコンにつなげればすぐに開発が始められるという手軽さ。 多くの電子工作入門者、あるいはメーカーと呼ばれる人々はArduinoでこの世界に足を踏み入れた、というのが現在の状況だと思う。
今回、ひょんなことからPICAXEというチップの存在を知った。PICベースでBASICを内蔵させた開発環境だという。一番小さな8ピンのPIXACE08M2というのがsparkfunで購入して一個$2.95.プログラミングに必要な3.5ミリのステレオジャックを含んだプロトキットが4ドル。 一番高いのがパソコンに接続するためのUSB/シリアルの変換ケーブルで、これが25ドルしているのだが、Sparkfunのオリジナルで15ドルのUSB Programmer が代用できる(ただし、別途ステレオプラグケーブルが必要) というわけで入門価格として
PICAXE 08M2 X 2 = $5.90
PROTOKIT X 1 = $3.95
PROGRAMMER X 1 =$14.95
ステレオプラグケーブル:手持ち品を流用
USB – MINI USB CABLE 手持ち品を流用
5v 電源 手持ち品を流用
送料 $6.00
合計$30.80 となり、 価格バリアもクリア  したので購入し、試してみた。

開発環境はPICAXE のホームサイトからダウンロードできる。 オリジナルのpicaxeは4mHZで動いていたようだが、最新のM2シリーズは32MHzと高速になっている ただし、普通に動かすとBasicは4Mhzで動作し、疑似的に4本までの並列処理が可能になる。

8ピンのチップと言っても電源とグランド以外のピンは6本とも入出力ピンに使えるし、PWM出力やアナログ入力もこなせる。なかなか使い勝手のよさそうなチップである。 ピンの出力も20mAまでOKなのでArduinoと同等だ。

LEDを点滅させるプログラムは以下のようになる。

main:
high c.1
pause 500
low c.1
pause 500
goto main

昔なつかしのBASIC言語である。 いまとなってはGoto文が新鮮に見える。 プログラム用のメモリーは2048byteあるが、Tokenizeされてチップ上にアップロードされる上のコードは14バイトにおさまる。

これで出力ピンにLEDと抵抗を直列に接続すれば、1秒ごとに点滅するLED回路となるわけだが、 32Mhzで動かした場合、どれくらいの速さで出力ピンを操作できるのか試してみた。 最初のコマンドでBasic を8倍速させている。

setfreq m32
main:
high c.1
low c.1
goto main

これでC.1のピン波形をとらえたのが以下

Manupulate picaxe pin

PICAXEピン出力

 

Hi出力の幅が36マイクロ秒に対し、Lo出力の幅は126マイクロ秒, 周波数6.156Kということになる。Hi,の出力にくらべてLowの出力が長いのは、gotoコマンドの実行に時間がかかっている、ということだろうが、 32Mhzのマシンサイクルに対して出力できたのが6Khz。 Basic Interpreterで動作させることのオーバーヘッドがいかに大きいかがわかる。 ちなみにPICAXEのサイトでは1秒間に実行できるBASIC命令文は約4000と説明されている。

実際にいたずらするには問題のない実行時間だと思う。 さらに、もっと細かいパルスを出力するためのServo や 内蔵PWM出力用のコマンド、あるいは可聴域信号を発生するためのtune コマンドなどが別に用意されているから、パワフルなマイコンであることに変わりはないが


Pause 1

できっちり1ミリ秒遅らせられるわけではない、ということがわかる。

それにしても、何度もいうけど電子工作するのに本当に便利な世の中になったもんだ。

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.