some delay

This commit is contained in:
Sergey Yarkov 2023-01-24 01:32:27 +03:00
parent 00dffd63fd
commit 0f4110bfd4
No known key found for this signature in database
GPG Key ID: E91CE1FABC619B6F
5 changed files with 317 additions and 58 deletions

View File

@ -7,7 +7,7 @@
; Package: SOIC-20W_7.5x12.8mm_P1.27mm ; Package: SOIC-20W_7.5x12.8mm_P1.27mm
; Assembler: AVR macro assembler 2.2.7 ; Assembler: AVR macro assembler 2.2.7
; Clock frequency: 12 MHz External Crystal Oscillator ; Clock frequency: 12 MHz External Crystal Oscillator
; Fuses: lfuse: , hfuse: , efuse: , lock: ; Fuses: lfuse: 0x4F, hfuse: 0x9F, efuse: 0xFF, lock: 0xFF
; ;
; Written by Sergey Yarkov 22.01.2023 ; Written by Sergey Yarkov 22.01.2023
@ -16,12 +16,24 @@
.DEF tmp_r_a = r16 .DEF tmp_r_a = r16
.DSEG ;========================================;
; LABELS ;
;========================================;
.EQU LED_POWER_PORT = PD6
;========================================;
; CODE SEGMENT ;
;========================================;
.CSEG .CSEG
.ORG 0x00 .ORG 0x00
; MCU VECTORS ;========================================;
; VECTORS ;
;========================================;
rjmp RESET_vect ; Program start at RESET vector rjmp RESET_vect ; Program start at RESET vector
reti ; External Interrupt Request 0 / inactive reti ; External Interrupt Request 0 / inactive
reti ; External Interrupt Request 1 / inactive reti ; External Interrupt Request 1 / inactive
@ -55,17 +67,47 @@ MCU_INIT:
rjmp LOOP rjmp LOOP
INIT_PORTS: INIT_PORTS:
ldi r16, (1<<PD6) ldi r16, (1<<LED_POWER_PORT)
out DDRD, r16 out DDRD, r16
out PORTD, r16 out PORTD, r16
ret ret
; ;========================================;
; MAIN PROGRAM LOOP ; MAIN PROGRAM LOOP ;
;========================================;
LOOP: LOOP:
nop ldi r16, (1<<LED_POWER_PORT)
out PORTD, r16
rcall DELAY
rcall DELAY
ldi r16, (0<<LED_POWER_PORT)
out PORTD, r16
rcall DELAY
rcall DELAY
rjmp LOOP rjmp LOOP
DELAY:
ldi r16, 255 ; 1 clock cycle
_DEL_1:
ldi r17, 255 ; 1 clock cycle
_DEL_2:
dec r17 ; 1 clock cycle
nop ; 1 clock cycle
brne _DEL_2 ; 2 clock cycle when jumping / 1 when continue
dec r16 ; 1 clock cycle
brne _DEL_1 ; 2 clock cycle when jumping / 1 when continue
ret
INFO: .DB "AVR Thermostat. Written by Sergey Yarkov 22.01.2023" INFO: .DB "AVR Thermostat. Written by Sergey Yarkov 22.01.2023"
;========================================;
; EEPROM SEGMENT ;
;========================================;
.ESEG .ESEG

View File

@ -2,9 +2,10 @@
:1000000014C0189518951895189518951895189561 :1000000014C0189518951895189518951895189561
:100010001895189518951895189518951895189578 :100010001895189518951895189518951895189578
:10002000189518951895189518950FED0DBF01D0D6 :10002000189518951895189518950FED0DBF01D0D6
:1000300004C000E401BB02BB08950000FECF41569E :1000300004C000E401BB02BB089500E402BB06D08B
:100040005220546865726D6F737461742E205772FC :1000400005D000E002BB02D001D0F7CF0FEF1FEFC9
:10005000697474656E2062792053657267657920D2 :100050001A950000E9F70A95D1F708954156522004
:100060005961726B6F762032322E30312E3230323F :10006000546865726D6F737461742E205772697471
:0200700033005B :1000700074656E20627920536572676579205961D5
:10008000726B6F762032322E30312E3230323300A6
:00000001FF :00000001FF

