ASPのSkyeyeターゲットのタイマについて
以前にタイマが進むのが遅いって書いたけども、少しコードを見てみることに。
target_timere.hには以下のように書いてある。
/* * タイマ値の内部表現とミリ秒・μ秒単位との変換 * * AT91SAM7Sでは,タイマは5.99Mhzでカウントアップする. */ #define TIMER_CLOCK 5990U #define TO_CLOCK(nume, deno) (TIMER_CLOCK * (nume) / (deno)) #define TO_USEC(clock) (((SYSUTM) clock) * 1000U / TIMER_CLOCK)
というわけで、AT91SAM7Sの動作クロックがそのまま使えれているようなので適当に変えてみることに。
しかし変わらず
上のTIMER_CLOCKの値を変えても、タイマーの動作に全然変化がない。
で、さらにコードを追ってみるとtarget_timer.cがこんなことに...
/* * タイマ関連の設定 */ /* 周期を設定 */ sil_wrw_mem((void *)TIMER_1_RC, 0x0000800); /* 周期を有効にする */ sil_wrw_mem((void *)TIMER_1_CCR, 0x0000001);
......
というわけで、本家dev68kのコードにあわせて
CLOCK cyc = TO_CLOCK(TIC_NUME, TIC_DENO); /* * タイマ関連の設定 */ /* 周期を設定 */ assert(cyc <= MAX_CLOCK); sil_wrw_mem((void *)TIMER_1_RC, cyc); /* 周期を有効にする */ sil_wrw_mem((void *)TIMER_1_CCR, 0x0000001);
に変更。
これで、TIMER_CLOCKの値が活きてくるので
//#define TIMER_CLOCK 5990U #define TIMER_CLOCK 60U
あたりで設定することにしてみた。
開発マシン(Pen4 2.4GHz)だとこのくらい違うけれども、Skyeyeを実行する環境によっては変わるので参考までに。
問題はtarget_timer.c | h をPizzaFactory3からは容易に変更するのができないことかも。
(追記:2009.7.9)
指摘したら同様の修正をしてくれたので,asp-1.4.0の次のバージョンでは修正されたバージョンがリリースされると思います.