DS3231 는 달라스사의 RTC (리얼타임 클록) 칩입니다. 32KHZ 크리스털을 내장하고 있어 외부에 별도로 크리스털을 연결할 필요가 없으며, 또한 서미스터를 내장하고 있어, 온도변화에 따른 발진오차를 자체보상해줍니다. 따라서 기존 다른 RTC 칩보다 오차율이 적습니다.
DS3231 는 I2C 통신방식으로 연결됩니다. 따라서 CUBLOC / CUTOUCH 의 I2C 관련명령어로 억세스할 수 있습니다.
DS3231B 의 VBAT 단자에 3V 정도의 밧데리를 연결하면 정전시 시간증가도 가능합니다. 내부에 밧데리 관련회로가 들어있으므로 별도의 추가회로 (다이오드등)없이 밧데리만 연결하면 됩니다.
Const Device = CB280 Set I2c 16,17 Dim i As Integer Wait 100 Rtcwrite 0,&h20 ' Sec Rtcwrite 1,&h59 ' Min Rtcwrite 2,&h23 ' Hour 24h Rtcwrite 3,&h7 ' day 1-7, 1=Sun, 2=Mon, 3=Tue, 4=Wed, 5=Thu, 6=FRI, 7=SAT Rtcwrite 4,&h31 ' Date Rtcwrite 5,&h12 ' Month Rtcwrite 6,&h08 ' Year Do I = Rtcread(0) Debug Goxy,1,1,Hex2 I, " Sec" I = Rtcread(1) Debug Goxy,1,2,Hex2 I, " Min" I = Rtcread(2) And &h3f Debug Goxy,1,3,Hex2 I, " Hour" I = Rtcread(3) Debug Goxy,1,4,Hex2 I, " Day" I = Rtcread(4) Debug Goxy,1,5,Hex2 I, " Date" I = Rtcread(5) Debug Goxy,1,6,Hex2 I, " Month" I = Rtcread(6) Debug Goxy,1,7,Hex2 I, " Year" Wait 500 Loop End Function Rtcread(__RTCadr As Byte) As Byte I2cstart If I2cwrite(&hd0) = 1 Then Exit Function If I2cwrite(__RTCadr) = 1 Then Exit Function I2cstop I2cstart If I2cwrite(&hd1) = 1 Then Exit Function Rtcread = I2creadna(0) I2cstop End Function Sub Rtcwrite(__RTCadr As Byte, __RTCdata As Byte) I2cstart If I2cwrite(&hd0) = 1 Then Exit Sub If I2cwrite(__RTCadr) = 1 Then Exit Sub If I2cwrite(__RTCdata) = 1 Then Exit Sub I2cstop End Sub
실행하면 다음과 같은 화면이 표시되고, 맨위에 있는 숫자가 1 초마다 1 씩 증가됩니다. 위에서부터 차례대로 초,분,시,요일,일, 월,연도를 나타냅니다
아래 레지스터맵에서 알 수 있듯이, 0 부터 6 번지를 읽어온것입니다.