インターフェース付録マイコンを試す(1)
先日某所にあつまってインターフェース付録基盤で遊んできました。
→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で書かれているのね。
加速度センサー(基板上に載ってる)の値を表示する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