MESC TOOL NEWS:
MESCT-MR30-000916D
リアルタイムOS MR30の使用上の注意事項を連絡します。
- M16C/6NグループでのMR30システムタイマ設定での問題
- 該当製品
MR30の全バージョン
- 内 容
コンフィグレーションファイルで初期設定したシステムクロック間隔に対して、
2倍の間隔でシステムクロックタイマが起動されることがあります。
- 発生条件
- 以下3点の条件をすべて満たす場合に発生します。
- (1) ターゲットMCUがM16C/6Nグループである。
(2) 周辺機能クロック選択レジスタ(25E番地のビット0)で2分周モードを設定している(デフォルトは2分周モード)。
(3) (タイマ間隔(s)×クロック周波数(Hz) <= 65535)が成立する。
- 回避策
以下に示すプログラムをスタートアップファイル(crt0mr.a30またはstart.a30)
のMR30システムタイマ設定箇所に追記してください。
このプログラムは、タイマモードレジスタのカウントソース選択ビットに2分周を設定している場合のみ、カウントソースを1/2にするプログラムです。8分周、
32分周については何も行いません。
なお、周辺機能クロック選択レジスタで1分周モードを設定する場合は、以下のプログラムを追記しないでください。
; +-----------------------------------------------------+
; | System timer interrupt setting |
; +-----------------------------------------------------+
mov.b #stmr_mod_val,stmr_mod_reg ;set timer mode
; mov.b #1H,0AH
; bset 6,07H
mov.b #stmr_int_IPL,stmr_int_reg ;set timer IPL
; bclr 6,07H
; mov.b #0,0AH
mov.w #stmr_cnt,stmr_ctr_reg ;set interval count
mov.b stmr_mod_reg,R0L ;追記
and.b #0C0H,R0L ;追記
jnz __MR_SYSTIME_END ;追記
mov.w #stmr_cnt/2,stmr_ctr_reg ;追記
__MR_SYSTIME_END: ;追記
or.b #stmr_bit+1,stmr_start ;system timer start