avr: more work on multifan module.
This commit is contained in:
@@ -118,15 +118,16 @@ MultiFan_OnEverySecond_loop:
|
||||
; @routine MultiFan_CheckPort @global
|
||||
;
|
||||
; @param r16 new port value (e.g. PINB)
|
||||
; @clobbers r17, r18, r24, r25, Y
|
||||
; @param r18 port change value (0 in a bit pos means: bit flipped to 0)
|
||||
; @clobbers r24, r25, Y
|
||||
|
||||
MultiFan_CheckPort:
|
||||
lds r17, multiFanPrevPortVal
|
||||
inr r16, MULTIFAN_TACHO_INPUT
|
||||
lds r18, multiFanPrevPortVal
|
||||
sts multiFanPrevPortVal, r16
|
||||
mov r18, r17
|
||||
eor r18, r16 ; changed bits=1
|
||||
com r18 ; complement: changed bits=0
|
||||
or r18, r16 ; only bits are 0 which have just changed to 0
|
||||
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)
|
||||
@@ -137,7 +138,7 @@ MultiFan_CheckPort:
|
||||
.if MULTIFAN_FANS >1
|
||||
adiw yh:yl, MULTIFAN_FAN_SIZE
|
||||
sbrs r18, MULTIFAN_TACHO2_PIN
|
||||
rcall multiFanIncCounter
|
||||
rcall multiFanIncCounter ; (r24, r25)
|
||||
.endif
|
||||
|
||||
.if MULTIFAN_FANS >2
|
||||
@@ -342,6 +343,41 @@ multiFanSetupTimer:
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine multiFanPinChangeIsr @global @isr
|
||||
;
|
||||
|
||||
multiFanPinChangeIsr:
|
||||
push r15
|
||||
in r15, SREG
|
||||
push r16
|
||||
inr r16, MULTIFAN_TACHO_INPUT
|
||||
push r18
|
||||
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
|
||||
|
||||
push r24
|
||||
push r25
|
||||
push yl
|
||||
push yh
|
||||
rcall MultiFan_CheckPort ; (r24, r25, Y)
|
||||
pop yh
|
||||
pop yl
|
||||
pop r25
|
||||
pop r24
|
||||
pop r18
|
||||
pop r16
|
||||
out SREG, r15
|
||||
pop r15
|
||||
reti
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user