Sim's blog

電子工作はじめてみました

ICFP 2008プログラミングコンテストがはじまっています

2008-07-12 14:13:05 | ICFPプログラミングコンテスト
たぶん夜中の4時にはじまっているみたいです。昼頃起きだしてきたので既に8時間は経過しています。

ICFP programming contest 2008のページ
課題のページ
FAQのページ
テスト用サーバーのダウンロードページ

ささっと眺めてみました。英語読解力があやしいので色々勘違いしているかもしれません。

今年の課題は、火星の無人探査車を遠隔制御して基地に帰り着くための制御プログラムを書くことです。速く帰りつけたプログラムが優勝です。
遠隔制御なので通信に遅れがあります。センサーからの情報が定期的に送られてきて、状況を判断して無人探査車にコマンドを送信します(ここでも遅れがある?)。基地は原点にあって、自分のx, y座標がセンサー情報から分かります。まっすぐ向かえばいいわけではなくて、色々な障害物を避けながら進まなければいけません。障害物は岩、クレーター、火星人(!)があります。フィールドは長方形ですが、端を越えようとするとバウンドして向きが変わるみたいです。岩もバウンドするみたいです。クレーターは落ちると爆発、火星人もつかまると死亡です。岩とクレーターは動きませんが火星人は動き回っています。無人探査車も含めて全ての物体は円形です。岩は視界をさえぎるので、岩の向こうに何があるか分からないみたいです(まわりこめば分かる?)。

課題のページに載っていたフィールドの様子です。

左上に無人探査車がいて、茶色(c)がクレーター、灰色(b)が岩、赤が火星人です。中央の緑がゴールです。

フィールドの大きさやセンサーの性能や初期位置は、一番最初に送られてきて、1秒後にスタートです。こちらから送れるコマンドはアクセル、ブレーキ、ハンドル左右等です。
プロトコルの詳細は課題のページに載っています。

センサーで見える範囲は楕円です。無人探査車は楕円の焦点にいます。


プログラムはlinuxで動くようにします(windows不可)。通信はTCP/IPです。受信や送信はsocketプログラミングをする必要があります。プログラムの動作環境がLIVE CDという形式で配布されています。KNOPPIXというlinuxのCDで、CDブートできるようになっています。この環境で動作するプログラムでなければいけません。テスト用のサーバーの配布も行われています。
コンテストへの応募はプログラムを含む実行環境のディレクトリをtgzに固めて送ると開催者側で何回か実行して実行時間を測定するみたいです。

私はというと、linuxって何?ネットワークプログラミングって何?みたいな状況なので、まだ何もしてません(笑)。とりあえずLIVE CDはダウンロードしてみました。マイクロマウスや知ロボをやっている方が得意そうな課題だと思いました。

武蔵野電波のブレッドボーダーズ

2008-07-11 00:36:33 | 電子工作
PC WATCH武蔵野電波のブレッドボーダーズという連載が始まりました。まだ初回なのでブレッドボードそのものの紹介です。これからどんな展開になるのか楽しみです。

スタパ齋藤さんのblog「スタパブログ
ケータイWATCHのArduinoの記事1「Arduinoでマイコンしよう!!
ケータイWATCHのArduinoの記事2「もっと使うゼ!! Arduino!!

スタパさん、ノリノリです。

トラ技2008年8月号付録基板

2008-07-11 00:11:35 | その他のマイコン
8bit USBマイコンボードが付録についています。特集も「USBマイコンによるI/O制御入門」です。搭載されているuPD78F0730はFLASH16k(うち8kをトラ技BIOSが使用)、プログラムをおけるRAMが2k、データ専用RAMが1kとメモリがいっぱい載っています。
ドライバだけインストールして、teratermで遊んでみました。RAM上にプログラムをロードできるそうなので、はんだづけが一切なしで遊ぶことができます。
ブートローダを使わない書き込みもできます。2008年1月号の付録基板のRS-232Cレベル変換ボードを使った書き込み基板の例もあります。
特集の記事は全てなひたふさんが書かれています。