View File

@ -1,5 +1,5 @@
AVRASM ver. 2.2.7 firmware.asm Sun Jan 22 20:26:00 2023 AVRASM ver. 2.2.7 firmware.asm Tue Jan 24 01:18:37 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'
@ -13,7 +13,7 @@ firmware.asm(14): Including file 'tn2313Adef.inc'
; Package: SOIC-20W_7.5x12.8mm_P1.27mm ; Package: SOIC-20W_7.5x12.8mm_P1.27mm
; Assembler: AVR macro assembler 2.2.7 ; Assembler: AVR macro assembler 2.2.7
; Clock frequency: 12 MHz External Crystal Oscillator ; Clock frequency: 12 MHz External Crystal Oscillator
; Fuses: lfuse: , hfuse: , efuse: , lock: ; Fuses: lfuse: 0x4F, hfuse: 0x9F, efuse: 0xFF, lock: 0xFF
; ;
; Written by Sergey Yarkov 22.01.2023 ; Written by Sergey Yarkov 22.01.2023
@ -720,12 +720,24 @@ firmware.asm(14): Including file 'tn2313Adef.inc'
.DEF tmp_r_a = r16 .DEF tmp_r_a = r16
.DSEG ;========================================;
; LABELS ;
;========================================;
.EQU LED_POWER_PORT = PD6
;========================================;
; CODE SEGMENT ;
;========================================;
.CSEG .CSEG
.ORG 0x00 .ORG 0x00
; MCU VECTORS ;========================================;
; VECTORS ;
;========================================;
000000 c014 rjmp RESET_vect ; Program start at RESET vector 000000 c014 rjmp RESET_vect ; Program start at RESET vector
000001 9518 reti ; External Interrupt Request 0 / inactive 000001 9518 reti ; External Interrupt Request 0 / inactive
000002 9518 reti ; External Interrupt Request 1 / inactive 000002 9518 reti ; External Interrupt Request 1 / inactive
@ -759,44 +771,74 @@ firmware.asm(14): Including file 'tn2313Adef.inc'
000018 c004 rjmp LOOP 000018 c004 rjmp LOOP
INIT_PORTS: INIT_PORTS:
000019 e400 ldi r16, (1<<PD6) 000019 e400 ldi r16, (1<<LED_POWER_PORT)
00001a bb01 out DDRD, r16 00001a bb01 out DDRD, r16
00001b bb02 out PORTD, r16 00001b bb02 out PORTD, r16
00001c 9508 ret 00001c 9508 ret
; ;========================================;
; MAIN PROGRAM LOOP ; MAIN PROGRAM LOOP ;
LOOP: ;========================================;
00001d 0000 nop
00001e cffe rjmp LOOP
00001f 5641 LOOP:
000020 2052 00001d e400 ldi r16, (1<<LED_POWER_PORT)
000021 6854 00001e bb02 out PORTD, r16
000022 7265
000023 6f6d 00001f d006 rcall DELAY
000024 7473 000020 d005 rcall DELAY
000025 7461
000026 202e 000021 e000 ldi r16, (0<<LED_POWER_PORT)
000027 7257 000022 bb02 out PORTD, r16
000028 7469
000029 6574 000023 d002 rcall DELAY
00002a 206e 000024 d001 rcall DELAY
00002b 7962
00002c 5320 000025 cff7 rjmp LOOP
00002d 7265
00002e 6567 DELAY:
00002f 2079 000026 ef0f ldi r16, 255 ; 1 clock cycle
000030 6159 _DEL_1:
000031 6b72 000027 ef1f ldi r17, 255 ; 1 clock cycle
000032 766f _DEL_2:
000033 3220 000028 951a dec r17 ; 1 clock cycle
000034 2e32 000029 0000 nop ; 1 clock cycle
000035 3130 00002a f7e9 brne _DEL_2 ; 2 clock cycle when jumping / 1 when continue
000036 322e
000037 3230 00002b 950a dec r16 ; 1 clock cycle
firmware.asm(69): warning: .cseg .db misalignment - padding zero byte 00002c f7d1 brne _DEL_1 ; 2 clock cycle when jumping / 1 when continue
000038 0033 INFO: .DB "AVR Thermostat. Written by Sergey Yarkov 22.01.2023" 00002d 9508 ret
00002e 5641
00002f 2052
000030 6854
000031 7265
000032 6f6d
000033 7473
000034 7461
000035 202e
000036 7257
000037 7469
000038 6574
000039 206e
00003a 7962
00003b 5320
00003c 7265
00003d 6567
00003e 2079
00003f 6159
000040 6b72
000041 766f
000042 3220
000043 2e32
000044 3130
000045 322e
000046 3230
firmware.asm(107): warning: .cseg .db misalignment - padding zero byte
000047 0033 INFO: .DB "AVR Thermostat. Written by Sergey Yarkov 22.01.2023"
;========================================;
; EEPROM SEGMENT ;
;========================================;
@ -817,36 +859,36 @@ counted separately from r26..r31 here.
"ATtiny2313A" register use summary: "ATtiny2313A" register use summary:
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: 5 r17: 0 r18: 0 r19: 0 r20: 0 r13: 0 r14: 0 r15: 0 r16: 11 r17: 2 r18: 0 r19: 0 r20: 0
r21: 0 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: 1 out of 35 (2.9%) Registers used: 2 out of 35 (5.7%)
"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
andi : 0 asr : 0 bclr : 0 bld : 0 brbc : 0 brbs : 0 andi : 0 asr : 0 bclr : 0 bld : 0 brbc : 0 brbs : 0
brcc : 0 brcs : 0 break : 0 breq : 0 brge : 0 brhc : 0 brcc : 0 brcs : 0 break : 0 breq : 0 brge : 0 brhc : 0
brhs : 0 brid : 0 brie : 0 brlo : 0 brlt : 0 brmi : 0 brhs : 0 brid : 0 brie : 0 brlo : 0 brlt : 0 brmi : 0
brne : 0 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0 brne : 2 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0
brvs : 0 bset : 0 bst : 0 cbi : 0 cbr : 0 clc : 0 brvs : 0 bset : 0 bst : 0 cbi : 0 cbr : 0 clc : 0
clh : 0 cli : 0 cln : 0 clr : 0 cls : 0 clt : 0 clh : 0 cli : 0 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 : 0 eor : 0 icall : 0 ijmp : 0 in : 0 cpse : 0 dec : 2 eor : 0 icall : 0 ijmp : 0 in : 0
inc : 0 ld : 0 ldd : 0 ldi : 2 lds : 0 lpm : 0 inc : 0 ld : 0 ldd : 0 ldi : 6 lds : 0 lpm : 0
lsl : 0 lsr : 0 mov : 0 movw : 0 neg : 0 nop : 1 lsl : 0 lsr : 0 mov : 0 movw : 0 neg : 0 nop : 1
or : 0 ori : 0 out : 3 pop : 0 push : 0 rcall : 1 or : 0 ori : 0 out : 5 pop : 0 push : 0 rcall : 5
ret : 1 reti : 20 rjmp : 3 rol : 0 ror : 0 sbc : 0 ret : 2 reti : 20 rjmp : 3 rol : 0 ror : 0 sbc : 0
sbci : 0 sbi : 0 sbic : 0 sbis : 0 sbiw : 0 sbr : 0 sbci : 0 sbi : 0 sbic : 0 sbis : 0 sbiw : 0 sbr : 0
sbrc : 0 sbrs : 0 sec : 0 seh : 0 sei : 0 sen : 0 sbrc : 0 sbrs : 0 sec : 0 seh : 0 sei : 0 sen : 0
ser : 0 ses : 0 set : 0 sev : 0 sez : 0 sleep : 0 ser : 0 ses : 0 set : 0 sev : 0 sez : 0 sleep : 0
spm : 0 st : 0 std : 0 sts : 0 sub : 0 subi : 0 spm : 0 st : 0 std : 0 sts : 0 sub : 0 subi : 0
swap : 0 tst : 0 wdr : 0 swap : 0 tst : 0 wdr : 0
Instructions used: 7 out of 105 (6.7%) Instructions used: 9 out of 105 (8.6%)
"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 0x000072 62 52 114 2048 5.6% [.cseg] 0x000000 0x000090 92 52 144 2048 7.0%
[.dseg] 0x000060 0x000060 0 0 0 128 0.0% [.dseg] 0x000060 0x000060 0 0 0 128 0.0%
[.eseg] 0x000000 0x000000 0 0 0 128 0.0% [.eseg] 0x000000 0x000000 0 0 0 128 0.0%

