#Picaxe 20x2
#Terminal 9600 'Open PE Terminal immediately
'
'--------- Variable Definitions
'
Symbol EEPROMPtr = w5 'b10,11 24LC256 i2c EEPROM Chip
Symbol TemperatureHi = b13 'w6
Symbol TempRoofSpace = w7 'b14,15
Symbol TempRoofSpaceLo = b14 'w7
Symbol TempRoofSpaceHi = b15 'w7
Symbol TempCeiling = w8 'b16,17
Symbol TempCeilingLo = b16 'w8
Symbol TempCeilingHi = b17 'b16,17
Symbol TempRoom = w9 'b18,19
Symbol TempRoomLo = b18 'w9
Symbol TempRoomHi = b19 'w9
'
Symbol bcdSeconds = b20 'w10 DS1307 data is BCD format.
Symbol bcdMinutes = b21 'w10
Symbol bcdHours = b22 'w11
Symbol bcdDay = b23 'w11
Symbol bcdDate = b24 'w12
Symbol bcdMonth = b25 'w12
Symbol bcdYear = b26 'w13
Symbol Control = b27 'w13
'
Symbol i2cAddrDS1307 = %11010000 '$D0: i2c address of the DS1307 RTC chip
Symbol i2cAddr24LC256= %10100000 '$A0: i2c upper nibble of 24LC256 EEPROM Chip address
' ----- GetTime: Read time and update variables
'
GetTime: hi2cSetUp i2cMaster, i2cAddrDS1307, i2cslow, i2cbyte ' set DS1307 slave address with byte addressing
hi2cIn [noparse][[/noparse]i2cAddrDS1307[noparse]][/noparse], 0, (bcdSeconds, bcdMinutes, bcdHours, bcdDay, bcdDate, bcdMonth, bcdYear)
hi2cSetUp i2cMaster, i2cAddr24LC256, i2cslow, i2cword ' set 24LC256 slave address with word addressing
Return
'
' ----- SaveRecord: Write one record to the 24LC256 EEPROM
'
' Entry: tRoofSpace (word) 12-bit roofspace temperature in
' tCeiling (word) 12-bit temperature below ceiling
' tRoom (word) 12-bit temperature in laundry
' EEPROMPtr (word) 15-bit address pointer into 24LC256 EEPROM
' Exit: EEPROMPtr updated to next free location
'
SaveRecord: hi2cOut [noparse][[/noparse]i2cAddr24LC256[noparse]][/noparse], EEPROMPtr, (bcdYear)
Inc EEPROMPtr
Pause 6
hi2cOut [noparse][[/noparse]i2cAddr24LC256[noparse]][/noparse], EEPROMPtr, (bcdMonth)
Inc EEPROMPtr
Pause 6
hi2cOut [noparse][[/noparse]i2cAddr24LC256[noparse]][/noparse], EEPROMPtr, (bcdDate)
Inc EEPROMPtr
Pause 6
hi2cOut [noparse][[/noparse]i2cAddr24LC256[noparse]][/noparse], EEPROMPtr, (bcdHours)
Inc EEPROMPtr
Pause 6
hi2cOut [noparse][[/noparse]i2cAddr24LC256[noparse]][/noparse], EEPROMPtr, (bcdMinutes)
Inc EEPROMPtr
Pause 6
hi2cOut [noparse][[/noparse]i2cAddr24LC256[noparse]][/noparse], EEPROMPtr, (TempRoofSpaceHi)
Inc EEPROMPtr
Pause 6
hi2cOut [noparse][[/noparse]i2cAddr24LC256[noparse]][/noparse], EEPROMPtr, (TempRoofSpaceLo)
Inc EEPROMPtr
Pause 6
hi2cOut [noparse][[/noparse]i2cAddr24LC256[noparse]][/noparse], EEPROMPtr, (TempCeilingHi)
Inc EEPROMPtr
Pause 6
hi2cOut [noparse][[/noparse]i2cAddr24LC256[noparse]][/noparse], EEPROMPtr, (TempCeilingLo)
Inc EEPROMPtr
Pause 6
hi2cOut [noparse][[/noparse]i2cAddr24LC256[noparse]][/noparse], EEPROMPtr, (TempRoomHi)
Inc EEPROMPtr
Pause 6
hi2cOut [noparse][[/noparse]i2cAddr24LC256[noparse]][/noparse], EEPROMPtr, (TempRoomLo)
Inc EEPROMPtr
Return