; *************************************************************************** ; copyright : (C) 2024 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 MOTION_SEND_1_AFTER = 1 ; send motion message after 100ms .equ MOTION_SEND_2_AFTER = 11 ; send motion message after 1100ms .equ MOTION_RESTART_AFTER = 100 ; restart motion report counter after 10s .equ MOTION_UPCOUNTER_VALUE = 50 ; keep MOTION state active for at least 5s .equ MOTION_FLAGS_REPORT_MOTION_BIT = 0 ; *************************************************************************** ; data .dseg motionDataBegin: motionFlags: .byte 1 motionStateCounter: .byte 1 motionUpCounter: .byte 1 motionDataEnd: ; *************************************************************************** ; code .cseg ; --------------------------------------------------------------------------- ; @routine Motion_Init @global ; ; @return CFLAG set if okay, clear on error ; @clobbers R16, R17, X Motion_Init: ; preset SRAM data area ldi xh, HIGH(motionDataBegin) ldi xl, LOW(motionDataBegin) clr r16 ldi r17, (motionDataEnd-motionDataBegin) rcall Utils_FillSram ; (R17, X) ; setup pins cbi MOTION_DDR, MOTION_PIN ; set DATA port as input cbi MOTION_OUTPUT, MOTION_PIN ; disable internal pullup for TXD sec ret ; @end ; --------------------------------------------------------------------------- ; @routine Motion_Fini @global ; ; @clobbers none Motion_Fini: cbi MOTION_DDR, MOTION_PIN ; set DATA port as input cbi MOTION_OUTPUT, MOTION_PIN ; disable internal pullup for TXD ret ; @end ; --------------------------------------------------------------------------- ; @routine Motion_Run @global ; ; @clobbers none Motion_Run: lds r16, motionFlags andi r16, (1<