2008年12月25日木曜日

MikroC

なんで、MikroCなんだよ。名前が変だろ?ってのは置いといて、
動作が、もっと変なので調べてみた。

<構造体が変>
コンパイラが吐き出すアセンブラソースを見るとソースを
_main:
CALL GlobalIniXXX
なんてのを呼び出してConstantなデータをデータメモリに書いている
で、気付いたが構造体だとバンク毎をデータを入れやがった。
これは、ショボイ構造体以外使うなと言ってるようなものだね。

<内部変数が変>
内部変数を外部変数に変更したら、WDTがリセットできなくなったぞ??
で、内部変数の割り当てを見てみたら・・・
$00E7 cmdTask_cc_L0
$00E7 getTimer_dd_L0
$00E7 Usart_Init_tmp_L0
へ~ェ、そんな割付するんだ

で、WDTがおかしくなった理由は、

つづく・・・

2009.01.13追記
まだ理由は、よく分かっていないけれど
char stat = 0;
てな、感じで変数を宣言した時点で初期化しまくれば期待通りに動くような感じ。

0 件のコメント: