From 9fae0d671e89fc0ff8ded69864a1bb4d138ae0fd Mon Sep 17 00:00:00 2001 From: sergeyyarkov Date: Sat, 5 Aug 2023 04:35:17 +0300 Subject: [PATCH] select resolution --- build/default/production/dstemperature.o | Bin 2592 -> 3468 bytes build/default/production/main.o | Bin 4488 -> 4552 bytes .../attiny45v_thermometer.X.production.elf | Bin 7756 -> 8144 bytes .../attiny45v_thermometer.X.production.hex | 116 ++- .../attiny45v_thermometer.X.production.lss | 906 ++++++++++-------- .../attiny45v_thermometer.X.production.map | 83 +- dstemperature.c | 50 +- dstemperature.h | 20 +- main.c | 2 + 9 files changed, 697 insertions(+), 480 deletions(-) diff --git a/build/default/production/dstemperature.o b/build/default/production/dstemperature.o index 7f6f088e3a143c831eb5589fe98ea599661dc82c..77e81a1e3048b7fee7e9da9b81ce5b71b5cc23c4 100644 GIT binary patch literal 3468 zcma)8|8G-O6hE(TKn2`nAQC}01ldr0EnkF*3ez%246?ZmFvjHBbuVtRtxfkJq9m-F z%0`LnI*XejCMJgXACUM{V>BX(P>eCgAK(Eq6Io;=gb-t>pYwX}cKb5avz(sK`P_3q z@4VZ4Z+E0_*GrnFku;5(X(l6DF`sA*gPYufYFbK*=|(!AE*q&BIX`k~)$YWc?=X5MK)GS(%;Jdwpj<`zhtn5NAJ=Xhl)Iz# zB?kNZ6UX}ha`H>HsiboUpVyqb_#B!@_Mg+V6O=1U@!w28{>;#C$$rWXU3EV%^QY|Z z_$1}tM;B^W+f|*s2oD&t#5fR3A$YB&&~TQ|mJ|{R4@i zSal%ie6J0ZjaBqz(wWqe(W+i}-|~?K%(*f$*eJ3J8ZLl_a3t) z8tsgjm8!uXs+M#%;vR~Ta1lHQ0_%Fs(Z48Zsyf7y=cc0>Eu&~k?XVw%(iLv zX8vK|=aqaF@OC9%H;ozG%-7&^rU&oyONy#>n(N8^o*aitF`X7F8TVi6$sh3K|%q z*NR6)vLoEt8SZI;j@e{|+nOU#i?qkWZPd_h?dynJX7m1zSX09*)A_!5hi$!h$hM{# zo>)YLnnE?^o>*HLMalz0(b%C`9?%%KdaUk9QK|b7rB+dCw(KUWC)#eBk#Y@_R9EMBE_o8;H-rb#5Hi0@qQ)XZ>{rzo}rr z;&ni?ybk}`KWe7mSFE91Uq-~Qx#Ryb#+ZvaNS)GH}SlWVH75kP){!!v?d4a=1LV z%Irm+n_>1M@0~DvRq^#Odrc@>xGC;2I&*2vUf{Vej7YSr%j&jyx&E&$MHvCawXUUgL%<1_VNb?Z^%eeOSBVbw-*WjzaULQ{%26t`x1IPFv$JkN|^3%H8`FVgtN8zhQ#>F{LXMD_woxQgAo(Ygf48_Ne*S%MRc`Y>X>!SFdKa{|K@w9#El5gqD5b)o4sns-pmleW?sh1onRF;L>7!^f zNQWXKA~AyqF14eG7FPu+M6BS@!A&fF-{lWx^1+w)z4yQO{qKLdmGRANGauBBifo9; zML=Xyd^z5_aIMuI8vE+rBHR72{C%~zwpXYv zht05G_Q67H(K0^LB(l7JL`2))V zcA$sO$vSU?O#^liQH=Jl%Oy8mk(%MdYA1$jM#-6gjRAw(Pm`NoJ}8zFnSifP@&LgU zJZ;b%Cr=CZAoAZKP{V_yxLDUQ(TGWgR4$G-y z;1tONHuxEMzQAT7Yzklv+h+`a3STq)CVbQI=kQMe>ahNqVC4*E5p>MKn*K=K#Xnin zon&3Fx}D?}mQlrNM*p})tD=Qe@%&HZ7MTM$KKDh*C4e6WbF>#gRvT_`=^hxXLV$M1 z5t)Oh0=GO+XoC+c>>w^h3hSmSgr{u|DR3JDg*V{C3j2t=RG58bszP|$7btK!oPpC1 t6h4DfVH%*dEj>(^oCUn9M<8x<8K*H^*sR68i%Bzxfq_AYL4tvU5y*f70U)i2#y8*m zmsN?8CpfhvD7830r?ez9f3gs}5fcN$W@q+R=6Wfh9%faD0V*IiAB3$2VuK6>0v#Y` z7G+>C0MdFOHdNdM#0Dt@0t+ApsR7B`f!OLm0tnoIm{|$TWbgyAMIh_|5L=XiiNRpA zEw?ulW5wi7UVp|3lWzja6_Yjj{F!t(CRg$KF$PRN$>-15Gg*?~pYg=xOd$DY@=hRG zGnrGspK-zDNC9oepveoFg(uGt5Mceo#lX-qd98plW5(o*0_u!KlYauqhRKS8>a0tc W85kNS`wA*csIW0G1R@0#j0pgypF1J| delta 277 zcmX@1+@U-{fpNn|MNa0;M$EgI7`-OHWffdkeFo3a25^85jyC U_X;XY@USs3STI7|03u;b0I75@T>t<8 diff --git a/dist/default/production/attiny45v_thermometer.X.production.elf b/dist/default/production/attiny45v_thermometer.X.production.elf index 5c3a95c5ea51ed46942342ca5349f0bc0694942e..086fd2d0903b62e13abaf560fc99c13863899dd7 100755 GIT binary patch delta 1871 zcmZ9MZA@EL7{|}KgTmY-Ev0BTby7!Wg4<+_Ez2~~DG(%X5!oPN8x8`Mpjm7$ zosLqpFLy=I`EIs^7!s@r&M9fKm@Et_#rS0(xVPGY%jRee0bCa9|MX>EdYapFe$UG} z|K~Zqo!T?A*Qw*e8kb(L=ur^Tqj0@Y#c8jO4U|!?aaQ<=o-BB7)^5E{FVkmd`>oe# z^L&T2bC&UrS)q!X*nLWxrgZS;%r>c7Iwo19e6d z`+pdx&dpT^ER&#CP zThdzYmtn_(-O7Xn#4IQKu$_v{t}Iv7ndx!dv|A&7$DelVUB4q}x8C-riM)#XGCc!# z^2M{EJdv0FO~_iA<5g)sUW!YZrkR5W;T?K!sC;b2@<6;O_LXj2s`qW@dyP)X;&FN` z-NRdLPi_n!_8Au(A$PFkWlNRbSrv>`Jxyz436;Lb`3k*Pb5SoV^FXk@%qGEEZ)7;oWSlzFB7e z9_BU~{{rq*2ou>_u3I6@Vd_x`YuROVNO&s8XrA0a$aaKe6G~1|LJUaV23B&E^nj11 z5u!`@1+W%tHk63J1ZKb5B#(kC;)ondev~nbpIjFoiQb^ZOm-oGZOR0MWC?78MQ}GB z9UkUaaO(xA!SVx3!Fm>-*slV-i~itaynyTrK^*xTT!{mc z9m+s#a}@U$$R3El^O30G!71iNDMi!jJ5Y+wnp4w%65mi2-M zabOL?nBa5Z2CS0;onZNXpMc*W7DU85`W-kqbR=Sq{+yCc0QrHRg4OASJPcv1;_(#!RWNH38|=<+ zfMehut~L&%j>wNGJz;AI&>M3l223wKa9swY=HU_-f|~Q%mjf&L-3G){drT z@8{|xR4w!GZ|`{ffm>M3UlgtvZrW1YVybEBYHxeXbfW#VcfMeh3hts@_D?fXr01p- z!gP^=P0N_>D+H~^z*S@j2Qf8l5>9Ij=~Y?KCB`^qCZ=89w^qvIrqJoP!s+JX&0LCxVzm?xg)escf0Sn5BhgUo#t8I z=~}IA>b$1ve}X}wiD`a7Qxl>Cs;+eeJ7PP>d92STDlO}_sR>bmrEktJH>YlWNhbyw=)Ol#DL{^`o-BDotrx4wbzs5=?ljDUIx=E z3(IHy%`v~?T>0pG$vA7nCP!kQ8G?^ybBjIjRZ{#hxJKd;@Fj`gflZ_H9{~+g9Jtnu zhcB1`HClvX%jNB2tIg>ej$&*JKCWS$UEqvm;B+?Fs&IA%oN64mBJKs#E0PflaQ+f9 zJNTZ&6z^S;Kespp-h+IqN%y_t%(bGxTO>4L*|8|$E4(b=A6ULHR)Jv3Hwtb9e?vp1 z2JZq>Gh`&FgyPueVNv~Z#f4oo7R-wIRU<*Zpg}4?9X5k^BHxC5D&URC?~33aa0>)k zjeI}Y2Bs;{`4JaBFs9NEBq?k%%wY^Geh=2MOvN+Uqv5cT-~}n41jeCw8J@_240^&u zu-s54SZ>%=h!66J4uO3rT82DQSOGqPz4>ORz;eNAa20Do#?l0@flaeR;Pr@nv65Zv zE*+4bUBJL*ANFoUDyVxD1BK zuu(xTIIJ%0@J|9_3{=%KhIroaEwc@{GSW I%;=c?2dSC - 36: 9c c2 rjmp .+1336 ; 0x570 <_exit> + 36: 1e c3 rjmp .+1596 ; 0x674 <_exit> 00000038 <__bad_interrupt>: 38: e3 cf rjmp .-58 ; 0x0 <__vectors> @@ -224,7 +224,7 @@ Disassembly of section .text: 160: ea e0 ldi r30, 0x0A ; 10 162: f0 e0 ldi r31, 0x00 ; 0 164: bf 01 movw r22, r30 - 166: dd d1 rcall .+954 ; 0x522 <__udivmodhi4> + 166: 5f d2 rcall .+1214 ; 0x626 <__udivmodhi4> 168: cb 01 movw r24, r22 16a: 2f 5f subi r18, 0xFF ; 255 16c: 6a 30 cpi r22, 0x0A ; 10 @@ -280,19 +280,19 @@ Disassembly of section .text: 1cc: 30 e0 ldi r19, 0x00 ; 0 1ce: c8 01 movw r24, r16 1d0: b9 01 movw r22, r18 - 1d2: bb d1 rcall .+886 ; 0x54a <__divmodhi4> + 1d2: 3d d2 rcall .+1146 ; 0x64e <__divmodhi4> 1d4: 8b 83 std Y+3, r24 ; 0x03 1d6: cb 01 movw r24, r22 1d8: b9 01 movw r22, r18 - 1da: b7 d1 rcall .+878 ; 0x54a <__divmodhi4> + 1da: 39 d2 rcall .+1138 ; 0x64e <__divmodhi4> 1dc: 8a 83 std Y+2, r24 ; 0x02 1de: c8 01 movw r24, r16 1e0: 64 e6 ldi r22, 0x64 ; 100 1e2: 70 e0 ldi r23, 0x00 ; 0 - 1e4: b2 d1 rcall .+868 ; 0x54a <__divmodhi4> + 1e4: 34 d2 rcall .+1128 ; 0x64e <__divmodhi4> 1e6: cb 01 movw r24, r22 1e8: b9 01 movw r22, r18 - 1ea: af d1 rcall .+862 ; 0x54a <__divmodhi4> + 1ea: 31 d2 rcall .+1122 ; 0x64e <__divmodhi4> 1ec: 89 83 std Y+1, r24 ; 0x01 1ee: 31 e0 ldi r19, 0x01 ; 1 1f0: a3 16 cp r10, r19 @@ -390,398 +390,534 @@ Disassembly of section .text: 2a4: de bf out 0x3e, r29 ; 62 2a6: 0f be out 0x3f, r0 ; 63 2a8: cd bf out 0x3d, r28 ; 61 - 2aa: 28 e0 ldi r18, 0x08 ; 8 - 2ac: 42 e0 ldi r20, 0x02 ; 2 - 2ae: 62 e0 ldi r22, 0x02 ; 2 - 2b0: 80 e0 ldi r24, 0x00 ; 0 - 2b2: 1d df rcall .-454 ; 0xee - 2b4: 46 df rcall .-372 ; 0x142 - 2b6: 04 e6 ldi r16, 0x64 ; 100 - 2b8: 10 e0 ldi r17, 0x00 ; 0 - 2ba: 01 c0 rjmp .+2 ; 0x2be + 2aa: 6b e0 ldi r22, 0x0B ; 11 + 2ac: ce 01 movw r24, r28 + 2ae: 01 96 adiw r24, 0x01 ; 1 + 2b0: e5 d0 rcall .+458 ; 0x47c + 2b2: 28 e0 ldi r18, 0x08 ; 8 + 2b4: 42 e0 ldi r20, 0x02 ; 2 + 2b6: 62 e0 ldi r22, 0x02 ; 2 + 2b8: 80 e0 ldi r24, 0x00 ; 0 + 2ba: 19 df rcall .-462 ; 0xee 2bc: 42 df rcall .-380 ; 0x142 - 2be: ce 01 movw r24, r28 - 2c0: 01 96 adiw r24, 0x01 ; 1 - 2c2: c3 d0 rcall .+390 ; 0x44a - 2c4: 81 11 cpse r24, r1 - 2c6: fa cf rjmp .-12 ; 0x2bc - 2c8: ce 01 movw r24, r28 - 2ca: 01 96 adiw r24, 0x01 ; 1 - 2cc: d1 d0 rcall .+418 ; 0x470 - 2ce: 8b 89 ldd r24, Y+19 ; 0x13 - 2d0: 9c 89 ldd r25, Y+20 ; 0x14 - 2d2: b8 01 movw r22, r16 - 2d4: 26 d1 rcall .+588 ; 0x522 <__udivmodhi4> - 2d6: 41 e0 ldi r20, 0x01 ; 1 - 2d8: 89 89 ldd r24, Y+17 ; 0x11 - 2da: 9a 89 ldd r25, Y+18 ; 0x12 - 2dc: 4c df rcall .-360 ; 0x176 - 2de: ef cf rjmp .-34 ; 0x2be + 2be: 04 e6 ldi r16, 0x64 ; 100 + 2c0: 10 e0 ldi r17, 0x00 ; 0 + 2c2: 01 c0 rjmp .+2 ; 0x2c6 + 2c4: 3e df rcall .-388 ; 0x142 + 2c6: ce 01 movw r24, r28 + 2c8: 01 96 adiw r24, 0x01 ; 1 + 2ca: 13 d1 rcall .+550 ; 0x4f2 + 2cc: 81 11 cpse r24, r1 + 2ce: fa cf rjmp .-12 ; 0x2c4 + 2d0: ce 01 movw r24, r28 + 2d2: 01 96 adiw r24, 0x01 ; 1 + 2d4: 21 d1 rcall .+578 ; 0x518 + 2d6: 8b 89 ldd r24, Y+19 ; 0x13 + 2d8: 9c 89 ldd r25, Y+20 ; 0x14 + 2da: b8 01 movw r22, r16 + 2dc: a4 d1 rcall .+840 ; 0x626 <__udivmodhi4> + 2de: 41 e0 ldi r20, 0x01 ; 1 + 2e0: 89 89 ldd r24, Y+17 ; 0x11 + 2e2: 9a 89 ldd r25, Y+18 ; 0x12 + 2e4: 48 df rcall .-368 ; 0x176 + 2e6: ef cf rjmp .-34 ; 0x2c6 -000002e0 : - 2e0: f8 94 cli - 2e2: bc 9a sbi 0x17, 4 ; 23 - 2e4: 8f eb ldi r24, 0xBF ; 191 - 2e6: 93 e0 ldi r25, 0x03 ; 3 - 2e8: 01 97 sbiw r24, 0x01 ; 1 - 2ea: f1 f7 brne .-4 ; 0x2e8 - 2ec: 00 c0 rjmp .+0 ; 0x2ee - 2ee: 00 00 nop - 2f0: bc 98 cbi 0x17, 4 ; 23 - 2f2: 9a eb ldi r25, 0xBA ; 186 - 2f4: 9a 95 dec r25 - 2f6: f1 f7 brne .-4 ; 0x2f4 - 2f8: 00 c0 rjmp .+0 ; 0x2fa - 2fa: 86 b3 in r24, 0x16 ; 22 - 2fc: e3 e3 ldi r30, 0x33 ; 51 - 2fe: f3 e0 ldi r31, 0x03 ; 3 - 300: 31 97 sbiw r30, 0x01 ; 1 - 302: f1 f7 brne .-4 ; 0x300 - 304: 00 c0 rjmp .+0 ; 0x306 - 306: 00 00 nop - 308: 78 94 sei - 30a: 82 95 swap r24 - 30c: 81 70 andi r24, 0x01 ; 1 - 30e: 91 e0 ldi r25, 0x01 ; 1 - 310: 89 27 eor r24, r25 - 312: 08 95 ret +000002e8 : + 2e8: f8 94 cli + 2ea: bc 9a sbi 0x17, 4 ; 23 + 2ec: 8f eb ldi r24, 0xBF ; 191 + 2ee: 93 e0 ldi r25, 0x03 ; 3 + 2f0: 01 97 sbiw r24, 0x01 ; 1 + 2f2: f1 f7 brne .-4 ; 0x2f0 + 2f4: 00 c0 rjmp .+0 ; 0x2f6 + 2f6: 00 00 nop + 2f8: bc 98 cbi 0x17, 4 ; 23 + 2fa: 9a eb ldi r25, 0xBA ; 186 + 2fc: 9a 95 dec r25 + 2fe: f1 f7 brne .-4 ; 0x2fc + 300: 00 c0 rjmp .+0 ; 0x302 + 302: 86 b3 in r24, 0x16 ; 22 + 304: e3 e3 ldi r30, 0x33 ; 51 + 306: f3 e0 ldi r31, 0x03 ; 3 + 308: 31 97 sbiw r30, 0x01 ; 1 + 30a: f1 f7 brne .-4 ; 0x308 + 30c: 00 c0 rjmp .+0 ; 0x30e + 30e: 00 00 nop + 310: 78 94 sei + 312: 82 95 swap r24 + 314: 81 70 andi r24, 0x01 ; 1 + 316: 91 e0 ldi r25, 0x01 ; 1 + 318: 89 27 eor r24, r25 + 31a: 08 95 ret -00000314 : - 314: 98 e0 ldi r25, 0x08 ; 8 - 316: 0d c0 rjmp .+26 ; 0x332 - 318: bc 9a sbi 0x17, 4 ; 23 - 31a: 20 ea ldi r18, 0xA0 ; 160 - 31c: 2a 95 dec r18 - 31e: f1 f7 brne .-4 ; 0x31c - 320: bc 98 cbi 0x17, 4 ; 23 - 322: 2a e1 ldi r18, 0x1A ; 26 +0000031c : + 31c: 98 e0 ldi r25, 0x08 ; 8 + 31e: 0d c0 rjmp .+26 ; 0x33a + 320: bc 9a sbi 0x17, 4 ; 23 + 322: 20 ea ldi r18, 0xA0 ; 160 324: 2a 95 dec r18 - 326: f1 f7 brne .-4 ; 0x324 - 328: 00 c0 rjmp .+0 ; 0x32a - 32a: 78 94 sei - 32c: 86 95 lsr r24 - 32e: 91 50 subi r25, 0x01 ; 1 - 330: 69 f0 breq .+26 ; 0x34c - 332: f8 94 cli - 334: 80 ff sbrs r24, 0 - 336: f0 cf rjmp .-32 ; 0x318 - 338: bc 9a sbi 0x17, 4 ; 23 - 33a: 20 e1 ldi r18, 0x10 ; 16 - 33c: 2a 95 dec r18 - 33e: f1 f7 brne .-4 ; 0x33c - 340: bc 98 cbi 0x17, 4 ; 23 - 342: 2a ea ldi r18, 0xAA ; 170 + 326: f1 f7 brne .-4 ; 0x324 + 328: bc 98 cbi 0x17, 4 ; 23 + 32a: 2a e1 ldi r18, 0x1A ; 26 + 32c: 2a 95 dec r18 + 32e: f1 f7 brne .-4 ; 0x32c + 330: 00 c0 rjmp .+0 ; 0x332 + 332: 78 94 sei + 334: 86 95 lsr r24 + 336: 91 50 subi r25, 0x01 ; 1 + 338: 69 f0 breq .+26 ; 0x354 + 33a: f8 94 cli + 33c: 80 ff sbrs r24, 0 + 33e: f0 cf rjmp .-32 ; 0x320 + 340: bc 9a sbi 0x17, 4 ; 23 + 342: 20 e1 ldi r18, 0x10 ; 16 344: 2a 95 dec r18 - 346: f1 f7 brne .-4 ; 0x344 - 348: 00 c0 rjmp .+0 ; 0x34a - 34a: ef cf rjmp .-34 ; 0x32a - 34c: 08 95 ret + 346: f1 f7 brne .-4 ; 0x344 + 348: bc 98 cbi 0x17, 4 ; 23 + 34a: 2a ea ldi r18, 0xAA ; 170 + 34c: 2a 95 dec r18 + 34e: f1 f7 brne .-4 ; 0x34c + 350: 00 c0 rjmp .+0 ; 0x352 + 352: ef cf rjmp .-34 ; 0x332 + 354: 08 95 ret -0000034e : - 34e: 98 e0 ldi r25, 0x08 ; 8 - 350: 80 e0 ldi r24, 0x00 ; 0 - 352: 07 c0 rjmp .+14 ; 0x362 - 354: 22 e9 ldi r18, 0x92 ; 146 - 356: 2a 95 dec r18 - 358: f1 f7 brne .-4 ; 0x356 - 35a: 00 c0 rjmp .+0 ; 0x35c - 35c: 78 94 sei - 35e: 91 50 subi r25, 0x01 ; 1 - 360: 71 f0 breq .+28 ; 0x37e - 362: f8 94 cli - 364: 86 95 lsr r24 - 366: bc 9a sbi 0x17, 4 ; 23 - 368: 20 e1 ldi r18, 0x10 ; 16 - 36a: 2a 95 dec r18 - 36c: f1 f7 brne .-4 ; 0x36a - 36e: bc 98 cbi 0x17, 4 ; 23 - 370: 28 e1 ldi r18, 0x18 ; 24 +00000356 : + 356: 98 e0 ldi r25, 0x08 ; 8 + 358: 80 e0 ldi r24, 0x00 ; 0 + 35a: 07 c0 rjmp .+14 ; 0x36a + 35c: 22 e9 ldi r18, 0x92 ; 146 + 35e: 2a 95 dec r18 + 360: f1 f7 brne .-4 ; 0x35e + 362: 00 c0 rjmp .+0 ; 0x364 + 364: 78 94 sei + 366: 91 50 subi r25, 0x01 ; 1 + 368: 71 f0 breq .+28 ; 0x386 + 36a: f8 94 cli + 36c: 86 95 lsr r24 + 36e: bc 9a sbi 0x17, 4 ; 23 + 370: 20 e1 ldi r18, 0x10 ; 16 372: 2a 95 dec r18 - 374: f1 f7 brne .-4 ; 0x372 - 376: b4 9b sbis 0x16, 4 ; 22 - 378: ed cf rjmp .-38 ; 0x354 - 37a: 80 68 ori r24, 0x80 ; 128 - 37c: eb cf rjmp .-42 ; 0x354 - 37e: 08 95 ret - -00000380 : - 380: af df rcall .-162 ; 0x2e0 - 382: 81 11 cpse r24, r1 - 384: 01 c0 rjmp .+2 ; 0x388 + 374: f1 f7 brne .-4 ; 0x372 + 376: bc 98 cbi 0x17, 4 ; 23 + 378: 28 e1 ldi r18, 0x18 ; 24 + 37a: 2a 95 dec r18 + 37c: f1 f7 brne .-4 ; 0x37a + 37e: b4 9b sbis 0x16, 4 ; 22 + 380: ed cf rjmp .-38 ; 0x35c + 382: 80 68 ori r24, 0x80 ; 128 + 384: eb cf rjmp .-42 ; 0x35c 386: 08 95 ret - 388: 8c ec ldi r24, 0xCC ; 204 - 38a: c4 df rcall .-120 ; 0x314 - 38c: 81 e0 ldi r24, 0x01 ; 1 - 38e: fb cf rjmp .-10 ; 0x386 -00000390 : - 390: 0f 93 push r16 - 392: 1f 93 push r17 - 394: cf 93 push r28 - 396: df 93 push r29 - 398: 8c 01 movw r16, r24 - 39a: a2 df rcall .-188 ; 0x2e0 - 39c: 81 11 cpse r24, r1 - 39e: 05 c0 rjmp .+10 ; 0x3aa - 3a0: df 91 pop r29 - 3a2: cf 91 pop r28 - 3a4: 1f 91 pop r17 - 3a6: 0f 91 pop r16 - 3a8: 08 95 ret - 3aa: 83 e3 ldi r24, 0x33 ; 51 - 3ac: b3 df rcall .-154 ; 0x314 - 3ae: e8 01 movw r28, r16 - 3b0: 08 5f subi r16, 0xF8 ; 248 - 3b2: 1f 4f sbci r17, 0xFF ; 255 - 3b4: cc df rcall .-104 ; 0x34e - 3b6: 89 93 st Y+, r24 - 3b8: c0 17 cp r28, r16 - 3ba: d1 07 cpc r29, r17 - 3bc: d9 f7 brne .-10 ; 0x3b4 - 3be: 81 e0 ldi r24, 0x01 ; 1 - 3c0: ef cf rjmp .-34 ; 0x3a0 +00000388 : + 388: af df rcall .-162 ; 0x2e8 + 38a: 81 11 cpse r24, r1 + 38c: 01 c0 rjmp .+2 ; 0x390 + 38e: 08 95 ret + 390: 8c ec ldi r24, 0xCC ; 204 + 392: c4 df rcall .-120 ; 0x31c + 394: 81 e0 ldi r24, 0x01 ; 1 + 396: fb cf rjmp .-10 ; 0x38e -000003c2 : - 3c2: fc 01 movw r30, r24 - 3c4: 68 0f add r22, r24 - 3c6: 79 1f adc r23, r25 - 3c8: 80 e0 ldi r24, 0x00 ; 0 - 3ca: 2c e8 ldi r18, 0x8C ; 140 - 3cc: 0b c0 rjmp .+22 ; 0x3e4 - 3ce: 86 95 lsr r24 - 3d0: 91 50 subi r25, 0x01 ; 1 - 3d2: 29 f0 breq .+10 ; 0x3de - 3d4: 80 ff sbrs r24, 0 - 3d6: fb cf rjmp .-10 ; 0x3ce - 3d8: 86 95 lsr r24 - 3da: 82 27 eor r24, r18 - 3dc: f9 cf rjmp .-14 ; 0x3d0 - 3de: e6 17 cp r30, r22 - 3e0: f7 07 cpc r31, r23 - 3e2: 21 f0 breq .+8 ; 0x3ec - 3e4: 91 91 ld r25, Z+ - 3e6: 89 27 eor r24, r25 - 3e8: 98 e0 ldi r25, 0x08 ; 8 - 3ea: f4 cf rjmp .-24 ; 0x3d4 - 3ec: 08 95 ret +00000398 : + 398: 0f 93 push r16 + 39a: 1f 93 push r17 + 39c: cf 93 push r28 + 39e: df 93 push r29 + 3a0: 8c 01 movw r16, r24 + 3a2: a2 df rcall .-188 ; 0x2e8 + 3a4: 81 11 cpse r24, r1 + 3a6: 05 c0 rjmp .+10 ; 0x3b2 + 3a8: df 91 pop r29 + 3aa: cf 91 pop r28 + 3ac: 1f 91 pop r17 + 3ae: 0f 91 pop r16 + 3b0: 08 95 ret + 3b2: 83 e3 ldi r24, 0x33 ; 51 + 3b4: b3 df rcall .-154 ; 0x31c + 3b6: e8 01 movw r28, r16 + 3b8: 08 5f subi r16, 0xF8 ; 248 + 3ba: 1f 4f sbci r17, 0xFF ; 255 + 3bc: cc df rcall .-104 ; 0x356 + 3be: 89 93 st Y+, r24 + 3c0: c0 17 cp r28, r16 + 3c2: d1 07 cpc r29, r17 + 3c4: d9 f7 brne .-10 ; 0x3bc + 3c6: 81 e0 ldi r24, 0x01 ; 1 + 3c8: ef cf rjmp .-34 ; 0x3a8 -000003ee : - 3ee: ef 92 push r14 - 3f0: ff 92 push r15 - 3f2: 0f 93 push r16 - 3f4: 1f 93 push r17 - 3f6: cf 93 push r28 - 3f8: df 93 push r29 - 3fa: 7c 01 movw r14, r24 - 3fc: c1 df rcall .-126 ; 0x380 - 3fe: 8e eb ldi r24, 0xBE ; 190 - 400: 89 df rcall .-238 ; 0x314 - 402: e7 01 movw r28, r14 - 404: 87 01 movw r16, r14 - 406: 08 5f subi r16, 0xF8 ; 248 - 408: 1f 4f sbci r17, 0xFF ; 255 - 40a: a1 df rcall .-190 ; 0x34e - 40c: 89 93 st Y+, r24 - 40e: c0 17 cp r28, r16 - 410: d1 07 cpc r29, r17 - 412: d9 f7 brne .-10 ; 0x40a <__LOCK_REGION_LENGTH__+0xa> - 414: 68 e0 ldi r22, 0x08 ; 8 - 416: 70 e0 ldi r23, 0x00 ; 0 - 418: c7 01 movw r24, r14 - 41a: d3 df rcall .-90 ; 0x3c2 - 41c: c8 2f mov r28, r24 - 41e: 97 df rcall .-210 ; 0x34e - 420: 91 e0 ldi r25, 0x01 ; 1 - 422: c8 13 cpse r28, r24 - 424: 90 e0 ldi r25, 0x00 ; 0 - 426: 89 2f mov r24, r25 - 428: df 91 pop r29 - 42a: cf 91 pop r28 - 42c: 1f 91 pop r17 - 42e: 0f 91 pop r16 - 430: ff 90 pop r15 - 432: ef 90 pop r14 - 434: 08 95 ret +000003ca : + 3ca: fc 01 movw r30, r24 + 3cc: 68 0f add r22, r24 + 3ce: 79 1f adc r23, r25 + 3d0: 80 e0 ldi r24, 0x00 ; 0 + 3d2: 2c e8 ldi r18, 0x8C ; 140 + 3d4: 0b c0 rjmp .+22 ; 0x3ec + 3d6: 86 95 lsr r24 + 3d8: 91 50 subi r25, 0x01 ; 1 + 3da: 29 f0 breq .+10 ; 0x3e6 + 3dc: 80 ff sbrs r24, 0 + 3de: fb cf rjmp .-10 ; 0x3d6 + 3e0: 86 95 lsr r24 + 3e2: 82 27 eor r24, r18 + 3e4: f9 cf rjmp .-14 ; 0x3d8 + 3e6: e6 17 cp r30, r22 + 3e8: f7 07 cpc r31, r23 + 3ea: 21 f0 breq .+8 ; 0x3f4 + 3ec: 91 91 ld r25, Z+ + 3ee: 89 27 eor r24, r25 + 3f0: 98 e0 ldi r25, 0x08 ; 8 + 3f2: f4 cf rjmp .-24 ; 0x3dc + 3f4: 08 95 ret -00000436 : - 436: 54 df rcall .-344 ; 0x2e0 - 438: 81 11 cpse r24, r1 - 43a: 01 c0 rjmp .+2 ; 0x43e +000003f6 : + 3f6: ef 92 push r14 + 3f8: ff 92 push r15 + 3fa: 0f 93 push r16 + 3fc: 1f 93 push r17 + 3fe: cf 93 push r28 + 400: df 93 push r29 + 402: 7c 01 movw r14, r24 + 404: c1 df rcall .-126 ; 0x388 + 406: 8e eb ldi r24, 0xBE ; 190 + 408: 89 df rcall .-238 ; 0x31c + 40a: e7 01 movw r28, r14 + 40c: 87 01 movw r16, r14 + 40e: 08 5f subi r16, 0xF8 ; 248 + 410: 1f 4f sbci r17, 0xFF ; 255 + 412: a1 df rcall .-190 ; 0x356 + 414: 89 93 st Y+, r24 + 416: c0 17 cp r28, r16 + 418: d1 07 cpc r29, r17 + 41a: d9 f7 brne .-10 ; 0x412 <__LOCK_REGION_LENGTH__+0x12> + 41c: 68 e0 ldi r22, 0x08 ; 8 + 41e: 70 e0 ldi r23, 0x00 ; 0 + 420: c7 01 movw r24, r14 + 422: d3 df rcall .-90 ; 0x3ca + 424: c8 2f mov r28, r24 + 426: 97 df rcall .-210 ; 0x356 + 428: 91 e0 ldi r25, 0x01 ; 1 + 42a: c8 13 cpse r28, r24 + 42c: 90 e0 ldi r25, 0x00 ; 0 + 42e: 89 2f mov r24, r25 + 430: df 91 pop r29 + 432: cf 91 pop r28 + 434: 1f 91 pop r17 + 436: 0f 91 pop r16 + 438: ff 90 pop r15 + 43a: ef 90 pop r14 43c: 08 95 ret - 43e: 8c ec ldi r24, 0xCC ; 204 - 440: 69 df rcall .-302 ; 0x314 - 442: 84 e4 ldi r24, 0x44 ; 68 - 444: 67 df rcall .-306 ; 0x314 - 446: 81 e0 ldi r24, 0x01 ; 1 - 448: f9 cf rjmp .-14 ; 0x43c -0000044a : - 44a: cf 93 push r28 - 44c: df 93 push r29 - 44e: ec 01 movw r28, r24 - 450: 47 df rcall .-370 ; 0x2e0 - 452: 81 11 cpse r24, r1 - 454: 04 c0 rjmp .+8 ; 0x45e - 456: 81 e0 ldi r24, 0x01 ; 1 - 458: df 91 pop r29 - 45a: cf 91 pop r28 - 45c: 08 95 ret - 45e: ce 01 movw r24, r28 - 460: 08 96 adiw r24, 0x08 ; 8 - 462: 96 df rcall .-212 ; 0x390 - 464: 81 e0 ldi r24, 0x01 ; 1 - 466: 98 85 ldd r25, Y+8 ; 0x08 - 468: 98 32 cpi r25, 0x28 ; 40 - 46a: b1 f7 brne .-20 ; 0x458 - 46c: 80 e0 ldi r24, 0x00 ; 0 - 46e: f4 cf rjmp .-24 ; 0x458 +0000043e : + 43e: 54 df rcall .-344 ; 0x2e8 + 440: 81 11 cpse r24, r1 + 442: 01 c0 rjmp .+2 ; 0x446 + 444: 08 95 ret + 446: a0 df rcall .-192 ; 0x388 + 448: 88 e4 ldi r24, 0x48 ; 72 + 44a: 68 df rcall .-304 ; 0x31c + 44c: 8f e1 ldi r24, 0x1F ; 31 + 44e: 9e e4 ldi r25, 0x4E ; 78 + 450: 01 97 sbiw r24, 0x01 ; 1 + 452: f1 f7 brne .-4 ; 0x450 + 454: 00 c0 rjmp .+0 ; 0x456 + 456: 00 00 nop + 458: 81 e0 ldi r24, 0x01 ; 1 + 45a: f4 cf rjmp .-24 ; 0x444 -00000470 : - 470: cf 93 push r28 - 472: df 93 push r29 - 474: ec 01 movw r28, r24 - 476: df df rcall .-66 ; 0x436 - 478: 81 11 cpse r24, r1 - 47a: 03 c0 rjmp .+6 ; 0x482 - 47c: df 91 pop r29 - 47e: cf 91 pop r28 - 480: 08 95 ret - 482: 2f e7 ldi r18, 0x7F ; 127 - 484: 8f e4 ldi r24, 0x4F ; 79 - 486: 92 e1 ldi r25, 0x12 ; 18 - 488: 21 50 subi r18, 0x01 ; 1 - 48a: 80 40 sbci r24, 0x00 ; 0 - 48c: 90 40 sbci r25, 0x00 ; 0 - 48e: e1 f7 brne .-8 ; 0x488 - 490: 00 c0 rjmp .+0 ; 0x492 - 492: 00 00 nop - 494: ce 01 movw r24, r28 - 496: ab df rcall .-170 ; 0x3ee - 498: 88 23 and r24, r24 - 49a: 81 f3 breq .-32 ; 0x47c - 49c: 29 81 ldd r18, Y+1 ; 0x01 - 49e: 38 81 ld r19, Y - 4a0: 52 2f mov r21, r18 - 4a2: 43 2f mov r20, r19 - 4a4: ca 01 movw r24, r20 - 4a6: 99 23 and r25, r25 - 4a8: bc f1 brlt .+110 ; 0x518 - 4aa: 95 95 asr r25 - 4ac: 87 95 ror r24 - 4ae: 95 95 asr r25 - 4b0: 87 95 ror r24 - 4b2: 95 95 asr r25 - 4b4: 87 95 ror r24 - 4b6: 95 95 asr r25 - 4b8: 87 95 ror r24 - 4ba: 99 8b std Y+17, r25 ; 0x11 - 4bc: 88 8b std Y+16, r24 ; 0x10 - 4be: 28 7f andi r18, 0xF8 ; 248 - 4c0: 11 f0 breq .+4 ; 0x4c6 - 4c2: 31 95 neg r19 - 4c4: 38 83 st Y, r19 - 4c6: 88 81 ld r24, Y - 4c8: 8f 70 andi r24, 0x0F ; 15 - 4ca: 28 2f mov r18, r24 - 4cc: 30 e0 ldi r19, 0x00 ; 0 - 4ce: c9 01 movw r24, r18 - 4d0: 88 0f add r24, r24 - 4d2: 99 1f adc r25, r25 - 4d4: 82 95 swap r24 - 4d6: 92 95 swap r25 - 4d8: 90 7f andi r25, 0xF0 ; 240 - 4da: 98 27 eor r25, r24 - 4dc: 80 7f andi r24, 0xF0 ; 240 - 4de: 98 27 eor r25, r24 - 4e0: 82 1b sub r24, r18 - 4e2: 93 0b sbc r25, r19 - 4e4: 88 0f add r24, r24 - 4e6: 99 1f adc r25, r25 - 4e8: 88 0f add r24, r24 - 4ea: 99 1f adc r25, r25 - 4ec: 82 0f add r24, r18 - 4ee: 93 1f adc r25, r19 - 4f0: 88 0f add r24, r24 - 4f2: 99 1f adc r25, r25 - 4f4: 88 0f add r24, r24 - 4f6: 99 1f adc r25, r25 - 4f8: 88 0f add r24, r24 - 4fa: 99 1f adc r25, r25 - 4fc: 9c 01 movw r18, r24 - 4fe: 99 23 and r25, r25 - 500: 6c f0 brlt .+26 ; 0x51c - 502: 35 95 asr r19 - 504: 27 95 ror r18 - 506: 35 95 asr r19 - 508: 27 95 ror r18 - 50a: 35 95 asr r19 - 50c: 27 95 ror r18 - 50e: 35 95 asr r19 - 510: 27 95 ror r18 - 512: 3b 8b std Y+19, r19 ; 0x13 - 514: 2a 8b std Y+18, r18 ; 0x12 - 516: b2 cf rjmp .-156 ; 0x47c - 518: 0f 96 adiw r24, 0x0f ; 15 - 51a: c7 cf rjmp .-114 ; 0x4aa - 51c: 21 5f subi r18, 0xF1 ; 241 - 51e: 3f 4f sbci r19, 0xFF ; 255 - 520: f0 cf rjmp .-32 ; 0x502 +0000045c : + 45c: cf 93 push r28 + 45e: df 93 push r29 + 460: ec 01 movw r28, r24 + 462: 92 df rcall .-220 ; 0x388 + 464: 8e e4 ldi r24, 0x4E ; 78 + 466: 5a df rcall .-332 ; 0x31c + 468: 88 81 ld r24, Y + 46a: 58 df rcall .-336 ; 0x31c + 46c: 89 81 ldd r24, Y+1 ; 0x01 + 46e: 56 df rcall .-340 ; 0x31c + 470: 8a 81 ldd r24, Y+2 ; 0x02 + 472: 54 df rcall .-344 ; 0x31c + 474: e4 df rcall .-56 ; 0x43e + 476: df 91 pop r29 + 478: cf 91 pop r28 + 47a: 08 95 ret -00000522 <__udivmodhi4>: - 522: aa 1b sub r26, r26 - 524: bb 1b sub r27, r27 - 526: 51 e1 ldi r21, 0x11 ; 17 - 528: 07 c0 rjmp .+14 ; 0x538 <__udivmodhi4_ep> +0000047c : + 47c: ff 92 push r15 + 47e: 0f 93 push r16 + 480: 1f 93 push r17 + 482: cf 93 push r28 + 484: df 93 push r29 + 486: 00 d0 rcall .+0 ; 0x488 + 488: 1f 92 push r1 + 48a: cd b7 in r28, 0x3d ; 61 + 48c: de b7 in r29, 0x3e ; 62 + 48e: 8c 01 movw r16, r24 + 490: f6 2e mov r15, r22 + 492: b1 df rcall .-158 ; 0x3f6 + 494: f8 01 movw r30, r16 + 496: 82 81 ldd r24, Z+2 ; 0x02 + 498: 89 83 std Y+1, r24 ; 0x01 + 49a: 83 81 ldd r24, Z+3 ; 0x03 + 49c: 8a 83 std Y+2, r24 ; 0x02 + 49e: fa e0 ldi r31, 0x0A ; 10 + 4a0: ff 16 cp r15, r31 + 4a2: b9 f0 breq .+46 ; 0x4d2 + 4a4: 8b e0 ldi r24, 0x0B ; 11 + 4a6: f8 16 cp r15, r24 + 4a8: 89 f0 breq .+34 ; 0x4cc + 4aa: e9 e0 ldi r30, 0x09 ; 9 + 4ac: fe 16 cp r15, r30 + 4ae: a1 f0 breq .+40 ; 0x4d8 + 4b0: 8f e7 ldi r24, 0x7F ; 127 + 4b2: 8b 83 std Y+3, r24 ; 0x03 + 4b4: ce 01 movw r24, r28 + 4b6: 01 96 adiw r24, 0x01 ; 1 + 4b8: d1 df rcall .-94 ; 0x45c + 4ba: 0f 90 pop r0 + 4bc: 0f 90 pop r0 + 4be: 0f 90 pop r0 + 4c0: df 91 pop r29 + 4c2: cf 91 pop r28 + 4c4: 1f 91 pop r17 + 4c6: 0f 91 pop r16 + 4c8: ff 90 pop r15 + 4ca: 08 95 ret + 4cc: 8f e5 ldi r24, 0x5F ; 95 + 4ce: 8b 83 std Y+3, r24 ; 0x03 + 4d0: f1 cf rjmp .-30 ; 0x4b4 + 4d2: 8f e3 ldi r24, 0x3F ; 63 + 4d4: 8b 83 std Y+3, r24 ; 0x03 + 4d6: ee cf rjmp .-36 ; 0x4b4 + 4d8: 8f e1 ldi r24, 0x1F ; 31 + 4da: 8b 83 std Y+3, r24 ; 0x03 + 4dc: eb cf rjmp .-42 ; 0x4b4 -0000052a <__udivmodhi4_loop>: - 52a: aa 1f adc r26, r26 - 52c: bb 1f adc r27, r27 - 52e: a6 17 cp r26, r22 - 530: b7 07 cpc r27, r23 - 532: 10 f0 brcs .+4 ; 0x538 <__udivmodhi4_ep> - 534: a6 1b sub r26, r22 - 536: b7 0b sbc r27, r23 +000004de : + 4de: 04 df rcall .-504 ; 0x2e8 + 4e0: 81 11 cpse r24, r1 + 4e2: 01 c0 rjmp .+2 ; 0x4e6 + 4e4: 08 95 ret + 4e6: 8c ec ldi r24, 0xCC ; 204 + 4e8: 19 df rcall .-462 ; 0x31c + 4ea: 84 e4 ldi r24, 0x44 ; 68 + 4ec: 17 df rcall .-466 ; 0x31c + 4ee: 81 e0 ldi r24, 0x01 ; 1 + 4f0: f9 cf rjmp .-14 ; 0x4e4 -00000538 <__udivmodhi4_ep>: - 538: 88 1f adc r24, r24 - 53a: 99 1f adc r25, r25 - 53c: 5a 95 dec r21 - 53e: a9 f7 brne .-22 ; 0x52a <__udivmodhi4_loop> - 540: 80 95 com r24 - 542: 90 95 com r25 - 544: bc 01 movw r22, r24 - 546: cd 01 movw r24, r26 - 548: 08 95 ret +000004f2 : + 4f2: cf 93 push r28 + 4f4: df 93 push r29 + 4f6: ec 01 movw r28, r24 + 4f8: f7 de rcall .-530 ; 0x2e8 + 4fa: 81 11 cpse r24, r1 + 4fc: 04 c0 rjmp .+8 ; 0x506 + 4fe: 81 e0 ldi r24, 0x01 ; 1 + 500: df 91 pop r29 + 502: cf 91 pop r28 + 504: 08 95 ret + 506: ce 01 movw r24, r28 + 508: 08 96 adiw r24, 0x08 ; 8 + 50a: 46 df rcall .-372 ; 0x398 + 50c: 81 e0 ldi r24, 0x01 ; 1 + 50e: 98 85 ldd r25, Y+8 ; 0x08 + 510: 98 32 cpi r25, 0x28 ; 40 + 512: b1 f7 brne .-20 ; 0x500 + 514: 80 e0 ldi r24, 0x00 ; 0 + 516: f4 cf rjmp .-24 ; 0x500 -0000054a <__divmodhi4>: - 54a: 97 fb bst r25, 7 - 54c: 07 2e mov r0, r23 - 54e: 16 f4 brtc .+4 ; 0x554 <__divmodhi4+0xa> - 550: 00 94 com r0 - 552: 06 d0 rcall .+12 ; 0x560 <__divmodhi4_neg1> - 554: 77 fd sbrc r23, 7 - 556: 08 d0 rcall .+16 ; 0x568 <__divmodhi4_neg2> - 558: e4 df rcall .-56 ; 0x522 <__udivmodhi4> - 55a: 07 fc sbrc r0, 7 - 55c: 05 d0 rcall .+10 ; 0x568 <__divmodhi4_neg2> - 55e: 3e f4 brtc .+14 ; 0x56e <__divmodhi4_exit> +00000518 : + 518: cf 93 push r28 + 51a: df 93 push r29 + 51c: ec 01 movw r28, r24 + 51e: df df rcall .-66 ; 0x4de + 520: 88 23 and r24, r24 + 522: 09 f4 brne .+2 ; 0x526 + 524: 56 c0 rjmp .+172 ; 0x5d2 + 526: 2c 81 ldd r18, Y+4 ; 0x04 + 528: 82 2f mov r24, r18 + 52a: 90 e0 ldi r25, 0x00 ; 0 + 52c: 80 95 com r24 + 52e: 90 95 com r25 + 530: 80 76 andi r24, 0x60 ; 96 + 532: 99 27 eor r25, r25 + 534: 89 2b or r24, r25 + 536: 09 f0 breq .+2 ; 0x53a + 538: 4f c0 rjmp .+158 ; 0x5d8 + 53a: 2f e7 ldi r18, 0x7F ; 127 + 53c: 8f e4 ldi r24, 0x4F ; 79 + 53e: 92 e1 ldi r25, 0x12 ; 18 + 540: 21 50 subi r18, 0x01 ; 1 + 542: 80 40 sbci r24, 0x00 ; 0 + 544: 90 40 sbci r25, 0x00 ; 0 + 546: e1 f7 brne .-8 ; 0x540 + 548: 00 c0 rjmp .+0 ; 0x54a + 54a: 00 00 nop + 54c: ce 01 movw r24, r28 + 54e: 53 df rcall .-346 ; 0x3f6 + 550: 88 23 and r24, r24 + 552: 09 f4 brne .+2 ; 0x556 + 554: 3e c0 rjmp .+124 ; 0x5d2 + 556: 29 81 ldd r18, Y+1 ; 0x01 + 558: 38 81 ld r19, Y + 55a: 52 2f mov r21, r18 + 55c: 43 2f mov r20, r19 + 55e: ca 01 movw r24, r20 + 560: 99 23 and r25, r25 + 562: 0c f4 brge .+2 ; 0x566 + 564: 5b c0 rjmp .+182 ; 0x61c + 566: 95 95 asr r25 + 568: 87 95 ror r24 + 56a: 95 95 asr r25 + 56c: 87 95 ror r24 + 56e: 95 95 asr r25 + 570: 87 95 ror r24 + 572: 95 95 asr r25 + 574: 87 95 ror r24 + 576: 99 8b std Y+17, r25 ; 0x11 + 578: 88 8b std Y+16, r24 ; 0x10 + 57a: 28 7f andi r18, 0xF8 ; 248 + 57c: 11 f0 breq .+4 ; 0x582 + 57e: 31 95 neg r19 + 580: 38 83 st Y, r19 + 582: 88 81 ld r24, Y + 584: 8f 70 andi r24, 0x0F ; 15 + 586: 28 2f mov r18, r24 + 588: 30 e0 ldi r19, 0x00 ; 0 + 58a: c9 01 movw r24, r18 + 58c: 88 0f add r24, r24 + 58e: 99 1f adc r25, r25 + 590: 82 95 swap r24 + 592: 92 95 swap r25 + 594: 90 7f andi r25, 0xF0 ; 240 + 596: 98 27 eor r25, r24 + 598: 80 7f andi r24, 0xF0 ; 240 + 59a: 98 27 eor r25, r24 + 59c: 82 1b sub r24, r18 + 59e: 93 0b sbc r25, r19 + 5a0: 88 0f add r24, r24 + 5a2: 99 1f adc r25, r25 + 5a4: 88 0f add r24, r24 + 5a6: 99 1f adc r25, r25 + 5a8: 82 0f add r24, r18 + 5aa: 93 1f adc r25, r19 + 5ac: 88 0f add r24, r24 + 5ae: 99 1f adc r25, r25 + 5b0: 88 0f add r24, r24 + 5b2: 99 1f adc r25, r25 + 5b4: 88 0f add r24, r24 + 5b6: 99 1f adc r25, r25 + 5b8: 9c 01 movw r18, r24 + 5ba: 99 23 and r25, r25 + 5bc: 8c f1 brlt .+98 ; 0x620 + 5be: 35 95 asr r19 + 5c0: 27 95 ror r18 + 5c2: 35 95 asr r19 + 5c4: 27 95 ror r18 + 5c6: 35 95 asr r19 + 5c8: 27 95 ror r18 + 5ca: 35 95 asr r19 + 5cc: 27 95 ror r18 + 5ce: 3b 8b std Y+19, r19 ; 0x13 + 5d0: 2a 8b std Y+18, r18 ; 0x12 + 5d2: df 91 pop r29 + 5d4: cf 91 pop r28 + 5d6: 08 95 ret + 5d8: 26 ff sbrs r18, 6 + 5da: 0a c0 rjmp .+20 ; 0x5f0 + 5dc: 2f eb ldi r18, 0xBF ; 191 + 5de: 87 e2 ldi r24, 0x27 ; 39 + 5e0: 99 e0 ldi r25, 0x09 ; 9 + 5e2: 21 50 subi r18, 0x01 ; 1 + 5e4: 80 40 sbci r24, 0x00 ; 0 + 5e6: 90 40 sbci r25, 0x00 ; 0 + 5e8: e1 f7 brne .-8 ; 0x5e2 + 5ea: 00 c0 rjmp .+0 ; 0x5ec + 5ec: 00 00 nop + 5ee: ae cf rjmp .-164 ; 0x54c + 5f0: 25 ff sbrs r18, 5 + 5f2: 0a c0 rjmp .+20 ; 0x608 + 5f4: 2f ef ldi r18, 0xFF ; 255 + 5f6: 86 e9 ldi r24, 0x96 ; 150 + 5f8: 94 e0 ldi r25, 0x04 ; 4 + 5fa: 21 50 subi r18, 0x01 ; 1 + 5fc: 80 40 sbci r24, 0x00 ; 0 + 5fe: 90 40 sbci r25, 0x00 ; 0 + 600: e1 f7 brne .-8 ; 0x5fa + 602: 00 c0 rjmp .+0 ; 0x604 + 604: 00 00 nop + 606: a2 cf rjmp .-188 ; 0x54c + 608: 2f e7 ldi r18, 0x7F ; 127 + 60a: 8b e4 ldi r24, 0x4B ; 75 + 60c: 92 e0 ldi r25, 0x02 ; 2 + 60e: 21 50 subi r18, 0x01 ; 1 + 610: 80 40 sbci r24, 0x00 ; 0 + 612: 90 40 sbci r25, 0x00 ; 0 + 614: e1 f7 brne .-8 ; 0x60e + 616: 00 c0 rjmp .+0 ; 0x618 + 618: 00 00 nop + 61a: 98 cf rjmp .-208 ; 0x54c + 61c: 0f 96 adiw r24, 0x0f ; 15 + 61e: a3 cf rjmp .-186 ; 0x566 + 620: 21 5f subi r18, 0xF1 ; 241 + 622: 3f 4f sbci r19, 0xFF ; 255 + 624: cc cf rjmp .-104 ; 0x5be -00000560 <__divmodhi4_neg1>: - 560: 90 95 com r25 - 562: 81 95 neg r24 - 564: 9f 4f sbci r25, 0xFF ; 255 - 566: 08 95 ret +00000626 <__udivmodhi4>: + 626: aa 1b sub r26, r26 + 628: bb 1b sub r27, r27 + 62a: 51 e1 ldi r21, 0x11 ; 17 + 62c: 07 c0 rjmp .+14 ; 0x63c <__udivmodhi4_ep> -00000568 <__divmodhi4_neg2>: - 568: 70 95 com r23 - 56a: 61 95 neg r22 - 56c: 7f 4f sbci r23, 0xFF ; 255 +0000062e <__udivmodhi4_loop>: + 62e: aa 1f adc r26, r26 + 630: bb 1f adc r27, r27 + 632: a6 17 cp r26, r22 + 634: b7 07 cpc r27, r23 + 636: 10 f0 brcs .+4 ; 0x63c <__udivmodhi4_ep> + 638: a6 1b sub r26, r22 + 63a: b7 0b sbc r27, r23 -0000056e <__divmodhi4_exit>: - 56e: 08 95 ret +0000063c <__udivmodhi4_ep>: + 63c: 88 1f adc r24, r24 + 63e: 99 1f adc r25, r25 + 640: 5a 95 dec r21 + 642: a9 f7 brne .-22 ; 0x62e <__udivmodhi4_loop> + 644: 80 95 com r24 + 646: 90 95 com r25 + 648: bc 01 movw r22, r24 + 64a: cd 01 movw r24, r26 + 64c: 08 95 ret -00000570 <_exit>: - 570: f8 94 cli +0000064e <__divmodhi4>: + 64e: 97 fb bst r25, 7 + 650: 07 2e mov r0, r23 + 652: 16 f4 brtc .+4 ; 0x658 <__divmodhi4+0xa> + 654: 00 94 com r0 + 656: 06 d0 rcall .+12 ; 0x664 <__divmodhi4_neg1> + 658: 77 fd sbrc r23, 7 + 65a: 08 d0 rcall .+16 ; 0x66c <__divmodhi4_neg2> + 65c: e4 df rcall .-56 ; 0x626 <__udivmodhi4> + 65e: 07 fc sbrc r0, 7 + 660: 05 d0 rcall .+10 ; 0x66c <__divmodhi4_neg2> + 662: 3e f4 brtc .+14 ; 0x672 <__divmodhi4_exit> -00000572 <__stop_program>: - 572: ff cf rjmp .-2 ; 0x572 <__stop_program> +00000664 <__divmodhi4_neg1>: + 664: 90 95 com r25 + 666: 81 95 neg r24 + 668: 9f 4f sbci r25, 0xFF ; 255 + 66a: 08 95 ret + +0000066c <__divmodhi4_neg2>: + 66c: 70 95 com r23 + 66e: 61 95 neg r22 + 670: 7f 4f sbci r23, 0xFF ; 255 + +00000672 <__divmodhi4_exit>: + 672: 08 95 ret + +00000674 <_exit>: + 674: f8 94 cli + +00000676 <__stop_program>: + 676: ff cf rjmp .-2 ; 0x676 <__stop_program> diff --git a/dist/default/production/attiny45v_thermometer.X.production.map b/dist/default/production/attiny45v_thermometer.X.production.map index 13012fa..d79b013 100644 --- a/dist/default/production/attiny45v_thermometer.X.production.map +++ b/dist/default/production/attiny45v_thermometer.X.production.map @@ -22,8 +22,6 @@ Discarded input sections .text 0x0000000000000000 0x0 build/default/production/dstemperature.o .data 0x0000000000000000 0x0 build/default/production/dstemperature.o .bss 0x0000000000000000 0x0 build/default/production/dstemperature.o - .text.DallasTemp_WriteScratchpad - 0x0000000000000000 0x32 build/default/production/dstemperature.o .text 0x0000000000000000 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o) .data 0x0000000000000000 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o) .bss 0x0000000000000000 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o) @@ -197,7 +195,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x0000000000000000 0x574 +.text 0x0000000000000000 0x678 *(.vectors) .vectors 0x0000000000000000 0x1e /home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/gcc/dev/attiny45/avr25/crtattiny45.o 0x0000000000000000 __vectors @@ -298,50 +296,59 @@ END GROUP .text.TM1637_DisplayFixedNum 0x0000000000000176 0x120 build/default/production/main.o 0x0000000000000176 TM1637_DisplayFixedNum - .text.main 0x0000000000000296 0x4a build/default/production/main.o + .text.main 0x0000000000000296 0x52 build/default/production/main.o 0x0000000000000296 main .text.OneWire_Presence - 0x00000000000002e0 0x34 build/default/production/onewire.o - 0x00000000000002e0 OneWire_Presence + 0x00000000000002e8 0x34 build/default/production/onewire.o + 0x00000000000002e8 OneWire_Presence .text.OneWire_WriteByte - 0x0000000000000314 0x3a build/default/production/onewire.o - 0x0000000000000314 OneWire_WriteByte + 0x000000000000031c 0x3a build/default/production/onewire.o + 0x000000000000031c OneWire_WriteByte .text.OneWire_ReadByte - 0x000000000000034e 0x32 build/default/production/onewire.o - 0x000000000000034e OneWire_ReadByte + 0x0000000000000356 0x32 build/default/production/onewire.o + 0x0000000000000356 OneWire_ReadByte .text.OneWire_SkipROM - 0x0000000000000380 0x10 build/default/production/onewire.o - 0x0000000000000380 OneWire_SkipROM + 0x0000000000000388 0x10 build/default/production/onewire.o + 0x0000000000000388 OneWire_SkipROM .text.OneWire_ReadROM - 0x0000000000000390 0x32 build/default/production/onewire.o - 0x0000000000000390 OneWire_ReadROM + 0x0000000000000398 0x32 build/default/production/onewire.o + 0x0000000000000398 OneWire_ReadROM .text.OneWire_CRC8_Update - 0x00000000000003c2 0x2c build/default/production/onewire.o - 0x00000000000003c2 OneWire_CRC8_Update + 0x00000000000003ca 0x2c build/default/production/onewire.o + 0x00000000000003ca OneWire_CRC8_Update .text.DallasTemp_ReadScratchpad - 0x00000000000003ee 0x48 build/default/production/dstemperature.o - 0x00000000000003ee DallasTemp_ReadScratchpad + 0x00000000000003f6 0x48 build/default/production/dstemperature.o + 0x00000000000003f6 DallasTemp_ReadScratchpad + .text.DallasTemp_CopyScratchpad + 0x000000000000043e 0x1e build/default/production/dstemperature.o + 0x000000000000043e DallasTemp_CopyScratchpad + .text.DallasTemp_WriteScratchpad + 0x000000000000045c 0x20 build/default/production/dstemperature.o + 0x000000000000045c DallasTemp_WriteScratchpad + .text.DallasTemp_SetResolution + 0x000000000000047c 0x62 build/default/production/dstemperature.o + 0x000000000000047c DallasTemp_SetResolution .text.DallasTemp_Convert - 0x0000000000000436 0x14 build/default/production/dstemperature.o - 0x0000000000000436 DallasTemp_Convert + 0x00000000000004de 0x14 build/default/production/dstemperature.o + 0x00000000000004de DallasTemp_Convert .text.DallasTemp_CheckError - 0x000000000000044a 0x26 build/default/production/dstemperature.o - 0x000000000000044a DallasTemp_CheckError + 0x00000000000004f2 0x26 build/default/production/dstemperature.o + 0x00000000000004f2 DallasTemp_CheckError .text.DallasTemp_GetTemperature - 0x0000000000000470 0xb2 build/default/production/dstemperature.o - 0x0000000000000470 DallasTemp_GetTemperature + 0x0000000000000518 0x10e build/default/production/dstemperature.o + 0x0000000000000518 DallasTemp_GetTemperature .text.libgcc.div - 0x0000000000000522 0x28 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o) - 0x0000000000000522 __udivmodhi4 + 0x0000000000000626 0x28 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o) + 0x0000000000000626 __udivmodhi4 .text.libgcc.div - 0x000000000000054a 0x26 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_divmodhi4.o) - 0x000000000000054a __divmodhi4 - 0x000000000000054a _div - 0x0000000000000570 . = ALIGN (0x2) + 0x000000000000064e 0x26 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_divmodhi4.o) + 0x000000000000064e __divmodhi4 + 0x000000000000064e _div + 0x0000000000000674 . = ALIGN (0x2) *(.fini9) - .fini9 0x0000000000000570 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o) - 0x0000000000000570 exit - 0x0000000000000570 _exit + .fini9 0x0000000000000674 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o) + 0x0000000000000674 exit + 0x0000000000000674 _exit *(.fini9) *(.fini8) *(.fini8) @@ -360,11 +367,11 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x0000000000000570 0x4 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o) + .fini0 0x0000000000000674 0x4 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o) *(.fini0) - 0x0000000000000574 _etext = . + 0x0000000000000678 _etext = . -.data 0x0000000000800060 0x0 load address 0x0000000000000574 +.data 0x0000000000800060 0x0 load address 0x0000000000000678 [!provide] PROVIDE (__data_start, .) *(.data) *(.data*) @@ -382,8 +389,8 @@ END GROUP *(.bss*) *(COMMON) [!provide] PROVIDE (__bss_end, .) - 0x0000000000000574 __data_load_start = LOADADDR (.data) - 0x0000000000000574 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x0000000000000678 __data_load_start = LOADADDR (.data) + 0x0000000000000678 __data_load_end = (__data_load_start + SIZEOF (.data)) .noinit 0x0000000000800060 0x0 [!provide] PROVIDE (__noinit_start, .) diff --git a/dstemperature.c b/dstemperature.c index 8c686e6..fb2e680 100644 --- a/dstemperature.c +++ b/dstemperature.c @@ -16,6 +16,15 @@ uint8_t DallasTemp_ReadScratchpad(uint8_t *scratchpad) { return 1; } +// TODO parasite power +uint8_t DallasTemp_CopyScratchpad(void) { + if (!OneWire_Presence()) return 0; + OneWire_SkipROM(); + OneWire_WriteByte(DS18B20_CMD_CPSCRATCHPAD); + _delay_ms(10); + return 1; +} + void DallasTemp_WriteScratchpad(uint8_t *data) { uint8_t i = 3; @@ -26,14 +35,33 @@ void DallasTemp_WriteScratchpad(uint8_t *data) { OneWire_WriteByte(*data++); } while (--i); - OneWire_Presence(); + DallasTemp_CopyScratchpad(); +} + +void DallasTemp_SetResolution(DallasSensor *Sensor, uint8_t r) { + DallasTemp_ReadScratchpad(Sensor->SCRATCHPAD); + uint8_t data[3] = { Sensor->SCRATCHPAD[2], Sensor->SCRATCHPAD[3], 0x7f }; - // TODO вынести в отдельную функцию DallasTemp_CopyScratchpad - OneWire_SkipROM(); - OneWire_WriteByte(0x48); + switch(r) { + case 12: + data[2] = 0x7f; + break; + case 11: + data[2] = 0x5f; + break; + case 10: + data[2] = 0x3f; + break; + case 9: + data[2] = 0x1f; + break; + default: + data[2] = 0x7f; + break; + } - _delay_ms(10); + DallasTemp_WriteScratchpad(data); } uint8_t DallasTemp_Convert(void) { @@ -52,7 +80,17 @@ uint8_t DallasTemp_CheckError(DallasSensor* Sensor) { void DallasTemp_GetTemperature(DallasSensor *Sensor) { if (!DallasTemp_Convert()) return; - _delay_ms(750); // TODO задержку делать в зависимости от разрешения АЦП датчика + + if (!(~Sensor->SCRATCHPAD[4] & 0x60)) { + _delay_ms(750); + } else if (!(~Sensor->SCRATCHPAD[4] & 0x40)) { + _delay_ms(375); + } else if (!(~Sensor->SCRATCHPAD[4] & 0x20)) { + _delay_ms(188); + } else { + _delay_ms(94); + } + if (!DallasTemp_ReadScratchpad(Sensor->SCRATCHPAD)) return; Sensor->TEMPERATURE = ((Sensor->SCRATCHPAD[1] << 8) | Sensor->SCRATCHPAD[0]) / 16; diff --git a/dstemperature.h b/dstemperature.h index 89419af..1f404c8 100644 --- a/dstemperature.h +++ b/dstemperature.h @@ -3,6 +3,7 @@ #define DS18B20_CMD_CONVERTTEMP 0x44 #define DS18B20_CMD_RSCRATCHPAD 0xbe #define DS18B20_CMD_WSCRATCHPAD 0x4e +#define DS18B20_CMD_CPSCRATCHPAD 0x48 #define DS18B20_CONST_FAMILY_CODE 0x28 #ifndef DSTEMPERATURE_H @@ -15,7 +16,7 @@ typedef struct DallasSensor { uint16_t TEMPERATURE_FRACTION; // Дробная часть } DallasSensor; -// TODO сделать функию установки разрешения АЦП датчика +// TODO сделать чтобы все работало с несколькими датчиками а не с одним (выполнять команду skiprom если один датчик, иначе выбирать к какому датчику обращаться) /** * Читает ОЗУ датчика @@ -30,12 +31,29 @@ uint8_t DallasTemp_ReadScratchpad(uint8_t *scratchpad); */ void DallasTemp_WriteScratchpad(uint8_t *data); +/** + * Перемещает данные из ОЗУ в EEPROM датчика + * @return "1" - данные успешно записаны, "0" - если не было ответа от датчика + */ +uint8_t DallasTemp_CopyScratchpad(void); + /** * Отправляет команду для оцифровки температуры. * @return "1" - если команда отправлена, "0" - если не было ответа от датчика */ uint8_t DallasTemp_Convert(void); +/** + * Задает разрешение АЦП датчика + * Время оцифровки: + * - 12 бит - 750ms + * - 11 бит - 375ms + * - 10 бит - 187.5ms + * - 9 бит - 93.75ms + * @param r - разрешение АЦП (от 9 до 12) + */ +void DallasTemp_SetResolution(DallasSensor *Sensor, uint8_t r); + /** * Получает оцифрованное значение датчика и конвертирует занчение в читаемый вид. * @param Sensor - датчика diff --git a/main.c b/main.c index 291e493..b7290d5 100644 --- a/main.c +++ b/main.c @@ -232,6 +232,8 @@ void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion) { int main(void) { DallasSensor Sensor_01; + DallasTemp_SetResolution(&Sensor_01, 11); + TM1637_Init(PORT_TWI_DIO, PORT_TWI_CLK, TM1637_BRIGHTNESS_2, TM1637_DISP_ON); TM1637_DisplayLine();