; *************************************************************************** ; 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_FAN_CONTROL_MAIN_ASM #define AQH_AVR_APPS_FAN_CONTROL_MAIN_ASM .equ APP_FANCONTROL_TEMP_LIMIT = 2400 .cseg ; --------------------------------------------------------------------------- ; @routine AppFanControl_Init AppFanControl_Init: ldi zl, LOW(appFanControlObjectFlash*2) ldi zh, HIGH(appFanControlObjectFlash*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 (low=24.0 Grad, high=65535) ldi r16, LOW(APP_FANCONTROL_TEMP_LIMIT) ldi r17, HIGH(APP_FANCONTROL_TEMP_LIMIT) 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), r17 ldi r16, 0xff 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), r16 ; ldi r16, 2 ldi r16, 1 std Y+HTIM_EE_OFFS_MODE, r16 ; setup from eeprom push yl push yh rcall appFanControlReadEeprom pop yh pop yl ; start in given mode rcall appFanControlUpdate ret ; @end ; --------------------------------------------------------------------------- ; @routine AppFanControl_OnEveryTick @global AppFanControl_OnEveryTick: ldi zl, LOW(appFanControlObjectFlash*2) ldi zh, HIGH(appFanControlObjectFlash*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, APP_FANCONTROL_FLAGBIT_UPDATED rjmp AppFanControl_OnEveryTick_ret ; jump if clear (value unchanged) ; value updated cbr r16, (1<