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

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

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

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

Mini210S 開発キット詳細URL


第XVIII章 RTC読み取りおよび書き込み時間

第一節 S5PV210 の RTC
RTCリアルタイム•クロック•チップで、システムがパワーオフ状態で、予備リチウムバッテリ時間を記録し続けています。S5PV210 RTCの特性は:
1) BCD 数字サポート;
2) alarm 機能サポート;
3) tick 機能サポート;
4) ミリ秒級 tick timeサポート;
S5PV210 RTC 構造図:

画像


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

1. main.c
手順は3つあります、中に ステップ3はRTCで:
ステップ 1 シリアルポート初期化;
ステップ 2 割り込み初期化;
ステップ 3 メニュをプリントアウトし、2選択があります;
dで関数rtc_realtime_display()を呼び出し、現在RTC時間を表示します;
sで関数rtc_settime()を呼び出し、 RTC時間をリセットします;
2つの関数は rtc.cに定義されます;

2. rtc.c
<1> rtc_realtime_display()コード:

void rtc_realtime_display(void)
{
int counter = 0;

// rtc コントローラをオンにする
rtc_enable(true);
// rtc tick timerをオンにする
rtc_ticktime_enable(true);

// 時間を5回プリントアウトする
while( (counter++) < 5)
{
rtc_print();
delay(0x1000000/5);
}

// rtc コントローラをオフにする
rtc_ticktime_enable(false);
// rtc tick timerをオフにする
rtc_enable(false);
}
手順は3つあります:
ステップ 1 rtc_enable(true)関数でrtcコントローラをオンにします、rtc_ticktime_enable(true)関数で rtc tick timerをオンにします、
2つの関数はレジスタ RTCCONを設定することです:

画像
ステップ 2 rtc_print()関数は時間をプリントアウト、機能は读レジスタ BCDYEAR、BCDMON 、BCDDATE、BCDHOUR、BCDMIN、BCDSEC、BCDDAYを読み取り、年月日、時、分、秒、日曜をプリントアウトします;
ステップ 3 rtc コントローラと rtc tick timerをオフにします。同じく関数rtc_enable() とrtc_ticktime_enable()呼び出し、今回はオフ機能。

<2> rtc_settime()コード:
void rtc_settime(void)
{
//初期値をリセット

unsigned long year = 12;
unsigned long month = 5;
unsigned long date = 1;
unsigned long hour = 12;
unsigned long min = 0;
unsigned long sec = 0;
unsigned long weekday= 3;

// 時間をBCDコードに変換
year = ( ((year/100)<<8) +(((year/10)%10)<<4) + (year%10)
month = ( ((month/10)<<4)+ (month%10) );
date = ( ((date/10)<<4) + (date%10) );
weekday = (weekday%10);
hour =( ((hour/10)<<4) + (hour%10) );
min =( ((min/10)<<4) + (min%10) );
sec =( ((sec/10)<<4) + (sec%10) );

rtc_enable(true);
// BCDコードを保存
BCDSEC = sec;
BCDMIN = min;
BCDHOUR = hour;
BCDDATE = date;
BCDDAY = weekday;
BCDMON = month;
BCDYEAR = year;
rtc_enable(false);
printf("reset success\r\n");
 }
手順は3つあります:
ステップ 1 year、month、date の時間変数を初期値にリセットします;
ステップ 2 時間をBCDコードに変換します;
ステップ 3 BCDコードをレジスタ BCDYEAR、BCDMON、BCDDATEに保存します;

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

第四節 実験現象
先ずメニューをプリントアウトし、sで時間をリセット、dで現在時間を表示します、下記図ご参照ください:

画像



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

Return to Cortex-A8関連

オンラインデータ

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

cron