diff --git a/avr/apps/reportsensors/main.asm b/avr/apps/reportsensors/main.asm index 3f6dfb16..13a3657c 100644 --- a/avr/apps/reportsensors/main.asm +++ b/avr/apps/reportsensors/main.asm @@ -86,10 +86,19 @@ AppReportSensors_OnEverySecond_store: breq AppReportSensors_OnEverySecond_sendValue2 #endif -#ifdef MODULES_SGP40 +#ifdef MODULES_MULTIFAN cpi r16, 32 + breq AppReportSensors_OnEverySecond_sendValueMF1 + cpi r16, 33 + breq AppReportSensors_OnEverySecond_sendValueMF2 + cpi r16, 34 + breq AppReportSensors_OnEverySecond_sendValueMF3 +#endif + +#ifdef MODULES_SGP40 + cpi r16, 53 breq AppReportSensors_OnEverySecond_measureValue4 - cpi r16, 42 + cpi r16, 63 breq AppReportSensors_OnEverySecond_sendValue4 #endif @@ -145,6 +154,15 @@ AppReportSensors_OnEverySecond_sendValue3: rjmp Ds18b20_SendTemperature #endif +#ifdef MODULES_MULTIFAN +AppReportSensors_OnEverySecond_sendValueMF1: + bigjmp MultiFan_ReportSpeed1 +AppReportSensors_OnEverySecond_sendValueMF2: + bigjmp MultiFan_ReportSpeed2 +AppReportSensors_OnEverySecond_sendValueMF3: + bigjmp MultiFan_ReportSpeed3 +#endif + #ifdef MODULES_SGP40 AppReportSensors_OnEverySecond_measureValue4: rjmp SGP40_MeasureRawSignal @@ -182,6 +200,7 @@ AppReportSensors_OnEverySecond_sendMotionValue: rjmp appMotionSendValue #endif + ; @end diff --git a/avr/devices/all/defs.asm b/avr/devices/all/defs.asm index 4d0ea50e..5f739bea 100644 --- a/avr/devices/all/defs.asm +++ b/avr/devices/all/defs.asm @@ -23,6 +23,7 @@ .equ AQHOME_VALUETYPE_LIGHT = 10 .equ AQHOME_VALUETYPE_ONOFF = 11 .equ AQHOME_VALUETYPE_ONOFFAUTO = 12 +.equ AQHOME_VALUETYPE_RPM = 13 ; Value Ids diff --git a/avr/devices/all/modules_include.asm b/avr/devices/all/modules_include.asm index 00730b7d..e76d576f 100644 --- a/avr/devices/all/modules_include.asm +++ b/avr/devices/all/modules_include.asm @@ -328,6 +328,7 @@ MODULE_END_COM2W2: .include "modules/multifan/main.asm" #ifdef MODULES_NETWORK .include "modules/multifan/recv.asm" + .include "modules/multifan/send.asm" .include "devices/all/handlevaluemsg.asm" #endif #endif diff --git a/avr/modules/multifan/main.asm b/avr/modules/multifan/main.asm index d72ed73e..5ca5f0a9 100644 --- a/avr/modules/multifan/main.asm +++ b/avr/modules/multifan/main.asm @@ -56,6 +56,10 @@ MultiFan_Init: rcall multiFanSetupTimer rcall multiFanSetupPins +.ifdef MULTIFAN_SETUPIRQ_FN + bigcall MULTIFAN_SETUPIRQ_FN +.endif + sec ret ; @end @@ -68,7 +72,6 @@ MultiFan_Init: ; @clobbers r16, r17, r18, r19, r24, Y MultiFan_OnEverySecond: -ret ; DEBUG ldi yl, LOW(multiFanObjects) ldi yh, HIGH(multiFanObjects) ldi r24, MULTIFAN_FANS @@ -104,7 +107,8 @@ MultiFan_OnEverySecond_loop: std Y+MULTIFAN_FAN_OFFS_CURR_FREQUENCY_LO, r16 std Y+MULTIFAN_FAN_OFFS_CURR_FREQUENCY_HI, r17 - + + adiw yh:yl, MULTIFAN_FAN_SIZE dec r24 brne MultiFan_OnEverySecond_loop @@ -122,13 +126,6 @@ MultiFan_OnEverySecond_loop: ; @clobbers r24, r25, Y MultiFan_CheckPort: - inr r16, MULTIFAN_TACHO_INPUT - lds r18, multiFanPrevPortVal - sts multiFanPrevPortVal, r16 - eor r18, r16 ; r18: changes in bits=1 - com r18 ; r18: changes in bits=0 - or r18, r16 ; r18: 0=bit flipped to 0 - ldi yl, LOW(multiFanObjects) ldi yh, HIGH(multiFanObjects) @@ -243,7 +240,7 @@ multiFanIncCounter: ldd r25, Y+MULTIFAN_FAN_OFFS_COUNTER_HI adiw r25:r24, 1 std Y+MULTIFAN_FAN_OFFS_COUNTER_LO, r24 - std Y+MULTIFAN_FAN_OFFS_COUNTER_HI, r24 + std Y+MULTIFAN_FAN_OFFS_COUNTER_HI, r25 ret ; @end @@ -292,8 +289,15 @@ multiFanSetupPins: ; @clobbers r16, r17 multiFanSetupTimer: +.if clock == 1000000 ; prescaler 1 ldi r16, (0<