From b176b356cefe34e34f0c2d586b77b0d9c9ccd125 Mon Sep 17 00:00:00 2001 From: sergeyyarkov Date: Fri, 30 Jun 2023 21:42:04 +0300 Subject: [PATCH] min & max limit for temp setting --- definitions.asm | 19 +- .../attiny2313a_thermostat.X.production.hex | 113 ++-- .../attiny2313a_thermostat.X.production.lss | 626 +++++++++--------- .../attiny2313a_thermostat.X.production.map | 81 +-- .../attiny2313a_thermostat.X.production.obj | Bin 8767 -> 8839 bytes .../attiny2313a_thermostat.X.production.tmp | 191 +++--- main.asm | 241 +++++-- main.hex | 204 +++--- nbproject/Makefile-genesis.properties | 2 +- 9 files changed, 811 insertions(+), 666 deletions(-) diff --git a/definitions.asm b/definitions.asm index 336a25e..2b2eea6 100644 --- a/definitions.asm +++ b/definitions.asm @@ -7,6 +7,8 @@ .DEF DELAY_24_r = r21 .DEF DISP_NUM_L = r24 ; LSB числа которое сейчас на индикаторе .DEF DISP_NUM_H = r25 ; MSB числа которое сейчас на индикаторе +.DEF EEP_A_r = r3 +.DEF EEP_D_r = r4 .DEF REPROGRAM_STEP_r = r6 .EQU DIGIT_1_PIN = PD2 ; Пин разряда индикатора 1 @@ -14,8 +16,8 @@ .EQU DIGIT_3_PIN = PD4 ; Пин разряда индикатора 3 .EQU DIGIT_4_PIN = PD5 ; Пин разряда индикатора 4 -.EQU LED_ERR_PIN = PD6 ; Светодиод который говорит о том, что МК в состоянии ошибки -.EQU LED_ERR_PORT = PORTD +.EQU LED_PGM_PIN = PD6 ; Светодиод который говорит о том, что МК в состоянии настройки +.EQU LED_PGM_PORT = PORTD .EQU OW_LINE = PB1 ; Пин шины 1-Wire .EQU OW_DDR = DDRB @@ -64,6 +66,11 @@ .EQU MIN_HYST = 1 ; минимальный гистерезис который можно выставить - 0.1 .EQU MAX_HYST = 200 ; максимальный гистерезис который можно выставить - 20 +.EQU MIN_TEMP_H = 0xfe +.EQU MIN_TEMP_L = 0x0c ; минимум -50 градусов уставка +.EQU MAX_TEMP_H = 0x04 ; максимум 120 градусов уставка +.EQU MAX_TEMP_L = 0xb0 + ; **** СТАНДАРТНЫЕ ПАРАМЕТРЫ *********************************** .EQU DEFAULT_TEMP = 300 ; 30 градусов @@ -77,4 +84,10 @@ .EQU DEFAULT_SETTING_TEMP_L = LOW(DEFAULT_TEMP) .EQU DEFAULT_SETTING_TEMP_H = HIGH(DEFAULT_TEMP) .EQU DEFAULT_SETTING_HYST = DEFAULT_HYST -.EQU DEFAULT_SETTING_MODE = DEFAULT_MODE \ No newline at end of file +.EQU DEFAULT_SETTING_MODE = DEFAULT_MODE + +.EQU EEP_SETTING_TEMP_H = 0x00 +.EQU EEP_SETTING_TEMP_L = 0x01 +.EQU EEP_SETTING_HYST = 0x02 +.EQU EEP_SETTING_MODE = 0x03 +.EQU EEP_FIRST_TIME_RUN = 0x04 \ No newline at end of file diff --git a/dist/default/production/attiny2313a_thermostat.X.production.hex b/dist/default/production/attiny2313a_thermostat.X.production.hex index fcda695..e492a1a 100644 --- a/dist/default/production/attiny2313a_thermostat.X.production.hex +++ b/dist/default/production/attiny2313a_thermostat.X.production.hex @@ -7,12 +7,12 @@ :10003A002F933F934F935F935FB74091670045308B :10004A000CF403C0442740936700403081F493982E :10005A00949895980EF002C00BE002C000916500DA -:10006A00002311F0929A01C0929850D305D24130E0 +:10006A00002311F0929A01C0929858D305D24130D8 :10007A0081F4929894989598009164003091650063 -:10008A00032B11F0939A01C09398009164003ED318 +:10008A00032B11F0939A01C093980091640046D310 :10009A00F3D1423059F4929893989598949A009192 -:1000AA00630034D3002D0F77002EE6D1433041F49C -:1000BA00929893989498959A0091660027D3DCD1E8 +:1000AA0063003CD3002D0F77002EE6D1433041F494 +:1000BA00929893989498959A009166002FD3DCD1E0 :1000CA004395409367005FBF5F914F913F912F9196 :1000DA001F910F9118950FED0DBF0FE701BB01EEB0 :1000EA0007BB0CE108BB02E000BF05E003BF03E267 @@ -24,9 +24,9 @@ :10014A0040926D0003E0302ED3D040926E0000271B :10015A00009368000093690000EF00936A000FEFB4 :10016A0000937100662428D100916F00083209F4C7 -:10017A0005C012E010936000DBD201C0D2D280E049 +:10017A0005C012E010936000E3D201C0DAD280E039 :10018A0090E000916000003051F420916A002093C1 -:10019A00660003D1A1D2B4D011E019BF41D0013019 +:10019A00660003D1A9D2B4D011E019BF41D0013011 :1001AA0009F4A6D1023069F71BE01093630010939B :1001BA006400109365001093660011E019BFE1CF47 :1001CA00EE24FF1841E1001F111F4A9509F4089512 @@ -59,66 +59,67 @@ :10037A00442311F4909801C0909A07C040916E00EE :10038A00442311F4909A01C090987F915F914F9104 :10039A003F912F911F910F9108951F9361D052E1C0 -:1003AA0035E54DEBE0D112D010916800812F109104 -:1003BA006900912F1F9108950F9340D103E3802E76 -:1003CA0052D1AFE6B0E06ED10F9108950F931F930B -:1003DA002F933F934F9332D170FF3CC00CEC802E89 -:1003EA0042D10EEB802E3FD1A8E6B0E05BD1A9E660 -:1003FA00B0E058D110916800209169002F93287FAE +:1003AA0035E54DEBE8D112D010916800812F1091FC +:1003BA006900912F1F9108950F9348D103E3802E6E +:1003CA005AD1AFE6B0E076D10F9108950F931F93FB +:1003DA002F933F934F933AD170FF3CC00CEC802E81 +:1003EA004AD10EEB802E47D1A8E6B0E063D1A9E648 +:1003FA00B0E060D110916800209169002F93287FA6 :10040A00283F11F0E89407C02F9168941095209521 :10041A001F5F2F4F01C02F91269517952695179587 :10042A002695179526951795309168000EF4319503 :10043A00432F3F70432F330F330F330F440F340FC3 :10044A00369536953695369510936800209369004F :10045A0030936A004F913F912F911F910F91089508 -:10046A000F93ECD070FF06C00CEC802EFCD004E495 -:10047A00802EF9D00F9108950F930F920FB800E4D0 +:10046A000F93F4D070FF06C00CEC802E04D104E484 +:10047A00802E01D10F9108950F930F920FB800E4C7 :10048A000EB90BE10DB9769BFDCFC09AC0980F90BB :10049A000F9108950F93B49B01C01CC00091710085 -:1004AA00002309F417C000270093710048D1639410 -:1004BA00162D143014F435D10DC010E019BF9298DE -:1004CA009398949895986624EBDE32D1969810E02A +:1004AA00002309F417C000270093710050D1639408 +:1004BA00162D143014F43DD10DC010E019BF9298D6 +:1004CA009398949895986624EBDE3AD1969810E022 :1004DA0010936000B49901C009C000917100002313 -:1004EA0009F004C00FEF0093710029D10F9108950C +:1004EA0009F004C00FEF0093710031D10F91089504 :1004FA000F931F932F933F934F93062D002309F0D9 -:10050A0004C09098969A0DD16394C4DF013029F003 -:10051A00023049F1033031F18BC0DED0B29B04C006 -:10052A0000C0B39B0AC011C00AD110916D00183CDB -:10053A0009F0139510936D0008C001D110916D0058 +:10050A0004C09098969A15D16394C4DF013029F0FB +:10051A00023049F1033031F193C0E6D0B29B04C0F6 +:10052A0000C0B39B0AC011C012D110916D00183CD3 +:10053A0009F0139510936D0008C009D110916D0050 :10054A00113009F01A9510936D000F931F930091C3 :10055A006D001AE048DE802F9927F09266001F91FD -:10056A000F9166C03FC0B8D0B29B04C000C0B39B15 -:10057A000FC019C0E4D010916C0020916B003AE0D2 -:10058A00130F3327231F10936C0020936B000BC0AB -:10059A00D6D010916C0020916B001A502040109315 -:1005AA006C0020936B000F931F932F933F9300913E -:1005BA006C0010916B00212F207811F4E89405C08B -:1005CA006894009510950F5F1F4F2AE030E0F8DD20 -:1005DA00802F912F0AE0009366003F912F911F917F -:1005EA000F9126C0E894B29B04C000C0B39B06C01A -:1005FA0009C0A5D011E010936E0004C0A0D010E08D -:10060A0010936E001127812F912F112710936300E9 -:10061A00109364001093650020916E00222309F064 -:10062A0004C01CE01093660003C01DE0109366002E -:10063A004F913F912F911F910F910895F894B99A74 -:10064A0033E04EEB8CD0B99830E04AE888D005D038 -:10065A0033E042E384D078940895B19B716002C07C -:10066A00B1997E7F0895F8940F931F93082D18E08F -:10067A00069508F448F0B99A30E046E770D0B99880 -:10068A0030E042E16CD008C0B99A30E04AE067D065 -:10069A00B99830E04EE763D01A9551F71F910F9140 -:1006AA0078940895F8940F931F93002718E00695FD -:1006BA00B99A30E04AE053D0B99830E040E14FD0DF -:1006CA00B199006830E04CE64AD01A9581F70C934C -:1006DA001F910F91789408950F935F9353E0A3E6C7 -:1006EA00B0E08093610090936200009161001091E4 -:1006FA0062002AE030E064DDED920093610010931D -:10070A0062005A9591F75F910F9108950F931F9385 -:10071A00EAE7F7E01127E00FF11F04901F910F910C -:10072A000895C59A53E039EA4DE71DD0C598089552 -:10073A00C59A5CE034E34DEF16D0C59808950F933F -:10074A001F932F932AE01FEF0FEF0A95F1F71A95DF -:10075A00D9F72A95C1F72F911F910F91089541500A -:10076A003040E8F70895415030405040E0F708958E -:0E077A00C0F9A4B0999282F880909CBFC68905 +:10056A000F916EC047C0C0D0B29B04C000C0B39BFD +:10057A0013C021C0ECD010916C0020916B00103B8D +:10058A0034E0230731F03AE0130F3327231F109387 +:10059A006C0020936B000FC0DAD010916C00209190 +:1005AA006B001C303EEF230711F01A5020401093C5 +:1005BA006C0020936B000F931F932F933F9300912E +:1005CA006C0010916B00212F207811F4E89405C07B +:1005DA006894009510950F5F1F4F2AE030E0F0DD18 +:1005EA00802F912F0AE0009366003F912F911F916F +:1005FA000F9126C0E894B29B04C000C0B39B06C00A +:10060A0009C0A5D011E010936E0004C0A0D010E07C +:10061A0010936E001127812F912F1EE01093630013 +:10062A00109364001093650020916E00222309F054 +:10063A0004C01CE01093660003C01DE0109366001E +:10064A004F913F912F911F910F910895F894B99A64 +:10065A0033E04EEB8CD0B99830E04AE888D005D028 +:10066A0033E042E384D078940895B19B716002C06C +:10067A00B1997E7F0895F8940F931F93082D18E07F +:10068A00069508F448F0B99A30E046E770D0B99870 +:10069A0030E042E16CD008C0B99A30E04AE067D055 +:1006AA00B99830E04EE763D01A9551F71F910F9130 +:1006BA0078940895F8940F931F93002718E00695ED +:1006CA00B99A30E04AE053D0B99830E040E14FD0CF +:1006DA00B199006830E04CE64AD01A9581F70C933C +:1006EA001F910F91789408950F935F9353E0A3E6B7 +:1006FA00B0E08093610090936200009161001091D4 +:10070A0062002AE030E05CDDED9200936100109314 +:10071A0062005A9591F75F910F9108950F931F9375 +:10072A00EAE8F7E01127E00FF11F04901F910F91FB +:10073A000895C59A53E039EA4DE71DD0C598089542 +:10074A00C59A5CE034E34DEF16D0C59808950F932F +:10075A001F932F932AE01FEF0FEF0A95F1F71A95CF +:10076A00D9F72A95C1F72F911F910F9108954150FA +:10077A003040E8F70895415030405040E0F708957E +:0E078A00C0F9A4B0999282F880909CBFC689F5 :00000001FF diff --git a/dist/default/production/attiny2313a_thermostat.X.production.lss b/dist/default/production/attiny2313a_thermostat.X.production.lss index cb40921..20479db 100644 --- a/dist/default/production/attiny2313a_thermostat.X.production.lss +++ b/dist/default/production/attiny2313a_thermostat.X.production.lss @@ -1,58 +1,58 @@ -AVRASM ver. 2.2.7 main.asm Fri Jun 30 16:51:54 2023 +AVRASM ver. 2.2.7 main.asm Fri Jun 30 21:37:26 2023 [builtin](2): Including file '/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/avrasm/inc\tn2313Adef.inc' main.asm(15): Including file 'definitions.asm' main.asm(16): Including file 'macros.asm' -main.asm(329): Including file 'div16u.asm' +main.asm(317): Including file 'div16u.asm' div16u.asm(22): warning: Register r16 already defined by the .DEF directive -main.asm(329): 'div16u.asm' included form here +main.asm(317): 'div16u.asm' included form here div16u.asm(23): warning: Register r17 already defined by the .DEF directive -main.asm(329): 'div16u.asm' included form here +main.asm(317): 'div16u.asm' included form here div16u.asm(24): warning: Register r16 already defined by the .DEF directive -main.asm(329): 'div16u.asm' included form here +main.asm(317): 'div16u.asm' included form here div16u.asm(25): warning: Register r17 already defined by the .DEF directive -main.asm(329): 'div16u.asm' included form here +main.asm(317): 'div16u.asm' included form here div16u.asm(27): warning: Register r19 already defined by the .DEF directive -main.asm(329): 'div16u.asm' included form here +main.asm(317): 'div16u.asm' included form here div16u.asm(28): warning: Register r20 already defined by the .DEF directive -main.asm(329): 'div16u.asm' included form here -main.asm(330): Including file 'div8u.asm' +main.asm(317): 'div16u.asm' included form here +main.asm(318): Including file 'div8u.asm' div8u.asm(18): warning: Register r15 already defined by the .DEF directive -main.asm(330): 'div8u.asm' included form here +main.asm(318): 'div8u.asm' included form here div8u.asm(19): warning: Register r16 already defined by the .DEF directive -main.asm(330): 'div8u.asm' included form here +main.asm(318): 'div8u.asm' included form here div8u.asm(20): warning: Register r16 already defined by the .DEF directive -main.asm(330): 'div8u.asm' included form here +main.asm(318): 'div8u.asm' included form here div8u.asm(21): warning: Register r17 already defined by the .DEF directive -main.asm(330): 'div8u.asm' included form here +main.asm(318): 'div8u.asm' included form here div8u.asm(22): warning: Register r18 already defined by the .DEF directive -main.asm(330): 'div8u.asm' included form here -main.asm(331): Including file 'mpy16u.asm' +main.asm(318): 'div8u.asm' included form here +main.asm(319): Including file 'mpy16u.asm' mpy16u.asm(19): warning: Register r16 already defined by the .DEF directive -main.asm(331): 'mpy16u.asm' included form here +main.asm(319): 'mpy16u.asm' included form here mpy16u.asm(20): warning: Register r17 already defined by the .DEF directive -main.asm(331): 'mpy16u.asm' included form here +main.asm(319): 'mpy16u.asm' included form here mpy16u.asm(21): warning: Register r18 already defined by the .DEF directive -main.asm(331): 'mpy16u.asm' included form here +main.asm(319): 'mpy16u.asm' included form here mpy16u.asm(22): warning: Register r19 already defined by the .DEF directive -main.asm(331): 'mpy16u.asm' included form here +main.asm(319): 'mpy16u.asm' included form here mpy16u.asm(23): warning: Register r18 already defined by the .DEF directive -main.asm(331): 'mpy16u.asm' included form here +main.asm(319): 'mpy16u.asm' included form here mpy16u.asm(24): warning: Register r19 already defined by the .DEF directive -main.asm(331): 'mpy16u.asm' included form here +main.asm(319): 'mpy16u.asm' included form here mpy16u.asm(25): warning: Register r20 already defined by the .DEF directive -main.asm(331): 'mpy16u.asm' included form here +main.asm(319): 'mpy16u.asm' included form here mpy16u.asm(26): warning: Register r21 already defined by the .DEF directive -main.asm(331): 'mpy16u.asm' included form here -main.asm(498): warning: Register r16 already defined by the .DEF directive -main.asm(499): warning: Register r17 already defined by the .DEF directive +main.asm(319): 'mpy16u.asm' included form here +main.asm(486): warning: Register r16 already defined by the .DEF directive +main.asm(487): warning: Register r17 already defined by the .DEF directive [builtin](2): Including file '/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/avrasm/inc\tn2313Adef.inc' main.asm(15): Including file 'definitions.asm' main.asm(16): Including file 'macros.asm' -main.asm(329): Including file 'div16u.asm' -main.asm(330): Including file 'div8u.asm' -main.asm(331): Including file 'mpy16u.asm' +main.asm(317): Including file 'div16u.asm' +main.asm(318): Including file 'div8u.asm' +main.asm(319): Including file 'mpy16u.asm' ; @@ -836,6 +836,11 @@ main.asm(331): Including file 'mpy16u.asm' .EQU MIN_HYST = 1 ; минимальный гистерезис который можно выставить - 0.1 .EQU MAX_HYST = 200 ; максимальный гистерезис который можно выставить - 20 + .EQU MIN_TEMP_H = 0xfe + .EQU MIN_TEMP_L = 0x0c ; минимум -50 градусов уставка + .EQU MAX_TEMP_H = 0x04 ; максимум 120 градусов уставка + .EQU MAX_TEMP_L = 0xb0 + ; **** СТАНДАРТНЫЕ ПАРАМЕТРЫ *********************************** .EQU DEFAULT_TEMP = 300 ; 30 градусов @@ -1005,7 +1010,7 @@ main.asm(331): Including file 'mpy16u.asm' 000037 9a92 sbi PORTD, DIGIT_1_PIN 000038 c001 rjmp PC+2 000039 9892 cbi PORTD, DIGIT_1_PIN -00003a d350 rcall DISPLAY_DECODER +00003a d358 rcall DISPLAY_DECODER 00003b d205 rcall USI_TRANSMIT _indicate_2: @@ -1023,7 +1028,7 @@ main.asm(331): Including file 'mpy16u.asm' 000048 c001 rjmp PC+2 000049 9893 cbi PORTD, DIGIT_2_PIN 00004a 9100 0064 lds TEMP_REG_A, DIGITS+1 -00004c d33e rcall DISPLAY_DECODER +00004c d346 rcall DISPLAY_DECODER 00004d d1f3 rcall USI_TRANSMIT _indicate_3: @@ -1035,7 +1040,7 @@ main.asm(331): Including file 'mpy16u.asm' 000052 9895 cbi PORTD, DIGIT_4_PIN 000053 9a94 sbi PORTD, DIGIT_3_PIN 000054 9100 0063 lds TEMP_REG_A, DIGITS -000056 d334 rcall DISPLAY_DECODER +000056 d33c rcall DISPLAY_DECODER 000057 2d00 mov r16, r0 000058 770f cbr r16, (1<<7) 000059 2e00 mov r0, r16 @@ -1050,7 +1055,7 @@ main.asm(331): Including file 'mpy16u.asm' 00005f 9894 cbi PORTD, DIGIT_3_PIN 000060 9a95 sbi PORTD, DIGIT_4_PIN 000061 9100 0066 lds TEMP_REG_A, DIGITS+3 -000063 d327 rcall DISPLAY_DECODER +000063 d32f rcall DISPLAY_DECODER 000064 d1dc rcall USI_TRANSMIT _indicate_exit: @@ -1149,18 +1154,6 @@ main.asm(331): Including file 'mpy16u.asm' 0000a9 d0d3 rcall EEP_RD_BYTE 0000aa 9240 006e sts SETTING_MODE, EEP_D_r - ; ldi r16, DEFAULT_SETTING_TEMP_L - ; sts SETTING_TEMP_L, r16 ; уставка LOW - ; - ; ldi r16, DEFAULT_SETTING_TEMP_H - ; sts SETTING_TEMP_H, r16 ; уставка HIGH - ; - ; ldi r16, DEFAULT_SETTING_HYST - ; sts SETTING_HYST, r16 ; гистерезис - ; - ; ldi r16, DEFAULT_SETTING_MODE - ; sts SETTING_MODE, r16 ; режим работы - _CONTINUE_INIT: 0000ac 2700 clr r16 0000ad 9300 0068 sts TEMP_L, r16 @@ -1185,10 +1178,10 @@ main.asm(331): Including file 'mpy16u.asm' ERR_FAMILY_CODE: 0000be e012 ldi r17, MCU_STATE_ERROR 0000bf 9310 0060 sts MCU_STATE, r17 -0000c1 d2db rcall BEEP_LONG +0000c1 d2e3 rcall BEEP_LONG 0000c2 c001 rjmp PC+2 START_PROGRAM: -0000c3 d2d2 rcall BEEP_SHORT +0000c3 d2da rcall BEEP_SHORT 0000c4 e080 0000c5 e090 display_load 0 // @@ -1206,7 +1199,7 @@ main.asm(331): Including file 'mpy16u.asm' 0000cc 9320 0066 sts DIGITS+3, r18 0000ce d103 rcall TEMP_UPD ; обновление данных о температуре -0000cf d2a1 rcall DISPLAY_UPD_DIGITS +0000cf d2a9 rcall DISPLAY_UPD_DIGITS 0000d0 d0b4 rcall TEMP_COMPARSION ; логика термостата 0000d1 e011 0000d2 bf19 outi r17, TIMSK, (1< @@ -1666,25 +1659,25 @@ main.asm(331): Including file 'mpy16u.asm' 0001ee 933f push r19 0001ef 934f push r20 -0001f0 d132 rcall OW_PRESENCE +0001f0 d13a rcall OW_PRESENCE 0001f1 ff70 sbrs OWFR, OWPRF 0001f2 c03c rjmp _TEMP_RD_EXIT 0001f3 ec0c ldi r16, DS18B20_CMD_SKIPROM 0001f4 2e80 mov OW_CMD_r, r16 -0001f5 d142 rcall OW_SEND_BYTE +0001f5 d14a rcall OW_SEND_BYTE 0001f6 eb0e ldi r16, DS18B20_CMD_RSCRATCHPAD 0001f7 2e80 mov OW_CMD_r, r16 -0001f8 d13f rcall OW_SEND_BYTE +0001f8 d147 rcall OW_SEND_BYTE 0001f9 e6a8 ldi XL, LOW(TEMP_L) 0001fa e0b0 ldi XH, HIGH(TEMP_L) -0001fb d15b rcall OW_RD_BYTE +0001fb d163 rcall OW_RD_BYTE 0001fc e6a9 ldi XL, LOW(TEMP_H) 0001fd e0b0 ldi XH, HIGH(TEMP_H) -0001fe d158 rcall OW_RD_BYTE +0001fe d160 rcall OW_RD_BYTE 0001ff 9110 0068 lds r17, TEMP_L 000201 9120 0069 lds r18, TEMP_H @@ -1758,17 +1751,17 @@ main.asm(331): Including file 'mpy16u.asm' TEMP_CONV: 000235 930f push r16 -000236 d0ec rcall OW_PRESENCE +000236 d0f4 rcall OW_PRESENCE 000237 ff70 sbrs OWFR, OWPRF 000238 c006 rjmp _TEMP_CONV_EXIT 000239 ec0c ldi r16, DS18B20_CMD_SKIPROM 00023a 2e80 mov OW_CMD_r, r16 -00023b d0fc rcall OW_SEND_BYTE +00023b d104 rcall OW_SEND_BYTE 00023c e404 ldi r16, DS18B20_CMD_CONVERTTEMP 00023d 2e80 mov OW_CMD_r, r16 -00023e d0f9 rcall OW_SEND_BYTE +00023e d101 rcall OW_SEND_BYTE _TEMP_CONV_EXIT: 00023f 910f pop r16 @@ -1824,12 +1817,12 @@ main.asm(331): Including file 'mpy16u.asm' _SW_SET_FROM_0_TO_1: 000258 2700 clr r16 000259 9300 0071 sts SW_DATA, r16 -00025b d148 rcall DEBOUNCE_SW +00025b d150 rcall DEBOUNCE_SW 00025c 9463 inc REPROGRAM_STEP_r 00025d 2d16 mov r17, REPROGRAM_STEP_r 00025e 3014 cpi r17, 4 00025f f414 brge _SAVE_SETTINGS -000260 d135 rcall BEEP_SHORT +000260 d13d rcall BEEP_SHORT 000261 c00d rjmp _SW_CHECK_ON_1 _SAVE_SETTINGS: 000262 e010 @@ -1840,7 +1833,7 @@ main.asm(331): Including file 'mpy16u.asm' 000267 9895 cbi PORTD, DIGIT_4_PIN 000268 2466 clr REPROGRAM_STEP_r 000269 deeb rcall WRITE_PARAMS_TO_EEP -00026a d132 rcall BEEP_LONG +00026a d13a rcall BEEP_LONG 00026b 9896 cbi PORTD, LED_PGM_PIN 00026c e010 ldi r17, MCU_STATE_DEFAULT 00026d 9310 0060 sts MCU_STATE, r17 @@ -1856,7 +1849,7 @@ main.asm(331): Including file 'mpy16u.asm' _SW_SET_FROM_1_TO_0: 000277 ef0f ser r16 000278 9300 0071 sts SW_DATA, r16 -00027a d129 rcall DEBOUNCE_SW +00027a d131 rcall DEBOUNCE_SW _BUTTON_PROCESS_END: 00027b 910f pop r16 00027c 9508 ret @@ -1877,7 +1870,7 @@ main.asm(331): Including file 'mpy16u.asm' _INTO: 000286 9890 relay_off 000287 9a96 sbi PORTD, LED_PGM_PIN -000288 d10d rcall BEEP_SHORT +000288 d115 rcall BEEP_SHORT 000289 9463 inc REPROGRAM_STEP_r _REPROGRAM_SETTINGS_LOOP: 00028a dfc4 rcall BUTTON_PROCESS @@ -1888,11 +1881,11 @@ main.asm(331): Including file 'mpy16u.asm' 00028e f149 breq _STEP_2 00028f 3003 cpi r16, 3 000290 f131 breq _S3_JMP -000291 c08b rjmp _REPROGRAM_SETTINGS_END +000291 c093 rjmp _REPROGRAM_SETTINGS_END // _STEP_1: ; установка и отображение гистерезиса -000292 d0de rcall DISPLAY_UPD_DIGITS +000292 d0e6 rcall DISPLAY_UPD_DIGITS _S1_CHECK_PLUS: 000293 9bb2 sbis SW_PIN, SW_PLUS_PIN 000294 c004 rjmp _INCREASE_HYST @@ -1902,7 +1895,7 @@ main.asm(331): Including file 'mpy16u.asm' 000297 c00a rjmp _DECREASE_HYST 000298 c011 rjmp _SHOW_HYST _INCREASE_HYST: -000299 d10a rcall DEBOUNCE_SW +000299 d112 rcall DEBOUNCE_SW 00029a 9110 006d lds r17, SETTING_HYST 00029c 3c18 cpi r17, MAX_HYST 00029d f009 breq PC+2 @@ -1910,7 +1903,7 @@ main.asm(331): Including file 'mpy16u.asm' 00029f 9310 006d sts SETTING_HYST, r17 0002a1 c008 rjmp _SHOW_HYST _DECREASE_HYST: -0002a2 d101 rcall DEBOUNCE_SW +0002a2 d109 rcall DEBOUNCE_SW 0002a3 9110 006d lds r17, SETTING_HYST 0002a5 3011 cpi r17, MIN_HYST 0002a6 f009 breq PC+2 @@ -1927,149 +1920,158 @@ main.asm(331): Including file 'mpy16u.asm' 0002b2 92f0 0066 sts DIGITS+3, drem8u 0002b4 911f pop dv8u 0002b5 910f pop dd8u -0002b6 c066 rjmp _REPROGRAM_SETTINGS_END +0002b6 c06e rjmp _REPROGRAM_SETTINGS_END // _S3_JMP: ; просто прыжок на _STEP_3 -0002b7 c03f rjmp _STEP_3 +0002b7 c047 rjmp _STEP_3 // _STEP_2: -0002b8 d0b8 rcall DISPLAY_UPD_DIGITS +0002b8 d0c0 rcall DISPLAY_UPD_DIGITS _S2_CHECK_PLUS: 0002b9 9bb2 sbis SW_PIN, SW_PLUS_PIN 0002ba c004 rjmp _INCREASE_TEMP 0002bb c000 rjmp _S2_CHECK_MINUS _S2_CHECK_MINUS: 0002bc 9bb3 sbis SW_PIN, SW_MINUS_PIN -0002bd c00f rjmp _DECREASE_TEMP -0002be c019 rjmp _SHOW_TEMP +0002bd c013 rjmp _DECREASE_TEMP +0002be c021 rjmp _SHOW_TEMP _INCREASE_TEMP: -0002bf d0e4 rcall DEBOUNCE_SW +0002bf d0ec rcall DEBOUNCE_SW 0002c0 9110 006c lds r17, SETTING_TEMP_L 0002c2 9120 006b lds r18, SETTING_TEMP_H -0002c4 e03a ldi r19, 10 -0002c5 0f13 add r17, r19 -0002c6 2733 clr r19 -0002c7 1f23 adc r18, r19 -0002c8 9310 006c sts SETTING_TEMP_L, r17 -0002ca 9320 006b sts SETTING_TEMP_H, r18 -0002cc c00b rjmp _SHOW_TEMP +0002c4 3b10 cpi r17, MAX_TEMP_L +0002c5 e034 ldi r19, MAX_TEMP_H +0002c6 0723 cpc r18, r19 +0002c7 f031 breq PC+7 +0002c8 e03a ldi r19, 10 +0002c9 0f13 add r17, r19 +0002ca 2733 clr r19 +0002cb 1f23 adc r18, r19 +0002cc 9310 006c sts SETTING_TEMP_L, r17 +0002ce 9320 006b sts SETTING_TEMP_H, r18 +0002d0 c00f rjmp _SHOW_TEMP _DECREASE_TEMP: -0002cd d0d6 rcall DEBOUNCE_SW -0002ce 9110 006c lds r17, SETTING_TEMP_L -0002d0 9120 006b lds r18, SETTING_TEMP_H -0002d2 501a subi r17, 10 -0002d3 4020 sbci r18, 0 -0002d4 9310 006c sts SETTING_TEMP_L, r17 -0002d6 9320 006b sts SETTING_TEMP_H, r18 +0002d1 d0da rcall DEBOUNCE_SW +0002d2 9110 006c lds r17, SETTING_TEMP_L +0002d4 9120 006b lds r18, SETTING_TEMP_H +0002d6 301c cpi r17, MIN_TEMP_L +0002d7 ef3e ldi r19, MIN_TEMP_H +0002d8 0723 cpc r18, r19 +0002d9 f011 breq PC+3 + __DECREASE: +0002da 501a subi r17, 10 +0002db 4020 sbci r18, 0 +0002dc 9310 006c sts SETTING_TEMP_L, r17 +0002de 9320 006b sts SETTING_TEMP_H, r18 _SHOW_TEMP: -0002d8 930f push dd16uL -0002d9 931f push dd16uH -0002da 932f push dv16uL -0002db 933f push dv16uH +0002e0 930f push dd16uL +0002e1 931f push dd16uH +0002e2 932f push dv16uL +0002e3 933f push dv16uH -0002dc 9100 006c lds dd16uL, SETTING_TEMP_L -0002de 9110 006b lds dd16uH, SETTING_TEMP_H -0002e0 2f21 mov r18, dd16uH -0002e1 7820 andi r18, (1<<7) -0002e2 f411 brne _NEGATE_SET_TEMP -0002e3 94e8 clt -0002e4 c005 rjmp _DIVIDE_SET_TEMP +0002e4 9100 006c lds dd16uL, SETTING_TEMP_L +0002e6 9110 006b lds dd16uH, SETTING_TEMP_H +0002e8 2f21 mov r18, dd16uH +0002e9 7820 andi r18, (1<<7) +0002ea f411 brne _NEGATE_SET_TEMP +0002eb 94e8 clt +0002ec c005 rjmp _DIVIDE_SET_TEMP _NEGATE_SET_TEMP: -0002e5 9468 set -0002e6 9500 -0002e7 9510 -0002e8 5f0f -0002e9 4f1f com16 dd16uL, dd16uH +0002ed 9468 set +0002ee 9500 +0002ef 9510 +0002f0 5f0f +0002f1 4f1f com16 dd16uL, dd16uH _DIVIDE_SET_TEMP: -0002ea e02a ldi dv16uL, LOW(10) -0002eb e030 ldi dv16uH, HIGH(10) -0002ec ddf8 rcall div16u -0002ed 2f80 mov DISP_NUM_L, dres16uL -0002ee 2f91 mov DISP_NUM_H, dres16uH +0002f2 e02a ldi dv16uL, LOW(10) +0002f3 e030 ldi dv16uH, HIGH(10) +0002f4 ddf0 rcall div16u +0002f5 2f80 mov DISP_NUM_L, dres16uL +0002f6 2f91 mov DISP_NUM_H, dres16uH -0002ef e00a ldi r16, 10 -0002f0 9300 0066 sts DIGITS+3, r16 ; значок градуса +0002f7 e00a ldi r16, 10 +0002f8 9300 0066 sts DIGITS+3, r16 ; значок градуса -0002f2 913f pop dv16uH -0002f3 912f pop dv16uL -0002f4 911f pop dd16uH -0002f5 910f pop dd16uL -0002f6 c026 rjmp _REPROGRAM_SETTINGS_END +0002fa 913f pop dv16uH +0002fb 912f pop dv16uL +0002fc 911f pop dd16uH +0002fd 910f pop dd16uL +0002fe c026 rjmp _REPROGRAM_SETTINGS_END // // _STEP_3: -0002f7 94e8 clt +0002ff 94e8 clt _S3_CHECK_PLUS: -0002f8 9bb2 sbis SW_PIN, SW_PLUS_PIN -0002f9 c004 rjmp _SET_HEAT_MODE -0002fa c000 rjmp _S3_CHECK_MINUS +000300 9bb2 sbis SW_PIN, SW_PLUS_PIN +000301 c004 rjmp _SET_HEAT_MODE +000302 c000 rjmp _S3_CHECK_MINUS _S3_CHECK_MINUS: -0002fb 9bb3 sbis SW_PIN, SW_MINUS_PIN -0002fc c006 rjmp _SET_COOLING_MODE -0002fd c009 rjmp _SHOW_MODE +000303 9bb3 sbis SW_PIN, SW_MINUS_PIN +000304 c006 rjmp _SET_COOLING_MODE +000305 c009 rjmp _SHOW_MODE _SET_HEAT_MODE: -0002fe d0a5 rcall DEBOUNCE_SW -0002ff e011 ldi r17, HEAT_MODE -000300 9310 006e sts SETTING_MODE, r17 -000302 c004 rjmp _SHOW_MODE +000306 d0a5 rcall DEBOUNCE_SW +000307 e011 ldi r17, HEAT_MODE +000308 9310 006e sts SETTING_MODE, r17 +00030a c004 rjmp _SHOW_MODE _SET_COOLING_MODE: -000303 d0a0 rcall DEBOUNCE_SW -000304 e010 ldi r17, COOLING_MODE -000305 9310 006e sts SETTING_MODE, r17 +00030b d0a0 rcall DEBOUNCE_SW +00030c e010 ldi r17, COOLING_MODE +00030d 9310 006e sts SETTING_MODE, r17 _SHOW_MODE: -000307 2711 clr r17 -000308 2f81 mov DISP_NUM_L, r17 -000309 2f91 mov DISP_NUM_H, r17 -00030a 2711 clr r17 -00030b 9310 0063 sts DIGITS, r17 -00030d 9310 0064 sts DIGITS+1, r17 -00030f 9310 0065 sts DIGITS+2, r17 -000311 9120 006e lds r18, SETTING_MODE -000313 2322 tst r18 -000314 f009 breq _SHOW_COOLING -000315 c004 rjmp _SHOW_HEATING +00030f 2711 clr r17 +000310 2f81 mov DISP_NUM_L, r17 +000311 2f91 mov DISP_NUM_H, r17 +000312 e01e ldi r17, 14 +000313 9310 0063 sts DIGITS, r17 +000315 9310 0064 sts DIGITS+1, r17 +000317 9310 0065 sts DIGITS+2, r17 +000319 9120 006e lds r18, SETTING_MODE +00031b 2322 tst r18 +00031c f009 breq _SHOW_COOLING +00031d c004 rjmp _SHOW_HEATING _SHOW_COOLING: -000316 e01c ldi r17, 12 -000317 9310 0066 sts DIGITS+3, r17 -000319 c003 rjmp _REPROGRAM_SETTINGS_END +00031e e01c ldi r17, 12 +00031f 9310 0066 sts DIGITS+3, r17 +000321 c003 rjmp _REPROGRAM_SETTINGS_END _SHOW_HEATING: -00031a e01d ldi r17, 13 -00031b 9310 0066 sts DIGITS+3, r17 +000322 e01d ldi r17, 13 +000323 9310 0066 sts DIGITS+3, r17 // _REPROGRAM_SETTINGS_END: -00031d 914f pop r20 -00031e 913f pop r19 -00031f 912f pop r18 -000320 911f pop r17 -000321 910f pop r16 -000322 9508 ret +000325 914f pop r20 +000326 913f pop r19 +000327 912f pop r18 +000328 911f pop r17 +000329 910f pop r16 +00032a 9508 ret // // // ; **** ОПРОС ПРИСУТСТВИЯ УСТРОЙСТВА ****************************** OW_PRESENCE: -000323 94f8 cli -000324 9ab9 ow_pull -000325 e033 -000326 eb4e -000327 d08c DELAY16 480 -000328 98b9 ow_release -000329 e030 -00032a e84a -00032b d088 DELAY16 70 -00032c d005 rcall OW_CHECK_PRESENCE +00032b 94f8 cli +00032c 9ab9 ow_pull 00032d e033 -00032e e342 -00032f d084 DELAY16 410 -000330 9478 sei -000331 9508 ret +00032e eb4e +00032f d08c DELAY16 480 +000330 98b9 ow_release +000331 e030 +000332 e84a +000333 d088 DELAY16 70 +000334 d005 rcall OW_CHECK_PRESENCE +000335 e033 +000336 e342 +000337 d084 DELAY16 410 +000338 9478 sei +000339 9508 ret // // @@ -2077,83 +2079,83 @@ main.asm(331): Including file 'mpy16u.asm' ; Если подчиненное устройство притянет шину, то устанавливаем флаг OWPRF в единицу в регистре флагов ; OW_CHECK_PRESENCE: -000332 9bb1 sbis OW_PIN, OW_LINE -000333 6071 sbr OWFR, (1< // OW_SEND_BYTE: -000338 94f8 cli -000339 930f push r16 -00033a 931f push r17 -00033b 2d08 mov r16, OW_CMD_r -00033c e018 ldi r17, 8 +000340 94f8 cli +000341 930f push r16 +000342 931f push r17 +000343 2d08 mov r16, OW_CMD_r +000344 e018 ldi r17, 8 _OW_SEND_BYTE_LOOP: -00033d 9506 lsr r16 -00033e f408 brcc _OW_SEND_0 -00033f f048 brcs _OW_SEND_1 +000345 9506 lsr r16 +000346 f408 brcc _OW_SEND_0 +000347 f048 brcs _OW_SEND_1 _OW_SEND_0: -000340 9ab9 ow_pull -000341 e030 -000342 e746 -000343 d070 DELAY16 60 -000344 98b9 ow_release -000345 e030 -000346 e142 -000347 d06c DELAY16 10 -000348 c008 rjmp _OW_SEND_BYTE_END +000348 9ab9 ow_pull +000349 e030 +00034a e746 +00034b d070 DELAY16 60 +00034c 98b9 ow_release +00034d e030 +00034e e142 +00034f d06c DELAY16 10 +000350 c008 rjmp _OW_SEND_BYTE_END _OW_SEND_1: -000349 9ab9 ow_pull -00034a e030 -00034b e04a -00034c d067 DELAY16 6 -00034d 98b9 ow_release -00034e e030 -00034f e74e -000350 d063 DELAY16 64 +000351 9ab9 ow_pull +000352 e030 +000353 e04a +000354 d067 DELAY16 6 +000355 98b9 ow_release +000356 e030 +000357 e74e +000358 d063 DELAY16 64 _OW_SEND_BYTE_END: -000351 951a dec r17 -000352 f751 brne _OW_SEND_BYTE_LOOP -000353 911f pop r17 -000354 910f pop r16 -000355 9478 sei -000356 9508 ret +000359 951a dec r17 +00035a f751 brne _OW_SEND_BYTE_LOOP +00035b 911f pop r17 +00035c 910f pop r16 +00035d 9478 sei +00035e 9508 ret // // OW_RD_BYTE: -000357 94f8 cli -000358 930f push r16 -000359 931f push r17 -00035a 2700 clr r16 -00035b e018 ldi r17, 8 +00035f 94f8 cli +000360 930f push r16 +000361 931f push r17 +000362 2700 clr r16 +000363 e018 ldi r17, 8 _OW_RD_BYTE_LP: -00035c 9506 lsr r16 -00035d 9ab9 ow_pull -00035e e030 -00035f e04a -000360 d053 DELAY16 6 -000361 98b9 ow_release -000362 e030 -000363 e140 -000364 d04f DELAY16 9 -000365 99b1 sbic OW_PIN, OW_LINE -000366 6800 sbr r16, (1<<7) -000367 e030 -000368 e64c -000369 d04a DELAY16 55 -00036a 951a dec r17 -00036b f781 brne _OW_RD_BYTE_LP -00036c 930c st X, r16 -00036d 911f pop r17 -00036e 910f pop r16 -00036f 9478 sei -000370 9508 ret +000364 9506 lsr r16 +000365 9ab9 ow_pull +000366 e030 +000367 e04a +000368 d053 DELAY16 6 +000369 98b9 ow_release +00036a e030 +00036b e140 +00036c d04f DELAY16 9 +00036d 99b1 sbic OW_PIN, OW_LINE +00036e 6800 sbr r16, (1<<7) +00036f e030 +000370 e64c +000371 d04a DELAY16 55 +000372 951a dec r17 +000373 f781 brne _OW_RD_BYTE_LP +000374 930c st X, r16 +000375 911f pop r17 +000376 910f pop r16 +000377 9478 sei +000378 9508 ret // // @@ -2162,138 +2164,138 @@ main.asm(331): Including file 'mpy16u.asm' ; Описание: Перемещает цифры числа в соответствующие ячейки памяти в SRAM ; путем деления этого числа несколько раз DISPLAY_UPD_DIGITS: -000371 930f push r16 -000372 935f push r21 -000373 e053 ldi r21, 3 +000379 930f push r16 +00037a 935f push r21 +00037b e053 ldi r21, 3 ; инициализация указателя (за каждый проход цикла будет инкрементироваться) -000374 e6a3 ldi XL, LOW(DIGITS) -000375 e0b0 ldi XH, HIGH(DIGITS) +00037c e6a3 ldi XL, LOW(DIGITS) +00037d e0b0 ldi XH, HIGH(DIGITS) .equ dividend = SRAM_TEMP_1 ; число которе будем делить .equ divisor = 10 ; на что делим ; загружаем число которое хотим поделить в адрес SRAM делимого -000376 9380 0061 sts dividend, DISP_NUM_L -000378 9390 0062 sts dividend+1, DISP_NUM_H +00037e 9380 0061 sts dividend, DISP_NUM_L +000380 9390 0062 sts dividend+1, DISP_NUM_H ; четыре раза производим деление для получения остатков DIV_LOOP: ; заполняем нужные регистры -00037a 9100 0061 lds dd16uL, dividend -00037c 9110 0062 lds dd16uH, dividend+1 -00037e e02a ldi dv16uL, LOW(divisor) -00037f e030 ldi dv16uH, HIGH(divisor) +000382 9100 0061 lds dd16uL, dividend +000384 9110 0062 lds dd16uH, dividend+1 +000386 e02a ldi dv16uL, LOW(divisor) +000387 e030 ldi dv16uH, HIGH(divisor) -000380 dd64 rcall div16u ; делим +000388 dd5c rcall div16u ; делим -000381 92ed st X+, drem16uL ; сохраняем остаток в ячейку по указателю и увеличиваем его +000389 92ed st X+, drem16uL ; сохраняем остаток в ячейку по указателю и увеличиваем его ; обновляем делимое -000382 9300 0061 sts dividend, dres16uL -000384 9310 0062 sts dividend+1, dres16uH +00038a 9300 0061 sts dividend, dres16uL +00038c 9310 0062 sts dividend+1, dres16uH -000386 955a dec r21 ; декрементируем счетчик цикла -000387 f791 brne DIV_LOOP ; делим еще раз если не 0 -000388 915f pop r21 -000389 910f pop r16 -00038a 9508 ret +00038e 955a dec r21 ; декрементируем счетчик цикла +00038f f791 brne DIV_LOOP ; делим еще раз если не 0 +000390 915f pop r21 +000391 910f pop r16 +000392 9508 ret // // ; **** ЗАГРУЖАЕТ НУЖНЫЙ АДРЕС СИМВОЛА В R0 *********************** DISPLAY_DECODER: -00038b 930f push r16 -00038c 931f push r17 +000393 930f push r16 +000394 931f push r17 -00038d e7ea ldi ZL, LOW(2*DISPLAY_SYMBOLS) -00038e e0f7 ldi ZH, HIGH(2*DISPLAY_SYMBOLS) +000395 e8ea ldi ZL, LOW(2*DISPLAY_SYMBOLS) +000396 e0f7 ldi ZH, HIGH(2*DISPLAY_SYMBOLS) -00038f 2711 clr TEMP_REG_B -000390 0fe0 add ZL, TEMP_REG_A -000391 1ff1 adc ZH, TEMP_REG_B +000397 2711 clr TEMP_REG_B +000398 0fe0 add ZL, TEMP_REG_A +000399 1ff1 adc ZH, TEMP_REG_B -000392 9004 lpm r0, Z -000393 911f pop r17 -000394 910f pop r16 -000395 9508 ret +00039a 9004 lpm r0, Z +00039b 911f pop r17 +00039c 910f pop r16 +00039d 9508 ret // // BEEP_SHORT: -000396 9ac5 sbi BUZZER_PORT, BUZZER_PIN -000397 e053 -000398 ea39 -000399 e74d -00039a d01d DELAY24 150000 -00039b 98c5 cbi BUZZER_PORT, BUZZER_PIN -00039c 9508 ret +00039e 9ac5 sbi BUZZER_PORT, BUZZER_PIN +00039f e053 +0003a0 ea39 +0003a1 e74d +0003a2 d01d DELAY24 150000 +0003a3 98c5 cbi BUZZER_PORT, BUZZER_PIN +0003a4 9508 ret // // BEEP_LONG: -00039d 9ac5 sbi BUZZER_PORT, BUZZER_PIN -00039e e05c -00039f e334 -0003a0 ef4d -0003a1 d016 DELAY24 500000 -0003a2 98c5 cbi BUZZER_PORT, BUZZER_PIN -0003a3 9508 ret +0003a5 9ac5 sbi BUZZER_PORT, BUZZER_PIN +0003a6 e05c +0003a7 e334 +0003a8 ef4d +0003a9 d016 DELAY24 500000 +0003aa 98c5 cbi BUZZER_PORT, BUZZER_PIN +0003ab 9508 ret // // DEBOUNCE_SW: -0003a4 930f push r16 -0003a5 931f push r17 -0003a6 932f push r18 +0003ac 930f push r16 +0003ad 931f push r17 +0003ae 932f push r18 -0003a7 e02a ldi r18, 10 +0003af e02a ldi r18, 10 _loop_2: -0003a8 ef1f ldi r17, 255 +0003b0 ef1f ldi r17, 255 _loop_0: -0003a9 ef0f ldi r16, 255 +0003b1 ef0f ldi r16, 255 _dec_0: -0003aa 950a dec r16 -0003ab f7f1 brne _dec_0 +0003b2 950a dec r16 +0003b3 f7f1 brne _dec_0 _loop_1: -0003ac 951a dec r17 -0003ad f7d9 brne _loop_0 +0003b4 951a dec r17 +0003b5 f7d9 brne _loop_0 _loop_3: -0003ae 952a dec r18 -0003af f7c1 brne _loop_2 +0003b6 952a dec r18 +0003b7 f7c1 brne _loop_2 -0003b0 912f pop r18 -0003b1 911f pop r17 -0003b2 910f pop r16 -0003b3 9508 ret// +0003b8 912f pop r18 +0003b9 911f pop r17 +0003ba 910f pop r16 +0003bb 9508 ret// // DELAY_LOOP_16: -0003b4 5041 subi DELAY_8_r, 1 -0003b5 4030 sbci DELAY_16_r, 0 -0003b6 f7e8 brcc DELAY_LOOP_16 -0003b7 9508 ret +0003bc 5041 subi DELAY_8_r, 1 +0003bd 4030 sbci DELAY_16_r, 0 +0003be f7e8 brcc DELAY_LOOP_16 +0003bf 9508 ret // // DELAY_LOOP_24: -0003b8 5041 subi DELAY_8_r, 1 -0003b9 4030 sbci DELAY_16_r, 0 -0003ba 4050 sbci DELAY_24_r, 0 -0003bb f7e0 brcc DELAY_LOOP_24 -0003bc 9508 ret +0003c0 5041 subi DELAY_8_r, 1 +0003c1 4030 sbci DELAY_16_r, 0 +0003c2 4050 sbci DELAY_24_r, 0 +0003c3 f7e0 brcc DELAY_LOOP_24 +0003c4 9508 ret // // DISPLAY_SYMBOLS: ; HGFEDCBA HGFEDCBA -0003bd f9c0 .DB 0b11000000, 0b11111001 ; 0, 1 -0003be b0a4 .DB 0b10100100, 0b10110000 ; 2, 3 -0003bf 9299 .DB 0b10011001, 0b10010010 ; 4, 5 -0003c0 f882 .DB 0b10000010, 0b11111000 ; 6, 7 -0003c1 9080 .DB 0b10000000, 0b10010000 ; 8, 9 -0003c2 bf9c .DB 0b10011100, 0b10111111 ; °, - -0003c3 89c6 .DB 0b11000110, 0b10001001 ; C, H +0003c5 f9c0 .DB 0b11000000, 0b11111001 ; 0, 1 +0003c6 b0a4 .DB 0b10100100, 0b10110000 ; 2, 3 +0003c7 9299 .DB 0b10011001, 0b10010010 ; 4, 5 +0003c8 f882 .DB 0b10000010, 0b11111000 ; 6, 7 +0003c9 9080 .DB 0b10000000, 0b10010000 ; 8, 9 +0003ca bf9c .DB 0b10011100, 0b10111111 ; °, - +0003cb 89c6 .DB 0b11000110, 0b10001001 ; C, H // // @@ -2363,7 +2365,7 @@ counted separately from r26..r31 here. "ATtiny2313A" register use summary: x : 2 y : 0 z : 1 r0 : 6 r1 : 2 r2 : 0 r3 : 16 r4 : 16 r5 : 6 r6 : 6 r7 : 0 r8 : 6 r9 : 0 r10: 2 r11: 2 r12: 2 -r13: 2 r14: 5 r15: 11 r16: 213 r17: 117 r18: 51 r19: 55 r20: 53 +r13: 2 r14: 5 r15: 11 r16: 213 r17: 119 r18: 53 r19: 59 r20: 53 r21: 24 r22: 5 r23: 10 r24: 6 r25: 6 r26: 4 r27: 4 r28: 0 r29: 0 r30: 2 r31: 2 Registers used: 29 out of 35 (82.9%) @@ -2371,14 +2373,14 @@ Registers used: 29 out of 35 (82.9%) "ATtiny2313A" instruction use summary: .lds : 0 .sts : 0 adc : 6 add : 8 adiw : 0 and : 0 andi : 4 asr : 0 bclr : 0 bld : 0 brbc : 0 brbs : 0 -brcc : 6 brcs : 1 break : 0 breq : 12 brge : 4 brhc : 0 +brcc : 6 brcs : 1 break : 0 breq : 14 brge : 4 brhc : 0 brhs : 0 brid : 0 brie : 0 brlo : 0 brlt : 0 brmi : 0 brne : 23 brpl : 0 brsh : 0 brtc : 1 brts : 2 brvc : 0 brvs : 0 bset : 0 bst : 0 cbi : 29 cbr : 3 clc : 2 -clh : 0 cli : 5 cln : 0 clr : 19 cls : 0 clt : 3 -clv : 0 clz : 0 com : 6 cp : 2 cpc : 2 cpi : 17 +clh : 0 cli : 5 cln : 0 clr : 18 cls : 0 clt : 3 +clv : 0 clz : 0 com : 6 cp : 2 cpc : 4 cpi : 19 cpse : 0 dec : 11 eor : 0 icall : 0 ijmp : 0 in : 5 -inc : 4 ld : 0 ldd : 0 ldi : 115 lds : 43 lpm : 2 +inc : 4 ld : 0 ldd : 0 ldi : 118 lds : 43 lpm : 2 lsl : 4 lsr : 11 mov : 55 movw : 0 neg : 1 nop : 0 or : 1 ori : 0 out : 26 pop : 56 push : 55 rcall : 82 ret : 28 reti : 3 rjmp : 61 rol : 6 ror : 9 sbc : 2 @@ -2392,7 +2394,7 @@ Instructions used: 56 out of 105 (53.3%) "ATtiny2313A" memory use summary [bytes]: Segment Begin End Code Data Used Size Use% --------------------------------------------------------------- -[.cseg] 0x000000 0x000788 1894 14 1908 2048 93.2% +[.cseg] 0x000000 0x000798 1910 14 1924 2048 93.9% [.dseg] 0x000060 0x000072 0 18 18 128 14.1% [.eseg] 0x000030 0x000058 0 40 40 128 31.3% diff --git a/dist/default/production/attiny2313a_thermostat.X.production.map b/dist/default/production/attiny2313a_thermostat.X.production.map index 3323986..6f9a56f 100644 --- a/dist/default/production/attiny2313a_thermostat.X.production.map +++ b/dist/default/production/attiny2313a_thermostat.X.production.map @@ -1,5 +1,5 @@ -AVRASM ver. 2.2.7 main.asm Fri Jun 30 16:51:54 2023 +AVRASM ver. 2.2.7 main.asm Fri Jun 30 21:37:26 2023 EQU SIGNATURE_000 0000001e @@ -531,6 +531,10 @@ EQU MCU_STATE_PROGRAM 00000001 EQU MCU_STATE_ERROR 00000002 EQU MIN_HYST 00000001 EQU MAX_HYST 000000c8 +EQU MIN_TEMP_H 000000fe +EQU MIN_TEMP_L 0000000c +EQU MAX_TEMP_H 00000004 +EQU MAX_TEMP_L 000000b0 EQU DEFAULT_TEMP 0000012c EQU DEFAULT_HYST 00000005 EQU HEAT_MODE 00000001 @@ -567,7 +571,7 @@ CSEG _INTO_PROGRAM_STATE 00000014 CSEG _CLR_CURRENT_DIGIT 00000027 CSEG _indicate_1 0000002a CSEG _indicate_2 0000003c -CSEG DISPLAY_DECODER 0000038b +CSEG DISPLAY_DECODER 00000393 CSEG USI_TRANSMIT 00000241 CSEG _indicate_3 0000004e CSEG _indicate_4 0000005b @@ -581,13 +585,13 @@ CSEG _CONTINUE_INIT 000000ac CSEG RD_F_CODE 000001e1 CSEG ERR_FAMILY_CODE 000000be CSEG START_PROGRAM 000000c3 -CSEG BEEP_LONG 0000039d -CSEG BEEP_SHORT 00000396 +CSEG BEEP_LONG 000003a5 +CSEG BEEP_SHORT 0000039e CSEG LOOP 000000c6 CSEG _STATE_DEFAULT 000000c8 CSEG _STATE_PROGRAM 000000d4 CSEG TEMP_UPD 000001d2 -CSEG DISPLAY_UPD_DIGITS 00000371 +CSEG DISPLAY_UPD_DIGITS 00000379 CSEG TEMP_COMPARSION 00000185 CSEG TEMP_SEND_UART 00000115 CSEG _STATE_ERROR 000000d7 @@ -644,11 +648,11 @@ CSEG _MIN_THRESHOLD 000001bb CSEG _MAX_THRESHOLD 000001c3 CSEG _COMPARSION_EXIT 000001ca CSEG TEMP_CONV 00000235 -CSEG DELAY_LOOP_24 000003b8 +CSEG DELAY_LOOP_24 000003c0 CSEG TEMP_RD 000001eb -CSEG OW_PRESENCE 00000323 -CSEG OW_SEND_BYTE 00000338 -CSEG OW_RD_BYTE 00000357 +CSEG OW_PRESENCE 0000032b +CSEG OW_SEND_BYTE 00000340 +CSEG OW_RD_BYTE 0000035f CSEG _TEMP_RD_EXIT 0000022f CSEG _TEMP_RD_TO_UNSIGNED 00000209 CSEG _TEMP_RD_CONTINUE 00000210 @@ -660,7 +664,7 @@ CSEG _SW_CHECK_ON_0 00000250 CSEG _SW_SET_0 00000253 CSEG _SW_CHECK_ON_1 0000026f CSEG _SW_SET_FROM_0_TO_1 00000258 -CSEG DEBOUNCE_SW 000003a4 +CSEG DEBOUNCE_SW 000003ac CSEG _SAVE_SETTINGS 00000262 CSEG _SW_SET_1 00000272 CSEG _BUTTON_PROCESS_END 0000027b @@ -671,42 +675,43 @@ CSEG _CHECK_STEP 0000028b CSEG _STEP_1 00000292 CSEG _STEP_2 000002b8 CSEG _S3_JMP 000002b7 -CSEG _REPROGRAM_SETTINGS_END 0000031d +CSEG _REPROGRAM_SETTINGS_END 00000325 CSEG _S1_CHECK_PLUS 00000293 CSEG _INCREASE_HYST 00000299 CSEG _S1_CHECK_MINUS 00000296 CSEG _DECREASE_HYST 000002a2 CSEG _SHOW_HYST 000002aa -CSEG _STEP_3 000002f7 +CSEG _STEP_3 000002ff CSEG _S2_CHECK_PLUS 000002b9 CSEG _INCREASE_TEMP 000002bf CSEG _S2_CHECK_MINUS 000002bc -CSEG _DECREASE_TEMP 000002cd -CSEG _SHOW_TEMP 000002d8 -CSEG _NEGATE_SET_TEMP 000002e5 -CSEG _DIVIDE_SET_TEMP 000002ea -CSEG _S3_CHECK_PLUS 000002f8 -CSEG _SET_HEAT_MODE 000002fe -CSEG _S3_CHECK_MINUS 000002fb -CSEG _SET_COOLING_MODE 00000303 -CSEG _SHOW_MODE 00000307 -CSEG _SHOW_COOLING 00000316 -CSEG _SHOW_HEATING 0000031a -CSEG DELAY_LOOP_16 000003b4 -CSEG OW_CHECK_PRESENCE 00000332 -CSEG _EXIT 00000337 -CSEG _OW_SEND_BYTE_LOOP 0000033d -CSEG _OW_SEND_0 00000340 -CSEG _OW_SEND_1 00000349 -CSEG _OW_SEND_BYTE_END 00000351 -CSEG _OW_RD_BYTE_LP 0000035c +CSEG _DECREASE_TEMP 000002d1 +CSEG _SHOW_TEMP 000002e0 +CSEG __DECREASE 000002da +CSEG _NEGATE_SET_TEMP 000002ed +CSEG _DIVIDE_SET_TEMP 000002f2 +CSEG _S3_CHECK_PLUS 00000300 +CSEG _SET_HEAT_MODE 00000306 +CSEG _S3_CHECK_MINUS 00000303 +CSEG _SET_COOLING_MODE 0000030b +CSEG _SHOW_MODE 0000030f +CSEG _SHOW_COOLING 0000031e +CSEG _SHOW_HEATING 00000322 +CSEG DELAY_LOOP_16 000003bc +CSEG OW_CHECK_PRESENCE 0000033a +CSEG _EXIT 0000033f +CSEG _OW_SEND_BYTE_LOOP 00000345 +CSEG _OW_SEND_0 00000348 +CSEG _OW_SEND_1 00000351 +CSEG _OW_SEND_BYTE_END 00000359 +CSEG _OW_RD_BYTE_LP 00000364 EQU dividend 00000061 EQU divisor 0000000a -CSEG DIV_LOOP 0000037a -CSEG DISPLAY_SYMBOLS 000003bd -CSEG _loop_2 000003a8 -CSEG _loop_0 000003a9 -CSEG _dec_0 000003aa -CSEG _loop_1 000003ac -CSEG _loop_3 000003ae +CSEG DIV_LOOP 00000382 +CSEG DISPLAY_SYMBOLS 000003c5 +CSEG _loop_2 000003b0 +CSEG _loop_0 000003b1 +CSEG _dec_0 000003b2 +CSEG _loop_1 000003b4 +CSEG _loop_3 000003b6 ESEG INFO 00000030 diff --git a/dist/default/production/attiny2313a_thermostat.X.production.obj b/dist/default/production/attiny2313a_thermostat.X.production.obj index 0dfd38b7a644dd6839a6c7ba94ee5738bb8684e9..8edf977fd8073fe2b3b7652b4a269513b0e32f04 100644 GIT binary patch literal 8839 zcmXxpcYGAZ`@r#MXEvb|dJQBL2}M%q2tp{*q=O(u2!s}DC{m>(&Bi4;453#+M3ACH z#GF!8EL^~X4UQs3R02c;`c;0P=kE3UW6w9w&dkotK0C7;MQZ#eB2|hMYB!*7bgz-) zM<>sS?vyfdG(quA5sBl!uD6m%BT&p|M4EyUz7irWK*{t7kv1SAJxZi4DD@tZL{R!r z1(9~3OlqV^M^HAuvdB}QT%fc_7f?RElt@=lL6SnKm_zmML@Ie`um`B@A<`36(Qfnt zRrR9JfJnXQ08lMGPGlgco=zX01ySjg90a1%hl>mbHQob5Kuu4g$aA2Uj18f7JiQu5 z)t6*u&3MjwZtVE1K5gXBtPdywW1mLG!FMkr|+c z&k=bZw9F(j6FhOAfzJZ1&V`B02Cd_n|9Rj^?coccjTT-2+G-CMf<*1%BG68+PBCe( zqf>P7#EUEe9koA-ry4LVOF<{?&oaw1f;yZ|J07LWJiEISV=|wk#VS3RmV7SiDR*;lM zv)jN3z36t1kuoNPMLa{3vGp z!A~$hjui@F=4BH5Bcij86%Ju`z=)hAGAD;N6mtV%BB#K-92>$5SHNi^^K-&OSa5~H zUl3WCL-r~bY0F=N#m70NSaOwGey}vVNC?XUoXREgVm235EDz9)b6`bw(GXS!xWsuP ztFo!CSY5lc$hXvdDXo;qci?56OvNh!e!k~;Rny@Ij@Kk9gf#(IY!>ehmLt5)6AFhGdedR=c0hs}QZg8yAc5Z?!KP7L0^=XMBv`G%} zj4L(<=xCB zh_7<3ICY4eJ-0_3oj$++usC%=E}N87kBgqmsT{(2e>-vNbL#7OdiXf_MhDmse4D#V zoLKN(yb*`4$c2IwaT37yfvVy(0zc@G8-pKNwSxFbBTb0>%nBLAMU6Bia)~83h=4|# z5xJ~=R$S4JHK$`&wPT8FXD^G>f>XcL{=*d=`}InXT&W3eTyE#G(UHMX;>u&-R#a(M zbjZJYySbu6zMWsh6&><#-oh^X8yOr)I}N}ek+h>Dy;J3iD>~A=qW4|Vk>1UZc7v}6 z_eyd~hkU;}r*z2q87tl33&Wph@42Ew{wsr)bzB8!^GF5opwgo-sRAAb>V-*F@OPAi zNhJ8kTR%+np8hYtNSIUy|9T6DNfh`ml3LN=QI)%4I#NgSD~0Ju9j7D_M(UW1m0`kN zcI?@|!gR=vn?ZGk?1Y`o57(j$ zPT7L&aGgV^oR?8VDZqlh4nB zIyyMsnw%It#aok8HxMb#P*Bg$4IBpQd#i{u95g7nB~B7}oNdb)2^z9(ImsYaM>-0` zt$$9O6cB&*KXJx`grh^nVf}O(X_<+jae%H)1x?cVna0tS1vZFgv5DeLC(=B?&kT+h ztcT9?pryZ=I5WW$R~Xl9&`PV%;b_g08^n`ZeJ+tUdI{c$oVHs11(4{E6K6hX$M)we z1nsr@B90C$!a;P@>Whgy#nSC80iCq^Qqb97SDa;_i?+NRbk*uBIJ&Vc2l2F4UrD5U zfYoLd=%LkDgP#5x;=BZUUFPQ%j^0}MRnSN8&TF8r7G4AT`MCvp@B8bFrGaNOe_jUz zG@QvXP-jf>thTcb4AL3P;ux&$tOr9hkv4##T5A)>b2?FqVOnc57_P(F0+O`WRxrX} zQk-pIq}JNOk*xEh7^Ss#g3&rZyTBN&^#&O0r>nccIIZ<2M~Y61V!YPc3nu8ayags| zt$kpUpLX5``u^kW2UB#&2S94Z191+6sXF!}VA{IN;v5CjHMO$A3?1?Z9M2ykC60rc z@3#@h2WGwBL!1*}cGeYfPJ=mFRR09b)oXnU=4H$l=QHqvUi1u@uNVCiEYNHD!9u-O zE?A^3e+?FA1;pXy#94BXOI!d;wVm(5GHvGv@S^tlB3Q1^`z5e~FBeCID)it{J%dZNYQrNUXOD~aOun8xBf0GSaKehAh@QTT6=-p#KqrW$y! zd?&U0tP6Cn7wB<%b z&UhAzX+q?4ox`T!3!Ot=A)GJy;xNs@SA21p7T_#Pw`mFdJO$ z>H>ZydxN+b=MmGD$R+JhHxSTnJPj`M?3mu*N^Tc1eZf^eG)zBmEq0NZ{@|C~!D5~P z*RSsvGZ5Se91!y?xS2as%ph<}2RH=$sx1!%x3%RY@SBcw1o)k&(u@Ru@Kl;)a7WX4 z6v)ecLd+O&_fe{tvEZJswU}|>{%^&_j0gGJp9$d4+-_nfg1>H)hm%2po|*z4w`BCW)C19_iH06@9eEh2Zckn|VZx zPNu@@DCPrqVO=o`Kv-L_5QOvLV-|rz88^i&28A{2mVhFf5-)pVj{n`$qG{W9wq9YoM zVQ(@u6uUr8#T%ej1W(f*P&=ZDn7!aJZ!*(J-Ap9|5tft3kx+qj!`@ygqu_AVDYUeb7i#{TOJhnfU=|qM3OdG}X-X zfoA@EF&~5Gnsp~Y3tzaHlc1$$-D&WIrq(B*Rjw=MQ_%VvI0K&4Q=fx2e0-ZPKwG`m zS&*pL@`HAIt#3j5H1Hkha1>ks9k228Bga$O%=}NF)8%4fu7l3mtcSNim-REn{0h3B z{a4Iw&@Ia+<_>r|6Xb#JYiN+Y$@I{x-vd4M>i0n}y?O!Yy`C-LA?TwS^*8A2W2OBE z^z-oZFGqjAMuT{!7XM=3F$4GzGi*0zps%7>0nf&WSe_0uh#a(p%wTE-F(kLQSeMAq zjAXHFH|Dv96~u;vVe#d}76QZbL1B=T`=r<+U<7~jv_-+lKq;}s>0C13UqOuG&qtQ+ z#*F6AN46vw!=I0A1Q^R7uWTtWuJ#zQY(OUE;%%{Iz<5>?TNX^nTr0L5n5Zq62b0J# zTLDa#q!6a8J1n*mkyNI|Rt8gjMZ{JC)0h?;38w1+6*HI?TMay)N15tiCflE7+cLBG zw6`_DY@L>xV2;*O%*{;@OHDJ6yJOkEjK2TaI$%C`$2I^9SRw7>U?FRZWlJ)PSRpN2 zl3ASIOKcoi(lA_X0$8fuXatsNHyVQ%wHr;qayBX3j5%D9#n_t@S(#g2YzweTZ%RwB z`qD|Ut-wp{Z}v&>a$Y^LZNMvhW!tvk)w^BACW6=Et=M*8&0R*(9(a7*iw+>oe_d>6 zkiPz)*sdT$yU`7JdA97+VD0)tVtatseMQCg1ew0lVtavgxn;!m0a+}$wl7%EyG;-q zT2~U=kH|(HV1Ka5TUIO^klCzvZ~)k%g%w+UOy)qaEtkTBz;akxQ}U>13vWC5IYy-_m`L>upnw0dUhuQFthlKCSqm;{%Zh;B_O;LEPnSIf#3Fao9Z+zRwqjeG}yWoF{fK z_*0YZE$|obb#@;p2=ILE2M?GDdjLGttW*5W&S(#Uf7luAA@D!V!^7ZT&BG($KVKcO z?}A6#=VLS>ntsQDqv`h{Fq(cj99GlsBjB=E+K)k)u9+u5xPPbEQ=kxkOtYs!VZ9fh zfFeSwD~f7^pMqlkEn?4r;<`S64oYa@FF;8xtcZxAov%PCUT*DKP+EuV2W0})#pZ&t zTI(DrC&?k`|NpY*iBynLAym}J*F-Au2f!dId!ogDL!^pcOHs8}O|jpCNL?k^sckjw z>IG0eKpy@GqO_f#K(tP;qK40k{Tb8@R1aYo8I2xI7p=PZZV+mKW=f*o(Ih>0Xj6KOi9o&P)Xbf z@RT=P+|r;^KBvln&UszLEepCZcDFoT?aH{^3ZUDKP9Z$)PYt0vV|V#Gw(X&1DuJGt z+lSE0KQV;fY!hx}8tkJDR;5f|EgT8@1-gaM-#<2lXSBg;oEo5Is)K>zG54Gu2oBW?{agj?y>1Vg!%ZY}T}lj+t5!*p661H*M%>VqVmmIh#iPRrw9WQ>U0 z5G3og#DY;eE%9Kq_BnxWjM4t^5o*V3pB3Z${X$65J~t*ZUduEA6D}u)Fwx&Dgh_h8 zn$qCpaa^kzn4*RGTenTU-aUk=ep=SZG#y|I%1kd&; z(@rvYN!wAp%meF=0kQosWcNSO|bywWkAZv{)?p&~5XLTOfpqF?7Y}8B4 z2b;1^iMs@B);V0t-P!VM%MiBS=n=v;f3*;{XHs~Xh~1&pUj#d~`f9K%z-+uk^*63I z31Rmgs%vDAzd{IaYW0^XyjQEg0^ZUArh$DrK&H>W&0gtdfc-k*Yr%m#oXQ06@FwhL zfrH+n;%)$k3K;1|a9A^nz0w{j_+H#C;9W1(w}JNxJ`#63ILgB4?gZI78@s^!Iva0* zW7?nH;Dg@n#C;1KPvkD|10NRL6!&eAqh;6!txwAw1|MmeBjDr2-r~LsP84tp-UBDK z@KJE;p-)`h<4zygA+GLmpQNo5*9Sg*utZ$l>^@twNZgOXnVb#co&cY(IxX%=nKUA0 za_ordlO%53lu4uGrjMRBcJ!P%Bc@H5GBYlAQu4Ue;i)5%Crpp)k&--ZO7ggr)VOy2 zXQWJ?GrVJ`-f@j%<6{$=Cd7@HIgKXbQYI%4oiVvlMb5_l}UzjN>B{bR$|*_qjyvu9^^uOgLph)B77d1CtX2#p;+c4Yk2 z&~^#qM^Y&6Ng@&a>$u8@)CC3Hwnzg|$X!UJF({l8B+>!|rG$vI1VxTh5)FzTEhQ2I ziX{e%v;oC)%8IlFCA>vNI)IWXMMOG+QZmes(pfa`Oi7t!I_v_ZGNLj053mE|Kvd z;z?nV2_RBqI1xm73y4etb+sfB)Jx{in;i9p_$wMz;m>4_hEIx$OaYD3*NRL9jop^W zG|(iClIfu7#cm=qK(h-0A~QkrNa8;mysjgB8??~Mb3jWS;am`{BTND@dUdKvE1jL9 zb#kQ0e9%V6qi9>3u)GV}>39}^_UTM{A?TpvSp+(25Eg?@+Tjw8H?%`V=ZmDuQqU#) znaDEGHL{h+N)VgF%~}Pz=?K?=?%I!b(L+Z_q4Z2=%oIv5Eyg4Pw?@(DVto;+N#8pB zS;x_D21&9W^bhAx8pnX_J0csvz{u7j?}0%%F(MnmV7=&OFhno91q{{rYz4#8>2@24 z(~EBB7%rpyh`$&nvV)Ql*}sbH1S4Jayc>*4i5A%dMr(#B#$=IK`#?f6*bl}glcEQ} zxa5{12f_H{2$4fzf+qiAFj15L2$-bFe-tGCLCFd5W>z7QOfdN_C0Rs&$|?RRrat12 zFF#J@@niZ868kizGfw68W2V;@IYY^;Ec#Hq+lZz@Ac^Sq9usAcnA4|Mk;vywW zGik0^R<)?eWm+y@TSVkXutI~WSn1`@6^>P!4nK3OmSKLZ@j4<`DM=0|d#{1Dp8F!# zK}sD?c|mFve{OKNG>vsi>pbMcZLr>5LgY7)=H<^_jt$z+J&^99=I zij7{z`w(o>%71{(9>(wpY|+Y(!B$-d6x%fNPr-Jr{3qDq`AOs%*r}Csz%E@Y6z_Y9 z#&fV+E9Zheo{J(cz+SEV6719UMDanGh(%y!KVh*5KIt{akAqs0pOQn8;KyOcVsR7Y zh@Rpml3ru|IQBS5tiqIhsHey-`H1DnhvQX8iAB)lM0O3aN`lN}>XZg2SiM$2q-dO-_BG%@tn~9_uymRZe%Y>VU74L&b^!-{`y)-=;fq9;bIhMc+-$p{;RA9R9Ez~$^+Vl@Rn zM%rRE2S4Q!=hwj%Z+Wp;_vB}ta!c?FtCkPHYDqLDS6Lx_xTYmBlw4=Y^}(wptth#n zV^-YMfwg8}w{&2N+vjhH)rM2QRej`0C2*(AD@QbRcW=ZvY;S ztCJ&Sj6BH6=SU6k(3RI=e8Cb$6ih!F)yL&-I-*g1lK+__;oxabsN;J*__Hvl zG^)=kaw-bsq%LuMFARU3|I-nT>hn~3ZUA!6KOq&si!!eQL{s9Ww`PEp2mcF^00{0b0MXp|FPK)L;8nS&0XkDla>@kgOf9Q0CCt>aQxt9_t`&MM++6ezVoQEg5PtzxdRff_@rcy4B( z#?UI^;sNOlO7bRS#e!12$ynV$X-({&9A)&$Rg?|yCRQ&{&Qn6H-k`kJ>BkYQiLI!h zb^3#f9fnz}}S2?j*0Ik}&zl${{!@sOM# zp;+@l)0@m|0cfVp7jiUb$@SrNZN7+-7J7-rprtln0-`+;Vl4$RUgotNw9@7)I9js^ z`_M+4ucV|cOSiQOwA1FRL3>XPvDSbN+Vfh_QJd@0iDlV`H?(;wC7r#jHZIUbo38_1 zJ(a{-4`OfdX9Gt!t(*?J>)pu!J+w00lhxD1E!YTpX~Z^x-kLw#K_5+t9UOf%Vv2s+ z&rZ-^BesiUfcEn~7^sP~8w}D`dpQPcpcF&2)jlv(r}F_ArmgmaI8R}*4uIj>>JUe~ z#z!$iTO9@?H9kkcC~b8VjP@|pV_=N7`iLVz!=f0gt&W3n8kQ4aytc{&6Fl^D66pJn zbqY+YOh4H|tZ%`LlU>9* z4`!y{6zc+*l}_`E;4Qt@B``a6rdU6KxAmfz!8>}sK&WuXPn9Y0rASdFfuU zZh`qnxWsMnuJ-dASfKsf0Sk4^_rW54-XDO)e7RT;!4ke)tUtiglvuGIfn|KTSdYQ- zl(}L(0V_0ye{-zV#X+$uxrkW*fYrLKE7o{xiS;i?_7cqhz}o9m#Cio%B5bh*q(&4M z+XAlSP_YeI$4cVE`mlOpJCvjaQ8@r?2%&NyNKcLyJ0Hj(TYPvgxtrMeDcMNY`LHQ@ znAim<*-UQuu!ZT^1u5CebnHT4Ti6V-3xnQisG210M!%6}txbD5t8}y1XARSxD^K;6y;M z*sp=ioX%p`0Vmz`6An&kprXLXq`D8ERB0o2T}nR9DJph7kd?MZ?D{-oZnq_N14>S( zQ__%<&)j*$ZbZrF+D{X3M*C5m)qa|SbJ|Zc@P)Q&POC4qpVuk*N_%cW$=Atq#g3-r z8;xNM_*P@s3Vg>Ghus={&liW?2ApTVBKUO#^F6cam^%2!BHy9fB0r1jyKhUL?8)Hi zt3M#hwbDJuE2pbdaOtnF0RFZY8#EZOSAvO#ayMu-U5ni$yQK8OSXZMTCyFK(vlsZw3h4y zWwc}$D9f)9HoKKwPG_nppF=SBfM8dY*n2^Rh}L2s02LF7>Ol~qC5J$05DVI2P)TtF zR8|}XRf2e$J_J>R>Wh6GRC6^HI}=n_umRa&ic_G5;$u*g7jiob)Y9=NYNv#X?FO%D z|AW|Q_vmi_kRR03h)6D!5)Yr`X3N+Bn{1!CyJQVwT z&`7iHJZS6=6x#!uXx3c-O*OSHf@Yq7#J&WY-*&{l3|`k$KY|vXmty|}TI#ia0nvJ` zUqOss>n3Qm7Tf}@Pk`H?jsCgI(KeIF-vjM#6cGDQ&_0v(@GsCIW4hSSLC5p|ik%BO zrMt!c8@!PQ{sEoW&>?%1-9@kdALy!Ae+6Q>x-pj7Q>cgC$T~rwj_IAO01Y>V1AuI zG3-S4yE=>(V1W*!C0MA#hz5(;q)aPfxHz4;x29xCHsNgpmg-Gu3zl6!Bc?rA&gZu2 z2v$5{gq^@jzOv05VAa!(VmgD>kwy%AlfC9?l$fp{*}Ys$ELiKgCZ;Dy$v7gWH%QfC z^Z_m&R?`=(%Qz~gKUnY1FJ=Hpa~Bme5Nyb%WH3l)$u&bj2JbdLyw|*pn4y$x)Cmp) zn_R`k#DUFv2Zw_#T3NBxO)%rZHhuszBf)m51eu{jQQYW zjp_pM39m+GA^6nIBeMu(d2WkY0^AyerQkGgl|Foy94clRC7<(F>BAXsQ!&daIU7WH zSAcW8rW)P0z6hxzW)=8ScdE8~}f4k{kq& zcpo!|z+*2@!4dF;u$iOasb-7fPj)o(A$Z1)W+*e^A0PJ{nx+I$B7*0ebT{&5G2ISc;PweB4F&$Cm^m*5pYf|;*qAbKyp1{N>L zKG@pfH!6H=S5el@%H{>-ycNXU1m(5PEfB1A6cv(V#oPrI^m6a%lj0>vo- zTI6u5Bxw1hgE*x?G;?>@%}osRa>{~MciZ{V+LP!<8|Lnm<5XL%Qy#Rt(aMkZp7DNk zV0m}g=uJoMup)IjY2^^`hPRU+ojs%d=%O8la;mG=sRUy0cJ-s1C*F_lto%+DI_#0# zU7V_*C%4k626}NTo$8=B!F0kv9}P`I~-T+g)47D?udS|;hv0xhCO-?s3Jtaw;K46B#`7twPjW~TNnI*&h zc#GB88AQo!t)qCG)!1R{H}7a2#T?d5X9$?9^J42aNmoaR69?w4{X?91Fh7NUMuB&= zAH@P5SZ6d?sQoAwxdw=n02b#ai!&B1NoE$~z*3#^c(6=oIsq)#nN9&K^j1y-qX*Er(515z}qb3m$IVlHs$C6d6p^t0kD z1nV`1i?};!_nY{!;cgc{(mfUY$Vj8|Vk*C<&6j|U+I%J0#z@+6I$mu$kaL~z{%)t;$(tTx!i)2;A5?P3Via?Ee?B} z`Sj2ZaoFQb*4ho?d=A_%=8MB-XHKt466Y-VEbBdS&VkRDo)hN_nGlySF+6U{1c?|k zX~M{eDI+J39yx1P+~jeSrbmQNh#!+UG%+rI+?0qe3GtIB#g9oyjELzqHDThcp>5iA zi>MbK86MRjDk5(BWV(n*m>553>cqPBqUyzr7&$7O{}ldBn3ym%Vba7YzN<`#qZ>a* WButNLIL%iI8~ZgOan}DA%KrhP^5UKV diff --git a/dist/default/production/attiny2313a_thermostat.X.production.tmp b/dist/default/production/attiny2313a_thermostat.X.production.tmp index cb04516..4e0e75e 100644 --- a/dist/default/production/attiny2313a_thermostat.X.production.tmp +++ b/dist/default/production/attiny2313a_thermostat.X.production.tmp @@ -48,31 +48,31 @@ <_CLR_CURRENT_DIGIT>main.asm98 <_indicate_1>main.asm102 <_indicate_2>main.asm122 - main.asm1138 - main.asm737 + main.asm1135 + main.asm725 <_indicate_3>main.asm140 <_indicate_4>main.asm155 <_indicate_exit>main.asm167 main.asm189 - main.asm472 + main.asm460 <_INIT_PARAMS>main.asm230 <_FIRST_TIME_RUN>main.asm227 - main.asm380 - <_CONTINUE_INIT>main.asm263 - main.asm603 - main.asm284 - main.asm289 - main.asm1164 - main.asm1156 - main.asm296 - <_STATE_DEFAULT>main.asm299 - <_STATE_PROGRAM>main.asm311 - main.asm587 - main.asm1097 - main.asm489 - main.asm334 - <_STATE_ERROR>main.asm315 - main.asm822 + main.asm368 + <_CONTINUE_INIT>main.asm251 + main.asm591 + main.asm272 + main.asm277 + main.asm1161 + main.asm1153 + main.asm284 + <_STATE_DEFAULT>main.asm287 + <_STATE_PROGRAM>main.asm299 + main.asm575 + main.asm1094 + main.asm477 + main.asm322 + <_STATE_ERROR>main.asm303 + main.asm810 div16u.asm32 div16u.asm36 div16u.asm42 @@ -84,81 +84,82 @@ mpy16u.asm31 mpy16u.asm37 mpy16u.asm40 - main.asm372 - <_TEMP_SEND_UART_L>main.asm361 - main.asm447 - main.asm418 - <_EEP_WR_BYTE_LP>main.asm450 - <_EEP_RD_BYTE_LP>main.asm474 - <_NEGATE_TEMP>main.asm543 - <_COMPARE>main.asm549 - <_MIN_THRESHOLD>main.asm559 - <_MAX_THRESHOLD>main.asm568 - <_COMPARSION_EXIT>main.asm575 - main.asm715 - main.asm1206 - main.asm619 - main.asm1010 - main.asm1037 - main.asm1068 - <_TEMP_RD_EXIT>main.asm707 - <_TEMP_RD_TO_UNSIGNED>main.asm656 - <_TEMP_RD_CONTINUE>main.asm669 - <_TEMP_RD_END>main.asm679 - <_TEMP_CONV_EXIT>main.asm730 - <_USI_TRANSMIT_LOOP>main.asm756 - main.asm770 - <_SW_CHECK_ON_0>main.asm772 - <_SW_SET_0>main.asm776 - <_SW_CHECK_ON_1>main.asm803 - <_SW_SET_FROM_0_TO_1>main.asm781 - main.asm1172 - <_SAVE_SETTINGS>main.asm791 - <_SW_SET_1>main.asm807 - <_BUTTON_PROCESS_END>main.asm816 - <_SW_SET_FROM_1_TO_0>main.asm812 - <_INTO>main.asm833 - <_REPROGRAM_SETTINGS_LOOP>main.asm838 - <_CHECK_STEP>main.asm840 - <_STEP_1>main.asm850 - <_STEP_2>main.asm893 - <_S3_JMP>main.asm889 - <_REPROGRAM_SETTINGS_END>main.asm998 - <_S1_CHECK_PLUS>main.asm852 - <_INCREASE_HYST>main.asm860 - <_S1_CHECK_MINUS>main.asm856 - <_DECREASE_HYST>main.asm868 - <_SHOW_HYST>main.asm875 - <_STEP_3>main.asm957 - <_S2_CHECK_PLUS>main.asm895 - <_INCREASE_TEMP>main.asm903 - <_S2_CHECK_MINUS>main.asm899 - <_DECREASE_TEMP>main.asm914 - <_SHOW_TEMP>main.asm922 - <_NEGATE_SET_TEMP>main.asm935 - <_DIVIDE_SET_TEMP>main.asm939 - <_S3_CHECK_PLUS>main.asm959 - <_SET_HEAT_MODE>main.asm967 - <_S3_CHECK_MINUS>main.asm963 - <_SET_COOLING_MODE>main.asm972 - <_SHOW_MODE>main.asm976 - <_SHOW_COOLING>main.asm989 - <_SHOW_HEATING>main.asm993 - main.asm1198 - main.asm1026 - <_EXIT>main.asm1032 - <_OW_SEND_BYTE_LOOP>main.asm1043 - <_OW_SEND_0>main.asm1047 - <_OW_SEND_1>main.asm1053 - <_OW_SEND_BYTE_END>main.asm1058 - <_OW_RD_BYTE_LP>main.asm1074 - main.asm1114 - main.asm1215 - <_loop_2>main.asm1178 - <_loop_0>main.asm1180 - <_dec_0>main.asm1182 - <_loop_1>main.asm1185 - <_loop_3>main.asm1188 - main.asm1233 + main.asm360 + <_TEMP_SEND_UART_L>main.asm349 + main.asm435 + main.asm406 + <_EEP_WR_BYTE_LP>main.asm438 + <_EEP_RD_BYTE_LP>main.asm462 + <_NEGATE_TEMP>main.asm531 + <_COMPARE>main.asm537 + <_MIN_THRESHOLD>main.asm547 + <_MAX_THRESHOLD>main.asm556 + <_COMPARSION_EXIT>main.asm563 + main.asm703 + main.asm1203 + main.asm607 + main.asm1007 + main.asm1034 + main.asm1065 + <_TEMP_RD_EXIT>main.asm695 + <_TEMP_RD_TO_UNSIGNED>main.asm644 + <_TEMP_RD_CONTINUE>main.asm657 + <_TEMP_RD_END>main.asm667 + <_TEMP_CONV_EXIT>main.asm718 + <_USI_TRANSMIT_LOOP>main.asm744 + main.asm758 + <_SW_CHECK_ON_0>main.asm760 + <_SW_SET_0>main.asm764 + <_SW_CHECK_ON_1>main.asm791 + <_SW_SET_FROM_0_TO_1>main.asm769 + main.asm1169 + <_SAVE_SETTINGS>main.asm779 + <_SW_SET_1>main.asm795 + <_BUTTON_PROCESS_END>main.asm804 + <_SW_SET_FROM_1_TO_0>main.asm800 + <_INTO>main.asm821 + <_REPROGRAM_SETTINGS_LOOP>main.asm826 + <_CHECK_STEP>main.asm828 + <_STEP_1>main.asm838 + <_STEP_2>main.asm881 + <_S3_JMP>main.asm877 + <_REPROGRAM_SETTINGS_END>main.asm995 + <_S1_CHECK_PLUS>main.asm840 + <_INCREASE_HYST>main.asm848 + <_S1_CHECK_MINUS>main.asm844 + <_DECREASE_HYST>main.asm856 + <_SHOW_HYST>main.asm863 + <_STEP_3>main.asm954 + <_S2_CHECK_PLUS>main.asm883 + <_INCREASE_TEMP>main.asm891 + <_S2_CHECK_MINUS>main.asm887 + <_DECREASE_TEMP>main.asm906 + <_SHOW_TEMP>main.asm919 + <__DECREASE>main.asm914 + <_NEGATE_SET_TEMP>main.asm932 + <_DIVIDE_SET_TEMP>main.asm936 + <_S3_CHECK_PLUS>main.asm956 + <_SET_HEAT_MODE>main.asm964 + <_S3_CHECK_MINUS>main.asm960 + <_SET_COOLING_MODE>main.asm969 + <_SHOW_MODE>main.asm973 + <_SHOW_COOLING>main.asm986 + <_SHOW_HEATING>main.asm990 + main.asm1195 + main.asm1023 + <_EXIT>main.asm1029 + <_OW_SEND_BYTE_LOOP>main.asm1040 + <_OW_SEND_0>main.asm1044 + <_OW_SEND_1>main.asm1050 + <_OW_SEND_BYTE_END>main.asm1055 + <_OW_RD_BYTE_LP>main.asm1071 + main.asm1111 + main.asm1212 + <_loop_2>main.asm1175 + <_loop_0>main.asm1177 + <_dec_0>main.asm1179 + <_loop_1>main.asm1182 + <_loop_3>main.asm1185 + main.asm1230 diff --git a/main.asm b/main.asm index 355ebad..81ef9fa 100644 --- a/main.asm +++ b/main.asm @@ -147,7 +147,6 @@ _indicate_3: sbi PORTD, DIGIT_3_PIN lds TEMP_REG_A, DIGITS rcall DISPLAY_DECODER - ; зажигаем точку mov r16, r0 cbr r16, (1<<7) mov r0, r16 @@ -189,7 +188,7 @@ RESET_vect: ; **** ПРОЦЕСС ИНИЦИАЛИЗАЦИИ МК ********************************** MCU_INIT: ; **** ИНИЦИАЛИЗАЦИЯ ПИНОВ ************************************* - outi r16, DDRD, (1< @@ -339,8 +361,118 @@ UART_WR_BYTE: sbis UCSRA, UDRE rjmp UART_WR_BYTE out UDR, r5 + ret +// + +// +INIT_DEFAULT_PARAMS: + ldi r16, DEFAULT_SETTING_TEMP_H + sts SETTING_TEMP_H, r16 ; уставка HIGH + mov EEP_D_r, r16 + ldi r16, EEP_SETTING_TEMP_H + mov EEP_A_r, r16 + rcall EEP_WR_BYTE + + ldi r16, DEFAULT_SETTING_TEMP_L + sts SETTING_TEMP_L, r16 ; уставка LOW + mov EEP_D_r, r16 + ldi r16, EEP_SETTING_TEMP_L + mov EEP_A_r, r16 + rcall EEP_WR_BYTE + + ldi r16, DEFAULT_SETTING_HYST + sts SETTING_HYST, r16 ; гистерезис + mov EEP_D_r, r16 + ldi r16, EEP_SETTING_HYST + mov EEP_A_r, r16 + rcall EEP_WR_BYTE + + ldi r16, DEFAULT_SETTING_MODE + sts SETTING_MODE, r16 ; режим + mov EEP_D_r, r16 + ldi r16, EEP_SETTING_MODE + mov EEP_A_r, r16 + rcall EEP_WR_BYTE + + ldi r16, 0x10 + mov EEP_D_r, r16 + ldi r16, EEP_FIRST_TIME_RUN + mov EEP_A_r, r16 + rcall EEP_WR_BYTE + ret +// + +// +WRITE_PARAMS_TO_EEP: + push r16 + lds r16, SETTING_TEMP_H ; уставка HIGH + mov EEP_D_r, r16 + ldi r16, EEP_SETTING_TEMP_H + mov EEP_A_r, r16 + rcall EEP_WR_BYTE + + lds r16, SETTING_TEMP_L ; уставка LOW + mov EEP_D_r, r16 + ldi r16, EEP_SETTING_TEMP_L + mov EEP_A_r, r16 + rcall EEP_WR_BYTE + + lds r16, SETTING_HYST ; гистерезис + mov EEP_D_r, r16 + ldi r16, EEP_SETTING_HYST + mov EEP_A_r, r16 + rcall EEP_WR_BYTE + + lds r16, SETTING_MODE ; режим + mov EEP_D_r, r16 + ldi r16, EEP_SETTING_MODE + mov EEP_A_r, r16 + rcall EEP_WR_BYTE + pop r16 ret// - + +// +EEP_WR_BYTE: + cli + push r16 +_EEP_WR_BYTE_LP: + ; ждем завершения предыдущей записи + sbic EECR, EEPE + rjmp _EEP_WR_BYTE_LP + + ; режим программирования - атомарный + ldi r16, (0< + // TEMP_COMPARSION: push r16 @@ -436,7 +568,8 @@ _COMPARSION_EXIT: pop r18 pop r17 pop r16 - ret// + ret +// // TEMP_UPD: @@ -644,13 +777,15 @@ _SW_SET_FROM_0_TO_1: rcall BEEP_SHORT rjmp _SW_CHECK_ON_1 _SAVE_SETTINGS: - outi r17, TIMSK, (0< _STEP_1: ; установка и отображение гистерезиса - nop + rcall DISPLAY_UPD_DIGITS _S1_CHECK_PLUS: sbis SW_PIN, SW_PLUS_PIN rjmp _INCREASE_HYST @@ -742,7 +879,7 @@ _S3_JMP: ; просто прыжок на _STEP_3 // _STEP_2: - nop + rcall DISPLAY_UPD_DIGITS _S2_CHECK_PLUS: sbis SW_PIN, SW_PLUS_PIN rjmp _INCREASE_TEMP @@ -755,6 +892,10 @@ _INCREASE_TEMP: rcall DEBOUNCE_SW lds r17, SETTING_TEMP_L lds r18, SETTING_TEMP_H + cpi r17, MAX_TEMP_L + ldi r19, MAX_TEMP_H + cpc r18, r19 + breq PC+7 ldi r19, 10 add r17, r19 clr r19 @@ -766,6 +907,11 @@ _DECREASE_TEMP: rcall DEBOUNCE_SW lds r17, SETTING_TEMP_L lds r18, SETTING_TEMP_H + cpi r17, MIN_TEMP_L + ldi r19, MIN_TEMP_H + cpc r18, r19 + breq PC+3 +__DECREASE: subi r17, 10 sbci r18, 0 sts SETTING_TEMP_L, r17 @@ -828,6 +974,10 @@ _SHOW_MODE: clr r17 mov DISP_NUM_L, r17 mov DISP_NUM_H, r17 + ldi r17, 14 + sts DIGITS, r17 + sts DIGITS+1, r17 + sts DIGITS+2, r17 lds r18, SETTING_MODE tst r18 breq _SHOW_COOLING @@ -850,17 +1000,6 @@ _REPROGRAM_SETTINGS_END: pop r16 ret // - -;DBG_LED_TOGGLE: -; push r18 -; push r19 -; in r18, PIND -; ldi r19, (1< // @@ -1069,31 +1208,6 @@ DELAY_LOOP_24: ret // -// -DELAY: - push r16 - push r17 - push r18 - - ldi r18, 6 -_DELAY_0: - ldi r16, 255 -_DELAY_1: - ldi r17, 255 -_DELAY_2: - dec r17 - brne _DELAY_2 - - dec r16 - brne _DELAY_1 - dec r18 - brne _DELAY_0 - - pop r18 - pop r17 - pop r16 - ret // - // DISPLAY_SYMBOLS: ; HGFEDCBA HGFEDCBA @@ -1112,9 +1226,6 @@ DISPLAY_SYMBOLS: ; **** СЕГМЕНТ EEPROM ******************************************** .ESEG -E_SETTING_TEMP_H: .BYTE 1 -E_SETTING_TEMP_L: .BYTE 1 -E_SETTING_HYST: .BYTE 1 -E_SETTING_MODE: .BYTE 1 -E_FIRST_TIME_RUN: .BYTE 1 +.ORG 0x30 +INFO: .DB "AVR Thermostat. Written by Sergey Yarkov" ; diff --git a/main.hex b/main.hex index 4ecf332..09bc77d 100644 --- a/main.hex +++ b/main.hex @@ -7,106 +7,118 @@ :10003A002F933F934F935F935FB74091670045308B :10004A000CF403C0442740936700403081F493982E :10005A00949895980EF002C00BE002C000916500DA -:10006A00002311F0929A01C09298DAD29BD14130C2 +:10006A00002311F0929A01C0929850D305D24130E0 :10007A0081F4929894989598009164003091650063 -:10008A00032B11F0939A01C0939800916400C8D28F -:10009A0089D1423059F4929893989598949A0091FC -:1000AA006300BED2002D0F77002E7CD1433041F47D -:1000BA00929893989498959A00916600B1D272D1C9 +:10008A00032B11F0939A01C09398009164003ED318 +:10009A00F3D1423059F4929893989598949A009192 +:1000AA00630034D3002D0F77002EE6D1433041F49C +:1000BA00929893989498959A0091660027D3DCD1E8 :1000CA004395409367005FBF5F914F913F912F9196 :1000DA001F910F9118950FED0DBF0FE701BB01EEB0 :1000EA0007BB0CE108BB02E000BF05E003BF03E267 :1000FA0006BF00E20BBF0CE100BD03E309B900E053 :10010A0002B908E00AB906E003B91124109267009F -:10011A0000E0009360000CE200936C0001E00093A1 -:10012A006B0005E000936D0001E000936E0000276C -:10013A00009368000093690000EF00936A000FEFD4 -:10014A00009371006624CED000916F00083209F442 -:10015A0005C012E01093600075D201C06CD280E035 -:10016A0090E00091600042D2003051F496982091BC -:10017A006A0020936600A7D059D011E019BF38D081 -:10018A00013011F4969848D1023059F7969AE9CF7E -:10019A00EE24FF1841E1001F111F4A9509F4089542 -:1001AA00EE1CFF1CE21AF30A20F4E20EF31E8894F6 -:1001BA00F2CF0894F0CFFF1829E0001F2A9509F41E -:1001CA000895FF1CF11A18F4F10E8894F6CF0894DA -:1001DA00F4CF5527442760E13695279510F4400F50 -:1001EA00511F57954795379527956A95B9F70895F9 -:1001FA000F931F9300916800502E14D000916A004B -:10020A00502E10D000B30170502E0CD004E0502EA6 -:10021A0009D00027502E1CE005D01A95E9F71F9146 -:10022A000F9108955D9BFECF5CB808950F931F93BD -:10023A002F933F934F935F937F93009168001091A0 -:10024A0069002AE030E0C5DF022F132F20916A00EF -:10025A003327020F131F40916C0050916B0060917D -:10026A006D004F935F937727461B570BB42EA52E2D -:10027A005F914F917727460F571FD42EC52E0EF048 -:10028A0004C0009510950F5F1F4FB016A10624F405 -:10029A000D151C054CF40FC040916E00442311F457 -:1002AA00909801C0909A07C040916E00442311F4BF -:1002BA00909A01C090987F915F914F913F912F91B1 -:1002CA001F910F9108951F9361D052E135E54DEBCF -:1002DA00D4D112D010916800812F10916900912F0A -:1002EA001F9108950F9334D103E3802E46D1AFE6D0 -:1002FA00B0E062D10F9108950F931F932F933F930C -:10030A004F9326D170FF3CC00CEC802E36D10EEBF9 -:10031A00802E33D1A8E6B0E04FD1A9E6B0E04CD1A7 -:10032A0010916800209169002F93287F283F11F0CF -:10033A00E89407C02F916894109520951F5F2F4F5E -:10034A0001C02F91269517952695179526951795ED -:10035A0026951795309168000EF43195432F3F701A -:10036A00432F330F330F330F440F340F369536951F -:10037A0036953695109368002093690030936A0089 -:10038A004F913F912F911F910F9108950F93E0D0B4 -:10039A0070FF06C00CEC802EF0D004E4802EEDD065 -:1003AA000F9108950F930F920FB800E40EB90BE165 -:1003BA000DB9769BFDCFC09AC0980F900F91089502 -:1003CA000F93B49B01C01AC000917100002309F475 -:1003DA0015C00027009371003CD16394162D143088 -:1003EA0014F429D10BC010E019BF929893989498ED -:1003FA009598662427D110E010936000B49901C043 -:10040A0009C000917100002309F004C00FEF0093A6 -:10041A0071001FD10F9108950F931F932F933F934C -:10042A004F93062D002309F002C005D16394C8DF5B -:10043A00013029F0023049F1033031F183C0000064 -:10044A00B29B04C000C0B39B0AC011C002D1109174 -:10045A006D00183C09F0139510936D0008C0F9D08F -:10046A0010916D00113009F01A9510936D000F93D9 -:10047A001F9300916D001AE09EDE802F9927F0925B -:10048A0066001F910F915EC03EC00000B29B04C07F -:10049A0000C0B39B0FC019C0DCD010916C00209132 -:1004AA006B0031E0130F3327231F10936C00209346 -:1004BA006B000BC0CED010916C0020916B001150D4 -:1004CA00204010936C0020936B000F931F932F937F -:1004DA003F9300916C0010916B00212F207811F44A -:1004EA00E89405C06894009510950F5F1F4F2AE0A5 -:1004FA0030E04EDE802F912FE09266003F912F91DF -:10050A001F910F911FC0E894B29B04C000C0B39B17 -:10051A0006C009C09ED011E010936E0004C099D0A5 -:10052A0010E010936E001127812F912F20916E00F9 -:10053A00222309F004C01CE01093660003C01DE0EA -:10054A00109366004F913F912F911F910F9108953B -:10055A00F894B99A33E04EEB8CD0B99830E04AE877 -:10056A0088D005D033E042E384D078940895B19BD3 -:10057A00716002C0B1997E7F0895F8940F931F931A -:10058A00082D18E0069508F448F0B99A30E046E7D5 -:10059A0070D0B99830E042E16CD008C0B99A30E026 -:1005AA004AE067D0B99830E04EE763D01A9551F720 -:1005BA001F910F9178940895F8940F931F93002731 -:1005CA0018E00695B99A30E04AE053D0B99830E07D -:1005DA0040E14FD0B199006830E04CE64AD01A9514 -:1005EA0081F70C931F910F91789408950F935F935D -:1005FA0053E0A3E6B0E0809361009093620000911B -:10060A006100109162002AE030E0C2DDED920093B1 -:10061A006100109362005A9591F75F910F910895C6 -:10062A000F931F93EEEAF6E01127E00FF11F0490F3 -:10063A001F910F910895C59A53E039EA4DE71DD0ED -:10064A00C5980895C59A5CE034E34DEF16D0C59875 -:10065A0008950F931F932F932AE01FEF0FEF0A9528 -:10066A00F1F71A95D9F72A95C1F72F911F910F9192 -:10067A00089541503040E8F70895415030405040C5 -:10068A00E0F708950F931F932F9326E00FEF1FEFC4 -:10069A001A95F1F70A95D9F72A95C1F72F911F9163 -:1006AA000F910895C0F9A4B0999282F880909CBFE6 -:0206BA00C689EF +:10011A0000E00093600004E0302EEAD0042D0031A4 +:10012A0011F09CD014C000E0302EE2D040926B0057 +:10013A0001E0302EDDD040926C0002E0302ED8D0A3 +:10014A0040926D0003E0302ED3D040926E0000271B +:10015A00009368000093690000EF00936A000FEFB4 +:10016A0000937100662428D100916F00083209F4C7 +:10017A0005C012E010936000DBD201C0D2D280E049 +:10018A0090E000916000003051F420916A002093C1 +:10019A00660003D1A1D2B4D011E019BF41D0013019 +:1001AA0009F4A6D1023069F71BE01093630010939B +:1001BA006400109365001093660011E019BFE1CF47 +:1001CA00EE24FF1841E1001F111F4A9509F4089512 +:1001DA00EE1CFF1CE21AF30A20F4E20EF31E8894C6 +:1001EA00F2CF0894F0CFFF1829E0001F2A9509F4EE +:1001FA000895FF1CF11A18F4F10E8894F6CF0894AA +:10020A00F4CF5527442760E13695279510F4400F1F +:10021A00511F57954795379527956A95B9F70895C8 +:10022A000F931F9300916800502E14D000916A001A +:10023A00502E10D000B30170502E0CD004E0502E76 +:10024A0009D00027502E1CE005D01A95E9F71F9116 +:10025A000F9108955D9BFECF5CB8089501E000936D +:10026A006B00402E00E0302E36D00CE200936C007A +:10027A00402E01E0302E2FD005E000936D00402E75 +:10028A0002E0302E28D001E000936E00402E03E0F9 +:10029A00302E21D000E1402E04E0302E1CD00895EB +:1002AA000F9300916B00402E00E0302E14D0009185 +:1002BA006C00402E01E0302E0ED000916D00402ED1 +:1002CA0002E0302E08D000916E00402E03E0302E5E +:1002DA0002D00F910895F8940F93E199FECF00E0B0 +:1002EA000CBB3EBA4DBAE29AE19A0F9178940895FE +:1002FA00F894E199FECF3EBAE09A4DB27894089507 +:10030A000F931F932F933F934F935F937F93009184 +:10031A006800109169002AE030E073DF022F132F82 +:10032A0020916A003327020F131F40916C005091ED +:10033A006B0060916D004F935F937727461B570BB5 +:10034A00B42EA52E5F914F917727460F571FD42EB3 +:10035A00C52E0EF004C0009510950F5F1F4FB01602 +:10036A00A10624F40D151C054CF40FC040916E0033 +:10037A00442311F4909801C0909A07C040916E00EE +:10038A00442311F4909A01C090987F915F914F9104 +:10039A003F912F911F910F9108951F9361D052E1C0 +:1003AA0035E54DEBE0D112D010916800812F109104 +:1003BA006900912F1F9108950F9340D103E3802E76 +:1003CA0052D1AFE6B0E06ED10F9108950F931F930B +:1003DA002F933F934F9332D170FF3CC00CEC802E89 +:1003EA0042D10EEB802E3FD1A8E6B0E05BD1A9E660 +:1003FA00B0E058D110916800209169002F93287FAE +:10040A00283F11F0E89407C02F9168941095209521 +:10041A001F5F2F4F01C02F91269517952695179587 +:10042A002695179526951795309168000EF4319503 +:10043A00432F3F70432F330F330F330F440F340FC3 +:10044A00369536953695369510936800209369004F +:10045A0030936A004F913F912F911F910F91089508 +:10046A000F93ECD070FF06C00CEC802EFCD004E495 +:10047A00802EF9D00F9108950F930F920FB800E4D0 +:10048A000EB90BE10DB9769BFDCFC09AC0980F90BB +:10049A000F9108950F93B49B01C01CC00091710085 +:1004AA00002309F417C000270093710048D1639410 +:1004BA00162D143014F435D10DC010E019BF9298DE +:1004CA009398949895986624EBDE32D1969810E02A +:1004DA0010936000B49901C009C000917100002313 +:1004EA0009F004C00FEF0093710029D10F9108950C +:1004FA000F931F932F933F934F93062D002309F0D9 +:10050A0004C09098969A0DD16394C4DF013029F003 +:10051A00023049F1033031F18BC0DED0B29B04C006 +:10052A0000C0B39B0AC011C00AD110916D00183CDB +:10053A0009F0139510936D0008C001D110916D0058 +:10054A00113009F01A9510936D000F931F930091C3 +:10055A006D001AE048DE802F9927F09266001F91FD +:10056A000F9166C03FC0B8D0B29B04C000C0B39B15 +:10057A000FC019C0E4D010916C0020916B003AE0D2 +:10058A00130F3327231F10936C0020936B000BC0AB +:10059A00D6D010916C0020916B001A502040109315 +:1005AA006C0020936B000F931F932F933F9300913E +:1005BA006C0010916B00212F207811F4E89405C08B +:1005CA006894009510950F5F1F4F2AE030E0F8DD20 +:1005DA00802F912F0AE0009366003F912F911F917F +:1005EA000F9126C0E894B29B04C000C0B39B06C01A +:1005FA0009C0A5D011E010936E0004C0A0D010E08D +:10060A0010936E001127812F912F1FEF1093630013 +:10061A00109364001093650020916E00222309F064 +:10062A0004C01CE01093660003C01DE0109366002E +:10063A004F913F912F911F910F910895F894B99A74 +:10064A0033E04EEB8CD0B99830E04AE888D005D038 +:10065A0033E042E384D078940895B19B716002C07C +:10066A00B1997E7F0895F8940F931F93082D18E08F +:10067A00069508F448F0B99A30E046E770D0B99880 +:10068A0030E042E16CD008C0B99A30E04AE067D065 +:10069A00B99830E04EE763D01A9551F71F910F9140 +:1006AA0078940895F8940F931F93002718E00695FD +:1006BA00B99A30E04AE053D0B99830E040E14FD0DF +:1006CA00B199006830E04CE64AD01A9581F70C934C +:1006DA001F910F91789408950F935F9353E0A3E6C7 +:1006EA00B0E08093610090936200009161001091E4 +:1006FA0062002AE030E064DDED920093610010931D +:10070A0062005A9591F75F910F9108950F931F9385 +:10071A00EAE7F7E01127E00FF11F04901F910F910C +:10072A000895C59A53E039EA4DE71DD0C598089552 +:10073A00C59A5CE034E34DEF16D0C59808950F933F +:10074A001F932F932AE01FEF0FEF0A95F1F71A95DF +:10075A00D9F72A95C1F72F911F910F91089541500A +:10076A003040E8F70895415030405040E0F708958E +:0E077A00C0F9A4B0999282F880909CBFC68905 :00000001FF diff --git a/nbproject/Makefile-genesis.properties b/nbproject/Makefile-genesis.properties index f7e7100..dd9fb85 100644 --- a/nbproject/Makefile-genesis.properties +++ b/nbproject/Makefile-genesis.properties @@ -1,5 +1,5 @@ # -#Wed Jun 28 17:31:11 MSK 2023 +#Fri Jun 30 15:31:30 MSK 2023 default.languagetoolchain.version=2.2.7 default.Pack.dfplocation=/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151 conf.ids=default