NTP client as a simple clock using PIC18F27J53 and ENC28J60

<< Introduction in Japanese >>

自作 Ethernet board (平成29年4月23日の稿)を用いて NTP server に接続し、現在時刻を取得表示する実験を行った。接続する NTP server として情報通信研究機構の ntp.nict.jp を利用した。

Microchip 社が提供するTCP/IP スタックに含まれる Berkeley Socket API を用いて UDP client を作成した。

実用として NTP server からの受信データを基準に、CCP と Timer1 により1秒割込を発生させて時刻更新し、卓上時計としての評価を行った。

 

 

The “BerkeleyUDPClientDemo.c” in the TCP/IP stack of Microchip Libraries for Applications v2013-06-15 is at work on my board.

The Ethernet board was previously reported in may page on Apr. 23, 2017.

The NTP server of National Institute of Information and Communications Technology is used in this project and Coordinated Universal Time (UTC) is converted to Japan Standard Time (JST: UTC + 9 hours).

Furthermore, this test board works as a simple clock.  An interruption at 1-second interval is generated by the CCP1 module, which interruption increments the cumulative time obtained from the NTP server.

 

<< Sample code of the NTP client >>

(Compiled by the C18 under the large code model on the MPLAB X IDE)

In TCPIPConfig.h, the default network configuration must be adjusted to your local network (MAC address, IP address and so on).

In addition, STACK_USE_ICMP_SERVER, STACK_USE_DNS and STACK_USE_BERKELEY_API are defined so that the Ethernet board can work as a NTP client using the Berkeley Socket.

 

<< Operation of the NTP client >>

Initialization:    If the Ethernet board is connected to the Internet for the first time, the current time can be automatically obtained from the NTP server.

Adjustment of the time:    Every time the RB3 pin (BUTTON 0) is pulled down, the current time will be gotten from the NTP server.

 

使用方法: TCPIPConfig.h ファイルにローカル・ネットワークの情報を設定。インターネットに接続すると、初回の時刻設定は自動的に NTP サーバーに接続されて時間を刻み始める。2回目以降の時刻補正には、インターネット接続された状態でスイッチ (RB3) を押すと NTP サーバーに接続されて現在時刻に更新される。

 

<< Summary in Japanese >>

実験ボードにはスイッチが少なく手動での時刻設定は出来ないが、自宅の LAN 環境に接続して NTP server から時刻取得を行う事はできた。

時計としての精度は、NTP server からのレスポンス・データを単純に利用しているだけで、通信時のタイムラグなどは考慮していない。

しかし、通信時のタイムラグを許容し、かつ水晶発振子を用いたならば頻回の時刻校正は不要である。更に節電の工夫を加えたならば、乾電池式の卓上時計としては十分な有用性を持つと考える。

卓上時計の電池交換時に、小さなスイッチで時刻を手合わせする手間と 、ケーブルで LAN に繋いで時刻設定する手間、どっちらも煩わしいと言われるのは覚悟している。