mirror of
https://github.com/sergeyyarkov/attiny24a_memory-led-game.git
synced 2026-10-11 10:18:58 +03:00
feat: added sleep mode
This commit is contained in:
parent
079637a034
commit
18e6dc460d
54
firmware.asm
54
firmware.asm
@ -107,16 +107,17 @@ reti ; USI Overflow / inactive
|
|||||||
|
|
||||||
; watchdog time-out interrupt handler
|
; watchdog time-out interrupt handler
|
||||||
WDT_vect:
|
WDT_vect:
|
||||||
in temp_r_c, WDTCSR
|
|
||||||
ldi temp_r_c, (1<<WDIE)
|
|
||||||
out WDTCSR, temp_r_c
|
|
||||||
inc wdt_counter
|
inc wdt_counter
|
||||||
|
in temp_r_c, WDTCSR
|
||||||
|
ori temp_r_c, (1<<WDIE)
|
||||||
|
out WDTCSR, temp_r_c
|
||||||
reti
|
reti
|
||||||
|
|
||||||
; pin change on button interrupt handler
|
; pin change on button interrupt handler
|
||||||
PCINT0_vect:
|
PCINT0_vect:
|
||||||
push r17
|
push r17
|
||||||
push r18
|
push r18
|
||||||
|
clr wdt_counter
|
||||||
in r18, MCUCR
|
in r18, MCUCR
|
||||||
cbr r18, (1<<SE)
|
cbr r18, (1<<SE)
|
||||||
; turn off the sleep mode
|
; turn off the sleep mode
|
||||||
@ -164,8 +165,8 @@ MCU_Init:
|
|||||||
rcall init_ports
|
rcall init_ports
|
||||||
rcall init_interrupts
|
rcall init_interrupts
|
||||||
rcall init_buzzer
|
rcall init_buzzer
|
||||||
|
rcall init_wdt
|
||||||
rcall init_sm
|
rcall init_sm
|
||||||
; rcall init_wdt
|
|
||||||
|
|
||||||
; init important registers for game
|
; init important registers for game
|
||||||
ldi delay_counter_r, 0xff
|
ldi delay_counter_r, 0xff
|
||||||
@ -190,7 +191,24 @@ MCU_Delay:
|
|||||||
rcall delay_1s
|
rcall delay_1s
|
||||||
clr temp_r_b
|
clr temp_r_b
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
WDT_off:
|
||||||
|
cli
|
||||||
|
wdr
|
||||||
|
; clear WDRF in MCUSR
|
||||||
|
ldi temp_r, (0<<WDRF)
|
||||||
|
out MCUSR, r16
|
||||||
|
; write logical one to WDCE and WDE
|
||||||
|
; keep old prescaler setting to prevent unintentional Watchdog Reset
|
||||||
|
in temp_r, WDTCSR
|
||||||
|
ori temp_r, (1<<WDCE)|(1<<WDE)
|
||||||
|
out WDTCSR, temp_r
|
||||||
|
; turn off WDT
|
||||||
|
ldi temp_r, (0<<WDE)
|
||||||
|
out WDTCSR, temp_r
|
||||||
|
sei
|
||||||
|
ret
|
||||||
|
|
||||||
; program start at reset vector
|
; program start at reset vector
|
||||||
RESET_vect:
|
RESET_vect:
|
||||||
init_stack_p temp_r, RAMEND
|
init_stack_p temp_r, RAMEND
|
||||||
@ -198,7 +216,20 @@ RESET_vect:
|
|||||||
|
|
||||||
; main program loop
|
; main program loop
|
||||||
loop:
|
loop:
|
||||||
lds mcu_state_r, CURRENT_STATE_ADDRESS
|
ldi temp_r_c, 20
|
||||||
|
cp wdt_counter, temp_r_c
|
||||||
|
brsh _mcu_sleep
|
||||||
|
rjmp feed
|
||||||
|
_mcu_sleep:
|
||||||
|
clr wdt_counter
|
||||||
|
rcall WDT_off
|
||||||
|
in temp_r_c, MCUCR
|
||||||
|
sbr temp_r_c, (1<<SE)
|
||||||
|
out MCUCR, temp_r_c
|
||||||
|
cli
|
||||||
|
sleep
|
||||||
|
feed:
|
||||||
|
lds mcu_state_r, CURRENT_STATE_ADDRESS
|
||||||
; init state
|
; init state
|
||||||
init:
|
init:
|
||||||
cpi mcu_state_r, INIT_STATE
|
cpi mcu_state_r, INIT_STATE
|
||||||
@ -423,18 +454,13 @@ show_sequence:
|
|||||||
|
|
||||||
beep_quit:
|
beep_quit:
|
||||||
rcall delay
|
rcall delay
|
||||||
dec temp_r_b
|
dec temp_r_b
|
||||||
cpi temp_r_b, 0
|
cpi temp_r_b, 0
|
||||||
brne _sequence_loop
|
brne _sequence_loop
|
||||||
|
|
||||||
_seq_quit:
|
_seq_quit:
|
||||||
rcall dec_delay_counter
|
rcall dec_delay_counter
|
||||||
rcall delay_50ms
|
rcall delay_50ms
|
||||||
|
|
||||||
; in temp_r_c, MCUCR
|
|
||||||
; sbr temp_r_c, (1<<SE)
|
|
||||||
; out MCUCR, temp_r_c
|
|
||||||
; sleep
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
; this function need to set the OCR0A register to 0xff for overflow interrupt
|
; this function need to set the OCR0A register to 0xff for overflow interrupt
|
||||||
|
|||||||
133
firmware.hex
133
firmware.hex
@ -1,67 +1,70 @@
|
|||||||
:020000020000FC
|
:020000020000FC
|
||||||
:1000000047C0189513C018950CC0189518951895E9
|
:1000000054C0189513C018950CC0189518951895DC
|
||||||
:100010001895189518951DC0189518951895189548
|
:100010001895189518951EC0189518951895189547
|
||||||
:100020001895A1B5A0E4A1BDB39418951F932F9383
|
:100020001895B394A1B5A064A1BD18951F932F9303
|
||||||
:1000300025B72F7D25BF2FB710916000133031F405
|
:10003000BB2425B72F7D25BF2FB71091600013304B
|
||||||
:1000400019B3107FA1D1109362002FBF2F911F9180
|
:1000400031F419B3107FB8D1109362002FBF2F91F4
|
||||||
:1000500018957F937FB702C008EA52B7052702952B
|
:100050001F9118957F937FB702C008EA52B7052712
|
||||||
:10006000500F7FBF7F9118956DD15CD161D171D157
|
:100060000295500F7FBF7F91189584D173D178D1BD
|
||||||
:100070003FEF41E0A2E0AA2EFF27E0E802D078940B
|
:100070008CD187D13FEF41E0A2E0AA2EFF27E0E834
|
||||||
:10008000089573E0FDD07A95E9F795D17727089523
|
:1000800002D07894089573E013D17A95E9F7ABD153
|
||||||
:100090000FED0DBF0027109361000F9301E0009357
|
:1000900077270895F894A89500E004BF01B508619A
|
||||||
:1000A00060000F9110916000113041F4DDDF10937A
|
:1000A00001BD00E001BD789408950FED0DBF00275C
|
||||||
:1000B00061000F9302E0009360000F91123041F451
|
:1000B000109361000F9301E0009360000F91A4E1A1
|
||||||
:1000C00093D0109361000F9303E0009360000F91B1
|
:1000C000BA1608F407C0BB24E5DFA5B7A062A5BF38
|
||||||
:1000D0001330C1F520916200203E51F40F930EE8D9
|
:1000D000F894889510916000113041F4C6DF1093B8
|
||||||
:1000E00006BF0F91D89ABA9A2FD0D898BA98F2CF63
|
:1000E00061000F9302E0009360000F91123041F421
|
||||||
:1000F00020916200203D51F40F9307E406BF0F9159
|
:1000F00093D0109361000F9303E0009360000F9181
|
||||||
:10010000D99ABA9A21D0D998BA98F2CF20916200A0
|
:100100001330C1F520916200203E51F40F930EE8A8
|
||||||
:10011000203B51F40F9309E606BF0F91DA9ABA9A81
|
:1001100006BF0F91D89ABA9A2FD0D898BA98F2CF32
|
||||||
:1001200013D0DA98BA98F2CF20916200203751F4B8
|
:1001200020916200203D51F40F9307E406BF0F9128
|
||||||
:100130000F9300E506BF0F91DB9ABA9A05D0DB98C2
|
:10013000D99ABA9A21D0D998BA98F2CF2091620070
|
||||||
:10014000BA98F2CF92D0AECF2F9329D128D127D110
|
:10014000203B51F40F9309E606BF0F91DA9ABA9A51
|
||||||
:10015000A9B39A2FA07F9F70AA27A09362008191D4
|
:1001500013D0DA98BA98F2CF20916200203751F488
|
||||||
:10016000981729F42A2D241751F0439510C02F9188
|
:100160000F9300E506BF0F91DB9ABA9A05D0DB9892
|
||||||
:1001700087D03FEFA2E0AA95AA2E0CD008952F9128
|
:10017000BA98F2CF92D0A3CF2F9329D128D127D1EB
|
||||||
:1001800000EF0BBBBA980BD1A4D004D008952F91E7
|
:10018000A9B39A2FA07F9F70AA27A09362008191A4
|
||||||
:1001900008950895FF27E0E8BA9800EF0BBB0BD154
|
:10019000981729F42A2D241751F0439510C02F9158
|
||||||
:1001A000109361000F9302E0009360000F9141E013
|
:1001A00087D03FEFA2E0AA95AA2E0CD008952F91F8
|
||||||
:1001B000A39408957A2DDD27C0E8F1D0652F663429
|
:1001B00000EF0BBBBA980BD1A4D004D008952F91B7
|
||||||
:1001C00030F06C3830F0683C30F06F3F30F0A1E038
|
:1001C00008950895FF27E0E8BA9800EF0BBB0BD124
|
||||||
:1001D00005C0A2E003C0A4E001C0A8E0A9937A95FD
|
:1001D000109361000F9302E0009360000F9141E0E3
|
||||||
:1001E000703059F700000895E5DF7A2DDD27C0E86B
|
:1001E000A39408957A2DDD27C0E8F1D0652F6634F9
|
||||||
:1001F0007030C1F1A991A13031F0A23079F0A43072
|
:1001F00030F06C3830F0683C30F06F3F30F0A1E008
|
||||||
:10020000C1F0A83009F10F930EE806BF0F91D89AFC
|
:1002000005C0A2E003C0A4E001C0A8E0A9937A95CC
|
||||||
:10021000BA9AACD0D898BA9828D020C00F9307E4E7
|
:10021000703059F700000895E5DF7A2DDD27C0E83A
|
||||||
:1002200006BF0F91D99ABA9AA1D0D998BA981DD081
|
:100220007030C1F1A991A13031F0A23079F0A43041
|
||||||
:1002300015C00F9309E606BF0F91DA9ABA9A96D0C5
|
:10023000C1F0A83009F10F930EE806BF0F91D89ACC
|
||||||
:10024000DA98BA9812D00AC00F9300E506BF0F9152
|
:10024000BA9AACD0D898BA9828D020C00F9307E4B7
|
||||||
:10025000DB9ABA9A8BD0DB98BA9807D087D07A9578
|
:1002500006BF0F91D99ABA9AA1D0D998BA981DD051
|
||||||
:10026000703031F607D09BD008957F937FEF76BF33
|
:1002600015C00F9309E606BF0F91DA9ABA9A96D095
|
||||||
:100270007F9108953A50383208F008953FEF08957D
|
:10027000DA98BA9812D00AC00F9300E506BF0F9122
|
||||||
:100280001F932F933F934F93F8944BB30F9301EF2A
|
:10028000DB9ABA9A8BD0DB98BA9807D087D07A9548
|
||||||
:100290000BBB0F9184D011E033E020EF110F210F41
|
:10029000703031F607D09BD008957F937FEF76BF03
|
||||||
:1002A0002BBB7DD03A95C9F70F9308EF0BBB0F918D
|
:1002A0007F9108953A50383208F008953FEF08954D
|
||||||
:1002B00076D018E033E020EF1695210F2BBB6FD0DE
|
:1002B0001F932F933F934F93F8944BB30F9301EFFA
|
||||||
:1002C0003A95C9F778944BBB4F913F912F911F916D
|
:1002C0000BBB0F9184D011E033E020EF110F210F11
|
||||||
:1002D00008950F930EE806BF0F91D89ABA9A5FD08F
|
:1002D0002BBB7DD03A95C9F70F9308EF0BBB0F915D
|
||||||
:1002E0005ED0D898BA980F9309E606BF0F91D99AB5
|
:1002E00076D018E033E020EF1695210F2BBB6FD0AE
|
||||||
:1002F000BA9A55D054D0D998BA980F9300E506BF52
|
:1002F0003A95C9F778944BBB4F913F912F911F913D
|
||||||
:100300000F91DA9ABA9A4BD04AD0DA98BA980F93EA
|
:1003000008950F930EE806BF0F91D89ABA9A5FD05E
|
||||||
:1003100007E406BF0F91DB9ABA9A41D040D0DB9830
|
:100310005ED0D898BA980F9309E606BF0F91D99A84
|
||||||
:10032000BA98089500E10BBF00EF02BB00270895C3
|
:10032000BA9A55D054D0D998BA980F9300E506BF21
|
||||||
:10033000BA9802E400BF0FEF06BF02E003BF01E07E
|
:100330000F91DA9ABA9A4BD04AD0DA98BA980F93BA
|
||||||
:1003400009BF08950FE00ABB02950BBBBA9AC29889
|
:1003400007E406BF0F91DB9ABA9A41D040D0DB9800
|
||||||
:10035000089505B7006105BF0895F894A89501B503
|
:10035000BA98089500E10BBF00EF02BB0027089593
|
||||||
:10036000086101BD0DE401BD789408952F934F936A
|
:10036000BA9802E400BF0FEF06BF02E003BF01E04E
|
||||||
:100370002FEF432F00002A95E9F700004A95D1F7A7
|
:1003700009BF08950FE00ABB02950BBBBA9AC29859
|
||||||
:1003800000004F912F9108952F933F932AE139EF69
|
:10038000089505B7006105BF0895F894A89501B5D3
|
||||||
:100390003A95F1F72A95E1F73F912F9108952F9320
|
:10039000086101BD0DE401BD789408952F934F933A
|
||||||
:1003A0003F9321E43FEE3A95F1F72A95E1F70000FB
|
:1003A0002FEF432F00002A95E9F700004A95D1F777
|
||||||
:1003B0003F912F9108958F939F9324E683EC99E0CA
|
:1003B00000004F912F9108952F933F932AE139EF39
|
||||||
:1003C0000197F1F72A95D1F724E69F918F9108952F
|
:1003C0003A95F1F72A95E1F73F912F9108952F93F0
|
||||||
:1003D0004D656D6F7279206C65642067616D652E67
|
:1003D0003F9321E43FEE3A95F1F72A95E1F70000CB
|
||||||
:1003E000205772697474656E206279205365726754
|
:1003E0003F912F9108958F939F9324E683EC99E09A
|
||||||
:1003F0006579205961726B6F762032372E30392E35
|
:1003F0000197F1F72A95D1F724E69F918F910895FF
|
||||||
:040400003230323133
|
:100400004D656D6F7279206C65642067616D652E36
|
||||||
|
:10041000205772697474656E206279205365726723
|
||||||
|
:100420006579205961726B6F762032372E30392E04
|
||||||
|
:040430003230323103
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|||||||
1032
firmware.lss
1032
firmware.lss
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user