dポイントプレゼントキャンペーン実施中!

H8SX/1655に接続したRTCからの値をLCDに表示させて
時計を作りたいんですけど、値の受け渡しの方法がいまいちわかりません><

言語は、C言語を使ってHEWでプログラムを作っています・・・

LCDの1列目と2列目に文字は、表示できました。

RTCの使い方が、わかるサイトとか教えてもらえると幸いです。。。。

A 回答 (3件)

ANo.2 の補足について



内蔵の I2C インターフェイスを使うなら,初期化(レジスタの設定)が必要です。
ポートを直接操作しても出来なくはないですが,面倒なだけです。

rtc_write から rtc_write を呼んだりしていますが,大丈夫なのでしょうか?

読んできたデータはどこかに保存されているのでしょうか?

↓前掲のアプリケーションノートのソースコードです。
http://japan.renesas.com/support/downloads/downl …

参考にしてください。
    • good
    • 0

基本的には,I2C デバイス上のアドレスを指定して,


そこのデータを読み書きします。

I2C の概要は↓が分かりやすいでしょうか。
http://wiki.livedoor.jp/yamamaya_com/d/I2C%A5%D0 …

どこのアドレスに何があるかは,RTC のデータシートやマニュアルを参照してください。
http://www.epsontoyocom.co.jp/product/RTC/set03/ …

マイコン側は,内蔵の I2C バスインターフェイスを使うことになると思います。
アプリケーションノートが出ているので,参考にしてください。
http://documentation.renesas.com/jpn/products/mp …

この回答への補足

ここに書いてある内容をもとにプログラムを組んでみました。
/**************************ここからRTC***********************************/
//STARTコンディション
void start(void)
{
P1.DR.BIT.B6 = 1;//SDA=1
P1.DR.BIT.B7 = 1;//SCL=1
if(P1.DR.BIT.B7 = 1)
{
P1.DR.BIT.B6 = 0;//SDA=1
}
}

//STOPコンディション
void stop(void)
{
P1.DR.BIT.B7 = 1;//SCL=1
P1.DR.BIT.B6 = 0;//SDA=0
if(P1.DR.BIT.B7 = 1)
{
P1.DR.BIT.B6 = 1;//SDA=1
}
}
//データビットはSCLが1レベルの間に確定される。

//RTCからLCDへ書き込むアドレスとデータ
void rtc_write(unsigned char address , unsigned char data)
{
//Write用アドレス0xA2
P1.DR.BIT.B7=0xA2;

rtc_write(0x02 , 0x01);//秒
rtc_write(0x03 , 0x01);//分
rtc_write(0x04 , 0x01);//時
rtc_write(0x05 , 0x17);//日
rtc_write(0x06 , 0x03);//曜日
rtc_write(0x07 , 0x01);//月
rtc_write(0x08 , 0x7DB);//年
}

//RTCの読み込むアドレスとデータ
void rtc_read(unsigned char address)
{
//Read用アドレス0xA3
P1.DR.BIT.B7=0xA3;
rtc_read(0x02);
rtc_read(0x03);
rtc_read(0x04);
rtc_read(0x05);
rtc_read(0x06);
rtc_read(0x07);
rtc_read(0x08);
}

//I/Oポートの初期化
void port_init()
{
PH.DDR=0xff;//PHを出力に設定LCD
P1.DDR=0x00;//P1を入力に設定スイッチ、RTC
}

//LCDに表示
void main(void)
{

void start();
void rtc_read();
void rtc_write();
initLCD();
cur_pos(0,0);
print_lcd(rtc_read);
while(1)
{}
}
RTCに関するところだけですけど・・・
これだと、LCRにわけのわからない文字が表示されちゃいます><
これは、表示する形が違うためなんでしょうか?
LCDに表示するプログラムの部分は、print_lcd();の中身です。
読み込んだ値をそのまま入れただけなんですけど・・・

何か、アドバイスをください。。。

補足日時:2011/01/31 13:21
    • good
    • 0
この回答へのお礼

ありがとうございます^^
I2Cの概要が、ものすごくわかりやすかったです。

お礼日時:2011/01/31 13:19

RTC そのものというより,RTC にアクセスするための I/F,


例えば IIC とか SPI とかの使い方がわからない,ということなのでしょうか?

RTC の型式や I/F の種類,具体的にどこが分からないのかを,補足したほうが良いと思います。

この回答への補足

RTCの型番は、RTC-8564NBを使っています。
今は、I2Cを使ってマイコンに接続しています。
が、I2Cの使い方がよくわかりません><

SCLとSDAを接続して、プログラムのほうでどうやったら
この2線から時間が取得できるのでしょうか?

ちぐはぐな質問ですみません。。。

補足日時:2011/01/28 14:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!