[PR] ベビーシッター リアルタイムクロック::PSoC

リアルタイムクロック

Home > 2006-05 / PSoC > This Entry [com : 0][Tb : 0]

2006-05-23

psoc060523_1リアルタイムクロックを接続してみた。
テスト段階なので時間合わせ等はまだ出来ない。
写真がちょっとピンぼけ(汗
上の行は時分秒、コントロールレジスタ1、コントロールレジスタ2
下の行は年月日、曜日(日曜が0、月曜が1、・・・)


ユーザーモジュールはLCDとI2Cmだけ。
プログラムはI2Cmのサンプルコードが大変参考になった、というよりそのまんまパクった。
未整理なので無駄なコードがあるかも。
起動すると、2006年5月22日10時00分00秒にセットして、後はひたすら表示するだけの簡単なもの。
RTC-8564は設定によりCLKOUTに1Hzを出せるのでそれで割り込みをかけて表示するようにすればいいだろう(多分)
読み出したデータで不必要なビットは必ずマスクしておくこと、これはアプリケーションマニュアルに書いてある。

//----------------------------------------------------------------------------
// C main line
// RTC-8564
// 2006/5/23
//----------------------------------------------------------------------------

#include // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
const BYTE txCBuf[] = { 0x00, // Slave internal sub-address 0
0x00, // control 1
0x00, // control 2
0x00, // Seconds
0x00, // Miunites
0x10, // Hours
0x22, // Days
0x01, // Weekdays
0x05, // Month/Century
0x06};// Years

void main()
{
BYTE rxBuf[15];
BYTE status; // I2C communication status
BYTE i; // Temp counter variable

I2Cm_1_Start(); // Initialize I2C Master interface
LCD_1_Start();

status = I2Cm_1_bWriteCBytes(0x51,txCBuf,10,I2Cm_1_CompleteXfer); // Set the time

while(1) {
status = I2Cm_1_bWriteCBytes(0x51,txCBuf,1,I2Cm_1_NoStop);
status = I2Cm_1_fReadBytes(0x51,rxBuf,10,I2Cm_1_RepStart );
if(status == 0) {
LCD_1_Position(0,0);
LCD_1_PrCString("Error");
}
else {
LCD_1_Position(0,0);
LCD_1_PrHexByte(rxBuf[4] & 0x3f); // Hours
LCD_1_PrCString(":");
LCD_1_PrHexByte(rxBuf[3] & 0x7f); // Muinites
LCD_1_PrCString(":");
LCD_1_PrHexByte(rxBuf[2]); // Seconds
LCD_1_PrCString(" ");
LCD_1_PrHexByte(rxBuf[0]);
LCD_1_PrCString(" ");
LCD_1_PrHexByte(rxBuf[1] & 0xbf);


LCD_1_Position(1,0);
LCD_1_PrHexByte(rxBuf[8]); // Years
LCD_1_PrCString("/");
LCD_1_PrHexByte(rxBuf[7] & 0x9f); // Century/Months
LCD_1_PrCString("/");
LCD_1_PrHexByte(rxBuf[5] & 0x3f); // Days
LCD_1_PrCString(" ");
LCD_1_PrHexByte(rxBuf[6] & 0x07); // Weekdays
}
}
}

Comment

Post a Comment









管理者にだけ表示を許可

Trackback

http://edycube.blog2.fc2.com/tb.php/201-368cc737

迷走の果て・Tiny Objects | Page Top▲

New >>
電気二重層キャパシタ
<< old
ハンダメッキ線