DS1307の設置方法 
  DS1307の動作電源電圧は5Vです。そのため、標準の5V動作のArduinoとDS1307との接続は次に示すようになります。Arduinoのアナログ入力5番(SCL)、4番(SDA)をDS1307のSLC端子、SDA端子に接続します。 

ardsens020005.jpg

 Arduino用のユニバーサル基板を使用し、DS1307のリアルタイム・クロック・モジュールを取り付けるための5ピンのピンソケット、I2Cバスのプルアップ抵抗3.3kΩ2本を基板に取り付けはんだ付けします。

ardsens020010.jpg 基板の裏面の配線の様子を次に示します。5Vの電源ラインはこちらの面に配線してあります。GNDのラインはユニバーサル基板の部品面に黒いリード線で配線してあります。

ardsens020020.jpg このDS1307のリアルタイム・クロック・モジュールは電源電圧が5Vですので、次に示すようにArduinoとの間にレベルコンバータを挿入することなく接続することができます。

ardsens020030.jpg I2Cの3.3V電源のディジタル・センサを追加する場合、PCA9306電圧レベルコンバータを追加します。

DS1307の使い方
I2Cスレーブ・アドレス

 DS1307のI2Cのスレーブ・デバイスとしてのアドレスは0x68と定められています。このアドレスを指定して、データの書き込みのときは、
   Wire.beginTransmission(address)
送信相手のスレーブにマスタからの送信準備を促し、Wire.send(data)で送信データdataをスレーブに対して送信します。
DS1307の内部メモリ
   DS1307は64バイトのメモリ・レジスタをもっていて、00から07までのアドレスの8バイトにメモリ・レジスタは秒、分、時、曜日、日付、月、年のデータとSQWのパルスの制御を行う制御データが割り当てられています。 
ardsens020040.jpgデータの読み書き
 DS1307のメモリ・レジスタの読み書きは、次の手順によって行います。マスタからこのDS1307のメモリ・レジスタの読み書きの対象となるのは、DS1307のメモリ・レジスタのアドレスを示すワード・レジスタが示すメモリレジスタが対象となります。
メモリ・レジスタの設定
 メモリ・レジスタの設定は、マスタからのI2Cの書き込みサイクルの最初に書き込まれたデータがワード・レジスタの値となります。具体的にスケッチで記述すると次のようになります。
  デバイス・アドレスで示すアドレス値をもつDS1307に対して、送信セッションを開始し、読み書きの対象のメモリ・レジスタのアドレスをワード・レジスタに書き込みます。

   Wire.beginTransmission(デバイス・アドレス); 
    Wire.send(ポイント);
    Wire.endTransmission();

 マスタからの送信セッションが確立し、最初にDS1307に書き込まれたデータはメモリ・レジスタのワード・アドレスと解釈され、ワード・アドレスとして設定されます。続いて書き込み処理を行うと、ワード・アドレスが示すメモリ・レジスタにデータが書き込まれます。データを書き込むと共にワード・アドレスはインクリメントされます。そのため連続してデータを書き込むとメモリ・レジスタに順番にデータを書き込むことができます。
メモリ・レジスタの読み取り
 DS1307からデータを読み出すときも、同様にワード・アドレスが示すメモリ・レジスタの値が読み取られ、ワード・アドレスがインクリメントされます。読み出すレジスタを指定する場合は、読み取るデータのワード・アドレスの値を最初に書き込み、ワード・アドレスの値を読み取りたいデータのアドレスの値にして書き込み処理を終えます。その後に読み込み処理を行うと、書き込み処理で指定したアドレスのデータから順番に読み取ることができます。

 次回、メモリ・レジスタの内容の書き込みをWireライブラリを利用して行います。
<神崎康宏>


トラックバック(0)

このブログ記事を参照しているブログ一覧: Arduinoでリアルタイム・クロックを使用する(2)

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/5557







newハイパー・マイコンmbedでインターネット電子工作


マイコンと電子工作 No.6


マイコンと電子工作 No.4


マイコンと電子工作No.1
サポート・ページはこちら