Mini210S 開発キットOSなしのプログラム開発手順連載(21)

Mini210S/Tiny210等開発ボード関連のフォラーム

Mini210S 開発キットOSなしのプログラム開発手順連載(21)

投稿記事by dwtechadm » 金 5 10, 2013 5:20 pm

Mini210S 開発キット詳細URL




第XVI章 PWMタイマー

第一節 S5PV210 的 PWM タイマー
S5PV210には合計5つの32ビットPWMタイマーがあります、タイマー0、1、2、3 はPWM機能があります、タイマ4は出力ピンがありません。PWMタイマはPCLK_PSYSをクロックソースとして使用します、関連知識は第VII章クロック初期化を参照ください、関連構造は下記図ご参照ください:
画像


第二節 プログラム説明
完全なコードは、ディレクトリ16.timerご参照ください。

1. main.c
コアコード:
int main(void)
{
// シリアルポート初期化
uart_init();
// 割り込み初期化
system_initexception();
// timer設定
timer_request();
while(1);
}
手順は4つあります、中に ステップ3、はタイマー機能で
ステップ 1 シリアルポート初期化;
ステップ 2 割り込み初期化;
ステップ 3 timer設定、関数 timer_request()はtimer.c 中に定義されます;
ステップ 4 無限ループタイマー割り込みが発生するまで待ちます。

2. timer.c
void timer_request(void)
{
printf("\r\n#############Timer test############\r\n");
// timerを全部禁止する
pwm_stopall();
// timer0 割り込みの割り込みハンドラ関数を設定する
intc_setvectaddr(NUM_TIMER0、irs_timer);
// timer0 割り込みをオンにする
intc_enable(NUM_TIMER0);
// timer0を設定する
timer_init(0、65、4、62500、0);
}
手順は3つあります:
ステップ 1 timerを全部禁止する、レジスタTCON に 0を書き込み;
ステップ 2 VICを設定し、先ず timer0割り込みの割り込みハンドラ関数irs_timer()を設定し、timer0割り込みをオンにする;
ステップ 3 timer0を設定し、関数 timer_init()を呼び出します;
コア機能は:
1) 分周を設定
まず、分周係数を設定する、相関レジスタはTCFG0:
画像
次に16分周に設定する、相関レジスタは TCFG1:
画像

上記の設定が完了したら、タイマでクロックを入力できます:
Timer Input Clock Frequency = PCLK / ( {prescaler value + 1} ) / {divider value} =66MHz/(65+1)/16=62500hz
2) カウントを設定
レジスタ TCNTB0=62500 と TCMPB0=0を設定します、 timer0起動後、TCNTB0徐々に-1で変化し、 TCMPB0になる場合は割り込みを発生します、すなわち1秒で timer0 が1回割り込みします。

画像

3) timer0起動
レジスタ TCONを設定、先ず手動設定ビットを更新し、その後手動アップデートビットをクリアし、自動ロードを使用し、最後にtimer0を起動します。
4) timer0 割り込みをオンにする
レジスタ TINT_CSTATを設定、 timer0割り込みをオンにする。

画像

最後に timer0 割り込みハンドラ関数 irs_timer()を分析し、手順は3つあります:
ステップ 1 timer0 割り込みステータスレジスタ TINT_CSTATをクリア;
ステップ 2 timer0 割り込み回数をプリントアウトし、timer0発生するとプリントアウトします。
ステップ 3 関数 intc_clearvectaddr()を呼び出し、VIC 割り込みをクリア;


第三節 コードコンパイルとプログラミングの実行
コードをコンパイルし、Fedora端末で下記のコマンドを実行します:
# cd 16.timer
# make
16.timerのディレクトリ下にtimer.binを生成し、それを開発ボードにプログラムします。

第四節 実験現象
端末は数字 1、2、3、4...,をプリントアウトし続き、周波数は1回/秒です:
画像




---続く
dwtechadm
 
記事: 60
登録日時: 月 2 25, 2013 1:35 pm

Return to Cortex-A8関連

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[0人]

cron