avr: introduce two more led modules.
- led_signal: blink 8 status bits (short=0, long=1) - led_activity: blink for a short period after a trigger, e.g. for network activity
This commit is contained in:
@@ -14,7 +14,9 @@
|
|||||||
flash
|
flash
|
||||||
lcd
|
lcd
|
||||||
led
|
led
|
||||||
|
led_activity
|
||||||
led_simple
|
led_simple
|
||||||
|
led_signal
|
||||||
ma_light
|
ma_light
|
||||||
motion
|
motion
|
||||||
owimaster
|
owimaster
|
||||||
|
|||||||
11
avr/modules/led_activity/0BUILD
Normal file
11
avr/modules/led_activity/0BUILD
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml?>
|
||||||
|
|
||||||
|
<gwbuild>
|
||||||
|
|
||||||
|
<extradist>
|
||||||
|
main.asm
|
||||||
|
</extradist>
|
||||||
|
|
||||||
|
</gwbuild>
|
||||||
|
|
||||||
|
|
||||||
90
avr/modules/led_activity/main.asm
Normal file
90
avr/modules/led_activity/main.asm
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
; ***************************************************************************
|
||||||
|
; copyright : (C) 2025 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. *
|
||||||
|
; ***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
.equ LED_ACTIVITY_TIME = 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ***************************************************************************
|
||||||
|
; data
|
||||||
|
|
||||||
|
.dseg
|
||||||
|
|
||||||
|
ledActivityTimer: .byte 1
|
||||||
|
|
||||||
|
|
||||||
|
; ***************************************************************************
|
||||||
|
; code
|
||||||
|
|
||||||
|
.cseg
|
||||||
|
|
||||||
|
|
||||||
|
LED_ACTIVITY_BEGIN:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; LedActivity_Init
|
||||||
|
;
|
||||||
|
; @return CFLAG: set if okay, clear on error
|
||||||
|
; USED: R1, R2, R3, R4, R16, R17, X
|
||||||
|
|
||||||
|
LedActivity_Init:
|
||||||
|
sbi LED_ACTIVITY_DDR, LED_ACTIVITY_PINNUM ; out
|
||||||
|
ldi r16, 50
|
||||||
|
sts ledActivityTimer, r16 ; keep on for 5s at the beginning
|
||||||
|
sec
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine LedActivity_Every100ms @global
|
||||||
|
;
|
||||||
|
; @clobbers r16, r17
|
||||||
|
|
||||||
|
LedActivity_Every100ms:
|
||||||
|
lds r16, ledActivityTimer
|
||||||
|
tst r16
|
||||||
|
breq LedActivity_Every100ms_ret
|
||||||
|
dec r16
|
||||||
|
sts ledActivityTimer, r16
|
||||||
|
brne LedActivity_Every100ms_ret
|
||||||
|
sbi LED_ACTIVITY_PORT, LED_ACTIVITY_PINNUM ; turn LED off
|
||||||
|
LedActivity_Every100ms_ret:
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine LedActivity_Restart @global
|
||||||
|
;
|
||||||
|
; @clobbers r16
|
||||||
|
|
||||||
|
LedActivity_Trigger:
|
||||||
|
lds r16, ledActivityTimer
|
||||||
|
tst r16
|
||||||
|
brne LedActivity_Trigger_ledIsOn
|
||||||
|
cbi LED_ACTIVITY_PORT, LED_ACTIVITY_PINNUM ; turn LED on
|
||||||
|
LedActivity_Trigger_ledIsOn:
|
||||||
|
ldi r16, LED_ACTIVITY_TIME
|
||||||
|
sts ledActivityTimer, r16
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
LED_ACTIVITY_END:
|
||||||
|
.equ MODULE_SIZE_LED_ACTIVITY = LED_ACTIVITY_END-LED_ACTIVITY_BEGIN
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
11
avr/modules/led_signal/0BUILD
Normal file
11
avr/modules/led_signal/0BUILD
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml?>
|
||||||
|
|
||||||
|
<gwbuild>
|
||||||
|
|
||||||
|
<extradist>
|
||||||
|
main.asm
|
||||||
|
</extradist>
|
||||||
|
|
||||||
|
</gwbuild>
|
||||||
|
|
||||||
|
|
||||||
156
avr/modules/led_signal/main.asm
Normal file
156
avr/modules/led_signal/main.asm
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
; ***************************************************************************
|
||||||
|
; copyright : (C) 2025 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. *
|
||||||
|
; ***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ***************************************************************************
|
||||||
|
; data
|
||||||
|
|
||||||
|
.dseg
|
||||||
|
|
||||||
|
ledSignalTimer: .byte 1
|
||||||
|
ledSignalFlags: .byte 1
|
||||||
|
ledSignalRunFlags: .byte 1
|
||||||
|
ledSignalBitCounter: .byte 1
|
||||||
|
|
||||||
|
|
||||||
|
; ***************************************************************************
|
||||||
|
; code
|
||||||
|
|
||||||
|
.cseg
|
||||||
|
|
||||||
|
|
||||||
|
LED_SIGNAL_BEGIN:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; LedSignal_Init
|
||||||
|
;
|
||||||
|
; @return CFLAG: set if okay, clear on error
|
||||||
|
; USED: R1, R2, R3, R4, R16, R17, X
|
||||||
|
|
||||||
|
LedSignal_Init:
|
||||||
|
sbi LED_SIGNAL_DDR, LED_SIGNAL_PINNUM ; out
|
||||||
|
clr r16
|
||||||
|
sts ledSignalFlags, r16
|
||||||
|
ldi r16, 100
|
||||||
|
sts ledSignalTimer, r16
|
||||||
|
sec
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine LedSignal_Every100ms @global
|
||||||
|
;
|
||||||
|
; @clobbers r16, r17
|
||||||
|
|
||||||
|
LedSignal_Every100ms:
|
||||||
|
lds r16, ledSignalTimer
|
||||||
|
dec r16
|
||||||
|
breq LedSignal_Every100ms_timer0
|
||||||
|
sts ledSignalTimer, r16
|
||||||
|
cpi r16, 80
|
||||||
|
brcs LedSignal_Every100ms_checkBit
|
||||||
|
brne LedSignal_Every100ms_ret
|
||||||
|
rcall LedSignal_Restart ; (r16, r17)
|
||||||
|
rjmp LedSignal_Every100ms_ret
|
||||||
|
LedSignal_Every100ms_checkBit:
|
||||||
|
lds r17, ledSignalRunFlags
|
||||||
|
andi r17, 1
|
||||||
|
brne LedSignal_Every100ms_bit1
|
||||||
|
LedSignal_Every100ms_bit0:
|
||||||
|
cpi r16, 8
|
||||||
|
breq LedSignal_Every100ms_ledOff
|
||||||
|
rjmp LedSignal_Every100ms_ret
|
||||||
|
LedSignal_Every100ms_bit1:
|
||||||
|
cpi r16, 3
|
||||||
|
breq LedSignal_Every100ms_ledOff
|
||||||
|
rjmp LedSignal_Every100ms_ret
|
||||||
|
LedSignal_Every100ms_ledOff:
|
||||||
|
sbi LED_SIGNAL_PORT, LED_SIGNAL_PINNUM ; off
|
||||||
|
rjmp LedSignal_Every100ms_ret
|
||||||
|
LedSignal_Every100ms_timer0:
|
||||||
|
lds r17, ledSignalBitCounter
|
||||||
|
dec r17
|
||||||
|
brne LedSignal_Every100ms_nextBit
|
||||||
|
ldi r17, 100
|
||||||
|
sts ledSignalTimer, r17
|
||||||
|
rjmp LedSignal_Every100ms_ret
|
||||||
|
LedSignal_Every100ms_nextBit:
|
||||||
|
sts ledSignalBitCounter, r17
|
||||||
|
lds r16, ledSignalRunFlags
|
||||||
|
lsr r16
|
||||||
|
sts ledSignalRunFlags, r16
|
||||||
|
ldi r16, 10
|
||||||
|
sts ledSignalTimer, r16
|
||||||
|
cbi LED_SIGNAL_PORT, LED_SIGNAL_PINNUM ; on
|
||||||
|
LedSignal_Every100ms_ret:
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine LedSignal_Restart @global
|
||||||
|
;
|
||||||
|
; @clobbers r16, r17
|
||||||
|
|
||||||
|
LedSignal_Restart:
|
||||||
|
ldi r16, 8
|
||||||
|
sts ledSignalBitCounter, r16
|
||||||
|
ldi r16, 10
|
||||||
|
sts ledSignalTimer, r16
|
||||||
|
lds r16, ledSignalFlags
|
||||||
|
sts ledSignalRunFlags, r16
|
||||||
|
cbi LED_SIGNAL_PORT, LED_SIGNAL_PINNUM ; on
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine LedSignal_SetFlag @global
|
||||||
|
;
|
||||||
|
; @param r16 flag mask
|
||||||
|
; @clobbers r17
|
||||||
|
|
||||||
|
LedSignal_SetFlag:
|
||||||
|
lds r17, ledSignalFlags
|
||||||
|
or r17, r16
|
||||||
|
sts ledSignalFlags, r17
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine LedSignal_ClrFlag @global
|
||||||
|
;
|
||||||
|
; @param r16 flag mask
|
||||||
|
; @clobbers r17
|
||||||
|
|
||||||
|
LedSignal_ClrFlag:
|
||||||
|
lds r17, ledSignalFlags
|
||||||
|
com r16
|
||||||
|
and r17, r16
|
||||||
|
com r16
|
||||||
|
sts ledSignalFlags, r17
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
LED_SIGNAL_END:
|
||||||
|
.equ MODULE_SIZE_LED_SIGNAL = LED_SIGNAL_END-LED_SIGNAL_BEGIN
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user