コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

ちょいと前に秋月電子通商に入荷して話題となっていた PIC32MX の DIP パッケージ版。
PIC32 ということで 32bit MIPS アーキテクチャのマイコンなのだけれども、アマチュアにうれしい DIPパッケージということと 200円前後という価格でホビースト絶賛。みんな DIP パッケージ好きね。
今回はそれを入手した手始めとして、開発環境をインストールしつつ伝統の「LEDチカチカ」させてみた。


秋月に入荷した PIC32MX にもいくつかグレードがあるのだけれども、私の目的に合致したのが上位グレードのやつだったので今回は PIC32MX220 をチョイス。
といってもこれも 220円。お安い。

この後、NXP の Cortex0M ARM アーキテクチャ DIP パッケージマイコンである LPC1114FN28 が入荷して、これまた 190円 とお安く、ARM であることも相まって盛り上がっている次第。
でも個人的に魅力を感じるのは PIC32MX220 の方だったのでこれでおK。
理由は後述。



開発環境はこれまでの MPLAB に代わって、新世代の MPLABX なるモノが提供されている。
昔懐かしの MPLAB を捨ててこれを試してみる。
IDE は JAVA 上で動き Win/Mac/Linux をサポートしてる。JAVA ということで Eclips を連想するが、これは NetBeans ベースらしい。なるほど。
以前はちょっと複雑だったコンパイラ関係が仕切り直しでわかりやすく整理された模様。
XC8/XC16/XC32 と整理されたパッケージ名になり、Free/Standard/Pro とランク分けされてアマチュアが無料で利用できる Free という枠が明確に用意されたようだ。Standard/Pro は有料枠で、上位グレードほど優れた最適化が利用できるといった塩梅。まあ、リンクオブジェクトサイズに制限かけられるよりかはまだ納得性が高くて良いかもしれない。アマチュアレベルではそんなに速度にこだわることやんないし。

まずは PICkit3 でデバイスを認識して、erase と読み書きができることの確認から。


ブレッドボード上で、電源と ISP(書き込み)に必要な最低限のラインを配線。


パスコンとかはしょって最低限の回路がこんな感じ。
LED は確認後に付けているので、この段階ではまだ無い。

この最初に認識させて読み書き消去ができるためにずいぶんと試行錯誤した。
はまりポイントは以下の2つ。

  • アナログ回路用の AVdd にも電源を供給しないと動作しない
  • VCap は内部コア用のレギュレータ出力らしく、キャパシタを付けないと動作しない

この2点については省略不可能なので注意。

書き込みアプリを起動して消去と読み出しができることを確認。
ここまで来れれば後はプログラムを書き込むだけなので、LEDチカチカまではあっという間だ。

LEDチカチカのコードダイジェストは以下の感じ。
実際のコードから抜き出しなのでこのまま動くかは保証しない。

#pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF
#pragma config POSCMOD = HS, FNOSC = FRC, FPBDIV = DIV_8

void __ISR(_TIMER_1_VECTOR, ipl2)Timer1Int(void) {
    mT1ClearIntFlag();
    mPORTAToggleBits( BIT_0 );
}

int32_t main(void)
{
    SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);

    mJTAGPortEnable(DEBUG_JTAGPORT_OFF);
    mPORTAClearBits( BIT_0 );
    mPORTASetPinsDigitalOut( BIT_0 );
    OpenTimer1(T1_ON | T1_SOURCE_INT | T1_PS_1_64, 15625);
    ConfigIntTimer1(T1_INT_ON | T1_INT_PRIOR_2);

    INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR);
    INTEnableInterrupts();

	while(1) {
	}
}

MPLABX 1.30 用のプロジェクト&ソースコードは以下
Download: pic32_sample_timerled.X.zip


そんなこんなで無事 LED チカチカができた。


ビルド時に使用メモリとか表示されないなーと思っていたら、プロジェクトウィンドウの1つに表示されていた。

~~~~~
さて、PIC32MX220 に魅力を感じていると書いたが、それはこのチップが USB を所有している事にある。
USBコントローラ内蔵マイコンも珍しくなくなってきたけれども、最近の PICマイコンに載っているのは OTG 対応である。つまり USB ホストにもなるということだ。
流石に速度は遅いらしいのだけれども、USB ホスト/ターゲットになり得るマイコンが 220円というのは魅力ではないだろうか。
秋月で扱っている PIC32MX では 1** は USBを持たない型番なので 2**の PIC32MX210 と PIC32MX220 が対象となる。

で、なんで USBホストかというと、Android からマイコン機器の制御をするということがやってみたいので。

Raspbetty Pi なんかも面白いことは面白いのだけれども、パワー/メモリ/ディスプレイ/タッチパネルインタフェース/ネットワークと全てがそろった激安 Android タブレットがごろごろしているので、これから電子工作成果物を制御できたら面白かろうと思うわけですよ。
いわゆる「中華タブレット」と言われる激安タブレット1個と Android ADK で面白いことができそうだと考えていた次第。

で、Android ADK には USB Host が必要で、実際 Eval board には USB Host を持っている PIC24FJ256DB110 が載っている。
これを PIC32MX220 でやるのがよかろうと思っていたのですな。
けど、Android ADK をもそもそいじっているとなんか今ひとつ。
まず、Android ADK を認識しない Android 機器がある。先の「中華タブレット」はドライバーが無いのかまったく認識せず。
次に認識が甘くよく失敗する点。これも機器個体差だけれども、認識率が悪かったり接続や電源投入手順が必要だったりしてどうもいまいち。

そんな感じでしょげていたところトランジスタ技術 2012/9月号に興味深い記事があった。
「1Mbpsが数十m飛ぶ! Bluetooth対応のワイヤレスPICマイコンI/O基板」がその記事なのだが、市販の USB Bluetooth ドングルを PIC USB host に接続して各種機器と通信ができるのだという。
Bluetooth ドングルはすでに技適通過済みだから利用しても電波法違反には問われないし、USB もターゲットじゃくてホストだから、ベンダーID/プロダクトID 問題が発生しない。
これはかなり有用で応用範囲の広いソリューションなのではないだろうか。
まあ通信速度に期待はあまりしないにせよ、簡単な制御用のリモートコマンドには使えそうだ。

WEB上での情報。

てなわけで、是非ともこの USB Bluetooth ドングルを用いた通信モジュールを作って、Android や PC から無線で制御をしてみたいのです。
今回はその足場固め。
「千里の道もLEDチカチカから」

Leave a Reply