終わったヤッター。原因はタイマー2,3のカスケード処理でした。たとえば初期値を
timer2:0xfff0 timer3:0xfff0
で考えてカスケードした時、timer2がカウントアップしていきます。あふれる直後、
timer2:0xffff timer3:0xfff0
とこうなって、次は
timer2:0xfff0 timer3:0xfff1
となってtimer2は初期値に戻ります。私の想定ではtimer2は0x0000になるでしょ、ってずっと考えていました。たったこれだけのことに6日間と計10時間以上は投入していたのですから恥ずかしい。もう頭かたすぎでしょ!