R8C/2D

R8C/2D(R5F212D7SNFP)のRDタイマー関連のSFRが書き換わりません(プログラム、ツール両方)。E8aとHEWの組み合わせで使用しています。

具体的には
trdstr = 0x0C;
と書いても01のままです。

何かわかりましたら教えてください。
  • ksjさん

    状況が良くわかりませんが
    trdstr = 0x05;
    trdstr = 0x04;
    という順番で先にCSEL0を1にしてから、TSTART0に0をライトした場合trdstrがどうなるか試してみてください。


    UMに以下の記述があります。

    14.4.12 タイマRD使用上の注意事項
    14.4.12.1 TRDSTRレジスタ
    • TRDSTRレジスタはMOV命令を使用して書いてください。
    • CSELi(i=0 ~ 1) ビットが“0”(TRDi レジスタとTRDGRAi レジスタのコンペア一致でカウント停止)の場合、TSTARTiビットに“0”(カウント停止)を書いても、カウントは停止せず、TSTARTiビットも変化しません。
    したがって、CSELiビットが“0”のとき、TSTARTiビットを変化させずに他のビットを変更したい場合は、TSTARTiビットに“0”を書いてください。
    また、プログラムでカウントを停止させる場合は、CSELiビットを“1”にした後で、TSTARTiビットに“0”を書いてください。同時に(1命令で)CSELiビットに“1”、TSTARTiビットに“0”を書いてもカウントは停止できません。
  • ksjさん

    TOYKEYと申します。

    kirinさんが大変為になる事を書いてくれていますが、
    それとは別件で疑わしいところがあるので、
    書き込みます。

    >trdstr = 0x0C;
    >と書いても01のままです。
    →trdstrレジスタの上位4ビットは予約ビットです。
    リードすると全て1で読み出されるので、
    0xF?とリードされるのが正常です。

    タイマRDのレジスタがうまく読めないということは、
    アクセスが無効になっているということです。

    タイマRDとアクセス無効というキーワードから考えると、
    このモジュール動いてないんじゃないでしょうか?

    マニュアルのMSTCRレジスタについて読んでみてください。