163
firmware.lst Normal file
View File

@ -0,0 +1,163 @@
gavrasm Gerd's AVR assembler version 5.4 (C)2022 by DG4FAC
----------------------------------------------------------
Path: /home/sergeyyarkov/Documents/Applications/attiny2313a_thermostat/
Source file: firmware.asm
Hex file: firmware.hex
Eeprom file: firmware.eep
Compiled: 24.01.2023, 01:15:04
Pass: 2
1: ;
2: ; Project name: thermostat
3: ; Description: Electronic thermostat on AVR Microcontroller
4: ; Source code: https://github.com/sergeyyarkov/attiny2313a_thermostat
5: ; Device: ATtiny2313A
6: ; Device Datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/doc8246.pdf
7: ; Package: SOIC-20W_7.5x12.8mm_P1.27mm
8: ; Assembler: AVR macro assembler 2.2.7
9: ; Clock frequency: 12 MHz External Crystal Oscillator
10: ; Fuses: lfuse: 0x4F, hfuse: 0x9F, efuse: 0xFF, lock: 0xFF
11: ;
12: ; Written by Sergey Yarkov 22.01.2023
13:
14: .INCLUDE "tn2313Adef.inc"
-> Warning 009: Include defs not necessary, using internal values!
File: /home/sergeyyarkov/Documents/Applications/attiny2313a_thermostat/firmware.asm, Line: 14
Source line: .INCLUDE "tn2313Adef.inc"
15: .LIST
16:
17: .DEF tmp_r_a = r16
18:
19: ;========================================;
20: ; LABELS ;
21: ;========================================;
22:
23: .EQU LED_POWER_PORT = PD6
24:
25:
26: ;========================================;
27: ; CODE SEGMENT ;
28: ;========================================;
29:
30: .CSEG
31: .ORG 0x00
32:
33: ;========================================;
34: ; VECTORS ;
35: ;========================================;
36:
37: 000000 C014 rjmp RESET_vect ; Program start at RESET vector
38: 000001 9518 reti ; External Interrupt Request 0 / inactive
39: 000002 9518 reti ; External Interrupt Request 1 / inactive
40: 000003 9518 reti ; Timer/Counter1 Capture Event / inactive
41: 000004 9518 reti ; Timer/Counter1 Compare Match A / inactive
42: 000005 9518 reti ; Timer/Counter1 Overflow / inactive
43: 000006 9518 reti ; Timer/Counter0 Overflow / inactive
44: 000007 9518 reti ; USART0, Rx Complete / inactive
45: 000008 9518 reti ; USART0 Data Register Empty / inactive
46: 000009 9518 reti ; USART0, Tx Complete / inactive
47: 00000A 9518 reti ; Analog Comparator / inactive
48: 00000B 9518 reti ; Pin Change Interrupt Request 0/ inactive
49: 00000C 9518 reti ; Timer/Counter1 Compare Match B / inactive
50: 00000D 9518 reti ; Timer/Counter0 Compare Match A / inactive
51: 00000E 9518 reti ; Timer/Counter0 Compare Match B / inactive
52: 00000F 9518 reti ; USI Start Condition/ inactive
53: 000010 9518 reti ; USI Overflow / inactive
54: 000011 9518 reti ; EEPROM Ready/ inactive
55: 000012 9518 reti ; Watchdog Timer Overflow / inactive
56: 000013 9518 reti ; Pin Change Interrupt Request 1 / inactive
57: 000014 9518 reti ; Pin Change Interrupt Request 2 / inactive
58:
59: RESET_vect:
60: ;
61: ; INIT STACK POINTER
62: 000015 ED0F ldi tmp_r_a, low(RAMEND)
63: 000016 BF0D out SPL, tmp_r_a
64:
65: MCU_INIT:
66: 000017 D001 rcall INIT_PORTS
67: 000018 C004 rjmp LOOP
68:
69: INIT_PORTS:
70: 000019 E400 ldi r16, (1<<LED_POWER_PORT)
71: 00001A BB01 out DDRD, r16
72: 00001B BB02 out PORTD, r16
73: 00001C 9508 ret
74:
75: ;========================================;
76: ; MAIN PROGRAM LOOP ;
77: ;========================================;
78:
79: LOOP:
80: 00001D E400 ldi r16, (1<<LED_POWER_PORT)
81: 00001E BB02 out PORTD, r16
82:
83: 00001F D006 rcall DELAY
84: 000020 D005 rcall DELAY
85:
86: 000021 E000 ldi r16, (0<<LED_POWER_PORT)
87: 000022 BB02 out PORTD, r16
88:
89: 000023 D002 rcall DELAY
90: 000024 D001 rcall DELAY
91:
92: 000025 CFF7 rjmp LOOP
93:
94: DELAY:
95: 000026 E302 ldi r16, 50 ; 1 clock cycle
96: _DEL_1:
97: 000027 EF1F ldi r17, 255 ; 1 clock cycle
98: _DEL_2:
99: 000028 951A dec r17 ; 1 clock cycle
100: 000029 0000 nop ; 1 clock cycle
101: 00002A F7E9 brne _DEL_2 ; 2 clock cycle when jumping / 1 when continue
102:
103: 00002B 950A dec r16 ; 1 clock cycle
104: 00002C F7D1 brne _DEL_1 ; 2 clock cycle when jumping / 1 when continue
105: 00002D 9508 ret
106:
107: INFO: .DB "AVR Thermostat. Written by Sergey Yarkov 22.01.2023"
-> Warning 004: Number of bytes on line is odd, added 00 to fit program memory!
File: /home/sergeyyarkov/Documents/Applications/attiny2313a_thermostat/firmware.asm, Line: 107
Source line: INFO: .DB "AVR Thermostat. Written by Sergey Yarkov 22.01.2023"
00002E 5641 2052 4854 5245
000032 4F4D 5453 5441 202E
000036 5257 5449 4554 204E
00003A 5942 5320 5245 4547
00003E 2059 4159 4B52 564F
000042 3220 2E32 3130 322E
000046 3230 0033
108:
109: ;========================================;
110: ; EEPROM SEGMENT ;
111: ;========================================;
112:
113: .ESEG
List of symbols:
Type nDef nUsed Decimalval Hexval Name
T 1 1 89 59 ATTINY2313A
L 1 2 21 15 RESET_VECT
L 1 0 23 17 MCU_INIT
L 1 2 25 19 INIT_PORTS
L 1 4 29 1D LOOP
L 1 8 38 26 DELAY
L 1 2 39 27 _DEL_1
L 1 2 40 28 _DEL_2
L 1 0 46 2E INFO
R 1 2 16 10 TMP_R_A
C 1 0 23 17 NOW_Y
C 1 0 1 01 NOW_M
C 1 0 24 18 NOW_D
C 1 0 44950 AF96 NOW_I
C 1 3 6 06 LED_POWER_PORT
No macros.
Program : 46 words.
Constants : 26 words.
Total program memory: 72 words.
Eeprom space : 0 bytes.
Data segment : 0 bytes.
Compilation completed, no errors.
Compilation ended 24.01.2023, 01:15:04

11
firmware.pro Normal file
View File

@ -0,0 +1,11 @@
/avr_sim_project_file
/home/sergeyyarkov/Documents/Applications/attiny2313a_thermostat/firmware.asm
mainasm=firmware.asm
file=firmware.lst,98,9,55
file=firmware.asm,1,1,1
clock=12000000, Div8
device-type=ATtiny2313A
device-package=20-pin-PDIP_SOIC
include=firmware.asm B89
windows=acepstwz
alert1=0,0,-1,-1,,0,0