This commit is contained in:
Sergey Yarkov 2023-01-31 00:34:35 +03:00
parent 885a4db18e
commit f7c7e7d56e
No known key found for this signature in database
GPG Key ID: E91CE1FABC619B6F
3 changed files with 76 additions and 67 deletions

View File

@ -89,26 +89,37 @@ ret
; SEND BYTE TO 74HC595 ; ; SEND BYTE TO 74HC595 ;
;========================================; ;========================================;
USI_TRANSMIT_595: USI_TRANSMIT:
in r21, SREG
mov r19, COUNTER mov r19, COUNTER
out USIDR, r19 out USIDR, r19 ; Move byte into USI Data Register
ldi r19, (1<<USIOIF)
; Enable USI Overflow Interrupt Flag (will be 0 if transfer is not compeleted)
ldi r19, (1<<USIOIF)
out USISR, r19 out USISR, r19
; Load settings of USI into temp register
; This will setup USI to Three-wire mode, Software clock strobe (USITC)
; with External, positive edge and toggle USCK
;
; USIWM0 <--------------> USI Wire Mode
; USICS1 <--------------> USI Clock Source Select
; USICLK <--------------> USI Clock Strobe
; USITC <--------------> USI Toggle Clock (Enable clock generation)
ldi TEMP_REG_A, (1<<USIWM0) | (1<<USICS1) | (1<<USICLK) | (1<<USITC) ldi TEMP_REG_A, (1<<USIWM0) | (1<<USICS1) | (1<<USICLK) | (1<<USITC)
_USI_TRANSMIT_595_LOOP: _USI_TRANSMIT_LOOP:
out USICR, TEMP_REG_A out USICR, TEMP_REG_A ; Load settings from temp register into USI Control Register
sbis USISR, USIOIF sbis USISR, USIOIF ; If transfer is comleted then move out of loop
rjmp _USI_TRANSMIT_595_LOOP rjmp _USI_TRANSMIT_LOOP
; Send pulse into LATCH pin.
; This will copy byte from 74hc595 shift register into 74hc595 storage register
sbi PORTB, USI_LATCH_PIN sbi PORTB, USI_LATCH_PIN
cbi PORTB, USI_LATCH_PIN cbi PORTB, USI_LATCH_PIN
out SREG, r21
ret ret
SUBPROGRAM_LED_SHIFTING: SUBPROGRAM_LED_SHIFTING:
rcall USI_TRANSMIT_595 rcall USI_TRANSMIT
rol COUNTER rol COUNTER
ret ret

View File

@ -1,9 +1,9 @@
:020000020000FC :020000020000FC
:1000000000C00FED0DBF02D041E015C000E401BB00 :1000000000C00FED0DBF02D041E013C000E401BB02
:1000100001EC07BB08955FB7342F3FB930E43EB918 :1000100001EC07BB0895342F3FB930E43EB90BE142
:100020000BE10DB9769BFDCFC09AC0985FBF0895D4 :100020000DB9769BFDCFC09AC0980895F4DF441FA8
:10003000F2DF441F089514D0FBDF02D001D0FBCFC4 :10003000089514D0FBDF02D001D0FBCF0F931F93A4
:100040000F931F93F8940FEF1FEF1A950000000015 :10004000F8940FEF1FEF1A95000000000000D9F799
:100050000000D9F70A95C1F778941F910F91089580 :100050000A95C1F778941F910F91089500E412B3A7
:0A00600000E412B3102712BB08954C :06006000102712BB0895F9
:00000001FF :00000001FF

View File