マルツで部品セットの販売(399円)が始まっています(リンク)。
28pinの連結ソケット(150円)は秋月でも売っています(通販番号P-00267)。ポリスイッチは500mAのもの(50円)です(通販番号P-01355)。USB-Bコネクタ(50円)もあります(通販番号C-00161)。ピンヘッダとジャンパピンがある場合は秋月でばらで買った方が安いですが、通販で買う場合にはマルツの方が送料が安いのでお得になります(秋月は送料+代引き手数料で800円、マルツは450円もしくは7000円以上で無料)。

若松でも部品セットの販売(400円)が始まっています(リンク)

来月号は、「グラフィック液晶付きマルチテスタの製作」の基板が付録です。uPD780730はA/DやD/Aがないので基板写真にはアナログ系のICを実装するシルクがいくつもあります。

MAX148 10bit A/D
MAX548A 8bitデュアルD/A
MAX4167 R-Rオペアンプ×2
MAX660 電圧コンバータ(負電源)
MAX3232 RS-232レベル変換
74HC4094 8-Stage Shift-and-Store Bus Register

Maximばかりですね。Maximのって、なかなか売ってないような気がするんですが、マルツで買うしかないのかな?digikeyだと非在庫保有商品だったり、1個800円くらいだったりします。
グラフィック液晶はSUNLIKEのものみたいです(リンク)。秋月だとSG12232Cを1000円で売っています(通販番号P-00714)。秋月のものがつながるかどうかはまだ分かりません。

とりあえずはツールのインストールしなきゃ。って、いくつ入ってるんだろ。

ATTiny2313のヒューズの出荷値

2008-07-10 02:11:39 | AVR
ATTiny2313は秋月で100円で売っているAVRマイコンです(通販コードI-01600)。

AVRにはヒューズビットというのがあって色々な設定をchip内に覚えています。ヒューズビットは電源を落としても内容が消えません。いくつかの設定はプログラミングモード(AVRにプログラムを書き込む方法ISP, PP, HVSP等)と関係しています。プログラミングモードはいくつかあるみたいですが、通常使うISPという方法だと一旦変更すると元に戻せなくなるヒューズの設定もあります(他のプログラミングモードで元に戻します)。
ヒューズの設定の意味がいまいちよくわかっていませんが、少なくともATTiny2313の場合はリセットなしの設定もしくはデバッグワイヤありの設定にしようとすると、ISPできなくなるという警告が出ます。また、外部クロックをつけていないのに外部クロックの設定にすると、ISPできなくなります(外部クロックをつければISPできるようになります)。他にもあるかもしれません。

データシートにも載っていますが、メモがわりにATTiny2313のヒューズ設定の工場出荷値を載せておきます(クリックすると拡大します)。


ヒューズの他にロックビットというのもあって、こちらは書き換えると元に戻せなくなるようです。

とりあえず、お約束というか、あまり分からずにヒューズビットをいじっていたら戻せなくなりました(笑)。STK500は高電圧プログラミングもできるので、なんとか元に戻せました(要ジャンパ変更)。

トライステートのプリミティブ

2008-07-03 23:56:00 | FPGA
トライステートのプリミティブのメモ

bufif0 u1(Z, A, G);
 G = 0のとき、Z = A
 G = 1のとき、Z = z
等価な記述 wire Z = G ? 1'bz : A; // wireはtriも可, G = 1または0のときのみ

bufif1 u2(Z, A, G);
 G = 0のとき、Z = z
 G = 1のとき、Z = A
等価な記述 wire Z = G ? A : 1'bz;

notif0 u3(Z, A, G);
 G = 0のとき、Z = ~A
 G = 1のとき、Z = z
等価な記述 wire Z = G ? 1'bz : ~A;

notif1 u4(Z, A, G);
 G = 0のとき、Z = z
 G = 1のとき、Z = ~A
等価な記述 wire Z = G ? ~A : 1'bz;

trireg z;
ラッチの一種、入力が全てzのときは最後の状態を覚えています。バスに使えますが、xilinxのISEでは未サポートのエラーになります。
bufif0, bufif1, notif0, notif1は等価なverilog記述がありますが、triregをverilogで記述する方法は分かりませんでした。今時、使うこともないんでしょうがとりあえずメモ。

7/4 追記 等価な記述が全部逆になっていたので直しました。のりたんさん、ありがとうございます。