diff --git a/avr/devices/all/modules_1m.asm b/avr/devices/all/modules_1m.asm index e082d36..6e93ca8 100644 --- a/avr/devices/all/modules_1m.asm +++ b/avr/devices/all/modules_1m.asm @@ -29,6 +29,10 @@ modulesOnEveryMinute: bigcall Ds3231_OnEveryMinute #endif +#ifdef MODULES_DS1307 + bigcall Ds1307_OnEveryMinute +#endif + ret ; @end diff --git a/avr/devices/all/modules_include.asm b/avr/devices/all/modules_include.asm index eaf6f3f..4d599ff 100644 --- a/avr/devices/all/modules_include.asm +++ b/avr/devices/all/modules_include.asm @@ -212,6 +212,17 @@ MODULE_END_COM2W: #endif #endif +#ifdef MODULES_DS1307 +.include "modules/rtc/ds1307/main.asm" + #ifdef MODULES_NETWORK + .include "modules/network/msg/time-d.asm" + .include "modules/network/msg/time-r.asm" + .include "modules/network/msg/time-w.asm" + .include "modules/rtc/ds1307/recv.asm" + .include "modules/rtc/ds1307/send.asm" + #endif +#endif + #ifdef MODULES_MOTION .include "modules/motion/main2.asm" #endif diff --git a/avr/devices/all/modules_init.asm b/avr/devices/all/modules_init.asm index b099a89..c8ff154 100644 --- a/avr/devices/all/modules_init.asm +++ b/avr/devices/all/modules_init.asm @@ -207,6 +207,10 @@ modulesInit: bigcall Ds3231_Init #endif +#ifdef MODULES_DS1307 + bigcall Ds1307_Init +#endif + ; done ret ; @end diff --git a/avr/devices/all/modules_msg.asm b/avr/devices/all/modules_msg.asm index 9bab54d..79d206f 100644 --- a/avr/devices/all/modules_msg.asm +++ b/avr/devices/all/modules_msg.asm @@ -35,6 +35,12 @@ modulesOnPacketReceived: #endif #endif +#ifdef MODULES_DS1307 + #ifdef MODULES_NETWORK + bigcall Ds1307_OnPacketReceived + #endif +#endif + ; add more here diff --git a/avr/modules/rtc/0BUILD b/avr/modules/rtc/0BUILD index 8a211af..97dd6b1 100644 --- a/avr/modules/rtc/0BUILD +++ b/avr/modules/rtc/0BUILD @@ -4,6 +4,7 @@ ds3231 + ds1307 diff --git a/avr/modules/rtc/ds1307/0BUILD b/avr/modules/rtc/ds1307/0BUILD new file mode 100644 index 0000000..c7ca6fd --- /dev/null +++ b/avr/modules/rtc/ds1307/0BUILD @@ -0,0 +1,13 @@ + + + + + + main.asm + recv.asm + send.asm + + + + + diff --git a/avr/modules/rtc/ds1307/main.asm b/avr/modules/rtc/ds1307/main.asm new file mode 100644 index 0000000..bdc85ba --- /dev/null +++ b/avr/modules/rtc/ds1307/main.asm @@ -0,0 +1,226 @@ +; *************************************************************************** +; copyright : (C) 2026 by Martin Preuss +; email : martin@libchipcard.de +; +; *************************************************************************** +; * This file is part of the project "AqHome". * +; * Please see toplevel file COPYING of that project for license details. * +; *************************************************************************** + + + +; *************************************************************************** +; defs + +.equ DS1307_FLAGS_PRESENT_BIT = 7 +.equ DS1307_FLAGS_VALID_BIT = 6 + + + + + +; *************************************************************************** +; data + +.dseg + +ds1307DataBegin: + ds1307Flags: .byte 1 + ds1307RecvBuffer: .byte 7 +ds1307DataEnd: + + + + +; *************************************************************************** +; code + +.cseg + + + +; --------------------------------------------------------------------------- +; @routine Ds1307_Init @global +; +; @return CFLAG set if okay, cleared on error +; @clobbers + +Ds1307_Init: + ldi xh, HIGH(ds1307DataBegin) + ldi xl, LOW(ds1307DataBegin) + clr r16 + ldi r17, (ds1307DataEnd-ds1307DataBegin) + rcall Utils_FillSram + + rcall ds1307CheckPresence + brcc Ds1307_Init_ret + ldi r16, (1<