@ -1,5 +1,5 @@
AVRASM ver. 2.2.7 firmware.asm Sun Jan 29 22:16:18 2023 AVRASM ver. 2.2.7 firmware.asm Tue Jan 31 00:01:48 2023
firmware.asm(14): Including file 'tn2313Adef.inc' firmware.asm(14): Including file 'tn2313Adef.inc'
firmware.asm(14): Including file 'tn2313Adef.inc' firmware.asm(14): Including file 'tn2313Adef.inc'
@ -780,7 +780,7 @@ firmware.asm(14): Including file 'tn2313Adef.inc'
;======================================================= ;=======================================================
000003 d002 rcall INIT_PORTS 000003 d002 rcall INIT_PORTS
000004 e041 ldi COUNTER, 0b00000001 000004 e041 ldi COUNTER, 0b00000001
000005 c015 rjmp LOOP 000005 c013 rjmp LOOP
INIT_PORTS: INIT_PORTS:
000006 e400 ldi r16, (1<<LED_POWER_PORT) 000006 e400 ldi r16, (1<<LED_POWER_PORT)
@ -793,68 +793,66 @@ firmware.asm(14): Including file 'tn2313Adef.inc'
; SEND BYTE TO 74HC595 ; ; SEND BYTE TO 74HC595 ;
;========================================; ;========================================;
USI_TRANSMIT_595: USI_TRANSMIT:
00000b b75f in r21, SREG 00000b 2f34 mov r19, COUNTER
00000c 2f34 mov r19, COUNTER 00000c b93f out USIDR, r19
00000d b93f out USIDR, r19 00000d e430 ldi r19, (1<<USIOIF)
00000e e430 ldi r19, (1<<USIOIF) 00000e b93e out USISR, r19
00000f b93e out USISR, r19 00000f e10b ldi TEMP_REG_A, (1<<USIWM0) | (1<<USICS1) | (1<<USICLK) | (1<<USITC)
000010 e10b ldi TEMP_REG_A, (1<<USIWM0) | (1<<USICS1) | (1<<USICLK) | (1<<USITC)
_USI_TRANSMIT_595_LOOP: _USI_TRANSMIT_LOOP:
000011 b90d out USICR, TEMP_REG_A 000010 b90d out USICR, TEMP_REG_A
000012 9b76 sbis USISR, USIOIF 000011 9b76 sbis USISR, USIOIF
000013 cffd rjmp _USI_TRANSMIT_595_LOOP 000012 cffd rjmp _USI_TRANSMIT_LOOP
000014 9ac0 sbi PORTB, USI_LATCH_PIN 000013 9ac0 sbi PORTB, USI_LATCH_PIN
000015 98c0 cbi PORTB, USI_LATCH_PIN 000014 98c0 cbi PORTB, USI_LATCH_PIN
000016 bf5f out SREG, r21 000015 9508 ret
000017 9508 ret
SUBPROGRAM_LED_SHIFTING: SUBPROGRAM_LED_SHIFTING:
000018 dff2 rcall USI_TRANSMIT_595 000016 dff4 rcall USI_TRANSMIT
000019 1f44 rol COUNTER 000017 1f44 rol COUNTER
00001a 9508 ret 000018 9508 ret
;========================================; ;========================================;
; MAIN PROGRAM LOOP ; ; MAIN PROGRAM LOOP ;
;========================================; ;========================================;
LOOP: LOOP:
00001b d014 rcall TOGGLE_POWER_LED 000019 d014 rcall TOGGLE_POWER_LED
00001c dffb rcall SUBPROGRAM_LED_SHIFTING 00001a dffb rcall SUBPROGRAM_LED_SHIFTING
00001d d002 rcall DELAY 00001b d002 rcall DELAY
00001e d001 rcall DELAY 00001c d001 rcall DELAY
00001f cffb rjmp LOOP 00001d cffb rjmp LOOP
DELAY: DELAY:
000020 930f push r16 00001e 930f push r16
000021 931f push r17 00001f 931f push r17
000022 94f8 cli 000020 94f8 cli
000023 ef0f ldi r16, 255 000021 ef0f ldi r16, 255
_DELAY_1: _DELAY_1:
000024 ef1f ldi r17, 255 000022 ef1f ldi r17, 255
_DELAY_2: _DELAY_2:
000025 951a dec r17 000023 951a dec r17
000024 0000 nop
000025 0000 nop
000026 0000 nop 000026 0000 nop
000027 0000 nop 000027 f7d9 brne _DELAY_2
000028 0000 nop
000029 f7d9 brne _DELAY_2
00002a 950a dec r16 000028 950a dec r16
00002b f7c1 brne _DELAY_1 000029 f7c1 brne _DELAY_1
00002c 9478 sei 00002a 9478 sei
00002d 911f pop r17 00002b 911f pop r17
00002e 910f pop r16 00002c 910f pop r16
00002f 9508 ret 00002d 9508 ret
TOGGLE_POWER_LED: TOGGLE_POWER_LED:
000030 e400 ldi r16, (1<<LED_POWER_PORT) 00002e e400 ldi r16, (1<<LED_POWER_PORT)
000031 b312 in r17, PORTD 00002f b312 in r17, PORTD
000032 2710 eor r17, r16 000030 2710 eor r17, r16
000033 bb12 out PORTD, r17 000031 bb12 out PORTD, r17
000034 9508 ret 000032 9508 ret
;========================================; ;========================================;
@ -932,9 +930,9 @@ counted separately from r26..r31 here.
x : 0 y : 0 z : 0 r0 : 0 r1 : 0 r2 : 0 r3 : 0 r4 : 0 x : 0 y : 0 z : 0 r0 : 0 r1 : 0 r2 : 0 r3 : 0 r4 : 0
r5 : 0 r6 : 0 r7 : 0 r8 : 0 r9 : 0 r10: 0 r11: 0 r12: 0 r5 : 0 r6 : 0 r7 : 0 r8 : 0 r9 : 0 r10: 0 r11: 0 r12: 0
r13: 0 r14: 0 r15: 0 r16: 14 r17: 7 r18: 0 r19: 4 r20: 3 r13: 0 r14: 0 r15: 0 r16: 14 r17: 7 r18: 0 r19: 4 r20: 3
r21: 2 r22: 0 r23: 0 r24: 0 r25: 0 r26: 0 r27: 0 r28: 0 r21: 0 r22: 0 r23: 0 r24: 0 r25: 0 r26: 0 r27: 0 r28: 0
r29: 0 r30: 0 r31: 0 r29: 0 r30: 0 r31: 0
Registers used: 5 out of 35 (14.3%) Registers used: 4 out of 35 (11.4%)
"ATtiny2313A" instruction use summary: "ATtiny2313A" instruction use summary:
.lds : 0 .sts : 0 adc : 0 add : 0 adiw : 0 and : 0 .lds : 0 .sts : 0 adc : 0 add : 0 adiw : 0 and : 0
@ -945,10 +943,10 @@ brne : 2 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0
brvs : 0 bset : 0 bst : 0 cbi : 1 cbr : 0 clc : 0 brvs : 0 bset : 0 bst : 0 cbi : 1 cbr : 0 clc : 0
clh : 0 cli : 1 cln : 0 clr : 0 cls : 0 clt : 0 clh : 0 cli : 1 cln : 0 clr : 0 cls : 0 clt : 0
clv : 0 clz : 0 com : 0 cp : 0 cpc : 0 cpi : 0 clv : 0 clz : 0 com : 0 cp : 0 cpc : 0 cpi : 0
cpse : 0 dec : 2 eor : 1 icall : 0 ijmp : 0 in : 2 cpse : 0 dec : 2 eor : 1 icall : 0 ijmp : 0 in : 1
inc : 0 ld : 0 ldd : 0 ldi : 9 lds : 0 lpm : 0 inc : 0 ld : 0 ldd : 0 ldi : 9 lds : 0 lpm : 0
lsl : 0 lsr : 0 mov : 1 movw : 0 neg : 0 nop : 3 lsl : 0 lsr : 0 mov : 1 movw : 0 neg : 0 nop : 3
or : 0 ori : 0 out : 8 pop : 2 push : 2 rcall : 6 or : 0 ori : 0 out : 7 pop : 2 push : 2 rcall : 6
ret : 5 reti : 0 rjmp : 4 rol : 1 ror : 0 sbc : 0 ret : 5 reti : 0 rjmp : 4 rol : 1 ror : 0 sbc : 0
sbci : 0 sbi : 1 sbic : 0 sbis : 1 sbiw : 0 sbr : 0 sbci : 0 sbi : 1 sbic : 0 sbis : 1 sbiw : 0 sbr : 0
sbrc : 0 sbrs : 0 sec : 0 seh : 0 sei : 1 sen : 0 sbrc : 0 sbrs : 0 sec : 0 seh : 0 sei : 1 sen : 0
@ -960,7 +958,7 @@ Instructions used: 19 out of 105 (18.1%)
"ATtiny2313A" memory use summary [bytes]: "ATtiny2313A" memory use summary [bytes]:
Segment Begin End Code Data Used Size Use% Segment Begin End Code Data Used Size Use%
--------------------------------------------------------------- ---------------------------------------------------------------
[.cseg] 0x000000 0x00006a 106 0 106 2048 5.2% [.cseg] 0x000000 0x000066 102 0 102 2048 5.0%
[.dseg] 0x000060 0x000060 0 0 0 128 0.0% [.dseg] 0x000060 0x000060 0 0 0 128 0.0%
[.eseg] 0x000000 0x000033 0 51 51 128 39.8% [.eseg] 0x000000 0x000033 0 51 51 128 39.8%