<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chameleon Cyber</title>
	<atom:link href="http://www.chameleonic.org/feed" rel="self" type="application/rss+xml" />
	<link>http://www.chameleonic.org</link>
	<description>The sky is the limit.</description>
	<lastBuildDate>Sun, 21 Aug 2011 02:02:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>test</title>
		<link>http://www.chameleonic.org/incident/1467</link>
		<comments>http://www.chameleonic.org/incident/1467#comments</comments>
		<pubDate>Mon, 01 Aug 2011 15:13:01 +0000</pubDate>
		<dc:creator>chameleon</dc:creator>
				<category><![CDATA[Incident]]></category>

		<guid isPermaLink="false">http://www.chameleonic.org/?p=1467</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://nihongo.wunderground.com/cgi-bin/findweather/getForecast?query=zmw:00000.8.47635&#038;bannertypeclick=wu_clean2day"><img src="http://weathersticker.wunderground.com/weathersticker/cgi-bin/banner/ban/wxBanner?bannertype=wu_clean2day_metric_cond&#038;pwscode=IU611BU72&#038;ForcedCity=Kasugai&#038;ForcedState=&#038;wmo=47635&#038;language=JP" alt="Click for Kasugai, Japan Forecast" height="100" width="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chameleonic.org/incident/1467/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>駿河湾で地震</title>
		<link>http://www.chameleonic.org/incident/1465</link>
		<comments>http://www.chameleonic.org/incident/1465#comments</comments>
		<pubDate>Mon, 01 Aug 2011 15:05:42 +0000</pubDate>
		<dc:creator>chameleon</dc:creator>
				<category><![CDATA[Incident]]></category>

		<guid isPermaLink="false">http://www.chameleonic.org/?p=1465</guid>
		<description><![CDATA[やけに揺れた気がするけど、自分の地方で震度３らしい。 駿河湾が震源らしいので、地震がだんだん近づいてきている気がするのは気のせいか・・・。]]></description>
			<content:encoded><![CDATA[<p>やけに揺れた気がするけど、自分の地方で震度３らしい。<br />
駿河湾が震源らしいので、地震がだんだん近づいてきている気がするのは気のせいか・・・。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chameleonic.org/incident/1465/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>研修なう</title>
		<link>http://www.chameleonic.org/incident/1460</link>
		<comments>http://www.chameleonic.org/incident/1460#comments</comments>
		<pubDate>Mon, 01 Aug 2011 02:38:49 +0000</pubDate>
		<dc:creator>chameleon</dc:creator>
				<category><![CDATA[Incident]]></category>

		<guid isPermaLink="false">http://www.chameleonic.org/?p=1460</guid>
		<description><![CDATA[研修会参加中 いい息抜きです！]]></description>
			<content:encoded><![CDATA[<p>研修会参加中<br />
いい息抜きです！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chameleonic.org/incident/1460/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>長期出張から帰ってきました</title>
		<link>http://www.chameleonic.org/incident/1457</link>
		<comments>http://www.chameleonic.org/incident/1457#comments</comments>
		<pubDate>Thu, 21 Jul 2011 14:10:24 +0000</pubDate>
		<dc:creator>chameleon</dc:creator>
				<category><![CDATA[Incident]]></category>

		<guid isPermaLink="false">http://www.chameleonic.org/?p=1457</guid>
		<description><![CDATA[世間では夏休みが始まっているという今日、ようやく出張から解放されました。一週間以上の激戦でした・・・。 日本じゃ台風が来ていたらしいですが、外に出したままのものも、そのまま同じ場所にありましたから風はたいしたことなかったのでしょうか・・・。 デジタル台風とかで移動軌跡をみると、かなり変なふうに動いたようです。 もっとも自分の移動ルートはこの台風の比ではありませんが・・・。]]></description>
			<content:encoded><![CDATA[<p>世間では夏休みが始まっているという今日、ようやく出張から解放されました。一週間以上の激戦でした・・・。<br />
日本じゃ台風が来ていたらしいですが、外に出したままのものも、そのまま同じ場所にありましたから風はたいしたことなかったのでしょうか・・・。</p>
<p>デジタル台風とかで移動軌跡をみると、かなり変なふうに動いたようです。<br />
もっとも自分の移動ルートはこの台風の比ではありませんが・・・。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chameleonic.org/incident/1457/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>不本意ながら</title>
		<link>http://www.chameleonic.org/incident/1453</link>
		<comments>http://www.chameleonic.org/incident/1453#comments</comments>
		<pubDate>Thu, 14 Jul 2011 13:06:47 +0000</pubDate>
		<dc:creator>chameleon</dc:creator>
				<category><![CDATA[Incident]]></category>

		<guid isPermaLink="false">http://www.chameleonic.org/?p=1453</guid>
		<description><![CDATA[今日も関連企業の皆様と飲み会でした・・・。まったく、転職後は、このような会は数知れず・・・。 飲み会に行くのに休暇を取っていかなければならないのも何とも・・・。]]></description>
			<content:encoded><![CDATA[<p>今日も関連企業の皆様と飲み会でした・・・。まったく、転職後は、このような会は数知れず・・・。<br />
飲み会に行くのに休暇を取っていかなければならないのも何とも・・・。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chameleonic.org/incident/1453/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>暑い　だが、29度設定</title>
		<link>http://www.chameleonic.org/incident/1445</link>
		<comments>http://www.chameleonic.org/incident/1445#comments</comments>
		<pubDate>Wed, 13 Jul 2011 11:17:18 +0000</pubDate>
		<dc:creator>chameleon</dc:creator>
				<category><![CDATA[Incident]]></category>

		<guid isPermaLink="false">http://www.chameleonic.org/?p=1445</guid>
		<description><![CDATA[全く暑い。職場ではエアコン設定温度は29℃かつ、それに達するまでは稼働さえしない。 昼休み中及び、終業後は即座に切れる。もちろん始業前に稼働していることはない。 職場を観察していると、温厚な人々もエアコンが切れると、キレ始める。 このような状況なので、贅沢な設定温度にすることもできないが、あまり除湿されないので相当に苦しいことは間違いない状況だ。 外気の方がひんやりと感じる。 本日の気温等の観測結果は図の通りです。 昼頃の日射が若干少なくなっていますが、昼休み中はエアコンもオフとなっていますから、室内はむしろ暑苦しくなっていましたね。 早く涼しくなってほしい。]]></description>
			<content:encoded><![CDATA[<p>全く暑い。職場ではエアコン設定温度は29℃かつ、それに達するまでは稼働さえしない。<br />
<a href="http://www.chameleonic.org/wp-content/uploads/curr24hourgraph.gif"><img src="http://www.chameleonic.org/wp-content/uploads/curr24hourgraph-150x150.gif" alt="" title="curr24hourgraph" width="150" height="150" class="alignleft size-thumbnail wp-image-1446" /></a>昼休み中及び、終業後は即座に切れる。もちろん始業前に稼働していることはない。<br />
職場を観察していると、温厚な人々もエアコンが切れると、キレ始める。<br />
このような状況なので、贅沢な設定温度にすることもできないが、あまり除湿されないので相当に苦しいことは間違いない状況だ。</p>
<p>外気の方がひんやりと感じる。</p>
<p>本日の気温等の観測結果は図の通りです。<br />
昼頃の日射が若干少なくなっていますが、昼休み中はエアコンもオフとなっていますから、室内はむしろ暑苦しくなっていましたね。<br />
早く涼しくなってほしい。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chameleonic.org/incident/1445/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CORESERVER不調</title>
		<link>http://www.chameleonic.org/incident/1439</link>
		<comments>http://www.chameleonic.org/incident/1439#comments</comments>
		<pubDate>Tue, 12 Jul 2011 11:51:17 +0000</pubDate>
		<dc:creator>chameleon</dc:creator>
				<category><![CDATA[Incident]]></category>

		<guid isPermaLink="false">http://www.chameleonic.org/?p=1439</guid>
		<description><![CDATA[利用しているサーバーで昨日から障害が発生していました。昨日中には障害は解決されたようですが、自分のアカウントではMySQLサーバーへの接続が確立できませんでした。 初めて、レンタルサーバーのサポート使いました。500円払うと優先サポート権が得られるらしいので、それで対応を依頼しました。きわめて迅速に対応していただけました。データベースのバックアップもとれない状況だったので、だめならいい潮時とサイトを閉じる気持ちも若干ありました。 障害が出る前から、サイトにアクセスするとページが開かなかったりやたらと重かったりして、リロードしたりしてしのいでいたんですが、今回の障害の対応後は今のところ順調な感じです。正直サーバーが逼迫しているのかぁ、空いている所へ引っ越そうかと、別のレンタルサーバーを調べたりもしていたのですが、結果的に十分満足な状況になりました。まだ、しばらくはサイトも続けられそうです。 とはいえ、ずっとこのブログも更新していませんでした。 いや、転職後ほんとに仕事が忙しかったんです。で、今は気象観測の研究中です。 次の更新はいつになるのか・・・。]]></description>
			<content:encoded><![CDATA[<p>利用しているサーバーで昨日から障害が発生していました。昨日中には障害は解決されたようですが、自分のアカウントではMySQLサーバーへの接続が確立できませんでした。</p>
<p>初めて、レンタルサーバーのサポート使いました。500円払うと優先サポート権が得られるらしいので、それで対応を依頼しました。きわめて迅速に対応していただけました。データベースのバックアップもとれない状況だったので、だめならいい潮時とサイトを閉じる気持ちも若干ありました。</p>
<p>障害が出る前から、サイトにアクセスするとページが開かなかったりやたらと重かったりして、リロードしたりしてしのいでいたんですが、今回の障害の対応後は今のところ順調な感じです。正直サーバーが逼迫しているのかぁ、空いている所へ引っ越そうかと、別のレンタルサーバーを調べたりもしていたのですが、結果的に十分満足な状況になりました。まだ、しばらくはサイトも続けられそうです。</p>
<p>とはいえ、ずっとこのブログも更新していませんでした。<br />
いや、転職後ほんとに仕事が忙しかったんです。で、今は気象観測の研究中です。</p>
<p>次の更新はいつになるのか・・・。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chameleonic.org/incident/1439/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>本日、ほぼ退職</title>
		<link>http://www.chameleonic.org/incident/1436</link>
		<comments>http://www.chameleonic.org/incident/1436#comments</comments>
		<pubDate>Thu, 31 Mar 2011 12:07:28 +0000</pubDate>
		<dc:creator>chameleon</dc:creator>
				<category><![CDATA[Incident]]></category>

		<guid isPermaLink="false">http://www.chameleonic.org/?p=1436</guid>
		<description><![CDATA[長らくつとめていた職種を離れ、本日異動しました。 明日から、全く新しい職場にてお仕事です。環境も激変、仕事内容も激変です。 とりあえず今日は新しい職場の駐車場を確認してきました・・・。 と、久しぶりのブログの更新・・・。引き継ぎを含めてほんとに忙しかったです。明日からはさらに・・・。]]></description>
			<content:encoded><![CDATA[<p>長らくつとめていた職種を離れ、本日異動しました。<br />
明日から、全く新しい職場にてお仕事です。環境も激変、仕事内容も激変です。<br />
とりあえず今日は新しい職場の駐車場を確認してきました・・・。</p>
<p>と、久しぶりのブログの更新・・・。引き継ぎを含めてほんとに忙しかったです。明日からはさらに・・・。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chameleonic.org/incident/1436/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ArduinoUnoでRealTimeClockをNTPと同期させる　Step.3　Aruduino IDE Ver.0021用にライブラリを修正する</title>
		<link>http://www.chameleonic.org/incident/1354</link>
		<comments>http://www.chameleonic.org/incident/1354#comments</comments>
		<pubDate>Thu, 02 Dec 2010 15:15:28 +0000</pubDate>
		<dc:creator>chameleon</dc:creator>
				<category><![CDATA[Incident]]></category>

		<guid isPermaLink="false">http://www.chameleonic.org/?p=1354</guid>
		<description><![CDATA[ArduinoUnoでRealTimeClockをNTPと同期させる　Step.2　RTC8564用ライブラリの制作で、RealTimeClockを利用して、Aruduinoに計時させようと考えているわけですが、そもそも基準となる正確な時間をどのように与えるのかという問題があります。 やはり、NTPサーバーより時刻を得るのがいいのではないかと考えて、Aruduinoの開発環境用に作成されたライブラリ「Time Library」を利用してみることにします。 ダウンロードして得られた「Time.zip」を解凍すると「DS1307RTC」「Time」「TimAlarms」のフォルダができるので、librariesフォルダにコピーします。 そして、サンプルスケッチに「TimeNTP.pde」というNTPサーバーから時刻を得るスケッチがありましたので、Aruduino IDE Ver.0021環境からAruduino Unoに当該スケッチをアップロードしてみます。 TimeNTP.pdeをIDEで開いて確認すると、冒頭部分に #include &#60;Time.h&#62; #include &#60;Ethernet.h&#62; #include &#60;UdpBytewise.h&#62; // UDP library from: bjoern@cs.stanford.edu 12/30/2008 #if UDP_TX_PACKET_MAX_SIZE &#60;64 &#124;&#124; UDP_RX_PACKET_MAX_SIZE &#60;64 #error : UDP packet size to small - modify UdpBytewise.h to set buffers to 64 bytes #endif と記述されていて、他にも「UdpBytewise.h」が必要なことがわかります。NTPサーバーはUDPを利用しますから、UDP関連のライブラリがいくつか必要なようです。このライブラリ一式はここからダウンロードできます。解凍したらできあがったファイルを「Ethernet Library」フォルダにコピーします。 ちなみに、UdpBytewise.hに記述されていてるUDP_TX_PACKET_MAX_SIZE とUDP_RX_PACKET_MAX_SIZE の値を64に変更しておけと書いてありますから、直しておきます。 では、コンパイルしてみます。はい・・・見事エラーの嵐ですね。 どうやらSPI.hをインクルードしろといっているようです。確かIDEがVer.0019になってからEthernet Liburaryを使うときにはインクルードが必要になりました。 TimeNTP.pdeに以下を書き加えます。 #include &#60;SPI.h&#62; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.chameleonic.org/incident/1334">ArduinoUnoでRealTimeClockをNTPと同期させる　Step.2　RTC8564用ライブラリの制作</a>で、RealTimeClockを利用して、Aruduinoに計時させようと考えているわけですが、そもそも基準となる正確な時間をどのように与えるのかという問題があります。<br />
やはり、NTPサーバーより時刻を得るのがいいのではないかと考えて、Aruduinoの開発環境用に作成されたライブラリ「<a href="http://www.arduino.cc/playground/Code/Time">Time Library</a>」を利用してみることにします。<br />
ダウンロードして得られた「Time.zip」を解凍すると「DS1307RTC」「Time」「TimAlarms」のフォルダができるので、librariesフォルダにコピーします。</p>
<p>そして、サンプルスケッチに「TimeNTP.pde」というNTPサーバーから時刻を得るスケッチがありましたので、Aruduino IDE Ver.0021環境からAruduino Unoに当該スケッチをアップロードしてみます。<br />
TimeNTP.pdeをIDEで開いて確認すると、冒頭部分に</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-prepro">#include </span><span class="hl-quotes">&lt;</span><span class="hl-string">Time.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro"> </span><span class="hl-code">
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&lt;</span><span class="hl-string">Ethernet.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&lt;</span><span class="hl-string">UdpBytewise.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro">  // UDP library from: bjoern@cs.stanford.edu 12/30/2008 </span><span class="hl-code">
</span><span class="hl-prepro">#if</span><span class="hl-code">  </span><span class="hl-identifier">UDP_TX_PACKET_MAX_SIZE</span><span class="hl-code"> &lt;</span><span class="hl-number">64</span><span class="hl-code"> ||  </span><span class="hl-identifier">UDP_RX_PACKET_MAX_SIZE</span><span class="hl-code"> &lt;</span><span class="hl-number">64</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#error</span><span class="hl-code"> : </span><span class="hl-identifier">UDP</span><span class="hl-code"> </span><span class="hl-identifier">packet</span><span class="hl-code"> </span><span class="hl-identifier">size</span><span class="hl-code"> </span><span class="hl-identifier">to</span><span class="hl-code"> </span><span class="hl-identifier">small</span><span class="hl-code"> - </span><span class="hl-identifier">modify</span><span class="hl-code"> </span><span class="hl-identifier">UdpBytewise</span><span class="hl-code">.</span><span class="hl-identifier">h</span><span class="hl-code"> </span><span class="hl-identifier">to</span><span class="hl-code"> </span><span class="hl-identifier">set</span><span class="hl-code"> </span><span class="hl-identifier">buffers</span><span class="hl-code"> </span><span class="hl-identifier">to</span><span class="hl-code"> </span><span class="hl-number">64</span><span class="hl-code"> </span><span class="hl-identifier">bytes</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#endif</span></pre></div></div>
<p>と記述されていて、他にも「UdpBytewise.h」が必要なことがわかります。NTPサーバーはUDPを利用しますから、UDP関連のライブラリがいくつか必要なようです。このライブラリ一式<a href="http://bitbucket.org/bjoern/arduino_osc/src/14667490521f/libraries/Ethernet/">はここからダウンロード</a>できます。解凍したらできあがったファイルを「Ethernet Library」フォルダにコピーします。<br />
ちなみに、UdpBytewise.hに記述されていてるUDP_TX_PACKET_MAX_SIZE とUDP_RX_PACKET_MAX_SIZE の値を64に変更しておけと書いてありますから、直しておきます。<br />
<a href="http://www.chameleonic.org/wp-content/uploads/11.jpg"><img src="http://www.chameleonic.org/wp-content/uploads/11-150x150.jpg" alt="" title="1" width="150" height="150" class="alignright size-thumbnail wp-image-1387" /></a></p>
<p>では、コンパイルしてみます。はい・・・見事エラーの嵐ですね。<br />
どうやらSPI.hをインクルードしろといっているようです。確かIDEがVer.0019になってからEthernet Liburaryを使うときにはインクルードが必要になりました。<br />
TimeNTP.pdeに以下を書き加えます。</p>
<div class="hl-surround" style="height:61.6px;"><div class="hl-main"><pre><span class="hl-prepro">#include </span><span class="hl-quotes">&lt;</span><span class="hl-string">SPI.h</span><span class="hl-quotes">&gt;</span></pre></div></div>
<p><a href="http://www.chameleonic.org/wp-content/uploads/21.jpg"><img src="http://www.chameleonic.org/wp-content/uploads/21-150x150.jpg" alt="" title="2" width="150" height="150" class="alignright size-thumbnail wp-image-1388" /></a></p>
<p>さて、もう一度コンパイルしてみます。ますますひどいエラーの洗礼を受けました。これだけ一気に表示されると意味がわかりませんね・・・。<br />
気を取り直して落ち着いてエラーを見ながら考えてみます。まずtypes.hについて解決します。これは「UdpBytewise.cpp」を以下のように修正して解決します。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-comment">//extern &quot;C&quot; {</span><span class="hl-code">
</span><span class="hl-comment">//#include &quot;types.h&quot;</span><span class="hl-code">
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&quot;</span><span class="hl-string">w5100.h</span><span class="hl-quotes">&quot;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&quot;</span><span class="hl-string">socket.h</span><span class="hl-quotes">&quot;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-comment">//}</span></pre></div></div>
<p>次に、 &#8216;Sn_MR_UDP&#8217;と &#8216;getSn_RX_RSR&#8217;が宣言されていないというエラーを解決します。いや、確かに宣言されていません。インクルードされているファイルに宣言されているのでしょう。いやいやいやいや、宣言されていないからエラーになるんだから、「かつて宣言されていた」変数名と考えた方がいいわけですね。つまり、依存しているライブラリのコードが修正されて、命名方法が変わったと言うことでしょう。となると、AruduinoIDEの純正ライブラリ群が怪しいです。関連するライブラリをざっと見ます。 &#8216;Sn_MR_UDP&#8217;と &#8216;getSn_RX_RSR&#8217;という命名からソケット関係のライブラリじゃないかと見当をつけておきます。やはり、UDPライブラリの中で、&#8217;Sn_MR_UDP&#8217;と &#8216;getSn_RX_RSR&#8217;に対応する新しい命名の変数を見つけました。これが変わっていたので、IDEのVer.0019あたりからコンパイルエラーが出るようです。</p>
<p>すべてを修正したコードを次に記述しておきます。<br />
<strong>UdpBytewise.cpp</strong>
<div class="hl-surround" style="height:280px;"><div class="hl-main"><pre><span class="hl-mlcomment">/*
* UdpBytewise.cpp: Library to send/receive UDP packets with the Arduino ethernet shield.
* Drop UdpBytewise.h/.cpp into the Ethernet library directory at hardware/libraries/Ethernet/
* TODO: should protect buffer access with critical sections
*
* MIT License:
* Copyright (c) 2008 Bjoern Hartmann
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the &quot;Software&quot;), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* bjoern@cs.stanford.edu 12/30/2008
*/</span><span class="hl-code">
 
</span><span class="hl-comment">//extern &quot;C&quot; {</span><span class="hl-code">
</span><span class="hl-comment">//#include &quot;types.h&quot;</span><span class="hl-code">
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&quot;</span><span class="hl-string">w5100.h</span><span class="hl-quotes">&quot;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&quot;</span><span class="hl-string">socket.h</span><span class="hl-quotes">&quot;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-comment">//}</span><span class="hl-code">
 
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&quot;</span><span class="hl-string">Ethernet.h</span><span class="hl-quotes">&quot;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&quot;</span><span class="hl-string">UdpBytewise.h</span><span class="hl-quotes">&quot;</span><span class="hl-prepro"></span><span class="hl-code">
 
</span><span class="hl-mlcomment">/* Start UDP socket, listening at local port PORT */</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">UdpBytewiseClass</span><span class="hl-code">::</span><span class="hl-identifier">begin</span><span class="hl-brackets">(</span><span class="hl-identifier">uint16_t</span><span class="hl-code"> </span><span class="hl-identifier">port</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
     </span><span class="hl-identifier">_port</span><span class="hl-code"> = </span><span class="hl-identifier">port</span><span class="hl-code">;
     </span><span class="hl-identifier">_sock</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-comment">//TODO: should not be hardcoded</span><span class="hl-code">
     </span><span class="hl-identifier">_txIndex</span><span class="hl-code"> =</span><span class="hl-number">0</span><span class="hl-code">;
     </span><span class="hl-identifier">_rxIndex</span><span class="hl-code"> =</span><span class="hl-number">0</span><span class="hl-code">;
     </span><span class="hl-identifier">_rxSize</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">;
     </span><span class="hl-identifier">_txOverflowStrategy</span><span class="hl-code"> = </span><span class="hl-identifier">UDP_TX_OVERFLOW_SPLIT</span><span class="hl-code">;
     </span><span class="hl-comment">//socket(_sock,Sn_MR_UDP,port,0);</span><span class="hl-code">
     </span><span class="hl-identifier">socket</span><span class="hl-brackets">(</span><span class="hl-identifier">_sock</span><span class="hl-code">,</span><span class="hl-identifier">SnMR</span><span class="hl-code">::</span><span class="hl-identifier">UDP</span><span class="hl-code">,</span><span class="hl-identifier">_port</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
 
</span><span class="hl-mlcomment">/* Is data available in rx buffer? Returns 0 if no, number of available bytes if yes. */</span><span class="hl-code">
</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">UdpBytewiseClass</span><span class="hl-code">::</span><span class="hl-identifier">available</span><span class="hl-brackets">()</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
     </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">_rxSize</span><span class="hl-code">==</span><span class="hl-number">0</span><span class="hl-code"> || </span><span class="hl-identifier">_rxSize</span><span class="hl-code">-</span><span class="hl-identifier">_rxIndex</span><span class="hl-code">==</span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
           </span><span class="hl-comment">//if local buffer is empty or depleted</span><span class="hl-code">
           </span><span class="hl-comment">//check wiz5100 buffer for new packet</span><span class="hl-code">
           </span><span class="hl-comment">// _rxSize = getSn_RX_RSR(_sock); //note: return value is inflated by 8 byte header</span><span class="hl-code">
              </span><span class="hl-identifier">_rxSize</span><span class="hl-code"> = </span><span class="hl-identifier">W5100</span><span class="hl-code">.</span><span class="hl-identifier">getRXReceivedSize</span><span class="hl-brackets">(</span><span class="hl-identifier">_sock</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-comment">//note: return value is inflated by 8 byte header</span><span class="hl-code">
           </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">_rxSize</span><span class="hl-brackets">){</span><span class="hl-code">
                 </span><span class="hl-comment">//if we have a new packet there</span><span class="hl-code">
                 </span><span class="hl-comment">//reset buffer index</span><span class="hl-code">
                 </span><span class="hl-identifier">_rxIndex</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;
                 </span><span class="hl-comment">//copy packet into our local buffer</span><span class="hl-code">
                 </span><span class="hl-identifier">_rxSize</span><span class="hl-code"> = </span><span class="hl-identifier">recvfrom</span><span class="hl-brackets">(</span><span class="hl-identifier">_sock</span><span class="hl-code">,</span><span class="hl-identifier">_rxBuffer</span><span class="hl-code">,</span><span class="hl-identifier">_rxSize</span><span class="hl-code">-</span><span class="hl-number">8</span><span class="hl-code">,</span><span class="hl-identifier">_rxIp</span><span class="hl-code">,&amp;</span><span class="hl-identifier">_rxPort</span><span class="hl-brackets">)</span><span class="hl-code">;
           </span><span class="hl-brackets">}</span><span class="hl-code"> </span><span class="hl-reserved">else</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
                 </span><span class="hl-comment">//else do nothing and rxsize is still 0</span><span class="hl-code">
                 ;
           </span><span class="hl-brackets">}</span><span class="hl-code">
           </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">_rxSize</span><span class="hl-code">; </span><span class="hl-comment">//return the new number of bytes in our buffer</span><span class="hl-code">
     </span><span class="hl-brackets">}</span><span class="hl-code"> </span><span class="hl-reserved">else</span><span class="hl-brackets">{</span><span class="hl-code">
           </span><span class="hl-comment">//if buffer is not empty, return remaining # of bytes</span><span class="hl-code">
           </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">_rxSize</span><span class="hl-code">-</span><span class="hl-identifier">_rxIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
     </span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
 
 
</span><span class="hl-mlcomment">/* Start a new packet with given target ip and port
* returns 1 on success, 0 if we already started a packet */</span><span class="hl-code">
</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">UdpBytewiseClass</span><span class="hl-code">::</span><span class="hl-identifier">beginPacket</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> *</span><span class="hl-identifier">ip</span><span class="hl-code">, </span><span class="hl-types">unsigned</span><span class="hl-code"> </span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">port</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
     </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">_txIndex</span><span class="hl-code">==</span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
           </span><span class="hl-comment">//ok to start new packet - copy ip and port</span><span class="hl-code">
           </span><span class="hl-identifier">_txIp</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">ip</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
           </span><span class="hl-identifier">_txIp</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">ip</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
           </span><span class="hl-identifier">_txIp</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">ip</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
           </span><span class="hl-identifier">_txIp</span><span class="hl-brackets">[</span><span class="hl-number">3</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">ip</span><span class="hl-brackets">[</span><span class="hl-number">3</span><span class="hl-brackets">]</span><span class="hl-code">;
           </span><span class="hl-identifier">_txPort</span><span class="hl-code"> = </span><span class="hl-identifier">port</span><span class="hl-code">;
           </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-number">1</span><span class="hl-code">;
     </span><span class="hl-brackets">}</span><span class="hl-code">
     </span><span class="hl-reserved">else</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
           </span><span class="hl-comment">//we already started a packet and have data in it</span><span class="hl-code">
           </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-number">0</span><span class="hl-code">;
     </span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
 
 
</span><span class="hl-mlcomment">/* Add a byte to the currently assembled packet if there is space
* if there isn't space, either truncate (ignore) or split the packet.
*/</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">UdpBytewiseClass</span><span class="hl-code">::</span><span class="hl-identifier">write</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">b</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
     </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">_txIndex</span><span class="hl-code">&gt;= </span><span class="hl-identifier">UDP_TX_PACKET_MAX_SIZE</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
           </span><span class="hl-comment">//buffer is full - we can either truncate the packet or split in two</span><span class="hl-code">
           </span><span class="hl-reserved">switch</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">_txOverflowStrategy</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
                 </span><span class="hl-reserved">case</span><span class="hl-code"> </span><span class="hl-identifier">UDP_TX_OVERFLOW_SPLIT</span><span class="hl-code">:
                       </span><span class="hl-identifier">endPacket</span><span class="hl-brackets">()</span><span class="hl-code">;
                       </span><span class="hl-identifier">beginPacket</span><span class="hl-brackets">(</span><span class="hl-identifier">_txIp</span><span class="hl-code">,</span><span class="hl-identifier">_txPort</span><span class="hl-brackets">)</span><span class="hl-code">;
                       </span><span class="hl-comment">//fall through to normal add of byte to buffer below</span><span class="hl-code">
                       </span><span class="hl-reserved">break</span><span class="hl-code">;
                 </span><span class="hl-reserved">case</span><span class="hl-code"> </span><span class="hl-identifier">UDP_TX_OVERFLOW_TRUNCATE</span><span class="hl-code">:
                 </span><span class="hl-reserved">default</span><span class="hl-code">:
                       </span><span class="hl-comment">//don't add - just ignore bytes past buffer size</span><span class="hl-code">
                       </span><span class="hl-reserved">return</span><span class="hl-code">;
           </span><span class="hl-brackets">}</span><span class="hl-code">
     </span><span class="hl-brackets">}</span><span class="hl-code">
     </span><span class="hl-identifier">_txBuffer</span><span class="hl-brackets">[</span><span class="hl-identifier">_txIndex</span><span class="hl-code">++</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">b</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/* send an assembled packet out
* returns # of bytes sent on success, 0 if there's nothing to send */</span><span class="hl-code">
</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">UdpBytewiseClass</span><span class="hl-code">::</span><span class="hl-identifier">endPacket</span><span class="hl-brackets">()</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
     </span><span class="hl-comment">// send the packet</span><span class="hl-code">
     </span><span class="hl-identifier">uint16_t</span><span class="hl-code"> </span><span class="hl-identifier">result</span><span class="hl-code"> = </span><span class="hl-identifier">sendto</span><span class="hl-brackets">(</span><span class="hl-identifier">_sock</span><span class="hl-code">,</span><span class="hl-brackets">(</span><span class="hl-types">const</span><span class="hl-code"> </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> *</span><span class="hl-brackets">)</span><span class="hl-identifier">_txBuffer</span><span class="hl-code">,</span><span class="hl-identifier">_txIndex</span><span class="hl-code">,</span><span class="hl-identifier">_txIp</span><span class="hl-code">,</span><span class="hl-identifier">_txPort</span><span class="hl-brackets">)</span><span class="hl-code">;
     </span><span class="hl-comment">// reset buffer index</span><span class="hl-code">
     </span><span class="hl-identifier">_txIndex</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;
     </span><span class="hl-comment">// return sent bytes</span><span class="hl-code">
     </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-brackets">)</span><span class="hl-identifier">result</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/* read the next byte of the last rececived packet */</span><span class="hl-code">
</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">UdpBytewiseClass</span><span class="hl-code">::</span><span class="hl-identifier">read</span><span class="hl-brackets">()</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
     </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">_rxIndex</span><span class="hl-code"> &lt;</span><span class="hl-identifier">_rxSize</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
           </span><span class="hl-comment">// if there is something to be read, return the next byte</span><span class="hl-code">
           </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">_rxBuffer</span><span class="hl-brackets">[</span><span class="hl-identifier">_rxIndex</span><span class="hl-code">++</span><span class="hl-brackets">]</span><span class="hl-code">;
     </span><span class="hl-brackets">}</span><span class="hl-code"> </span><span class="hl-reserved">else</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
           </span><span class="hl-comment">//we already sent the last byte - nothing to do</span><span class="hl-code">
           </span><span class="hl-reserved">return</span><span class="hl-code"> -</span><span class="hl-number">1</span><span class="hl-code">;
     </span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">UdpBytewiseClass</span><span class="hl-code">::</span><span class="hl-identifier">getSenderIp</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code">*</span><span class="hl-identifier">ip</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
     </span><span class="hl-identifier">ip</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">_rxIp</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
     </span><span class="hl-identifier">ip</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">_rxIp</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
     </span><span class="hl-identifier">ip</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">_rxIp</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
     </span><span class="hl-identifier">ip</span><span class="hl-brackets">[</span><span class="hl-number">3</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">_rxIp</span><span class="hl-brackets">[</span><span class="hl-number">3</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-types">unsigned</span><span class="hl-code"> </span><span class="hl-types">int</span><span class="hl-code">  </span><span class="hl-identifier">UdpBytewiseClass</span><span class="hl-code">::</span><span class="hl-identifier">getSenderPort</span><span class="hl-brackets">()</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
     </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">_rxPort</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/* what should we do when we try to add to a full outgoing packet?
* UDP_TX_OVERFLOW_TRUNCATE - throw overflow bytes away
* UDP_TX_OVERFLOW_SPLIT - split into multiple packets
*/</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">UdpBytewiseClass</span><span class="hl-code">::</span><span class="hl-identifier">setOverflowStrategy</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">strategy</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
     </span><span class="hl-identifier">_txOverflowStrategy</span><span class="hl-code"> = </span><span class="hl-identifier">strategy</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/* Create one global object */</span><span class="hl-code">
</span><span class="hl-identifier">UdpBytewiseClass</span><span class="hl-code"> </span><span class="hl-identifier">UdpBytewise</span><span class="hl-code">;</span></pre></div></div>
<p>コンパイルすると通りました。<br />
<a href="http://www.chameleonic.org/wp-content/uploads/3.jpg"><img src="http://www.chameleonic.org/wp-content/uploads/3-150x150.jpg" alt="" title="3" width="150" height="150" class="alignright size-thumbnail wp-image-1377" /></a></p>
<p>さらに、今回は必要ありませんでしたが、UdpRawというライブラリもIDE Ver.0021でコンパイルすると同様のエラーが出ますので、上記と同じ変数を同じように修正します。<br />
同様にいかに修正したファイルを掲載しておきます。</p>
<p><strong>UdpRaw.cpp</strong>
<div class="hl-surround" style="height:280px;"><div class="hl-main"><pre><span class="hl-mlcomment">/*
 *  UdpRaw.cpp: Library to send/receive UDP packets with the Arduino ethernet shield.
 *  This version only offers minimal wrapping of socket.c/socket.h
 *  Drop UdpRaw.h/.cpp into the Ethernet library directory at hardware/libraries/Ethernet/ 
 *
 * MIT License:
 * Copyright (c) 2008 Bjoern Hartmann
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the &quot;Software&quot;), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 * bjoern@cs.stanford.edu 12/30/2008
 */</span><span class="hl-code">
 
</span><span class="hl-comment">//extern &quot;C&quot; {</span><span class="hl-code">
</span><span class="hl-comment">//#include &quot;types.h&quot;</span><span class="hl-code">
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&quot;</span><span class="hl-string">w5100.h</span><span class="hl-quotes">&quot;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&quot;</span><span class="hl-string">socket.h</span><span class="hl-quotes">&quot;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-comment">//}</span><span class="hl-code">
 
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&quot;</span><span class="hl-string">Ethernet.h</span><span class="hl-quotes">&quot;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&quot;</span><span class="hl-string">UdpRaw.h</span><span class="hl-quotes">&quot;</span><span class="hl-prepro"></span><span class="hl-code">
 
</span><span class="hl-mlcomment">/* Start UDP socket, listening at local port PORT */</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">UdpRawClass</span><span class="hl-code">::</span><span class="hl-identifier">begin</span><span class="hl-brackets">(</span><span class="hl-identifier">uint16_t</span><span class="hl-code"> </span><span class="hl-identifier">port</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-identifier">_port</span><span class="hl-code"> = </span><span class="hl-identifier">port</span><span class="hl-code">;
    </span><span class="hl-identifier">_sock</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-comment">//TODO: should not be hardcoded</span><span class="hl-code">
    </span><span class="hl-comment">//socket(_sock,Sn_MR_UDP,_port,0);</span><span class="hl-code">
    </span><span class="hl-identifier">socket</span><span class="hl-brackets">(</span><span class="hl-identifier">_sock</span><span class="hl-code">,</span><span class="hl-identifier">SnMR</span><span class="hl-code">::</span><span class="hl-identifier">UDP</span><span class="hl-code">,</span><span class="hl-identifier">_port</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code">;</span><span class="hl-comment">//Sn_MR_UDP</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/* Send packet contained in buf of length len to peer at specified ip, and port */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Use this function to transmit binary data that might contain 0x00 bytes*/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* This function returns sent data size for success else -1. */</span><span class="hl-code">
</span><span class="hl-identifier">uint16_t</span><span class="hl-code"> </span><span class="hl-identifier">UdpRawClass</span><span class="hl-code">::</span><span class="hl-identifier">sendPacket</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> * </span><span class="hl-identifier">buf</span><span class="hl-code">, </span><span class="hl-identifier">uint16_t</span><span class="hl-code"> </span><span class="hl-identifier">len</span><span class="hl-code">,  </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> * </span><span class="hl-identifier">ip</span><span class="hl-code">, </span><span class="hl-identifier">uint16_t</span><span class="hl-code"> </span><span class="hl-identifier">port</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">sendto</span><span class="hl-brackets">(</span><span class="hl-identifier">_sock</span><span class="hl-code">,</span><span class="hl-brackets">(</span><span class="hl-types">const</span><span class="hl-code"> </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> *</span><span class="hl-brackets">)</span><span class="hl-identifier">buf</span><span class="hl-code">,</span><span class="hl-identifier">len</span><span class="hl-code">,</span><span class="hl-identifier">ip</span><span class="hl-code">,</span><span class="hl-identifier">port</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/* Send  zero-terminated string str as packet to peer at specified ip, and port */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* This function returns sent data size for success else -1. */</span><span class="hl-code">
</span><span class="hl-identifier">uint16_t</span><span class="hl-code"> </span><span class="hl-identifier">UdpRawClass</span><span class="hl-code">::</span><span class="hl-identifier">sendPacket</span><span class="hl-brackets">(</span><span class="hl-types">const</span><span class="hl-code"> </span><span class="hl-types">char</span><span class="hl-code"> </span><span class="hl-identifier">str</span><span class="hl-brackets">[]</span><span class="hl-code">, </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> * </span><span class="hl-identifier">ip</span><span class="hl-code">, </span><span class="hl-identifier">uint16_t</span><span class="hl-code"> </span><span class="hl-identifier">port</span><span class="hl-brackets">){</span><span class="hl-code">    
    </span><span class="hl-comment">// compute strlen</span><span class="hl-code">
    </span><span class="hl-types">const</span><span class="hl-code"> </span><span class="hl-types">char</span><span class="hl-code"> *</span><span class="hl-identifier">s</span><span class="hl-code">;
    </span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-identifier">s</span><span class="hl-code"> = </span><span class="hl-identifier">str</span><span class="hl-code">; *</span><span class="hl-identifier">s</span><span class="hl-code">; ++</span><span class="hl-identifier">s</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">uint16_t</span><span class="hl-code"> </span><span class="hl-identifier">len</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-identifier">s</span><span class="hl-code">-</span><span class="hl-identifier">str</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-comment">// send packet</span><span class="hl-code">
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">sendto</span><span class="hl-brackets">(</span><span class="hl-identifier">_sock</span><span class="hl-code">,</span><span class="hl-brackets">(</span><span class="hl-types">const</span><span class="hl-code"> </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> *</span><span class="hl-brackets">)</span><span class="hl-identifier">str</span><span class="hl-code">,</span><span class="hl-identifier">len</span><span class="hl-code">,</span><span class="hl-identifier">ip</span><span class="hl-code">,</span><span class="hl-identifier">port</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Is data available in rx buffer? Returns 0 if no, number of available bytes if yes. 
 * returned value includes 8 byte UDP header!*/</span><span class="hl-code">
</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">UdpRawClass</span><span class="hl-code">::</span><span class="hl-identifier">available</span><span class="hl-brackets">()</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-comment">//return getSn_RX_RSR(_sock);//W5100.getRXReceivedSize(_sock);</span><span class="hl-code">
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">W5100</span><span class="hl-code">.</span><span class="hl-identifier">getRXReceivedSize</span><span class="hl-brackets">(</span><span class="hl-identifier">_sock</span><span class="hl-brackets">)</span><span class="hl-code">;</span><span class="hl-comment">//getSn_RX_RSR(_sock);</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
 
 
</span><span class="hl-mlcomment">/* Read a received packet into buffer buf (which is of maximum length len); */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* store calling ip and port as well. Call available() to make sure data is ready first. */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* NOTE: I don't believe len is ever checked in implementation of recvfrom(),*/</span><span class="hl-code">
</span><span class="hl-mlcomment">/*       so it's easy to overflow buffer. so we check and truncate. */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* returns number of bytes read, or negative number of bytes we would have needed if we truncated */</span><span class="hl-code">
</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">UdpRawClass</span><span class="hl-code">::</span><span class="hl-identifier">readPacket</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> * </span><span class="hl-identifier">buf</span><span class="hl-code">, </span><span class="hl-identifier">uint16_t</span><span class="hl-code"> </span><span class="hl-identifier">bufLen</span><span class="hl-code">, </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> *</span><span class="hl-identifier">ip</span><span class="hl-code">, </span><span class="hl-identifier">uint16_t</span><span class="hl-code"> *</span><span class="hl-identifier">port</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">packetLen</span><span class="hl-code"> = </span><span class="hl-identifier">available</span><span class="hl-brackets">()</span><span class="hl-code">-</span><span class="hl-number">8</span><span class="hl-code">; </span><span class="hl-comment">//skip UDP header;</span><span class="hl-code">
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">packetLen</span><span class="hl-code"> &lt;</span><span class="hl-number">0</span><span class="hl-code"> </span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-comment">// no real data here    </span><span class="hl-code">
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">packetLen</span><span class="hl-code"> &gt; </span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-brackets">)</span><span class="hl-identifier">bufLen</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
        </span><span class="hl-comment">//packet is too large - truncate</span><span class="hl-code">
        </span><span class="hl-comment">//HACK - hand-parse the UDP packet using TCP recv method</span><span class="hl-code">
        </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">tmpBuf</span><span class="hl-brackets">[</span><span class="hl-number">8</span><span class="hl-brackets">]</span><span class="hl-code">;
        </span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">i</span><span class="hl-code">;
        </span><span class="hl-comment">//read 8 header bytes and get IP and port from it</span><span class="hl-code">
        </span><span class="hl-identifier">recv</span><span class="hl-brackets">(</span><span class="hl-identifier">_sock</span><span class="hl-code">,</span><span class="hl-identifier">tmpBuf</span><span class="hl-code">,</span><span class="hl-number">8</span><span class="hl-brackets">)</span><span class="hl-code">;
        </span><span class="hl-identifier">ip</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">tmpBuf</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
        </span><span class="hl-identifier">ip</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">tmpBuf</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
        </span><span class="hl-identifier">ip</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">tmpBuf</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
        </span><span class="hl-identifier">ip</span><span class="hl-brackets">[</span><span class="hl-number">3</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">tmpBuf</span><span class="hl-brackets">[</span><span class="hl-number">3</span><span class="hl-brackets">]</span><span class="hl-code">;
        *</span><span class="hl-identifier">port</span><span class="hl-code"> = </span><span class="hl-identifier">tmpBuf</span><span class="hl-brackets">[</span><span class="hl-number">4</span><span class="hl-brackets">]</span><span class="hl-code">;
        *</span><span class="hl-identifier">port</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-code">*</span><span class="hl-identifier">port</span><span class="hl-code"> &lt;&lt;</span><span class="hl-number">8</span><span class="hl-brackets">)</span><span class="hl-code"> + </span><span class="hl-identifier">tmpBuf</span><span class="hl-brackets">[</span><span class="hl-number">5</span><span class="hl-brackets">]</span><span class="hl-code">;
        
        </span><span class="hl-comment">//now copy first (bufLen) bytes into buf        </span><span class="hl-code">
        </span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-identifier">i</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">i</span><span class="hl-code">&lt;</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-brackets">)</span><span class="hl-identifier">bufLen</span><span class="hl-code">;</span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
            </span><span class="hl-identifier">recv</span><span class="hl-brackets">(</span><span class="hl-identifier">_sock</span><span class="hl-code">,</span><span class="hl-identifier">tmpBuf</span><span class="hl-code">,</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
            </span><span class="hl-identifier">buf</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">tmpBuf</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
        </span><span class="hl-brackets">}</span><span class="hl-code">
        
        </span><span class="hl-comment">//and just read the rest byte by byte and throw it away</span><span class="hl-code">
        </span><span class="hl-reserved">while</span><span class="hl-brackets">(</span><span class="hl-identifier">available</span><span class="hl-brackets">())</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
            </span><span class="hl-identifier">recv</span><span class="hl-brackets">(</span><span class="hl-identifier">_sock</span><span class="hl-code">,</span><span class="hl-identifier">tmpBuf</span><span class="hl-code">,</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
        </span><span class="hl-brackets">}</span><span class="hl-code">
        
        </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-code">*</span><span class="hl-identifier">packetLen</span><span class="hl-brackets">)</span><span class="hl-code">;
        
        </span><span class="hl-comment">//ALTERNATIVE: requires stdlib - takes a bunch of space</span><span class="hl-code">
        </span><span class="hl-mlcomment">/*//create new buffer and read everything into it
        uint8_t * tmpBuf = (uint8_t *)malloc(packetLen);
        recvfrom(_sock,tmpBuf,packetLen,ip,port);
        if(!tmpBuf) return 0; //couldn't allocate
        // copy first bufLen bytes
        for(unsigned int i=0; i&lt;bufLen; i++) {
            buf[i]=tmpBuf[i];
        }
        //free temp buffer
        free(tmpBuf);
        */</span><span class="hl-code">
        
        
    </span><span class="hl-brackets">}</span><span class="hl-code"> 
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">recvfrom</span><span class="hl-brackets">(</span><span class="hl-identifier">_sock</span><span class="hl-code">,</span><span class="hl-identifier">buf</span><span class="hl-code">,</span><span class="hl-identifier">bufLen</span><span class="hl-code">,</span><span class="hl-identifier">ip</span><span class="hl-code">,</span><span class="hl-identifier">port</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/* Read a received packet, throw away peer's ip and port.  See note above. */</span><span class="hl-code">
</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">UdpRawClass</span><span class="hl-code">::</span><span class="hl-identifier">readPacket</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> * </span><span class="hl-identifier">buf</span><span class="hl-code">, </span><span class="hl-identifier">uint16_t</span><span class="hl-code"> </span><span class="hl-identifier">len</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">ip</span><span class="hl-brackets">[</span><span class="hl-number">4</span><span class="hl-brackets">]</span><span class="hl-code">;
    </span><span class="hl-identifier">uint16_t</span><span class="hl-code"> </span><span class="hl-identifier">port</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">recvfrom</span><span class="hl-brackets">(</span><span class="hl-identifier">_sock</span><span class="hl-code">,</span><span class="hl-identifier">buf</span><span class="hl-code">,</span><span class="hl-identifier">len</span><span class="hl-code">,</span><span class="hl-identifier">ip</span><span class="hl-code">,</span><span class="hl-identifier">port</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
 
 
 
</span><span class="hl-mlcomment">/* Create one global object */</span><span class="hl-code">
</span><span class="hl-identifier">UdpRawClass</span><span class="hl-code"> </span><span class="hl-identifier">UdpRaw</span><span class="hl-code">;</span></pre></div></div>
<p>これでイーサネットを使うライブラリのかなりものもがAruduino IDE Ver.0021でコンパイルが通るようになるはずです。<br />
需要があれば修正ライブラリという形で、ダウンロードできるようにします。</p>
<p>それにしても、Aruduinoは便利ですが、IDEのバージョンアップに伴って依存しているライブラリによってコンパイルができなかったりするという現象は、かつてのWindows環境でのDLL地獄を連想させます。このあたりがもう少し洗練されるといいんですが・・・。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chameleonic.org/incident/1354/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ArduinoUnoでRealTimeClockをNTPと同期させる　Step.2　RTC8564用ライブラリの制作</title>
		<link>http://www.chameleonic.org/incident/1334</link>
		<comments>http://www.chameleonic.org/incident/1334#comments</comments>
		<pubDate>Thu, 02 Dec 2010 03:30:17 +0000</pubDate>
		<dc:creator>chameleon</dc:creator>
				<category><![CDATA[Incident]]></category>

		<guid isPermaLink="false">http://www.chameleonic.org/?p=1334</guid>
		<description><![CDATA[ArduinoUnoでRealTimeClockをNTPと同期させる　Step.1で制御系のだいたいの構想は立ちました。 なぜ、RealTimeClockが必要なのかは突っ込みどころ満載ですが、単に使ってみたかったからに他なりません。実際には、Timeライブラリを使えばArduinoの内部クロックで計時できます。 が、リアルタイムクロックのタイマー機能などを使えば、定期的に温度計測するタイミングなどを、単純なコードで記述できますし、arduinoのCPUの負荷も若干軽減できるはずです。 使ったリアルタイムクロックは秋月電子のものです。エプソントヨコムのRTC8564というチップをのせています。データシートも付属していましたが、エプソントヨコムのWEBサイトから詳細なマニュアルが入手できました。 このリアルタイムクロック用のライブラリを作成してみます。まあ、作らなくてもいいんですが・・・。一応、時計あわせやタイマー、アラームを設定できるようにしたりという機能を実装してみます。制作時間30分くらいなので、あまり突っ込んだ内容になっていないのは笑いですませます。 extern &#34;C&#34; { #include &#60;stdlib.h&#62; #include &#60;string.h&#62; #include &#60;inttypes.h&#62; } /************************************************/ /* Real Time Clock Module */ /* RTC-8564JE/NB */ /* */ /* 1pin CLKOE - open */ /* 2pin CLKOUT - Arduino D7 */ /* 3pin INT - open */ /* 4pin Vss - Arduino GND */ /* 5pin [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Permanent Link to ArduinoUnoでRealTimeClockをNTPと同期させる　Step.1" rel="bookmark" href="http://www.chameleonic.org/incident/1330">ArduinoUnoでRealTimeClockをNTPと同期させる　Step.1</a>で制御系のだいたいの構想は立ちました。</p>
<p>なぜ、RealTimeClockが必要なのかは突っ込みどころ満載ですが、単に使ってみたかったからに他なりません。実際には、Timeライブラリを使えばArduinoの内部クロックで計時できます。<br />
が、リアルタイムクロックのタイマー機能などを使えば、定期的に温度計測するタイミングなどを、単純なコードで記述できますし、arduinoのCPUの負荷も若干軽減できるはずです。</p>
<p>使ったリアルタイムクロックは<a title="RTC8564" href="http://akizukidenshi.com/catalog/g/gI-00233/" target="_blank">秋月電子</a>のものです。エプソントヨコムのRTC8564というチップをのせています。データシートも付属していましたが、エプソントヨコムのWEBサイトから<a title="RTC8564マニュアル" href="http://ndap3-net.ebz.epson.co.jp/w/www/PDFS/epdoc_qd.nsf/476ea3d67f5f3e5649256a7e002aab9f/1dafda8d3c66a9c94925707d003e5f7d/$FILE/ETM11J-06_R8564JENB.pdf" target="_blank">詳細なマニュアル</a>が入手できました。</p>
<p>このリアルタイムクロック用のライブラリを作成してみます。まあ、作らなくてもいいんですが・・・。一応、時計あわせやタイマー、アラームを設定できるようにしたりという機能を実装してみます。制作時間30分くらいなので、あまり突っ込んだ内容になっていないのは笑いですませます。</p>
<div class="hl-surround" style="height:280px;"><div class="hl-main"><pre><span class="hl-types">extern</span><span class="hl-code"> </span><span class="hl-quotes">&quot;</span><span class="hl-string">C</span><span class="hl-quotes">&quot;</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
</span><span class="hl-prepro">    #include </span><span class="hl-quotes">&lt;</span><span class="hl-string">stdlib.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">    #include </span><span class="hl-quotes">&lt;</span><span class="hl-string">string.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">    #include </span><span class="hl-quotes">&lt;</span><span class="hl-string">inttypes.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Real Time Clock Module                       */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* RTC-8564JE/NB                                */</span><span class="hl-code">
</span><span class="hl-mlcomment">/*                                              */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 1pin CLKOE  - open                           */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 2pin CLKOUT - Arduino D7                     */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 3pin INT    - open                           */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 4pin Vss    - Arduino GND                    */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 5pin SDA    - Arduino A4                     */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 6pin SCL    - Arduino A5                     */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 7pin NC     - open                           */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 8pin Vdd    - Arduino 5V &lt;&lt;&lt; (or 3V3)       */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* includes                                     */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-prepro">#include    </span><span class="hl-quotes">&lt;</span><span class="hl-string">WConstants.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#include    </span><span class="hl-quotes">&lt;</span><span class="hl-string">Wire.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#include    </span><span class="hl-quotes">&quot;</span><span class="hl-string">RTC8564.h</span><span class="hl-quotes">&quot;</span><span class="hl-prepro"></span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* defines                                      */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-comment">//Register address</span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-code">    </span><span class="hl-brackets">(</span><span class="hl-number">0xA2</span><span class="hl-code"> &gt;&gt; </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">    </span><span class="hl-comment">//0x51</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_CTRL1</span><span class="hl-code">        </span><span class="hl-number">0x00</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_CTRL2</span><span class="hl-code">        </span><span class="hl-number">0x01</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_SEC</span><span class="hl-code">            </span><span class="hl-number">0x02</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_MIN</span><span class="hl-code">            </span><span class="hl-number">0x03</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_HOUR</span><span class="hl-code">        </span><span class="hl-number">0x04</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_DAY</span><span class="hl-code">            </span><span class="hl-number">0x05</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_WEEK</span><span class="hl-code">        </span><span class="hl-number">0x06</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_MONTH</span><span class="hl-code">        </span><span class="hl-number">0x07</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_YEAR</span><span class="hl-code">        </span><span class="hl-number">0x08</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_MIN_ALM</span><span class="hl-code">        </span><span class="hl-number">0x09</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_HOUR_ALM</span><span class="hl-code">    </span><span class="hl-number">0x0A</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_DAY_ALM</span><span class="hl-code">        </span><span class="hl-number">0x0B</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_WEEK_ALM</span><span class="hl-code">    </span><span class="hl-number">0x0C</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_CLK_FREQ</span><span class="hl-code">    </span><span class="hl-number">0x0D</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_TIM_CTRL</span><span class="hl-code">    </span><span class="hl-number">0x0E</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">RTC8564_TIMER</span><span class="hl-code">        </span><span class="hl-number">0x0F</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code">    </span><span class="hl-identifier">BCD2Decimal</span><span class="hl-brackets">(</span><span class="hl-identifier">x</span><span class="hl-brackets">)</span><span class="hl-code">        </span><span class="hl-brackets">(((</span><span class="hl-identifier">x</span><span class="hl-code">&gt;&gt;</span><span class="hl-number">4</span><span class="hl-brackets">)</span><span class="hl-code">*</span><span class="hl-number">10</span><span class="hl-brackets">)</span><span class="hl-code">+</span><span class="hl-brackets">(</span><span class="hl-identifier">x</span><span class="hl-code">&amp;</span><span class="hl-number">0xf</span><span class="hl-brackets">))</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-comment">//For mask</span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code"> </span><span class="hl-identifier">CLOCK_STOP</span><span class="hl-code">            </span><span class="hl-number">0x20</span><span class="hl-code">    </span><span class="hl-comment">//RTC停止</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code"> </span><span class="hl-identifier">CLOCK_START</span><span class="hl-code">            </span><span class="hl-number">0x00</span><span class="hl-code">    </span><span class="hl-comment">//RTC始動</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-comment">////For Alarm</span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code"> </span><span class="hl-identifier">ALARM_CLEAR</span><span class="hl-code">            </span><span class="hl-number">0x07</span><span class="hl-code">    </span><span class="hl-comment">//AFのみ0クリア</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code"> </span><span class="hl-identifier">ALARM_INT_DIS</span><span class="hl-code">        </span><span class="hl-number">0x05</span><span class="hl-code">    </span><span class="hl-comment">//AFを0クリアし、/INTを禁止</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code"> </span><span class="hl-identifier">ALARM_INT_ENA</span><span class="hl-code">        </span><span class="hl-number">0x02</span><span class="hl-code">    </span><span class="hl-comment">///INTを許可*/</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-comment">////For Timer</span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code"> </span><span class="hl-identifier">TIMER_INT_DIS</span><span class="hl-code">        </span><span class="hl-number">0x0A</span><span class="hl-code">    </span><span class="hl-comment">//TFを0クリアし、/INTを禁止</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code"> </span><span class="hl-identifier">TIMER_INT_ENA</span><span class="hl-code">        </span><span class="hl-number">0x01</span><span class="hl-code">    </span><span class="hl-comment">///INTを許可</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code"> </span><span class="hl-identifier">TIMER_CLEAR</span><span class="hl-code">            </span><span class="hl-number">0x0B</span><span class="hl-code">    </span><span class="hl-comment">//TFのみ0クリア</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-comment">////For bit operation</span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code"> </span><span class="hl-identifier">AND</span><span class="hl-code">                    </span><span class="hl-number">0</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code"> </span><span class="hl-identifier">OR</span><span class="hl-code">                    </span><span class="hl-number">1</span><span class="hl-prepro"></span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* constructors                                 */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">RTC8564</span><span class="hl-brackets">()</span><span class="hl-code">
    : </span><span class="hl-identifier">_seconds</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code">,
     </span><span class="hl-identifier">_minutes</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code">,
     </span><span class="hl-identifier">_hours</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code">,
     </span><span class="hl-identifier">_days</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code">,
     </span><span class="hl-identifier">_weekdays</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code">,
     </span><span class="hl-identifier">_months</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code">,
     </span><span class="hl-identifier">_years</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code">,
     </span><span class="hl-identifier">_century</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code">
</span><span class="hl-brackets">{</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-comment">//Public Methods//////////////////////////////////</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Initialization of RTC                        */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">begin</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">begin</span><span class="hl-brackets">()</span><span class="hl-code">;
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">isvalid</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-reserved">false</span><span class="hl-brackets">){</span><span class="hl-code">
        </span><span class="hl-identifier">init</span><span class="hl-brackets">()</span><span class="hl-code">;
    </span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* The same period of time                      */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">sync</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">date_time</span><span class="hl-brackets">[]</span><span class="hl-code">,</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">size</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">controlClock</span><span class="hl-brackets">(</span><span class="hl-identifier">CLOCK_STOP</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SEC</span><span class="hl-brackets">)</span><span class="hl-code">;    </span><span class="hl-comment">//Set of time data</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">date_time</span><span class="hl-code">, </span><span class="hl-identifier">size</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;    
    </span><span class="hl-identifier">controlClock</span><span class="hl-brackets">(</span><span class="hl-identifier">CLOCK_START</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/*******************************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Settings of alarm                                               */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* &gt;&gt;&gt;The alarm value is set with BCD.                             */</span><span class="hl-code">
</span><span class="hl-mlcomment">/*                                                                 */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 0 clearing of AF. And /INT output is prohibited.&lt;&lt;&lt;ALARM_CLEAR  */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 0 clearing of TF. And /INT output is prohibited.&lt;&lt;&lt;TIMER_CLEAR  */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Other values are not changed.                                   */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* flag='AND' -&gt;　c2reg &amp; val                                      */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* flag='OR'  -&gt;  c2reg | val                                      */</span><span class="hl-code">
</span><span class="hl-mlcomment">/*******************************************************************/</span><span class="hl-code">
</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">set_c2reg</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">val</span><span class="hl-code">,</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">flag</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">buff</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_CTRL2</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">requestFrom</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-code">, </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">flag</span><span class="hl-code">==</span><span class="hl-number">0</span><span class="hl-brackets">){</span><span class="hl-code">
        </span><span class="hl-identifier">buff</span><span class="hl-code"> = </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">receive</span><span class="hl-brackets">()</span><span class="hl-code"> &amp; </span><span class="hl-identifier">val</span><span class="hl-code">;</span><span class="hl-comment">//val=0x05 AF&gt;&gt;0 AIE&gt;&gt;0 /INTの出力禁止</span><span class="hl-code">
    </span><span class="hl-brackets">}</span><span class="hl-reserved">else</span><span class="hl-brackets">{</span><span class="hl-code">
        </span><span class="hl-identifier">buff</span><span class="hl-code"> = </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">receive</span><span class="hl-brackets">()</span><span class="hl-code"> | </span><span class="hl-identifier">val</span><span class="hl-code">;
    </span><span class="hl-brackets">}</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;
    
    </span><span class="hl-comment">//return buff;</span><span class="hl-code">
    
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_CTRL2</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">buff</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Set at alarm time　　　　                     */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">alarm_set</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">aweek</span><span class="hl-code">,</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">aday</span><span class="hl-code">,</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">ahour</span><span class="hl-code">,</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">amin</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">set_c2reg</span><span class="hl-brackets">(</span><span class="hl-identifier">ALARM_INT_DIS</span><span class="hl-code">,</span><span class="hl-identifier">AND</span><span class="hl-brackets">)</span><span class="hl-code">;    </span><span class="hl-comment">//アラーム機能停止        </span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_MIN_ALM</span><span class="hl-brackets">)</span><span class="hl-code">;      </span><span class="hl-comment">//アラーム分のアドレス</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">amin</span><span class="hl-brackets">)</span><span class="hl-code">;                  </span><span class="hl-comment">//アラーム分の値 0-59 </span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">ahour</span><span class="hl-brackets">)</span><span class="hl-code">;                 </span><span class="hl-comment">//アラーム時の値 0-23</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">aday</span><span class="hl-brackets">)</span><span class="hl-code">;                  </span><span class="hl-comment">//アラーム日の値 1-31</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">aweek</span><span class="hl-brackets">)</span><span class="hl-code">;                 </span><span class="hl-comment">//アラーム曜の値 日月火水木金土 0123456 </span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">; </span><span class="hl-comment">//上位5bitは Don't Care</span><span class="hl-code">
    </span><span class="hl-identifier">set_c2reg</span><span class="hl-brackets">(</span><span class="hl-identifier">ALARM_INT_ENA</span><span class="hl-code">,</span><span class="hl-identifier">OR</span><span class="hl-brackets">)</span><span class="hl-code">;    </span><span class="hl-comment">//アラーム機能開始</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Reset alarm flag(only AF flag)  　           */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">alarm_reset</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">set_c2reg</span><span class="hl-brackets">(</span><span class="hl-identifier">ALARM_CLEAR</span><span class="hl-code">,</span><span class="hl-identifier">AND</span><span class="hl-brackets">)</span><span class="hl-code">;        </span><span class="hl-comment">//AFのみ0クリアする 0x07</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Set Timer                       　           */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">timer_set</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">timer</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">set_c2reg</span><span class="hl-brackets">(</span><span class="hl-identifier">TIMER_INT_DIS</span><span class="hl-code">,</span><span class="hl-identifier">AND</span><span class="hl-brackets">)</span><span class="hl-code">;    </span><span class="hl-comment">//TFを0クリアする　TIEに0を書き込み　/INTの出力禁止</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_TIM_CTRL</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x02</span><span class="hl-brackets">)</span><span class="hl-code">;                </span><span class="hl-comment">//TE=0 TD1=1 TD0=0(1Hz 1秒桁更新にセット)</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">timer</span><span class="hl-brackets">)</span><span class="hl-code">;                </span><span class="hl-comment">//タイマー間隔（秒指定）</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;
    </span><span class="hl-identifier">set_c2reg</span><span class="hl-brackets">(</span><span class="hl-identifier">TIMER_INT_ENA</span><span class="hl-code">,</span><span class="hl-identifier">OR</span><span class="hl-brackets">)</span><span class="hl-code">;    </span><span class="hl-comment">//TIEに1を書き込み　/INTの出力許可</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Repetition processing of the timer      　　 */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">timer_reload</span><span class="hl-brackets">(</span><span class="hl-types">bool</span><span class="hl-code"> </span><span class="hl-identifier">repeat</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">buff</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_CTRL2</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">requestFrom</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-code">, </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">repeat</span><span class="hl-code"> == </span><span class="hl-reserved">false</span><span class="hl-brackets">){</span><span class="hl-code">
        </span><span class="hl-identifier">buff</span><span class="hl-code"> = </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">receive</span><span class="hl-brackets">()</span><span class="hl-code"> &amp; </span><span class="hl-number">0x0f</span><span class="hl-code">;</span><span class="hl-comment">//TI/TPを0にする（繰り返しなし）</span><span class="hl-code">
    </span><span class="hl-brackets">}</span><span class="hl-code">
    </span><span class="hl-reserved">else</span><span class="hl-brackets">{</span><span class="hl-code">
        </span><span class="hl-identifier">buff</span><span class="hl-code"> = </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">receive</span><span class="hl-brackets">()</span><span class="hl-code"> | </span><span class="hl-number">0x10</span><span class="hl-code">;</span><span class="hl-comment">//TI/TPを1にする（繰り返しあり）</span><span class="hl-code">
    </span><span class="hl-brackets">}</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;
    
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_CTRL2</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">buff</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;    
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/******************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Set clockout　　　　　　　　　　　      　　       */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* tfreq: 32768Hz=0x80,1024Hz=0x81,32Hz=0x82,1Hz=0x83 */</span><span class="hl-code">
</span><span class="hl-mlcomment">/******************************************************/</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">timer_clockout</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">tfreq</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_CLK_FREQ</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">tfreq</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Timer beginning                         　　 */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 4096Hz:0x81,64Hz:0x81,1sec:0x82,1min:0x83    */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* After setting the interval time,             */</span><span class="hl-code">
</span><span class="hl-mlcomment">/*                         you begin the timer. */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 4096Hz:0x81,64Hz:0x81,1sec:0x82,1min:0x83    */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">timer_start</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">tc</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_TIM_CTRL</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">tc</span><span class="hl-brackets">)</span><span class="hl-code">;                </span><span class="hl-comment">//timer値 (0x82)&gt;&gt;&gt;TE=1 TD1=1 TD0=0 1Hz 1秒桁更新</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;    
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Reset timer flag(only TF flag)  　           */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">timer_reset</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">set_c2reg</span><span class="hl-brackets">(</span><span class="hl-identifier">TIMER_CLEAR</span><span class="hl-code">,</span><span class="hl-identifier">AND</span><span class="hl-brackets">)</span><span class="hl-code">;    </span><span class="hl-comment">//0x0B TFのみを0クリアする</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* The value of the C2 register is obtained.    */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">get_c2reg</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">buff</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_CTRL2</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">requestFrom</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-code">, </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">buff</span><span class="hl-code"> = </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">receive</span><span class="hl-brackets">()</span><span class="hl-code"> &amp; </span><span class="hl-number">0x0C</span><span class="hl-code">;</span><span class="hl-comment">//AF,TF以外をマスク</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;    
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">buff</span><span class="hl-code">;                </span><span class="hl-comment">//0x08&gt;&gt;&gt;AF=1 0x04&gt;&gt;&gt;TF=1 0x0C&gt;&gt;&gt;AF=TF=1 0x00 AF=TF=0</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Whether RTC can use it is examined.          */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">bool</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">available</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">buff</span><span class="hl-brackets">[</span><span class="hl-number">7</span><span class="hl-brackets">]</span><span class="hl-code">;
    
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SEC</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">// write reg addr 02</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;    
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">requestFrom</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-code">, </span><span class="hl-number">7</span><span class="hl-brackets">)</span><span class="hl-code">;
    
    </span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">i</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">&lt;</span><span class="hl-number">7</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">){</span><span class="hl-code">
        </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">available</span><span class="hl-brackets">()){</span><span class="hl-code">
            </span><span class="hl-identifier">buff</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">receive</span><span class="hl-brackets">()</span><span class="hl-code">;
        </span><span class="hl-brackets">}</span><span class="hl-code">
    </span><span class="hl-brackets">}</span><span class="hl-code">
    
    </span><span class="hl-identifier">_seconds</span><span class="hl-code">  = </span><span class="hl-identifier">buff</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code"> &amp; </span><span class="hl-number">0x7f</span><span class="hl-code">;
    </span><span class="hl-identifier">_minutes</span><span class="hl-code">  = </span><span class="hl-identifier">buff</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code"> &amp; </span><span class="hl-number">0x7f</span><span class="hl-code">;
    </span><span class="hl-identifier">_hours</span><span class="hl-code">      = </span><span class="hl-identifier">buff</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code"> &amp; </span><span class="hl-number">0x3f</span><span class="hl-code">;
    </span><span class="hl-identifier">_days</span><span class="hl-code">      = </span><span class="hl-identifier">buff</span><span class="hl-brackets">[</span><span class="hl-number">3</span><span class="hl-brackets">]</span><span class="hl-code"> &amp; </span><span class="hl-number">0x3f</span><span class="hl-code">;
    </span><span class="hl-identifier">_weekdays</span><span class="hl-code"> = </span><span class="hl-identifier">buff</span><span class="hl-brackets">[</span><span class="hl-number">4</span><span class="hl-brackets">]</span><span class="hl-code"> &amp; </span><span class="hl-number">0x07</span><span class="hl-code">;
    </span><span class="hl-identifier">_months</span><span class="hl-code">      = </span><span class="hl-identifier">buff</span><span class="hl-brackets">[</span><span class="hl-number">5</span><span class="hl-brackets">]</span><span class="hl-code"> &amp; </span><span class="hl-number">0x1f</span><span class="hl-code">;
    </span><span class="hl-identifier">_years</span><span class="hl-code">      = </span><span class="hl-identifier">buff</span><span class="hl-brackets">[</span><span class="hl-number">6</span><span class="hl-brackets">]</span><span class="hl-code">;
    </span><span class="hl-identifier">_century</span><span class="hl-code">  = </span><span class="hl-brackets">(</span><span class="hl-identifier">buff</span><span class="hl-brackets">[</span><span class="hl-number">5</span><span class="hl-brackets">]</span><span class="hl-code"> &amp; </span><span class="hl-number">0x80</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-number">1</span><span class="hl-code"> : </span><span class="hl-number">0</span><span class="hl-code">;
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">buff</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code"> &amp; </span><span class="hl-number">0x80</span><span class="hl-code"> ? </span><span class="hl-reserved">false</span><span class="hl-code"> : </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* The flag of VL is examined.                  */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">bool</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">isvalid</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SEC</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">requestFrom</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-code">, </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">available</span><span class="hl-brackets">()){</span><span class="hl-code">
        </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">buff</span><span class="hl-code"> = </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">receive</span><span class="hl-brackets">()</span><span class="hl-code">;
        </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">buff</span><span class="hl-code"> &amp; </span><span class="hl-number">0x80</span><span class="hl-code"> ? </span><span class="hl-reserved">false</span><span class="hl-code"> : </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;    </span><span class="hl-comment">//VLをチェックする。</span><span class="hl-code">
    </span><span class="hl-brackets">}</span><span class="hl-code">
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* The flag of AF is examined.                  */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">bool</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">alarm_check</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_CTRL2</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">requestFrom</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-code">,</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">available</span><span class="hl-brackets">())</span><span class="hl-code">
    </span><span class="hl-brackets">{</span><span class="hl-code">
      </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-brackets">((</span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">receive</span><span class="hl-brackets">()</span><span class="hl-code"> &amp; </span><span class="hl-number">0x08</span><span class="hl-brackets">)</span><span class="hl-code"> != </span><span class="hl-number">0x08</span><span class="hl-code"> ? </span><span class="hl-reserved">false</span><span class="hl-code"> : </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-brackets">}</span><span class="hl-code">
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* The flag of TF is examined.                  */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">bool</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">timer_check</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">){</span><span class="hl-code"> 
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_CTRL2</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">requestFrom</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-code">, </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">available</span><span class="hl-brackets">())</span><span class="hl-code">    
    </span><span class="hl-brackets">{</span><span class="hl-code">
      </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-brackets">((</span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">receive</span><span class="hl-brackets">()</span><span class="hl-code"> &amp; </span><span class="hl-number">0x04</span><span class="hl-brackets">)</span><span class="hl-code"> != </span><span class="hl-number">0x04</span><span class="hl-code"> ? </span><span class="hl-reserved">false</span><span class="hl-code"> : </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-brackets">}</span><span class="hl-code">
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-comment">//Private Methods/////////////////////////////////</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Initialization                               */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">init</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">)</span><span class="hl-code">
</span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-identifier">delay</span><span class="hl-brackets">(</span><span class="hl-number">3000</span><span class="hl-brackets">)</span><span class="hl-code">;                </span><span class="hl-comment">//tSTA &gt;&gt; Ta=+25C Vdd=1V8 Max-&gt;3.0s </span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;    </span><span class="hl-comment">//0x51</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_CTRL1</span><span class="hl-brackets">)</span><span class="hl-code">;    </span><span class="hl-comment">//The following values are written from the register address 0x00. </span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x20</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//00 Control 1 &gt;&gt; STOP=1</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x00</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//01 Control 2 &gt;&gt; FLAG CLEAR</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x00</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//02 Seconds</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x00</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//03 Minutes</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x09</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//04 Hours</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x01</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//05 Days</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x01</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//06 Weekdays</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x01</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//07 Months</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x01</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//08 Years</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x00</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//09 Minutes Alarm</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x00</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//0A Hours Alarm</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x00</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//0B Days Alarm</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x00</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//0C Weekdays Alarm</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x00</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//0D CLKOUT</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x00</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//0E Timer control</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x00</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//0F Timer</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-number">0x00</span><span class="hl-brackets">)</span><span class="hl-code">;            </span><span class="hl-comment">//00 Control 1, STOP=0</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* STOP flag control function                   */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 0x20 STOP=1(Clock stop)                      */</span><span class="hl-code">
</span><span class="hl-mlcomment">/* 0x00 STOP=0(Clock start)                     */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">controlClock</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">flag</span><span class="hl-brackets">){</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">beginTransmission</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_SLAVE_ADRS</span><span class="hl-brackets">)</span><span class="hl-code">;    </span><span class="hl-comment">//0x51</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">RTC8564_CTRL1</span><span class="hl-brackets">)</span><span class="hl-code">;                    </span><span class="hl-comment">//0x00</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">send</span><span class="hl-brackets">(</span><span class="hl-identifier">flag</span><span class="hl-brackets">)</span><span class="hl-code">;                            </span><span class="hl-comment">//STOP</span><span class="hl-code">
    </span><span class="hl-identifier">Wire</span><span class="hl-code">.</span><span class="hl-identifier">endTransmission</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
 
 
 
</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">seconds</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">format</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">format</span><span class="hl-code"> == </span><span class="hl-identifier">Decimal</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">BCD2Decimal</span><span class="hl-brackets">(</span><span class="hl-identifier">_seconds</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">_seconds</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">minutes</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">format</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">format</span><span class="hl-code"> == </span><span class="hl-identifier">Decimal</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">BCD2Decimal</span><span class="hl-brackets">(</span><span class="hl-identifier">_minutes</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">_minutes</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">hours</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">format</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">format</span><span class="hl-code"> == </span><span class="hl-identifier">Decimal</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">BCD2Decimal</span><span class="hl-brackets">(</span><span class="hl-identifier">_hours</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">_hours</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">days</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">format</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">format</span><span class="hl-code"> == </span><span class="hl-identifier">Decimal</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">BCD2Decimal</span><span class="hl-brackets">(</span><span class="hl-identifier">_days</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">_days</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">weekdays</span><span class="hl-brackets">()</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">_weekdays</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">months</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">format</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">format</span><span class="hl-code"> == </span><span class="hl-identifier">Decimal</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">BCD2Decimal</span><span class="hl-brackets">(</span><span class="hl-identifier">_months</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">_months</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">years</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">format</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">format</span><span class="hl-code"> == </span><span class="hl-identifier">Decimal</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">BCD2Decimal</span><span class="hl-brackets">(</span><span class="hl-identifier">_years</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">_years</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-types">bool</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">century</span><span class="hl-brackets">()</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">_century</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
 
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-mlcomment">/* Preinstantiate Objects                       */</span><span class="hl-code">
</span><span class="hl-mlcomment">/************************************************/</span><span class="hl-code">
</span><span class="hl-identifier">RTC8564</span><span class="hl-code"> </span><span class="hl-identifier">RTC</span><span class="hl-code"> = </span><span class="hl-identifier">RTC8564</span><span class="hl-brackets">()</span><span class="hl-code">;</span></pre></div></div>
<p>ヘッダファイルが</p>
<div class="hl-surround" style="height:280px;"><div class="hl-main"><pre><span class="hl-prepro">#ifndef</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564_h</span><span class="hl-prepro"></span><span class="hl-code">
</span><span class="hl-prepro">#define</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564_h</span><span class="hl-prepro"></span><span class="hl-code">
 
</span><span class="hl-prepro">#include </span><span class="hl-quotes">&lt;</span><span class="hl-string">inttypes.h</span><span class="hl-quotes">&gt;</span><span class="hl-prepro"></span><span class="hl-code">
 
</span><span class="hl-types">class</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code">
</span><span class="hl-brackets">{</span><span class="hl-code">
</span><span class="hl-reserved">private</span><span class="hl-code">:
    </span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">init</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">controlClock</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">flag</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">_seconds</span><span class="hl-code">;
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">_minutes</span><span class="hl-code">;
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">_hours</span><span class="hl-code">;
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">_days</span><span class="hl-code">;
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">_weekdays</span><span class="hl-code">;
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">_months</span><span class="hl-code">;
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">_years</span><span class="hl-code">;
    </span><span class="hl-types">bool</span><span class="hl-code">    </span><span class="hl-identifier">_century</span><span class="hl-code">;
    
</span><span class="hl-reserved">public</span><span class="hl-code">:
    </span><span class="hl-types">enum</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
        </span><span class="hl-identifier">BCD</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">,
        </span><span class="hl-identifier">Decimal</span><span class="hl-code"> = </span><span class="hl-number">1</span><span class="hl-code">,
    </span><span class="hl-brackets">}</span><span class="hl-code">;
    </span><span class="hl-identifier">RTC8564</span><span class="hl-brackets">()</span><span class="hl-code">;
    </span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">begin</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">sync</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">date_time</span><span class="hl-brackets">[]</span><span class="hl-code">,</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">size</span><span class="hl-code"> = </span><span class="hl-number">7</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-types">bool</span><span class="hl-code"> </span><span class="hl-identifier">available</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-types">bool</span><span class="hl-code"> </span><span class="hl-identifier">isvalid</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">)</span><span class="hl-code">;    
    </span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">alarm_set</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">aweek</span><span class="hl-code">,</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">aday</span><span class="hl-code">,</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">ahour</span><span class="hl-code">,</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">amin</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">alarm_reset</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-types">bool</span><span class="hl-code"> </span><span class="hl-identifier">alarm_check</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-types">bool</span><span class="hl-code"> </span><span class="hl-identifier">timer_check</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">timer_set</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">timer</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">timer_start</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">tc</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">timer_reload</span><span class="hl-brackets">(</span><span class="hl-types">bool</span><span class="hl-code"> </span><span class="hl-identifier">repeat</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">timer_clockout</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">tfreq</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">timer_reset</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-types">int</span><span class="hl-code">  </span><span class="hl-identifier">get_c2reg</span><span class="hl-brackets">(</span><span class="hl-types">void</span><span class="hl-brackets">)</span><span class="hl-code">;    
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">seconds</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">format</span><span class="hl-code"> = </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">BCD</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code">;
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">minutes</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">format</span><span class="hl-code"> = </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">BCD</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code">;
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">hours</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">format</span><span class="hl-code"> = </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">BCD</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code">;
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">days</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">format</span><span class="hl-code"> = </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">BCD</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code">;
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">weekdays</span><span class="hl-brackets">()</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code">;
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">months</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">format</span><span class="hl-code"> = </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">BCD</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code">;
    </span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">years</span><span class="hl-brackets">(</span><span class="hl-identifier">uint8_t</span><span class="hl-code"> </span><span class="hl-identifier">format</span><span class="hl-code"> = </span><span class="hl-identifier">RTC8564</span><span class="hl-code">::</span><span class="hl-identifier">BCD</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code">;
    </span><span class="hl-types">bool</span><span class="hl-code"> </span><span class="hl-identifier">century</span><span class="hl-brackets">()</span><span class="hl-code"> </span><span class="hl-types">const</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
 
</span><span class="hl-types">extern</span><span class="hl-code"> </span><span class="hl-identifier">RTC8564</span><span class="hl-code"> </span><span class="hl-identifier">RTC</span><span class="hl-code">;
 
</span><span class="hl-prepro">#endif</span></pre></div></div>
<p>使い方は<br />
RTC.sync(0&#215;01,0&#215;02,0&#215;03,0&#215;04,05,0&#215;06,0&#215;10);<br />
でリアルタイムクロックに時刻をセットしたりできます。<br />
ちなみに10年6月4日金曜日3時2分1秒をセットしています。具体的なスケッチは次のエントリーで。</p>
<p><a href="http://www.chameleonic.org/download/RTC8564.zip"><strong>Download</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chameleonic.org/incident/1334/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

