「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



出来上がった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
フリークの足元をみてるのか?

うーん。



コメント ( 0 )