出来上がったCPUボード。とりあえずマイコン類を
ソケットに差し込んで、AVR-ISPmkⅡから
ちゃんとアクセス出来るのか、接続確認をしてみました。
TINY2313のボード、TINY861のボード、
MEGA88のボードについては、書き込むべきプログラム
を用意するのは面倒なので、とりあえずコンフィグビット
を読み出してみるだけやってみたところ、とりあえず
エラーらしいメッセージは出ず。
ok、ok。
AD595+MEGA48のボードは、とりあえず
高価なAD595を壊すとイタいので、MEGA48と
ADM3202だけ挿して、簡単なプログラムを書いて
PC(tera term)とシリアル通信をやってみる
だけやってみました。
AVRstudioでgccのプログラムをでっち上げて、
9600bpsのシリアル経由でMEGA48とコンニチハ。
→無事送受信ともokなことを確認完了。
それにしても、またハマりましたよ。…シミュレータ。
AVRstudioの最適化のデフォルト設定値ですよ。
コンパイラの最適化設定って、デフォルトで-Os
になってるんですが、そのままだと最適化が効き過ぎて、
シミュレーションの時に不自由が。
最適化時に省略されたロジックがシミュレーション時
にも当然すっ飛ばされるので、ステップバイステップで
シミュレーションしようとすると上手く行かない…
というわけで、最適化オプションを-O0に変更して
再度シミュレーション。とりあえず想定どおりに。
最近アセンブラばかりだったので、すっかり忘れてた。
そうは言っても、やっぱりgccとアセンブリ言語
ではシミュレーションのきめ細かさっていうのがやっぱり
ちがうんだなぁ…
アセンブリ言語では細かいところまで手が届く…
1クロックまで、1ビットまで…細かいところまで
あれこれ見たりモディファイしたり出来るんだけど、
gccの場合はシリアル通信用のレジスタファイル
(UDR0)のモディファイが上手く取り込まれない…
シリアル出力の結果はそれなりにURD0に反映される
んだけどなぁ…
アセンブラのときでも確かUDR0の読み出しは微妙な
ものがあったなぁ。それというのも、UDR0レジスタ
が読み書き共用って言うのが問題なんだよな。
でも、アセンブラならクセが判ればなんとかなる
んだけど、gccはアセンブラソースレベルで
シミュレーションするわけじゃないから、あまり
こまかいところまで弄れないんだよな…
細かい事いうと、UDR0は物理的には読み込み元と
書き込み先が内部構造としては別物だから
レジスタ番号が一緒でも困ることは無いんだけど、
シミュレータの場合はレジスタ番号毎にしか読み書き
できないってから、それが原因で不便が起きるん
だろうな…
シミュレータだけはUDR0の読み出し用/書き込み用
のエリアを分けて表示してくれればいいんだけどなぁ…
まぁ、いずれにしてもAVRのgccについては
最適化レベルは0にしておく(最適化を全く
行わない)のが吉なのかも知れません。
じゃないと、シミュレータでは動作確認なんて
やれたものじゃないっす…
そういえばICE環境を手に入れればもうすこし
まともになるのかなぁ…?
あ、ICEといえば、やねうらおさんやtokoyaさん
のブログで以前取り上げられていたKEE Electronics製の
AVR JTAGICE mkII互換機の話。
http://www.keeelectronics.com/catalog/product_info.php?products_id=50&osCsid=47906acecd407ed4b0e1f988d70e728f
最近やっぱり気になっていて、買おうかどうしようか
迷ってます。円高の今のうちに…
この話はまた今度。
そうそう。
KEE ElectronicsのICD2.5 Debugger互換機は$49.94で
お買い得って感じなんだけど、なぜAVR用の
JTAGICE mkII互換機は$99.95もするのかな?AVR
フリークの足元をみてるのか?
うーん。
|
|
|
|
|
|