懸案であったRTCCのアクセスを確認しました。PIC32MX4の内蔵RTCCへのアクセスについてです。
結果としてうまくアクセスできるようになりました。データシートを読み足りなかったためで、必要なコードが抜けていました。
RTCCの初期化部分で
SYSKEY = 0xAA996655; // この2行をいれないと while(!(RTCCON&0x40))で永久ループになる
SYSKEY = 0x556699AA; //
の2行を入れないとうまく動作しません。
最初にデータシートを見たときは、この2行のコードは現在時刻を書き換えるときだけ必要になると勘違いして覚えてしまいました。
正しくは現在時刻を変更するときでなくレジスタRTCCONの内容を変更するときに上の2行が必要になります。
 
// 以下セカンダリ発振とRTCC部分の初期化
OSCCON.SOSCEN = 1; // OSCCON.SOSCEN = 1;
while(!SOSCRDY_bit) // wait for secondary oscillator to stabilize
;
SYSKEY = 0xAA996655; // この2行をいれないと while(!(RTCCON&0x40))で永久ループになる
SYSKEY = 0x556699AA; //
RTCCON.RTCWREN = 1; // RTCCON.RTCWREN = 1;
RTCCON.B15 = 1; // RTCC module enabled
while(!(RTCCON&0x40)) // Wait for clock to be turned on
;
RTCCON.RTCOE = 0; // RTCC output disable
RTCDATE =0x11082403; //2011/08/24 wednesday
RTCTIME =0x20304000; // 20:30 40sec
 
上のように初期化コードを書くとRTCCが動作するようになりました。
RTCCDATEとRTCCTIMEは初期値を代入しないと、日付と時間としてはあり得ない値になっているのでBCD変換部分で
間違ったかなと勘違いしやすいです。

Tags: ,

Leave a Reply

This blog is kept spam free by WP-SpamFree.

3 visitors online now
1 guests, 2 bots, 0 members
Max visitors today: 15 at 12:31 am UTC
This month: 18 at 02-04-2020 07:29 pm UTC
This year: 19 at 01-26-2020 06:07 pm UTC
All time: 133 at 05-04-2015 11:06 pm UTC