37 from datetime
import datetime, date, time
66 I2C.__init__(self, 0x68)
70 if not con
in range(0, 0xFF + 1):
71 raise ValueError(
"control value [%d] out of range [%d..%d]" % (con, 0x00, 0xFF))
74 self.__setCon__(self.CON_DEFAULT)
80 data = self.readRegister(self.SEC)
81 return self.BcdBits2Int(data & self.SEC_MASK)
84 data = self.readRegister(self.MIN)
85 return self.BcdBits2Int(data & self.MIN_MASK)
88 data = self.readRegister(self.HRS)
89 return self.BcdBits2Int(data & self.HRS_MASK)
92 data = self.readRegister(self.DAY)
93 return self.BcdBits2Int(data & self.DAY_MASK)
96 data = self.readRegister(self.MON)
97 return self.BcdBits2Int(data & self.MON_MASK)
100 data = self.readRegister(self.YRS)
101 return 2000 + self.BcdBits2Int(data & self.YRS_MASK)
104 data = self.readRegister(self.DOW)
105 return self.BcdBits2Int(data & self.DOW_MASK)
108 self.writeRegister(self.DOW, self.Int2BcdBits(value & self.DOW_MASK))
114 data = self.readRegisters(self.SEC, 7)
115 second = self.BcdBits2Int(data[0] & self.SEC_MASK)
116 minute = self.BcdBits2Int(data[1] & self.MIN_MASK)
117 hour = self.BcdBits2Int(data[2] & self.HRS_MASK)
118 day = self.BcdBits2Int(data[4] & self.DAY_MASK)
119 month = self.BcdBits2Int(data[5] & self.MON_MASK)
120 year = self.BcdBits2Int(data[6] & self.YRS_MASK) + 2000
121 return datetime(year, month, day, hour, minute, second)
124 self.checkYear(aDatetime.year)
125 dow = self.__getDow__()
127 data[0] = self.Int2BcdBits(aDatetime.second & self.SEC_MASK)
128 data[1] = self.Int2BcdBits(aDatetime.minute & self.MIN_MASK)
129 data[2] = self.Int2BcdBits(aDatetime.hour & self.HRS_MASK)
130 data[3] = self.Int2BcdBits(dow & self.DOW_MASK)
131 data[4] = self.Int2BcdBits(aDatetime.day & self.DAY_MASK)
132 data[5] = self.Int2BcdBits(aDatetime.month & self.MON_MASK)
133 data[6] = self.Int2BcdBits((aDatetime.year - 2000) & self.YRS_MASK)
134 self.writeRegisters(self.SEC, data)
137 data = self.readRegisters(self.DAY, 3)
138 day = self.BcdBits2Int(data[0] & self.DAY_MASK)
139 month = self.BcdBits2Int(data[1] & self.MON_MASK)
140 year = self.BcdBits2Int(data[2] & self.YRS_MASK) + 2000
141 return date(year, month, day)
144 self.checkYear(aDate.year)
146 data[0] = self.Int2BcdBits(aDate.day & self.DAY_MASK)
147 data[1] = self.Int2BcdBits(aDate.month & self.MON_MASK)
148 data[2] = self.Int2BcdBits((aDate.year - 2000) & self.YRS_MASK)
149 self.writeRegisters(self.DAY, data)
152 data = self.readRegisters(self.SEC, 3)
153 second = self.BcdBits2Int(data[0] & self.SEC_MASK)
154 minute = self.BcdBits2Int(data[1] & self.MIN_MASK)
155 hour = self.BcdBits2Int(data[2] & self.HRS_MASK)
156 return time(hour, minute, second)
160 data[0] = self.Int2BcdBits(aTime.second & self.SEC_MASK)
161 data[1] = self.Int2BcdBits(aTime.minute & self.MIN_MASK)
162 data[2] = self.Int2BcdBits(aTime.hour & self.HRS_MASK)
163 self.writeRegisters(self.SEC, data)
169 data = self.readRegister(self.CON)
170 return (data & self.CON_MASK)
173 self.writeRegister(self.CON, (value & self.CON_MASK))
181 CON_MASK = 0b10010011
182 CON_DEFAULT = 0b10000011
190 DSclock.__init__(self, control)
191 Memory.__init__(self, 56)
202 return [Clock.__family__(self), Memory.__family__(self)]
211 self.
writeRegister(self.SEC, (secRegisterData & ~self.SEC_MASK) | (secValue & self.SEC_MASK))
224 return (data[0] << 8) + data[1]
228 data[0] = (value >> 8) & 0xFF
229 data[1] = value & 0xFF
234 return (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3]
238 data[0] = (value >> 24) & 0xFF
239 data[1] = (value >> 16) & 0xFF
240 data[2] = (value >> 8) & 0xFF
241 data[3] = value & 0xFF
262 CON_MASK = 0b10110011
263 CON_DEFAULT = 0b10110011
269 DS1307.__init__(self, control)
281 CON_MASK = 0b10011111
282 CON_DEFAULT = 0b00011000
289 DSclock.__init__(self, control)
303 conRegisterData = self.__getCon__()
304 self.__setCon__(conRegisterData & ~self.
EOSC_)
309 conRegisterData = self.__getCon__()
310 self.__setCon__(conRegisterData | self.
EOSC_)
316 CON_MASK = 0b11011111
317 CON_DEFAULT = 0b00011100
323 DSclock.__init__(self, control)