5.7 フローチャート
5.7.11 メイン処理
図
5.12~図
5.14にメイン処理のフローチャートを示します。
図 5.12 メイン処理(1/3)
main()
LCDに起動時の1行目の初期表示を行う
1秒タイマ停止 TSTART00ビット ← 0 :8ビットIT停止
ITMK00ビット ← 1 :8ビットIT割り込み禁止
STOP
SW割り込み許可 PIF0ビット ← 0 : INTP0割り込み要求クリア
PMK0ビット ← 0 : INTP0割り込み許可
B
ユーザ初期化処理
InitialiseDisplay () 追加の初期設定
LCD起動時表示 DisplayString () A
LCDの2行目の表示を行う LCD表示
DisplayString ()
TT0Lレジスタ ← 0x08:TM03停止 TM03停止
STOPモードでSW押下割り込み(INTP0)待ち INTP0(STOPモード解除)
測定完了待ち g_times=0,32,+1
測定完了待ち
HALT HALTモードで32回の測定完了待ち
STOPか ? No
Yes
変数g_stpcntが20以上ならSTOPモードに入り,INTP0を待つ
g_vmax > 937 ? No
Yes
変数g_vmaxが937を超えると、電圧オーバー
2行目表示を”OVER”に 電圧オーバーを表示して戻る
TM03起動
TS0Lレジスタ ← 0x08:TM03起動
図 5.13 メイン処理(2/3)
レンジ1を選択
C B
変数g_range ← 1 :測定レンジを1に設定
PM01,PM00ビット ← 0,0 :1/10分割抵抗をオン PM31,PM30ビット ← 1,1 :1/100分割抵抗をオフ
レンジ0を選択
測定完了待ち g_times=0,32,+1
測定完了待ち
HALT HALTモードで32回の再測定完了待ち
No
Yes g_vmax > 9 ? No
Yes
変数g_range ← 0 :測定レンジを0に設定
PM31,PM30ビット ← 1,1 :1/100分割抵抗をオフ
変数dtc_controldata_0.dtdar ← 0xFE00 : 転送先アドレスを 0xFFE00に設定 変数dtc_controldata_0.dtcct ← 0x04 : 転送数を4に設定 DTCEN16ビット ← 1 :A/D変換完了でのDTC起動を許可 DTCの再設定
制御変数の初期化 変数g_times ← 0 :測定回数を0に設定 変数g_vin_sign ← 0x00 :符号の初期化
変数g_sign_chng1 ← 0x00 :ゼロクロス点のクリア 変数g_sign_chng2 ← 0x00 :ゼロクロス点のクリア 変数g_sign_chng3 ← 0x00 :ゼロクロス点のクリア 変数g_vmax ← 0x00 :最大値のクリア
TM01を起動 目標レンジでのA/D変換のためにA/Dトリガ用のTM01を起動
目的レンジでの32回の再測定完了
変数g_vmaxが93 を超えると100Vレンジ(レンジ2)
変数g_vmaxが9を超えると10Vレンジ(レンジ1),それ以下な ら1Vレンジ(レンジ0)
レンジ1及びレンジ0の場合には再測定 g_vmax ≦ 93 ?
図 5.14 メイン処理(3/3)
パラメータ初期化
A C
変数g_start ← g_sign_chng2 :開始位置を設定
変数g_period ← g_sign_chng3 - g_sign_chng2 + 1 :データ数 表示も初期化しておく
不要な0表示を消す ゼロクロス点は2つ以上か ?
No
Yes
変数g_voltage ← _r_rms16(g_start,g_period)
:設定範囲のデータの自乗平均平方根を求める
レンジ2なら4ビット,レンジ1なら2ビット左シフト 結果の補正
100mV桁表示 変数v_workを10で割り,剰余を100mV桁に表示
10mV桁表示
測定結果から自乗平均平方根の対象を求める
変数g_start ← 12 :対象の開始位置を設定 変数g_period ← 20 :対象個数の初期値を設定
パラメータ設定
変数g_sign_chng2が0x00以外ならゼロクロス点が2つ以上
自乗平均平方根 _r_rms16 ()
測定結果をASCII文字列に変換して表示する
結果を10で割り,剰余を10mV桁に表示,商は変数v_workに格納
1V桁表示 変数v_workを10で割り,剰余を1V桁に表示
10V,100V桁を空白に v_work
=0x00 >9
それ以外
10V,100V桁表示 10V桁表示100V桁空白に
結果は20mV以上か ? No
Yes カウンタ初期化
STOPモードカウンタ更新 変数g_stpcntをカウントダウン
変数g_stpcnt ← 20 :カウンタを初期化