mirror of
https://github.com/sergeyyarkov/attiny24a_memory-led-game.git
synced 2026-10-11 02:08:54 +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
|
||||
WDT_vect:
|
||||
in temp_r_c, WDTCSR
|
||||
ldi temp_r_c, (1<<WDIE)
|
||||
out WDTCSR, temp_r_c
|
||||
inc wdt_counter
|
||||
in temp_r_c, WDTCSR
|
||||
ori temp_r_c, (1<<WDIE)
|
||||
out WDTCSR, temp_r_c
|
||||
reti
|
||||
|
||||
; pin change on button interrupt handler
|
||||
PCINT0_vect:
|
||||
push r17
|
||||
push r18
|
||||
clr wdt_counter
|
||||
in r18, MCUCR
|
||||
cbr r18, (1<<SE)
|
||||
; turn off the sleep mode
|
||||
@ -164,8 +165,8 @@ MCU_Init:
|
||||
rcall init_ports
|
||||
rcall init_interrupts
|
||||
rcall init_buzzer
|
||||
rcall init_wdt
|
||||
rcall init_sm
|
||||
; rcall init_wdt
|
||||
|
||||
; init important registers for game
|
||||
ldi delay_counter_r, 0xff
|
||||
@ -190,7 +191,24 @@ MCU_Delay:
|
||||
rcall delay_1s
|
||||
clr temp_r_b
|
||||
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
|
||||
RESET_vect:
|
||||
init_stack_p temp_r, RAMEND
|
||||
@ -198,7 +216,20 @@ RESET_vect:
|
||||
|
||||
; main program 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:
|
||||
cpi mcu_state_r, INIT_STATE
|
||||
@ -423,18 +454,13 @@ show_sequence:
|
||||
|
||||
beep_quit:
|
||||
rcall delay
|
||||
dec temp_r_b
|
||||
cpi temp_r_b, 0
|
||||
brne _sequence_loop
|
||||
dec temp_r_b
|
||||
cpi temp_r_b, 0
|
||||
brne _sequence_loop
|
||||
|
||||
_seq_quit:
|
||||
rcall dec_delay_counter
|
||||
rcall delay_50ms
|
||||
|
||||
; in temp_r_c, MCUCR
|
||||
; sbr temp_r_c, (1<<SE)
|
||||
; out MCUCR, temp_r_c
|
||||
; sleep
|
||||
ret
|
||||
|
||||
; this function need to set the OCR0A register to 0xff for overflow interrupt
|
||||
|
||||
133
firmware.hex
133
firmware.hex
@ -1,67 +1,70 @@
|
||||
:020000020000FC
|
||||
:1000000047C0189513C018950CC0189518951895E9
|
||||
:100010001895189518951DC0189518951895189548
|
||||
:100020001895A1B5A0E4A1BDB39418951F932F9383
|
||||
:1000300025B72F7D25BF2FB710916000133031F405
|
||||
:1000400019B3107FA1D1109362002FBF2F911F9180
|
||||
:1000500018957F937FB702C008EA52B7052702952B
|
||||
:10006000500F7FBF7F9118956DD15CD161D171D157
|
||||
:100070003FEF41E0A2E0AA2EFF27E0E802D078940B
|
||||
:10008000089573E0FDD07A95E9F795D17727089523
|
||||
:100090000FED0DBF0027109361000F9301E0009357
|
||||
:1000A00060000F9110916000113041F4DDDF10937A
|
||||
:1000B00061000F9302E0009360000F91123041F451
|
||||
:1000C00093D0109361000F9303E0009360000F91B1
|
||||
:1000D0001330C1F520916200203E51F40F930EE8D9
|
||||
:1000E00006BF0F91D89ABA9A2FD0D898BA98F2CF63
|
||||
:1000F00020916200203D51F40F9307E406BF0F9159
|
||||
:10010000D99ABA9A21D0D998BA98F2CF20916200A0
|
||||
:10011000203B51F40F9309E606BF0F91DA9ABA9A81
|
||||
:1001200013D0DA98BA98F2CF20916200203751F4B8
|
||||
:100130000F9300E506BF0F91DB9ABA9A05D0DB98C2
|
||||
:10014000BA98F2CF92D0AECF2F9329D128D127D110
|
||||
:10015000A9B39A2FA07F9F70AA27A09362008191D4
|
||||
:10016000981729F42A2D241751F0439510C02F9188
|
||||
:1001700087D03FEFA2E0AA95AA2E0CD008952F9128
|
||||
:1001800000EF0BBBBA980BD1A4D004D008952F91E7
|
||||
:1001900008950895FF27E0E8BA9800EF0BBB0BD154
|
||||
:1001A000109361000F9302E0009360000F9141E013
|
||||
:1001B000A39408957A2DDD27C0E8F1D0652F663429
|
||||
:1001C00030F06C3830F0683C30F06F3F30F0A1E038
|
||||
:1001D00005C0A2E003C0A4E001C0A8E0A9937A95FD
|
||||
:1001E000703059F700000895E5DF7A2DDD27C0E86B
|
||||
:1001F0007030C1F1A991A13031F0A23079F0A43072
|
||||
:10020000C1F0A83009F10F930EE806BF0F91D89AFC
|
||||
:10021000BA9AACD0D898BA9828D020C00F9307E4E7
|
||||
:1002200006BF0F91D99ABA9AA1D0D998BA981DD081
|
||||
:1002300015C00F9309E606BF0F91DA9ABA9A96D0C5
|
||||
:10024000DA98BA9812D00AC00F9300E506BF0F9152
|
||||
:10025000DB9ABA9A8BD0DB98BA9807D087D07A9578
|
||||
:10026000703031F607D09BD008957F937FEF76BF33
|
||||
:100270007F9108953A50383208F008953FEF08957D
|
||||
:100280001F932F933F934F93F8944BB30F9301EF2A
|
||||
:100290000BBB0F9184D011E033E020EF110F210F41
|
||||
:1002A0002BBB7DD03A95C9F70F9308EF0BBB0F918D
|
||||
:1002B00076D018E033E020EF1695210F2BBB6FD0DE
|
||||
:1002C0003A95C9F778944BBB4F913F912F911F916D
|
||||
:1002D00008950F930EE806BF0F91D89ABA9A5FD08F
|
||||
:1002E0005ED0D898BA980F9309E606BF0F91D99AB5
|
||||
:1002F000BA9A55D054D0D998BA980F9300E506BF52
|
||||
:100300000F91DA9ABA9A4BD04AD0DA98BA980F93EA
|
||||
:1003100007E406BF0F91DB9ABA9A41D040D0DB9830
|
||||
:10032000BA98089500E10BBF00EF02BB00270895C3
|
||||
:10033000BA9802E400BF0FEF06BF02E003BF01E07E
|
||||
:1003400009BF08950FE00ABB02950BBBBA9AC29889
|
||||
:10035000089505B7006105BF0895F894A89501B503
|
||||
:10036000086101BD0DE401BD789408952F934F936A
|
||||
:100370002FEF432F00002A95E9F700004A95D1F7A7
|
||||
:1003800000004F912F9108952F933F932AE139EF69
|
||||
:100390003A95F1F72A95E1F73F912F9108952F9320
|
||||
:1003A0003F9321E43FEE3A95F1F72A95E1F70000FB
|
||||
:1003B0003F912F9108958F939F9324E683EC99E0CA
|
||||
:1003C0000197F1F72A95D1F724E69F918F9108952F
|
||||
:1003D0004D656D6F7279206C65642067616D652E67
|
||||
:1003E000205772697474656E206279205365726754
|
||||
:1003F0006579205961726B6F762032372E30392E35
|
||||
:040400003230323133
|
||||
:1000000054C0189513C018950CC0189518951895DC
|
||||
:100010001895189518951EC0189518951895189547
|
||||
:100020001895B394A1B5A064A1BD18951F932F9303
|
||||
:10003000BB2425B72F7D25BF2FB71091600013304B
|
||||
:1000400031F419B3107FB8D1109362002FBF2F91F4
|
||||
:100050001F9118957F937FB702C008EA52B7052712
|
||||
:100060000295500F7FBF7F91189584D173D178D1BD
|
||||
:100070008CD187D13FEF41E0A2E0AA2EFF27E0E834
|
||||
:1000800002D07894089573E013D17A95E9F7ABD153
|
||||
:1000900077270895F894A89500E004BF01B508619A
|
||||
:1000A00001BD00E001BD789408950FED0DBF00275C
|
||||
:1000B000109361000F9301E0009360000F91A4E1A1
|
||||
:1000C000BA1608F407C0BB24E5DFA5B7A062A5BF38
|
||||
:1000D000F894889510916000113041F4C6DF1093B8
|
||||
:1000E00061000F9302E0009360000F91123041F421
|
||||
:1000F00093D0109361000F9303E0009360000F9181
|
||||
:100100001330C1F520916200203E51F40F930EE8A8
|
||||
:1001100006BF0F91D89ABA9A2FD0D898BA98F2CF32
|
||||
:1001200020916200203D51F40F9307E406BF0F9128
|
||||
:10013000D99ABA9A21D0D998BA98F2CF2091620070
|
||||
:10014000203B51F40F9309E606BF0F91DA9ABA9A51
|
||||
:1001500013D0DA98BA98F2CF20916200203751F488
|
||||
:100160000F9300E506BF0F91DB9ABA9A05D0DB9892
|
||||
:10017000BA98F2CF92D0A3CF2F9329D128D127D1EB
|
||||
:10018000A9B39A2FA07F9F70AA27A09362008191A4
|
||||
:10019000981729F42A2D241751F0439510C02F9158
|
||||
:1001A00087D03FEFA2E0AA95AA2E0CD008952F91F8
|
||||
:1001B00000EF0BBBBA980BD1A4D004D008952F91B7
|
||||
:1001C00008950895FF27E0E8BA9800EF0BBB0BD124
|
||||
:1001D000109361000F9302E0009360000F9141E0E3
|
||||
:1001E000A39408957A2DDD27C0E8F1D0652F6634F9
|
||||
:1001F00030F06C3830F0683C30F06F3F30F0A1E008
|
||||
:1002000005C0A2E003C0A4E001C0A8E0A9937A95CC
|
||||
:10021000703059F700000895E5DF7A2DDD27C0E83A
|
||||
:100220007030C1F1A991A13031F0A23079F0A43041
|
||||
:10023000C1F0A83009F10F930EE806BF0F91D89ACC
|
||||
:10024000BA9AACD0D898BA9828D020C00F9307E4B7
|
||||
:1002500006BF0F91D99ABA9AA1D0D998BA981DD051
|
||||
:1002600015C00F9309E606BF0F91DA9ABA9A96D095
|
||||
:10027000DA98BA9812D00AC00F9300E506BF0F9122
|
||||
:10028000DB9ABA9A8BD0DB98BA9807D087D07A9548
|
||||
:10029000703031F607D09BD008957F937FEF76BF03
|
||||
:1002A0007F9108953A50383208F008953FEF08954D
|
||||
:1002B0001F932F933F934F93F8944BB30F9301EFFA
|
||||
:1002C0000BBB0F9184D011E033E020EF110F210F11
|
||||
:1002D0002BBB7DD03A95C9F70F9308EF0BBB0F915D
|
||||
:1002E00076D018E033E020EF1695210F2BBB6FD0AE
|
||||
:1002F0003A95C9F778944BBB4F913F912F911F913D
|
||||
:1003000008950F930EE806BF0F91D89ABA9A5FD05E
|
||||
:100310005ED0D898BA980F9309E606BF0F91D99A84
|
||||
:10032000BA9A55D054D0D998BA980F9300E506BF21
|
||||
:100330000F91DA9ABA9A4BD04AD0DA98BA980F93BA
|
||||
:1003400007E406BF0F91DB9ABA9A41D040D0DB9800
|
||||
:10035000BA98089500E10BBF00EF02BB0027089593
|
||||
:10036000BA9802E400BF0FEF06BF02E003BF01E04E
|
||||
:1003700009BF08950FE00ABB02950BBBBA9AC29859
|
||||
:10038000089505B7006105BF0895F894A89501B5D3
|
||||
:10039000086101BD0DE401BD789408952F934F933A
|
||||
:1003A0002FEF432F00002A95E9F700004A95D1F777
|
||||
:1003B00000004F912F9108952F933F932AE139EF39
|
||||
:1003C0003A95F1F72A95E1F73F912F9108952F93F0
|
||||
:1003D0003F9321E43FEE3A95F1F72A95E1F70000CB
|
||||
:1003E0003F912F9108958F939F9324E683EC99E09A
|
||||
:1003F0000197F1F72A95D1F724E69F918F910895FF
|
||||
:100400004D656D6F7279206C65642067616D652E36
|
||||
:10041000205772697474656E206279205365726723
|
||||
:100420006579205961726B6F762032372E30392E04
|
||||
:040430003230323103
|
||||
: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