; *************************************************************************** ; 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. * ; *************************************************************************** #ifndef AQH_AVR_APPS_LIGHT_CONTROL_MAIN_ASM #define AQH_AVR_APPS_LIGHT_CONTROL_MAIN_ASM .equ APP_LIGHTCONTROL_LIGHT_LIMIT = 20 .cseg ; --------------------------------------------------------------------------- ; @routine AppLightControl_Init AppLightControl_Init: ldi zl, LOW(appLightControlObjectFlash*2) ldi zh, HIGH(appLightControlObjectFlash*2) ; preset RAM lpm xl, Z+ lpm xh, Z sbiw zh:zl, 1 clr r16 ldi r17,TCA_RAM_SIZE bigcall Utils_FillSram ; init base class bigcall TCA_Init ; preset source limits (low=1, high=65535) lpm yl, Z+ lpm yh, Z sbiw zh:zl, 1 ldi r16, 1 std Y+(TCA_RAM_OFFS_TRIGGER_SOURCE1+TCA_SOURCE_OFFS_LOWLIM_LO), r16 std Y+(TCA_RAM_OFFS_TRIGGER_SOURCE2+TCA_SOURCE_OFFS_LOWLIM_LO), r16 ldi r16, 0xff std Y+(TCA_RAM_OFFS_TRIGGER_SOURCE1+TCA_SOURCE_OFFS_HIGHLIM_LO), r16 std Y+(TCA_RAM_OFFS_TRIGGER_SOURCE1+TCA_SOURCE_OFFS_HIGHLIM_HI), r16 std Y+(TCA_RAM_OFFS_TRIGGER_SOURCE2+TCA_SOURCE_OFFS_HIGHLIM_LO), r16 std Y+(TCA_RAM_OFFS_TRIGGER_SOURCE2+TCA_SOURCE_OFFS_HIGHLIM_HI), r16 ; preset guard limits clr r16 std Y+(TCA_RAM_OFFS_GUARD_SOURCE+TCA_SOURCE_OFFS_LOWLIM_LO), r16 std Y+(TCA_RAM_OFFS_GUARD_SOURCE+TCA_SOURCE_OFFS_LOWLIM_HI), r16 ldi r16, LOW(APP_LIGHTCONTROL_LIGHT_LIMIT) ldi r17, HIGH(APP_LIGHTCONTROL_LIGHT_LIMIT) std Y+(TCA_RAM_OFFS_GUARD_SOURCE+TCA_SOURCE_OFFS_HIGHLIM_LO), r16 std Y+(TCA_RAM_OFFS_GUARD_SOURCE+TCA_SOURCE_OFFS_HIGHLIM_HI), r17 clr r16 std Y+HTIM_RAM_OFFS_MODE, r16 ; set default color to white clr r16 std Y+APP_LIGHTCONTROL_RAM_OFFS_VALUE_RED, r16 std Y+APP_LIGHTCONTROL_RAM_OFFS_VALUE_GREEN, r16 std Y+APP_LIGHTCONTROL_RAM_OFFS_VALUE_BLUE, r16 ldi r16, 32 std Y+APP_LIGHTCONTROL_RAM_OFFS_VALUE_WHITE, r16 ldi r16, 144 std Y+APP_LIGHTCONTROL_RAM_OFFS_LEDCOUNT_LO, r16 clr r16 std Y+APP_LIGHTCONTROL_RAM_OFFS_LEDCOUNT_HI, r16 ; setup from eeprom push yl push yh rcall appLightControlReadEeprom pop yh pop yl ; start in given mode rcall appLightControlUpdate ret ; @end ; --------------------------------------------------------------------------- ; @routine AppLightControl_OnEveryTick @global AppLightControl_OnEveryTick: ldi zl, LOW(appLightControlObjectFlash*2) ldi zh, HIGH(appLightControlObjectFlash*2) lpm yl, Z+ lpm yh, Z sbiw zh:zl, 1 bigcall TCA_OnEveryTick ; check update flag ldd r16, Y+HTIM_RAM_OFFS_FLAGS sbrs r16, TCA_FLAGBIT_UPDATED rjmp AppLightControl_OnEveryTick_ret ; jump if clear (value unchanged) ; value updated cbr r16, (1<