インターフェース付録マイコンを試す(1)

fslasht2008-08-28


先日某所にあつまってインターフェース付録基盤で遊んできました。
Interface 付録ColdFire基板特設ページ


 68000の流れを汲むColdFireマイコン(MCF52233)の基盤です。
 イーサネットのI/FもあるのでコネクタをつければLANにもつながります。いろいろ応用できそうですね。


3冊買っちゃいました。


● じゃあ早速組み立ててみよう


 パルストランス入りのイーサネットのソケット(RJ45)や電源のACアダプタ、DCコネクタがが必要なのですが、間違った部品かってもつまらないので若松通商で売ってた全部いりセットを買ってきました(インターフェース 9月号付録 基板周辺実装部品一式)。ラジオ会館4階のお店で売ってます(アゾンの隣w)。3000円。
 パルストランス内臓RJ45ソケットも790円で単品売りしているので次からはこれだけを買えばいいでしょう。




部品取り付けイメージ


取り付け完了

LANにつないだらちゃんとランプがついたよ!
HUB側では10Mbpsで認識(あとで設定ファイル変更したら100Mbpsで接続できました)。


リセットスイッチを取り付けた




PCからPingも通る



Telnetで接続して、MACアドレス設定。
設定ツールは、SilentCで書かれているのね。



なんとWebサーバが動いている。



加速度センサー(基板上に載ってる)の値を表示するCGI
すごいすごい



ブラウザからポートのON/OFFもできるので、
ブレッドボードにのせてLEDをON/OFFしてみる。


成功。
(ブレッドボードにのせたら、幅がキツキツですね。とりあえず片側のピンしかつかわないのでずらして載せた)


マイコンボードのIPアドレスなどもブラウザで設定できます。
(ブラウザからCGIとしてSilentCで書かれたプログラムを呼び出す仕組みになってました)



 内蔵のSilentCは、昔のBASICみたいに行番号つきでプログラミングします。
 TELNETでつないだらそのままプログラム開始。
 インタプリタなので試しながら組めるのがいいですね。


 さて、では手始めにLED ON/OFFでもしてみっか・・・
 と思ったら、GPIOを操作する関数がありません。えー?
 D/Aコンバーターを使ったアナログ入力や、シリアル入出力の関数群はあるのに基本ぽいGPIOがないなんて・・・プンスカ


 うーん、ほかの機能とぶつかるからあえて実装しなかったのかあ。


 これは、ドライバーとか書かないといけないのかな・・・と思いましたが、よくかんがえたらI/Oポートはメモリマップドだから当該番地のメモリを普通に読み書きすればいいのか。


 とりあえずインターフェース誌にのってたメモリマップをみると、0x40000000番地からがI/Oポートのようです(32bitマイコンはアドレスが長いなー)。
 この辺をダンプして見ました。


10 main() {
20 PrStr("START\n");
50 char *a;
60 int i;
70 a = 0x40000000;
80 for ( i=0; i<1024; i++ ) {
90 PrHex( a );
100 PrChar( ':' );
110 PrHex( *a );
120 PrStr("\r\n");
130 a++;
140 }
150 }

save Main
して
run

40000000:00000040
40000001:00000000
40000002:00000000
40000003:00000001
40000004:00000000
40000005:00000000
40000006:00000000
40000007:00000000
40000008:00000020
40000009:00000000
4000000a:00000002
4000000b:00000000
4000000c:00000000
4000000d:00000000
4000000e:00000024
4000000f:00000000
40000010:ffffff80
40000011:00000001
40000012:00000000
40000013:00000000
40000014:00000000
40000015:00000000
40000016:00000000
40000017:00000000
40000018:00000000
40000019:00000040
4000001a:00000000
4000001b:0000000c
4000001c:00000030
4000001d:ffffffe1
4000001e:00000000
4000001f:00000000
40000020:00000003

 お、なんかそれっぽいデータが表示されたぞ。
 でも途中でハングアップ。なんか、アクセスしてはいけないとこを読んでしまったようです(4000007e)。


 まあでも、SilentCでもポインタは普通に使えることがわかって一安心。


 じゃあ、ColdFireリファレンスマニュアルを見てと・・・
「Chapter 14 General Purpose I/O Module」


 なんかGPIOいっぱいある・・・
 PORT DD,AS,QS,TA,TD,TC,UC,UB,UA,AN,NQ,LD,GP


 とりあえず基盤の右側にでてるのは、TA(GPT[0]-[3])とかAN(PAN[0]-[7])だな。
 じゃあ、早速操作してみよ・・・あれ?


なんでこんなに制御しないといけないレジスターがあるのー?
Port Output Data Registers
Port Data Direction Registers
Port Pin Data/Set Data Registers
Port Clear Output Data Registers
Port Pin Assignment Registers
Port Pad Control Registers


 HCS08でいうところのPTAD,PTADD,PTAPE とかに相当するのってどれ? ←いまココ




● 参考URL

・データシート
http://www.freescale.com/files/32bit/doc/data_sheet/MCF52235DS.pdf


・リファレンスマニュアル
http://www.freescale.com/files/32bit/doc/ref_manual/MCF52235RM.pdf


・付録基盤の回路図
http://www.cqpub.co.jp/interface/download/2008/09/kairozu.pdf


・加速度センサーのデータシート(MMA7360)
http://www.freescale.co.jp/pdf/MMA7360Lr1.pdf