====== AN32004 - RTC(리얼타임 클록) DS3231 연결 ====== DS3231 는 달라스사의 RTC (리얼타임 클록) 칩입니다. 32KHZ 크리스털을 내장하고 있어 외부에 별도로 크리스털을 연결할 필요가 없으며, 또한 서미스터를 내장하고 있어, 온도변화에 따른 발진오차를 자체보상해줍니다. 따라서 기존 다른 RTC 칩보다 오차율이 적습니다. {{ :cublocapp:an32004:ds3231s.png?nolink |}} DS3231 는 I2C 통신방식으로 연결됩니다. 따라서 CUBLOC / CUTOUCH 의 I2C 관련명령어로 억세스할 수 있습니다. ===== 결선도 ===== {{ :cublocapp:an32004:ds3231sch.png?nolink |}} DS3231B 의 VBAT 단자에 3V 정도의 밧데리를 연결하면 정전시 시간증가도 가능합니다. 내부에 밧데리 관련회로가 들어있으므로 별도의 추가회로 (다이오드등)없이 밧데리만 연결하면 됩니다. ===== 소스 프로그램 ===== {{ :cublocapp:an32004:an32004.zip |}} 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 씩 증가됩니다. 위에서부터 차례대로 초,분,시,요일,일, 월,연도를 나타냅니다 {{ :cublocapp:an32004:ds3231_debug.png?nolink |}} 아래 레지스터맵에서 알 수 있듯이, 0 부터 6 번지를 읽어온것입니다. {{ :cublocapp:an32004:ds3231_table.png?nolink |}} [[cublocapp:index|한단계 뒤로가기]]