• 目次 -Page-
  • コンテンツ -Menu-
  • リンク -link-
  • RTCC リアルタイムクロックカレンダー
  • PIC24Fシリーズにはハードウェアで動作するカレンダー(時計)が内蔵されています。 これによってソフトウェアで意識する事無く時計が進んでいきます。 うるう年の補正なども自動で行うようで便利な機能となっていそうです。 実際に使用する場合には「32.768kHzのクリスタル」が必要になります。 このクリスタルによりハードウェアで一秒事にカウントアップしています。 またアラーム機能があるので日時を設定しておくと自動的に割り込みが発生します。 ウィークリータイマーなどに利用できるのではないでしょうか。
  • つかうコンパイラはマイクロチップの「C30」
  • CCS−C社のコンパイラを使いたかったのですが、最新の日本語化マニュアルが届いていないのでC30を使用する事にしました。 使い勝手が異なりますが、C言語であるには変わりないのでそれなりに入り込めました。 一つ躓いたのはMPLABで「Printf」がコンパイルでエラーとなる事です。 回避方法は次の通りです。
     
    Project->BuildOptions->Project->MPLAB Link30 => Heapsize [64]
     
    Heapsizeが空欄になっているところへ64と入力してOKとするとPrintfでのシリアル通信が可能となります。 これがわからなくてかなり苦労しました・・・。
  • 回路
  • 回路はこんなに簡単な感じです。

     
    簡易シリアルBOXとはシリアル通信に必要なICと周辺回路を収めたボックスです。 テストを行う際に便利なので作りました。これにより毎回シリアル通信回路を構成する必要がなくなります。 電源と通信用のケーブルをクリップで作成し、マイコンに接続するだけとなります。 回路はマイコンに3.3Vを印加し、リセットとカレンダー用の推奨だけといった感じです。 今回は内部発振を使って32MHzで動作させるのでVcapとDISVREGは10μFのコンデンサを繋いでいます。 使用する発振回路によって接続が異なるので注意が必要です。
  • プログラム(C30)
  • プログラムはこちらになります。

     
    ちょっと長いですが、日時変更などは出来ない仕様となっています。 あくまでも今回は「動作する」のを確認するだけのプログラムにしています。 電源を入れると2007年12月31日23時59分59秒にセットされてカレンダーがスタートします。 これにより1秒後に全てがインクリメントされるか確認が出来ます。 解り易いようにアラームや設定変更が出来るような複雑なプログラムにはしていません。
     
    ソースはこちら
  • 動作確認
  • 動作を確認しました。画像はハイパーターミナルです。 電源投入と同時にシリアル通信で2007年12月31日23時59分が送られてきているのがわかります。 立ち上げ時と送信サイクルにムラがある為か初めは2回の送信となってしまっていますが、 その後はインクリメントされて2008年の元旦を迎える事ができています。 これは非常に簡単にカレンダー機能が持てていいですね。
     
    今後の課題は日時の変更ということになりますね。
    Design & Programming - 天姫 -
    Copyright (c) 2007-2022 amahime All Rights Reserved.