From accc7d41a28f7fea394dc144192a0cda890919d6 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Mon, 27 Apr 2026 00:39:02 +0200 Subject: [PATCH] avr: added module ds1307. --- avr/devices/all/modules_1m.asm | 4 + avr/devices/all/modules_include.asm | 11 ++ avr/devices/all/modules_init.asm | 4 + avr/devices/all/modules_msg.asm | 6 + avr/modules/rtc/0BUILD | 1 + avr/modules/rtc/ds1307/0BUILD | 13 ++ avr/modules/rtc/ds1307/main.asm | 226 ++++++++++++++++++++++++++++ avr/modules/rtc/ds1307/recv.asm | 57 +++++++ avr/modules/rtc/ds1307/send.asm | 116 ++++++++++++++ 9 files changed, 438 insertions(+) create mode 100644 avr/modules/rtc/ds1307/0BUILD create mode 100644 avr/modules/rtc/ds1307/main.asm create mode 100644 avr/modules/rtc/ds1307/recv.asm create mode 100644 avr/modules/rtc/ds1307/send.asm 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<