#norelated #contents * RTCサンプル [#o86fce4c] RTCモジュールとI2Cで通信して時計を作る。~ I2Cは前回よくわかってないって書いたけど、前よりはちょっと理解した。~ USARTは、2本の線を使って、1本が送信、1本が受信の役割をするけど、I2Cは同じ二本でも、1本がクロック、1本がデータになっていて、複数の機器を制御できるバス通信らしい。~ 複数の機器は、それぞれがマスターにもスレーブにもなれて、それぞれの状態で送信受信ができるらしい。~ AVRと[[秋月のRTCモジュール:http://akizukidenshi.com/catalog/g/gI-00233/]]で、このI2Cという方式でデータのやり取りをすることにより、時刻の設定、読み出し等が可能になると。~ ** 回路図 [#s17638b1] 前回書いたように、UART(USART)はRXD(PD0)とTXD(PD1)をクロスに繋いだけど、I2CはSCL(PC5)とSDA(PC4)は、それぞれ同じもの同士を繋ぐ。 SCLとSDAは、RTCモジュールのジャンパをショートすれば、内部でプルアップ抵抗が有効になるらしいけど、なんとなくそのままにしておきたかったので、自前で内部に持っているのと同じ2.2kΩの抵抗をつけてあります。~ プルアップ抵抗値の決め方とかも、理由があるんだろうけど、まだよくわかってません。~ #ref(RtcTest.png,left,nowrap,RTCサンプル) ** ソースコード [#lfaf1c0f] //まず、メインで参照する各種ライブラリ。~ //&ref(util.h,left,nowrap,ユーティリティヘッダ);&ref(util.c,left,nowrap,ユーティリティソース);&ref(LcdLib.h,left,nowrap,LCDライブラリヘッダ);&ref(LcdLib.c,left,nowrap,LCDライブラリソース);~ *** 基本動作 [#v775d1bd]