Lynx-EyEDの電音鍵盤 新館

広帯域制御屋の駄文とか

秋月200円MIPSの試食

PICネタは4年ぶりでしょうか。
MIPS32 M4Kコアが載ってるPIC32MXシリーズですが、
これの300mil DIPが秋月で200円前後で扱われ始めました。

I2SやUSBデバイスも搭載しているので興味津々です。 
http://akizukidenshi.com/catalog/g/gI-05852/

自分も流行に乗り遅れまいと
PIC32MX220F032Bを買いました。

f:id:Lynx-EyED:20120616231609p:image
1レール15個

全部で3レール

買い過ぎですね(ぉぃ

PIC周辺も様変わりしており、PICkit2,3など安いICDが出回ってるんですねぇ。
ついでに一部で悪名高いPICkit3も購入。いまのところ、PICkit2だと秋月で売ってるPIC32MXはプログラムを書き込めないようです。
いろいろ脅されてたので覚悟はしてたつもりなんですが・・

■動作確認用ボードの用意
とりあえず、部品箱にあった有り合わせで、動作確認できる最低限の部品取り付け完了

f:id:Lynx-EyED:20120616220540j:image
(写真:表)
f:id:Lynx-EyED:20120616220605j:image
(写真:裏)
裏にはVCAP端子用の低ESRのチップコンデンサなどを実装。

ちなみに動作確認する際の最低限の構成はデータシートDS61168CのP.27に示されています。
アナログ電源を使用しない場合のデジタル電源との接続や、VUSBはUSBを使わない場合はVDDに結線するようにとの指示もあり、推測で作業しなくてよいので便利です。
f:id:Lynx-EyED:20120616231611j:image


また、PICkit3と接続するにはVDD,VSS,MCLR,PGEDx,PGECxが必要になります。
PGEC/D端子は複数ありますが今回は、PGED1,PGEC1を使用しました。
電源以外で書き込みに必要な端子を赤でハイライトしています。
f:id:Lynx-EyED:20120616231617j:image


■MPLAB X IDEから書き込む
せっかくなのでMacで動かしてみようと言うことに。
一生懸命コード書いてエラー出したらどこで間違ってるのか分からなくなるので、すでにIDEの中に用意されているpic32_template_1というexampleコードをコンパイルして書き込めるかだけ確認。

コンパイルは無事終わったみたい

あれ?

あれ??
f:id:Lynx-EyED:20120616231613p:image
(この画面から先にすすまない)

ちなみにエラーが

Connecting to programmer... 
The programmer could not be started: Could not acquire hardware tool communications resources: PICkit3PlatformTool SN#BUR…..

やまねこさんによると、PICkit3はデバイスごとにファームを書き換えるんだけれども、ファーム書き換えに失敗したのではないかと。
ググるとどうやらビンゴ。

f:id:Lynx-EyED:20120616153452j:image
(このときのPICkit3の写真。STATUSランプが全く点灯していない)

いろいろ試行錯誤したもののどうにもならないので、BootcampでWindowsでブートし、Win版のMPLAB IDEでPIC32MX220F032Bのプロジェクトを作って、書き込みさせたところ、PICのデバイスIDも読み出せるので直った模様。。

懲りずにもう一度Mac OSXに移動
f:id:Lynx-EyED:20120616231615p:image
おお、動いた。
書き込みが終わるとSTATUSが緑色に。
f:id:Lynx-EyED:20120616230411j:image

■余談
PIC32MXのコンパイラはxc32-gccを使っているのですが、フリー版は-O0オプション以外使えない罠があります。
試しにビルド時のオプションを確認してみました。

$ xc32-gcc -v

Using built-in specs.
COLLECT_GCC=xc32-gcc
COLLECT_LTO_WRAPPER=/Applications/microchip/xc32/v1.00/bin/../pic32mx/bin/gcc/pic32mx/4.5.1/lto-wrapper
Target: pic32mx
Configured with: ../../src45x/gcc/configure --target=pic32mx --program-prefix=xc32- --disable-threads --disable-libmudflap --disable-libssp --enable-sgxx-sde-multilibs --with-gnu-as --with-gnu-ld --enable-languages=c --disable-shared --enable-static --with-newlib --disable-nls --enable-gofast --disable-shared --disable-libgomp --without-headers --disable-libffi --disable-bootstrap --disable-decimal-float --disable-libquadmath --disable-__cxa_atexit --disable-libfortran --disable-libstdcxx-pch --disable-hosted-libstdcxx --prefix=/xc32/builds/xc32-XC32-release-1.00-20120119/Darwin-image --libexecdir=/xc32/builds/xc32-XC32-release-1.00-20120119/Darwin-image/pic32mx/bin --with-dwarf2 --with-libelf=/xc32/builds/xc32-XC32-release-1.00-20120119/native-build/host-libs --enable-lto --with-gmp=/xc32/builds/xc32-XC32-release-1.00-20120119/native-build/host-libs --with-ppl=/xc32/builds/xc32-XC32-release-1.00-20120119/native-build/host-libs --with-cloog=/xc32/builds/xc32-XC32-release-1.00-20120119/native-build/host-libs --with-bugurl=http://www.microchip.com/support --enable-cxx-flags=-ffunction-sections
Thread model: single
gcc version 4.5.1 MPLAB XC32 v1.00 (Microchip Technology) 

ありゃー。最適化できない上に、C++も使えるか怪しいですね。。
とおもったら
マイコン風雲録::秋月でPIC32MX 28pin DIP版出る
マイコン風雲録さんのところで、Pinguinoのmips-gccが制限がないことを知る。
いつかみたいにmips-gcc野良ビルドしなくても良さそう。

その後、Lチカもできました
http://ecrafts.g.hatena.ne.jp/Lynx-EyED/20120705

■参考
PICkit 3 now working on OS X !!!
PIC32MXXX/2XX Family Data Sheet