From 144d00e25f378d3ead0b395ea12263ab3c7cfd69 Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Tue, 10 Feb 2015 11:05:04 +0000 Subject: [PATCH] Automatic Cronjob Checkin: 20150210-120501 --- Door.atsuo | Bin 16896 -> 17920 bytes Door/Debug/Door.d | 15 +- Door/Debug/Door.elf | Bin 45145 -> 47041 bytes Door/Debug/Door.hex | 570 +++--- Door/Debug/Door.lss | 4433 ++++++++++++++++++++++-------------------- Door/Debug/Door.map | 198 +- Door/Debug/Door.srec | 570 +++--- Door/Door.cppproj | 75 +- Door/io/Stripe.hpp | 51 +- 9 files changed, 3073 insertions(+), 2839 deletions(-) diff --git a/Door.atsuo b/Door.atsuo index 8302ca44b79e3c0342bd5e97eae61d48ec5014ab..317de3d76a226b580b4bfefa767415162b0820d3 100644 GIT binary patch delta 912 zcmY*X&1(};5Z||Xo9yP3O=Hq%HA#~+U#qR{p%vOBkRTR{iBc~@#ex*^gNp2-YQ;qa zFG+1OwSGhk#gm@Yz4lPaEeEYo@ZzEWgSqIzI4{`^b>Nqsncw91-pm{A3DGL#;|lKz za~$`#)9FOm_tS+3q)z8Z61MGO*QVW9E$$HuGP?=5Pg`OPT^j-(MU$Y3R9_Kx2z`bb zeahyrK*4hwRQsNYdL3%ksgAP9G$bRTw;d%O3SKOAmn2Ta^oUv8c9)<@k@1v8KPH`h z!gJpC3l(f!4Q|O-pfTx$gJhDdW3&jNNgGBfQtw8mM(nVZPSm}Ho|d;PT2aSgXjx@+ zeoOGjI}6R=3}^!diP$mcHVWK9boP1tL3`Lh&8(jHg)Kri1q*>=x)x{>iNuj-wQL*$ zn~hh$7i2^>2Ua>EL!;gUp#FgjuK?Xb~vWS+7Un3~>>%=7f9S)#`F zX|x~2yY+fIULpLARme?c=<;3l8sub!U#)h>Gng48Yit<&>_yCff#swCKN4>8-}I=B zE3)=(_WuuGQvnF2oObqD?8M?Bl^|#t4YsBgh$%~;PzkouR()G}Cx~o&y!{J~_Zn)C zW2&!Z4Ylu2y5gUl-h)u)`#7o30#A`$Y@doi0v4y}*eM&x0S1q!5 zd9=0h;iq!xdUogP$;Ss2?nH-SF*yKhX@7v-sb_<`qv&`L#Tu#S@ySEzyAa)ZtN99n z+wwwpvBH_GpKXk3N6=v?9^ST`%w}Yo4;@J#OR2=qG);St4qJ?(`7CGUGbU$HPWV1F F_YV)2-#GvP delta 710 zcmX|8O=}ZT6rDGDlgv!osZBMp(lnD!Vly>JO@*|eBs!y1C`}4oxUgCg1l=T*SwyWk zpbHl%)Z7Y+D{<>0`fw*$?Lz3rN((Oa7j)w+L}=6d@-YuCoO{mwer}z(&q%W-N{6jh z>+r+EQ_`SwBn(NK(3--}69?7~2?&C)X~09eEe|8)E<7W-X2hx$agEQ{zUU4nVxk_cP$95`A@Au`gZd$FEY0!u|@pe&Cg+2;!b^Pzo- zS6zdmeG@KbCZS+&z(M9^BVvK2VNRqh^GTxJoZuh=PlErEYYGV>?(Y?IhDyBu5MOMM zkA^QlW9J^Pu4C~TRy?i;L|cGM@loc+wumAa7!g9_Cy-JIRQ6zaTT%oZNf_x0;3R%1 zgm;bmjNa}9o?ep3Db5zgvfv~aX`~y%yyT)tNBxA<9?WVOlE%{{kxlz?={kYmW*SEF zDtsC@;g#7>{9{lm*nIfgkjRH1Z53dDqEF>>#L(>5ZE1P>7*tFX=B+49*k7VIQ0l$+ z2(F{qosvseu8#2!=)9Ag1qA2YPG#lnoocnZQn|lsgL}q>Tk#ZRvv*BGeU diff --git a/Door/Debug/Door.d b/Door/Debug/Door.d index a768e7f..ef4763d 100644 --- a/Door/Debug/Door.d +++ b/Door/Debug/Door.d @@ -13,10 +13,11 @@ Door.d Door.o: .././Door.cpp .././peripheral.h .././io/hardware/portb.hpp \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \ .././io/hardware/portd.hpp .././io/Stripe.hpp .././io/hardware/pin.hpp \ + .././io/Led.hpp .././io/Comperator.hpp .././io/IR.hpp \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h \ - .././io/Led.hpp .././io/Comperator.hpp .././io/IR.hpp .././io/uart.hpp \ + .././io/uart.hpp \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/interrupt.h .././peripheral.h: @@ -55,18 +56,18 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- .././io/hardware/pin.hpp: -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h: - -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h: - -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h: - .././io/Led.hpp: .././io/Comperator.hpp: .././io/IR.hpp: +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h: + .././io/uart.hpp: c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/interrupt.h: diff --git a/Door/Debug/Door.elf b/Door/Debug/Door.elf index 20d0e087f139c3ac79ace2c783d9b2a1c0d0f7c7..06576b191373bd3186e43eea5c368c737b721fd5 100644 GIT binary patch literal 47041 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 Hy(9iFp2bCf literal 45145 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�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: 0: 0c 94 35 00 jmp 0x6a ; 0x6a <__ctors_end> - 4: 0c 94 60 06 jmp 0xcc0 ; 0xcc0 <__vector_1> + 4: 0c 94 6d 06 jmp 0xcda ; 0xcda <__vector_1> 8: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> 10: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> @@ -63,7 +63,7 @@ Disassembly of section .text: 64: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt> 00000068 <__ctors_start>: - 68: 18 07 cpc r17, r24 + 68: 25 07 cpc r18, r21 0000006a <__ctors_end>: 6a: 11 24 eor r1, r1 @@ -77,7 +77,7 @@ Disassembly of section .text: 76: 11 e0 ldi r17, 0x01 ; 1 78: a0 e0 ldi r26, 0x00 ; 0 7a: b1 e0 ldi r27, 0x01 ; 1 - 7c: ea e8 ldi r30, 0x8A ; 138 + 7c: e4 ea ldi r30, 0xA4 ; 164 7e: f1 e1 ldi r31, 0x11 ; 17 80: 02 c0 rjmp .+4 ; 0x86 <__do_copy_data+0x10> 82: 05 90 lpm r0, Z+ @@ -96,7 +96,7 @@ Disassembly of section .text: 94: 1d 92 st X+, r1 00000096 <.do_clear_bss_start>: - 96: aa 3a cpi r26, 0xAA ; 170 + 96: a6 3b cpi r26, 0xB6 ; 182 98: b2 07 cpc r27, r18 9a: e1 f7 brne .-8 ; 0x94 <.do_clear_bss_loop> @@ -107,12 +107,12 @@ Disassembly of section .text: a2: 04 c0 rjmp .+8 ; 0xac <__do_global_ctors+0x10> a4: 22 97 sbiw r28, 0x02 ; 2 a6: fe 01 movw r30, r28 - a8: 0e 94 bf 08 call 0x117e ; 0x117e <__tablejump__> + a8: 0e 94 cc 08 call 0x1198 ; 0x1198 <__tablejump__> ac: c8 36 cpi r28, 0x68 ; 104 ae: d1 07 cpc r29, r17 b0: c9 f7 brne .-14 ; 0xa4 <__do_global_ctors+0x8> - b2: 0e 94 ff 02 call 0x5fe ; 0x5fe
- b6: 0c 94 c3 08 jmp 0x1186 ; 0x1186 <_exit> + b2: 0e 94 0c 03 call 0x618 ; 0x618
+ b6: 0c 94 d0 08 jmp 0x11a0 ; 0x11a0 <_exit> 000000ba <__bad_interrupt>: ba: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> @@ -129,3154 +129,3357 @@ ISR(TIMER1_OVF_vect) { c2: 0f b6 in r0, 0x3f ; 63 c4: 0f 92 push r0 c6: 11 24 eor r1, r1 - c8: 8f 92 push r8 - ca: 9f 92 push r9 - cc: af 92 push r10 - ce: bf 92 push r11 - d0: cf 92 push r12 - d2: df 92 push r13 - d4: ef 92 push r14 - d6: ff 92 push r15 - d8: 2f 93 push r18 - da: 3f 93 push r19 - dc: 4f 93 push r20 - de: 5f 93 push r21 - e0: 6f 93 push r22 - e2: 7f 93 push r23 - e4: 8f 93 push r24 - e6: 9f 93 push r25 - e8: af 93 push r26 - ea: bf 93 push r27 - ec: cf 93 push r28 - ee: df 93 push r29 - f0: ef 93 push r30 - f2: ff 93 push r31 + c8: 2f 92 push r2 + ca: 3f 92 push r3 + cc: 4f 92 push r4 + ce: 5f 92 push r5 + d0: 6f 92 push r6 + d2: 7f 92 push r7 + d4: 8f 92 push r8 + d6: 9f 92 push r9 + d8: af 92 push r10 + da: bf 92 push r11 + dc: cf 92 push r12 + de: df 92 push r13 + e0: ef 92 push r14 + e2: ff 92 push r15 + e4: 0f 93 push r16 + e6: 1f 93 push r17 + e8: 2f 93 push r18 + ea: 3f 93 push r19 + ec: 4f 93 push r20 + ee: 5f 93 push r21 + f0: 6f 93 push r22 + f2: 7f 93 push r23 + f4: 8f 93 push r24 + f6: 9f 93 push r25 + f8: af 93 push r26 + fa: bf 93 push r27 + fc: cf 93 push r28 + fe: df 93 push r29 + 100: ef 93 push r30 + 102: ff 93 push r31 this->fademap[1][index] = green; this->fademap[2][index] = blue; this->fademap[3][index] = time; } void interrupt() { if(this->fade_zylk > 0) { - f4: c0 91 88 01 lds r28, 0x0188 - f8: cc 23 and r28, r28 - fa: 09 f4 brne .+2 ; 0xfe <__vector_13+0x40> - fc: f9 c1 rjmp .+1010 ; 0x4f0 <__vector_13+0x432> + 104: c0 91 88 01 lds r28, 0x0188 + 108: cc 23 and r28, r28 + 10a: 09 f4 brne .+2 ; 0x10e <__vector_13+0x50> + 10c: f6 c1 rjmp .+1004 ; 0x4fa <__vector_13+0x43c> if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { - fe: c0 90 9d 01 lds r12, 0x019D - 102: d0 90 9e 01 lds r13, 0x019E - 106: e0 90 9f 01 lds r14, 0x019F - 10a: f0 90 a0 01 lds r15, 0x01A0 10e: 20 e0 ldi r18, 0x00 ; 0 110: 30 e0 ldi r19, 0x00 ; 0 112: a9 01 movw r20, r18 - 114: c7 01 movw r24, r14 - 116: b6 01 movw r22, r12 - 118: 0e 94 a3 07 call 0xf46 ; 0xf46 <__cmpsf2> - 11c: 81 11 cpse r24, r1 - 11e: 6b c0 rjmp .+214 ; 0x1f6 <__vector_13+0x138> - 120: 20 e0 ldi r18, 0x00 ; 0 - 122: 30 e0 ldi r19, 0x00 ; 0 - 124: a9 01 movw r20, r18 - 126: 60 91 a1 01 lds r22, 0x01A1 - 12a: 70 91 a2 01 lds r23, 0x01A2 - 12e: 80 91 a3 01 lds r24, 0x01A3 - 132: 90 91 a4 01 lds r25, 0x01A4 - 136: 0e 94 a3 07 call 0xf46 ; 0xf46 <__cmpsf2> - 13a: 81 11 cpse r24, r1 - 13c: 5c c0 rjmp .+184 ; 0x1f6 <__vector_13+0x138> - 13e: 20 e0 ldi r18, 0x00 ; 0 - 140: 30 e0 ldi r19, 0x00 ; 0 - 142: a9 01 movw r20, r18 - 144: 60 91 a5 01 lds r22, 0x01A5 - 148: 70 91 a6 01 lds r23, 0x01A6 - 14c: 80 91 a7 01 lds r24, 0x01A7 - 150: 90 91 a8 01 lds r25, 0x01A8 - 154: 0e 94 a3 07 call 0xf46 ; 0xf46 <__cmpsf2> - 158: 81 11 cpse r24, r1 - 15a: 4d c0 rjmp .+154 ; 0x1f6 <__vector_13+0x138> - this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-OCR0B)/this->fademap[3][this->fade_zylk-1]; //Calc Red; - 15c: d0 e0 ldi r29, 0x00 ; 0 - 15e: 28 b5 in r18, 0x28 ; 40 - 160: c9 57 subi r28, 0x79 ; 121 - 162: de 4f sbci r29, 0xFE ; 254 - 164: e8 88 ldd r14, Y+16 ; 0x10 - 166: f1 2c mov r15, r1 - 168: 89 81 ldd r24, Y+1 ; 0x01 - 16a: 90 e0 ldi r25, 0x00 ; 0 - 16c: 82 1b sub r24, r18 - 16e: 91 09 sbc r25, r1 - 170: 6e 2d mov r22, r14 - 172: 7f 2d mov r23, r15 - 174: 0e 94 89 08 call 0x1112 ; 0x1112 <__divmodhi4> - 178: 88 27 eor r24, r24 - 17a: 77 fd sbrc r23, 7 - 17c: 80 95 com r24 - 17e: 98 2f mov r25, r24 - 180: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 184: 60 93 9d 01 sts 0x019D, r22 - 188: 70 93 9e 01 sts 0x019E, r23 - 18c: 80 93 9f 01 sts 0x019F, r24 - 190: 90 93 a0 01 sts 0x01A0, r25 + 114: 60 91 9d 01 lds r22, 0x019D + 118: 70 91 9e 01 lds r23, 0x019E + 11c: 80 91 9f 01 lds r24, 0x019F + 120: 90 91 a0 01 lds r25, 0x01A0 + 124: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2> + 128: 81 11 cpse r24, r1 + 12a: f0 c0 rjmp .+480 ; 0x30c <__vector_13+0x24e> + 12c: 20 e0 ldi r18, 0x00 ; 0 + 12e: 30 e0 ldi r19, 0x00 ; 0 + 130: a9 01 movw r20, r18 + 132: 60 91 a1 01 lds r22, 0x01A1 + 136: 70 91 a2 01 lds r23, 0x01A2 + 13a: 80 91 a3 01 lds r24, 0x01A3 + 13e: 90 91 a4 01 lds r25, 0x01A4 + 142: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2> + 146: 81 11 cpse r24, r1 + 148: e4 c0 rjmp .+456 ; 0x312 <__vector_13+0x254> + 14a: 20 e0 ldi r18, 0x00 ; 0 + 14c: 30 e0 ldi r19, 0x00 ; 0 + 14e: a9 01 movw r20, r18 + 150: 60 91 a5 01 lds r22, 0x01A5 + 154: 70 91 a6 01 lds r23, 0x01A6 + 158: 80 91 a7 01 lds r24, 0x01A7 + 15c: 90 91 a8 01 lds r25, 0x01A8 + 160: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2> + 164: 88 23 and r24, r24 + 166: 29 f0 breq .+10 ; 0x172 <__vector_13+0xb4> + 168: 88 24 eor r8, r8 + 16a: 83 94 inc r8 + 16c: d4 c0 rjmp .+424 ; 0x316 <__vector_13+0x258> + 16e: b3 94 inc r11 + 170: 11 c0 rjmp .+34 ; 0x194 <__vector_13+0xd6> + 172: bb 24 eor r11, r11 + 174: b3 94 inc r11 + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; + 176: d0 e0 ldi r29, 0x00 ; 0 + 178: 21 97 sbiw r28, 0x01 ; 1 + } + } + uint8_t gp(uint8_t i) { + switch(i) { + case 0: return OCR0B; //ROT + case 1: return OCR2B; //GRÜN + 17a: 0f 2e mov r0, r31 + 17c: f4 eb ldi r31, 0xB4 ; 180 + 17e: cf 2e mov r12, r31 + 180: d1 2c mov r13, r1 + 182: f0 2d mov r31, r0 + } + void interrupt() { + if(this->fade_zylk > 0) { + if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; + 184: 0f 2e mov r0, r31 + 186: f8 e9 ldi r31, 0x98 ; 152 + 188: 6f 2e mov r6, r31 + 18a: f1 e0 ldi r31, 0x01 ; 1 + 18c: 7f 2e mov r7, r31 + 18e: f0 2d mov r31, r0 + 190: 6c 0e add r6, r28 + 192: 7d 1e adc r7, r29 + 194: 1b 2d mov r17, r11 + 196: 11 50 subi r17, 0x01 ; 1 + 198: e1 2e mov r14, r17 + 19a: f1 2c mov r15, r1 + 19c: 9e 01 movw r18, r28 + 19e: f7 01 movw r30, r14 + 1a0: ee 0f add r30, r30 + 1a2: ff 1f adc r31, r31 + 1a4: ee 0f add r30, r30 + 1a6: ff 1f adc r31, r31 + 1a8: ee 0d add r30, r14 + 1aa: ff 1d adc r31, r15 + 1ac: e8 57 subi r30, 0x78 ; 120 + 1ae: fe 4f sbci r31, 0xFE ; 254 + 1b0: ec 0f add r30, r28 + 1b2: fd 1f adc r31, r29 + 1b4: 81 81 ldd r24, Z+1 ; 0x01 + 1b6: 90 e0 ldi r25, 0x00 ; 0 + case 1: OCR2B = c; break; //GRÜN + case 2: OCR2A = c; break; //BLAU + } + } + uint8_t gp(uint8_t i) { + switch(i) { + 1b8: 11 30 cpi r17, 0x01 ; 1 + 1ba: 09 f1 breq .+66 ; 0x1fe <__vector_13+0x140> + 1bc: 20 f0 brcs .+8 ; 0x1c6 <__vector_13+0x108> + 1be: 12 30 cpi r17, 0x02 ; 2 + 1c0: 09 f0 breq .+2 ; 0x1c4 <__vector_13+0x106> + 1c2: 57 c0 rjmp .+174 ; 0x272 <__vector_13+0x1b4> + 1c4: 39 c0 rjmp .+114 ; 0x238 <__vector_13+0x17a> + case 0: return OCR0B; //ROT + 1c6: 48 b5 in r20, 0x28 ; 40 + } + void interrupt() { + if(this->fade_zylk > 0) { + if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; + 1c8: 97 01 movw r18, r14 + 1ca: 22 0f add r18, r18 + 1cc: 33 1f adc r19, r19 + 1ce: 22 0f add r18, r18 + 1d0: 33 1f adc r19, r19 + 1d2: 89 01 movw r16, r18 + 1d4: 08 57 subi r16, 0x78 ; 120 + 1d6: 1e 4f sbci r17, 0xFE ; 254 + 1d8: 84 1b sub r24, r20 + 1da: 91 09 sbc r25, r1 + 1dc: f3 01 movw r30, r6 + 1de: 60 81 ld r22, Z + 1e0: 70 e0 ldi r23, 0x00 ; 0 + 1e2: 0e 94 96 08 call 0x112c ; 0x112c <__divmodhi4> + 1e6: 88 27 eor r24, r24 + 1e8: 77 fd sbrc r23, 7 + 1ea: 80 95 com r24 + 1ec: 98 2f mov r25, r24 + 1ee: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf> + 1f2: f8 01 movw r30, r16 + 1f4: 65 8b std Z+21, r22 ; 0x15 + 1f6: 76 8b std Z+22, r23 ; 0x16 + 1f8: 87 8b std Z+23, r24 ; 0x17 + 1fa: 90 8f std Z+24, r25 ; 0x18 + 1fc: 5d c0 rjmp .+186 ; 0x2b8 <__vector_13+0x1fa> + } + } + uint8_t gp(uint8_t i) { + switch(i) { + case 0: return OCR0B; //ROT + case 1: return OCR2B; //GRÜN + 1fe: f6 01 movw r30, r12 + 200: 40 81 ld r20, Z + } + void interrupt() { + if(this->fade_zylk > 0) { + if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; + 202: 97 01 movw r18, r14 + 204: 22 0f add r18, r18 + 206: 33 1f adc r19, r19 + 208: 22 0f add r18, r18 + 20a: 33 1f adc r19, r19 + 20c: 89 01 movw r16, r18 + 20e: 08 57 subi r16, 0x78 ; 120 + 210: 1e 4f sbci r17, 0xFE ; 254 + 212: 84 1b sub r24, r20 + 214: 91 09 sbc r25, r1 + 216: f3 01 movw r30, r6 + 218: 60 81 ld r22, Z + 21a: 70 e0 ldi r23, 0x00 ; 0 + 21c: 0e 94 96 08 call 0x112c ; 0x112c <__divmodhi4> + 220: 88 27 eor r24, r24 + 222: 77 fd sbrc r23, 7 + 224: 80 95 com r24 + 226: 98 2f mov r25, r24 + 228: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf> + 22c: f8 01 movw r30, r16 + 22e: 65 8b std Z+21, r22 ; 0x15 + 230: 76 8b std Z+22, r23 ; 0x16 + 232: 87 8b std Z+23, r24 ; 0x17 + 234: 90 8f std Z+24, r25 ; 0x18 + 236: 42 c0 rjmp .+132 ; 0x2bc <__vector_13+0x1fe> + } + uint8_t gp(uint8_t i) { + switch(i) { + case 0: return OCR0B; //ROT + case 1: return OCR2B; //GRÜN + case 2: return OCR2A; //BLAU + 238: 40 91 b3 00 lds r20, 0x00B3 + } + void interrupt() { + if(this->fade_zylk > 0) { + if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; + 23c: e7 01 movw r28, r14 + 23e: cc 0f add r28, r28 + 240: dd 1f adc r29, r29 + 242: cc 0f add r28, r28 + 244: dd 1f adc r29, r29 + 246: c8 57 subi r28, 0x78 ; 120 + 248: de 4f sbci r29, 0xFE ; 254 + 24a: 84 1b sub r24, r20 + 24c: 91 09 sbc r25, r1 + 24e: f9 01 movw r30, r18 + 250: e8 57 subi r30, 0x78 ; 120 + 252: fe 4f sbci r31, 0xFE ; 254 + 254: 60 89 ldd r22, Z+16 ; 0x10 + 256: 70 e0 ldi r23, 0x00 ; 0 + 258: 0e 94 96 08 call 0x112c ; 0x112c <__divmodhi4> + 25c: 88 27 eor r24, r24 + 25e: 77 fd sbrc r23, 7 + 260: 80 95 com r24 + 262: 98 2f mov r25, r24 + 264: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf> + 268: 6d 8b std Y+21, r22 ; 0x15 + 26a: 7e 8b std Y+22, r23 ; 0x16 + 26c: 8f 8b std Y+23, r24 ; 0x17 + 26e: 98 8f std Y+24, r25 ; 0x18 + 270: 28 c0 rjmp .+80 ; 0x2c2 <__vector_13+0x204> + 272: 97 01 movw r18, r14 + 274: 22 0f add r18, r18 + 276: 33 1f adc r19, r19 + 278: 22 0f add r18, r18 + 27a: 33 1f adc r19, r19 + 27c: 0f 2e mov r0, r31 + 27e: f8 e8 ldi r31, 0x88 ; 136 + 280: 8f 2e mov r8, r31 + 282: f1 e0 ldi r31, 0x01 ; 1 + 284: 9f 2e mov r9, r31 + 286: f0 2d mov r31, r0 + 288: 82 0e add r8, r18 + 28a: 93 1e adc r9, r19 + 28c: f3 01 movw r30, r6 + 28e: 60 81 ld r22, Z + 290: 70 e0 ldi r23, 0x00 ; 0 + 292: 0e 94 96 08 call 0x112c ; 0x112c <__divmodhi4> + 296: 88 27 eor r24, r24 + 298: 77 fd sbrc r23, 7 + 29a: 80 95 com r24 + 29c: 98 2f mov r25, r24 + 29e: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf> + 2a2: f4 01 movw r30, r8 + 2a4: 65 8b std Z+21, r22 ; 0x15 + 2a6: 76 8b std Z+22, r23 ; 0x16 + 2a8: 87 8b std Z+23, r24 ; 0x17 + 2aa: 90 8f std Z+24, r25 ; 0x18 + case 1: OCR2B = c; break; //GRÜN + case 2: OCR2A = c; break; //BLAU + } + } + uint8_t gp(uint8_t i) { + switch(i) { + 2ac: 11 30 cpi r17, 0x01 ; 1 + 2ae: 31 f0 breq .+12 ; 0x2bc <__vector_13+0x1fe> + 2b0: 18 f0 brcs .+6 ; 0x2b8 <__vector_13+0x1fa> + 2b2: 12 30 cpi r17, 0x02 ; 2 + 2b4: c9 f4 brne .+50 ; 0x2e8 <__vector_13+0x22a> + 2b6: 05 c0 rjmp .+10 ; 0x2c2 <__vector_13+0x204> + case 0: return OCR0B; //ROT + 2b8: 68 b5 in r22, 0x28 ; 40 + 2ba: 07 c1 rjmp .+526 ; 0x4ca <__vector_13+0x40c> + case 1: return OCR2B; //GRÜN + 2bc: f6 01 movw r30, r12 + 2be: 60 81 ld r22, Z + 2c0: 04 c1 rjmp .+520 ; 0x4ca <__vector_13+0x40c> + case 2: return OCR2A; //BLAU + 2c2: 60 91 b3 00 lds r22, 0x00B3 + void interrupt() { + if(this->fade_zylk > 0) { + if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; + this->virtualcolor[i] = this->gp(i); + 2c6: e7 01 movw r28, r14 + 2c8: cc 0f add r28, r28 + 2ca: dd 1f adc r29, r29 + 2cc: cc 0f add r28, r28 + 2ce: dd 1f adc r29, r29 + 2d0: c8 57 subi r28, 0x78 ; 120 + 2d2: de 4f sbci r29, 0xFE ; 254 + 2d4: 70 e0 ldi r23, 0x00 ; 0 + 2d6: 80 e0 ldi r24, 0x00 ; 0 + 2d8: 90 e0 ldi r25, 0x00 ; 0 + 2da: 0e 94 e0 07 call 0xfc0 ; 0xfc0 <__floatunsisf> + 2de: 69 a3 std Y+33, r22 ; 0x21 + 2e0: 7a a3 std Y+34, r23 ; 0x22 + 2e2: 8b a3 std Y+35, r24 ; 0x23 + 2e4: 9c a3 std Y+36, r25 ; 0x24 + 2e6: 09 c1 rjmp .+530 ; 0x4fa <__vector_13+0x43c> + 2e8: f7 01 movw r30, r14 + 2ea: ee 0f add r30, r30 + 2ec: ff 1f adc r31, r31 + 2ee: ee 0f add r30, r30 + 2f0: ff 1f adc r31, r31 + 2f2: e8 57 subi r30, 0x78 ; 120 + 2f4: fe 4f sbci r31, 0xFE ; 254 + 2f6: 11 a2 std Z+33, r1 ; 0x21 + 2f8: 12 a2 std Z+34, r1 ; 0x22 + 2fa: 13 a2 std Z+35, r1 ; 0x23 + 2fc: 14 a2 std Z+36, r1 ; 0x24 + this->fademap[3][index] = time; + } + void interrupt() { + if(this->fade_zylk > 0) { + if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + 2fe: f2 e0 ldi r31, 0x02 ; 2 + 300: fb 15 cp r31, r11 + 302: 08 f0 brcs .+2 ; 0x306 <__vector_13+0x248> + 304: 34 cf rjmp .-408 ; 0x16e <__vector_13+0xb0> + 306: f9 c0 rjmp .+498 ; 0x4fa <__vector_13+0x43c> + 308: 83 94 inc r8 + 30a: 10 c0 rjmp .+32 ; 0x32c <__vector_13+0x26e> + this->fademap[2][index] = blue; + this->fademap[3][index] = time; + } + void interrupt() { + if(this->fade_zylk > 0) { + if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + 30c: 88 24 eor r8, r8 + 30e: 83 94 inc r8 + 310: 02 c0 rjmp .+4 ; 0x316 <__vector_13+0x258> + 312: 88 24 eor r8, r8 + 314: 83 94 inc r8 + /*this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-this->gp(0))/this->fademap[3][this->fade_zylk-1]; //Calc Red; this->fadesteps[1] = (this->fademap[1][this->fade_zylk-1]-OCR2B)/this->fademap[3][this->fade_zylk-1]; //Calc Green; - 194: 20 91 b4 00 lds r18, 0x00B4 - 198: 8e 81 ldd r24, Y+6 ; 0x06 - 19a: 90 e0 ldi r25, 0x00 ; 0 - 19c: 82 1b sub r24, r18 - 19e: 91 09 sbc r25, r1 - 1a0: 6e 2d mov r22, r14 - 1a2: 7f 2d mov r23, r15 - 1a4: 0e 94 89 08 call 0x1112 ; 0x1112 <__divmodhi4> - 1a8: 88 27 eor r24, r24 - 1aa: 77 fd sbrc r23, 7 - 1ac: 80 95 com r24 - 1ae: 98 2f mov r25, r24 - 1b0: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 1b4: 60 93 a1 01 sts 0x01A1, r22 - 1b8: 70 93 a2 01 sts 0x01A2, r23 - 1bc: 80 93 a3 01 sts 0x01A3, r24 - 1c0: 90 93 a4 01 sts 0x01A4, r25 - this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue; - 1c4: 20 91 b3 00 lds r18, 0x00B3 - 1c8: 8b 85 ldd r24, Y+11 ; 0x0b - 1ca: 90 e0 ldi r25, 0x00 ; 0 - 1cc: 82 1b sub r24, r18 - 1ce: 91 09 sbc r25, r1 - 1d0: 6e 2d mov r22, r14 - 1d2: 7f 2d mov r23, r15 - 1d4: 0e 94 89 08 call 0x1112 ; 0x1112 <__divmodhi4> - 1d8: 88 27 eor r24, r24 - 1da: 77 fd sbrc r23, 7 - 1dc: 80 95 com r24 - 1de: 98 2f mov r25, r24 - 1e0: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 1e4: 60 93 a5 01 sts 0x01A5, r22 - 1e8: 70 93 a6 01 sts 0x01A6, r23 - 1ec: 80 93 a7 01 sts 0x01A7, r24 - 1f0: 90 93 a8 01 sts 0x01A8, r25 - 1f4: 7d c1 rjmp .+762 ; 0x4f0 <__vector_13+0x432> + this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue;*/ } else { - if((this->fadesteps[0] > 0 && (OCR0B + this->fadesteps[0]) <= this->fademap[0][this->fade_zylk-1]) || (this->fadesteps[0] < 0 && (OCR0B + this->fadesteps[0]) >= this->fademap[0][this->fade_zylk-1])) { - 1f6: 20 e0 ldi r18, 0x00 ; 0 - 1f8: 30 e0 ldi r19, 0x00 ; 0 - 1fa: a9 01 movw r20, r18 - 1fc: c7 01 movw r24, r14 - 1fe: b6 01 movw r22, r12 - 200: 0e 94 85 08 call 0x110a ; 0x110a <__gesf2> - 204: 18 16 cp r1, r24 - 206: 0c f5 brge .+66 ; 0x24a <__vector_13+0x18c> - 208: 68 b5 in r22, 0x28 ; 40 - 20a: 70 e0 ldi r23, 0x00 ; 0 - 20c: 80 e0 ldi r24, 0x00 ; 0 - 20e: 90 e0 ldi r25, 0x00 ; 0 - 210: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 214: 9b 01 movw r18, r22 - 216: ac 01 movw r20, r24 - 218: c7 01 movw r24, r14 - 21a: b6 01 movw r22, r12 - 21c: 0e 94 3f 07 call 0xe7e ; 0xe7e <__addsf3> - 220: 4b 01 movw r8, r22 - 222: 5c 01 movw r10, r24 - 224: ec 2f mov r30, r28 - 226: f0 e0 ldi r31, 0x00 ; 0 - 228: e8 57 subi r30, 0x78 ; 120 - 22a: fe 4f sbci r31, 0xFE ; 254 - 22c: 60 81 ld r22, Z - 22e: 70 e0 ldi r23, 0x00 ; 0 - 230: 80 e0 ldi r24, 0x00 ; 0 - 232: 90 e0 ldi r25, 0x00 ; 0 - 234: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 238: 9b 01 movw r18, r22 - 23a: ac 01 movw r20, r24 - 23c: c5 01 movw r24, r10 - 23e: b4 01 movw r22, r8 - 240: 0e 94 a3 07 call 0xf46 ; 0xf46 <__cmpsf2> - 244: 18 16 cp r1, r24 - 246: 0c f0 brlt .+2 ; 0x24a <__vector_13+0x18c> - 248: fe c0 rjmp .+508 ; 0x446 <__vector_13+0x388> - 24a: 20 e0 ldi r18, 0x00 ; 0 - 24c: 30 e0 ldi r19, 0x00 ; 0 - 24e: a9 01 movw r20, r18 - 250: c7 01 movw r24, r14 - 252: b6 01 movw r22, r12 - 254: 0e 94 a3 07 call 0xf46 ; 0xf46 <__cmpsf2> - 258: 88 23 and r24, r24 - 25a: 0c f0 brlt .+2 ; 0x25e <__vector_13+0x1a0> - 25c: e6 c0 rjmp .+460 ; 0x42a <__vector_13+0x36c> - 25e: 68 b5 in r22, 0x28 ; 40 - 260: 70 e0 ldi r23, 0x00 ; 0 - 262: 80 e0 ldi r24, 0x00 ; 0 - 264: 90 e0 ldi r25, 0x00 ; 0 - 266: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 26a: 9b 01 movw r18, r22 - 26c: ac 01 movw r20, r24 - 26e: c7 01 movw r24, r14 - 270: b6 01 movw r22, r12 - 272: 0e 94 3f 07 call 0xe7e ; 0xe7e <__addsf3> - 276: 4b 01 movw r8, r22 - 278: 5c 01 movw r10, r24 - 27a: ec 2f mov r30, r28 - 27c: f0 e0 ldi r31, 0x00 ; 0 - 27e: e8 57 subi r30, 0x78 ; 120 - 280: fe 4f sbci r31, 0xFE ; 254 - 282: 60 81 ld r22, Z - 284: 70 e0 ldi r23, 0x00 ; 0 - 286: 80 e0 ldi r24, 0x00 ; 0 - 288: 90 e0 ldi r25, 0x00 ; 0 - 28a: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 28e: 9b 01 movw r18, r22 - 290: ac 01 movw r20, r24 - 292: c5 01 movw r24, r10 - 294: b4 01 movw r22, r8 - 296: 0e 94 85 08 call 0x110a ; 0x110a <__gesf2> - 29a: 88 23 and r24, r24 - 29c: 0c f0 brlt .+2 ; 0x2a0 <__vector_13+0x1e2> - 29e: d3 c0 rjmp .+422 ; 0x446 <__vector_13+0x388> - 2a0: c4 c0 rjmp .+392 ; 0x42a <__vector_13+0x36c> - OCR0B = OCR0B + this->fadesteps[0]; - } else { - OCR0B = this->fademap[0][this->fade_zylk-1]; - this->fadesteps[0] = 0; - } - if((this->fadesteps[1] > 0 && (OCR2B + this->fadesteps[1]) <= this->fademap[1][this->fade_zylk-1]) || (this->fadesteps[1] < 0 && (OCR2B + this->fadesteps[1]) >= this->fademap[1][this->fade_zylk-1])) { - 2a2: c0 90 a1 01 lds r12, 0x01A1 - 2a6: d0 90 a2 01 lds r13, 0x01A2 - 2aa: e0 90 a3 01 lds r14, 0x01A3 - 2ae: f0 90 a4 01 lds r15, 0x01A4 - 2b2: 20 e0 ldi r18, 0x00 ; 0 - 2b4: 30 e0 ldi r19, 0x00 ; 0 - 2b6: a9 01 movw r20, r18 - 2b8: c7 01 movw r24, r14 - 2ba: b6 01 movw r22, r12 - 2bc: 0e 94 85 08 call 0x110a ; 0x110a <__gesf2> - 2c0: 18 16 cp r1, r24 - 2c2: 1c f5 brge .+70 ; 0x30a <__vector_13+0x24c> - 2c4: 60 91 b4 00 lds r22, 0x00B4 - 2c8: 70 e0 ldi r23, 0x00 ; 0 - 2ca: 80 e0 ldi r24, 0x00 ; 0 - 2cc: 90 e0 ldi r25, 0x00 ; 0 - 2ce: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 2d2: 9b 01 movw r18, r22 - 2d4: ac 01 movw r20, r24 - 2d6: c7 01 movw r24, r14 - 2d8: b6 01 movw r22, r12 - 2da: 0e 94 3f 07 call 0xe7e ; 0xe7e <__addsf3> - 2de: 4b 01 movw r8, r22 - 2e0: 5c 01 movw r10, r24 - 2e2: e0 91 88 01 lds r30, 0x0188 - 2e6: f0 e0 ldi r31, 0x00 ; 0 - 2e8: e8 57 subi r30, 0x78 ; 120 - 2ea: fe 4f sbci r31, 0xFE ; 254 - 2ec: 65 81 ldd r22, Z+5 ; 0x05 - 2ee: 70 e0 ldi r23, 0x00 ; 0 - 2f0: 80 e0 ldi r24, 0x00 ; 0 - 2f2: 90 e0 ldi r25, 0x00 ; 0 - 2f4: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 2f8: 9b 01 movw r18, r22 - 2fa: ac 01 movw r20, r24 - 2fc: c5 01 movw r24, r10 - 2fe: b4 01 movw r22, r8 - 300: 0e 94 a3 07 call 0xf46 ; 0xf46 <__cmpsf2> - 304: 18 16 cp r1, r24 - 306: 0c f0 brlt .+2 ; 0x30a <__vector_13+0x24c> - 308: ae c0 rjmp .+348 ; 0x466 <__vector_13+0x3a8> - 30a: 20 e0 ldi r18, 0x00 ; 0 - 30c: 30 e0 ldi r19, 0x00 ; 0 - 30e: a9 01 movw r20, r18 - 310: c7 01 movw r24, r14 - 312: b6 01 movw r22, r12 - 314: 0e 94 a3 07 call 0xf46 ; 0xf46 <__cmpsf2> - 318: 88 23 and r24, r24 - 31a: 0c f0 brlt .+2 ; 0x31e <__vector_13+0x260> - 31c: b6 c0 rjmp .+364 ; 0x48a <__vector_13+0x3cc> - 31e: 60 91 b4 00 lds r22, 0x00B4 - 322: 70 e0 ldi r23, 0x00 ; 0 - 324: 80 e0 ldi r24, 0x00 ; 0 - 326: 90 e0 ldi r25, 0x00 ; 0 - 328: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 32c: 9b 01 movw r18, r22 - 32e: ac 01 movw r20, r24 - 330: c7 01 movw r24, r14 - 332: b6 01 movw r22, r12 - 334: 0e 94 3f 07 call 0xe7e ; 0xe7e <__addsf3> - 338: 4b 01 movw r8, r22 - 33a: 5c 01 movw r10, r24 - 33c: e0 91 88 01 lds r30, 0x0188 - 340: f0 e0 ldi r31, 0x00 ; 0 - 342: e8 57 subi r30, 0x78 ; 120 - 344: fe 4f sbci r31, 0xFE ; 254 - 346: 65 81 ldd r22, Z+5 ; 0x05 - 348: 70 e0 ldi r23, 0x00 ; 0 - 34a: 80 e0 ldi r24, 0x00 ; 0 - 34c: 90 e0 ldi r25, 0x00 ; 0 - 34e: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 352: 9b 01 movw r18, r22 - 354: ac 01 movw r20, r24 - 356: c5 01 movw r24, r10 - 358: b4 01 movw r22, r8 - 35a: 0e 94 85 08 call 0x110a ; 0x110a <__gesf2> - 35e: 88 23 and r24, r24 - 360: 0c f0 brlt .+2 ; 0x364 <__vector_13+0x2a6> - 362: 81 c0 rjmp .+258 ; 0x466 <__vector_13+0x3a8> - 364: 92 c0 rjmp .+292 ; 0x48a <__vector_13+0x3cc> - OCR2B = OCR2B + this->fadesteps[1]; - } else { - OCR2B = this->fademap[1][this->fade_zylk-1]; - this->fadesteps[1] = 0; - } - if((this->fadesteps[2] > 0 && (OCR2A + this->fadesteps[2]) <= this->fademap[2][this->fade_zylk-1]) || (this->fadesteps[2] < 0 && (OCR2A + this->fadesteps[2]) >= this->fademap[2][this->fade_zylk-1])) { - 366: c0 90 a5 01 lds r12, 0x01A5 - 36a: d0 90 a6 01 lds r13, 0x01A6 - 36e: e0 90 a7 01 lds r14, 0x01A7 - 372: f0 90 a8 01 lds r15, 0x01A8 - 376: 20 e0 ldi r18, 0x00 ; 0 - 378: 30 e0 ldi r19, 0x00 ; 0 - 37a: a9 01 movw r20, r18 - 37c: c7 01 movw r24, r14 - 37e: b6 01 movw r22, r12 - 380: 0e 94 85 08 call 0x110a ; 0x110a <__gesf2> - 384: 18 16 cp r1, r24 - 386: 1c f5 brge .+70 ; 0x3ce <__vector_13+0x310> - 388: 60 91 b3 00 lds r22, 0x00B3 - 38c: 70 e0 ldi r23, 0x00 ; 0 - 38e: 80 e0 ldi r24, 0x00 ; 0 - 390: 90 e0 ldi r25, 0x00 ; 0 - 392: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 396: 9b 01 movw r18, r22 - 398: ac 01 movw r20, r24 - 39a: c7 01 movw r24, r14 - 39c: b6 01 movw r22, r12 - 39e: 0e 94 3f 07 call 0xe7e ; 0xe7e <__addsf3> - 3a2: 4b 01 movw r8, r22 - 3a4: 5c 01 movw r10, r24 - 3a6: e0 91 88 01 lds r30, 0x0188 - 3aa: f0 e0 ldi r31, 0x00 ; 0 - 3ac: e8 57 subi r30, 0x78 ; 120 - 3ae: fe 4f sbci r31, 0xFE ; 254 - 3b0: 62 85 ldd r22, Z+10 ; 0x0a - 3b2: 70 e0 ldi r23, 0x00 ; 0 - 3b4: 80 e0 ldi r24, 0x00 ; 0 - 3b6: 90 e0 ldi r25, 0x00 ; 0 - 3b8: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 3bc: 9b 01 movw r18, r22 - 3be: ac 01 movw r20, r24 - 3c0: c5 01 movw r24, r10 - 3c2: b4 01 movw r22, r8 - 3c4: 0e 94 a3 07 call 0xf46 ; 0xf46 <__cmpsf2> - 3c8: 18 16 cp r1, r24 - 3ca: 0c f0 brlt .+2 ; 0x3ce <__vector_13+0x310> - 3cc: 6f c0 rjmp .+222 ; 0x4ac <__vector_13+0x3ee> - 3ce: 20 e0 ldi r18, 0x00 ; 0 - 3d0: 30 e0 ldi r19, 0x00 ; 0 - 3d2: a9 01 movw r20, r18 - 3d4: c7 01 movw r24, r14 - 3d6: b6 01 movw r22, r12 - 3d8: 0e 94 a3 07 call 0xf46 ; 0xf46 <__cmpsf2> - 3dc: 88 23 and r24, r24 - 3de: 0c f0 brlt .+2 ; 0x3e2 <__vector_13+0x324> - 3e0: 77 c0 rjmp .+238 ; 0x4d0 <__vector_13+0x412> - 3e2: 60 91 b3 00 lds r22, 0x00B3 - 3e6: 70 e0 ldi r23, 0x00 ; 0 - 3e8: 80 e0 ldi r24, 0x00 ; 0 - 3ea: 90 e0 ldi r25, 0x00 ; 0 - 3ec: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 3f0: 9b 01 movw r18, r22 - 3f2: ac 01 movw r20, r24 - 3f4: c7 01 movw r24, r14 - 3f6: b6 01 movw r22, r12 - 3f8: 0e 94 3f 07 call 0xe7e ; 0xe7e <__addsf3> - 3fc: 4b 01 movw r8, r22 - 3fe: 5c 01 movw r10, r24 - 400: e0 91 88 01 lds r30, 0x0188 - 404: f0 e0 ldi r31, 0x00 ; 0 - 406: e8 57 subi r30, 0x78 ; 120 - 408: fe 4f sbci r31, 0xFE ; 254 - 40a: 62 85 ldd r22, Z+10 ; 0x0a - 40c: 70 e0 ldi r23, 0x00 ; 0 - 40e: 80 e0 ldi r24, 0x00 ; 0 - 410: 90 e0 ldi r25, 0x00 ; 0 - 412: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 416: 9b 01 movw r18, r22 - 418: ac 01 movw r20, r24 - 41a: c5 01 movw r24, r10 - 41c: b4 01 movw r22, r8 - 41e: 0e 94 85 08 call 0x110a ; 0x110a <__gesf2> - 422: 88 23 and r24, r24 - 424: 0c f0 brlt .+2 ; 0x428 <__vector_13+0x36a> - 426: 42 c0 rjmp .+132 ; 0x4ac <__vector_13+0x3ee> - 428: 53 c0 rjmp .+166 ; 0x4d0 <__vector_13+0x412> - this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue; - } else { - if((this->fadesteps[0] > 0 && (OCR0B + this->fadesteps[0]) <= this->fademap[0][this->fade_zylk-1]) || (this->fadesteps[0] < 0 && (OCR0B + this->fadesteps[0]) >= this->fademap[0][this->fade_zylk-1])) { - OCR0B = OCR0B + this->fadesteps[0]; - } else { - OCR0B = this->fademap[0][this->fade_zylk-1]; - 42a: d0 e0 ldi r29, 0x00 ; 0 - 42c: c8 57 subi r28, 0x78 ; 120 - 42e: de 4f sbci r29, 0xFE ; 254 - 430: 88 81 ld r24, Y - 432: 88 bd out 0x28, r24 ; 40 - this->fadesteps[0] = 0; - 434: 10 92 9d 01 sts 0x019D, r1 - 438: 10 92 9e 01 sts 0x019E, r1 - 43c: 10 92 9f 01 sts 0x019F, r1 - 440: 10 92 a0 01 sts 0x01A0, r1 - 444: 2e cf rjmp .-420 ; 0x2a2 <__vector_13+0x1e4> - this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-OCR0B)/this->fademap[3][this->fade_zylk-1]; //Calc Red; + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) { + 316: 0f 2e mov r0, r31 + 318: f8 e8 ldi r31, 0x88 ; 136 + 31a: af 2e mov r10, r31 + 31c: f1 e0 ldi r31, 0x01 ; 1 + 31e: bf 2e mov r11, r31 + 320: f0 2d mov r31, r0 + this->color(0, 0, 0); + } + void sp(uint8_t i, uint8_t c) { + switch(i) { + case 0: OCR0B = c; break; //ROT + case 1: OCR2B = c; break; //GRÜN + 322: 0f 2e mov r0, r31 + 324: f4 eb ldi r31, 0xB4 ; 180 + 326: 2f 2e mov r2, r31 + 328: 31 2c mov r3, r1 + 32a: f0 2d mov r31, r0 + 32c: 98 2c mov r9, r8 + 32e: 9a 94 dec r9 + /*this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-this->gp(0))/this->fademap[3][this->fade_zylk-1]; //Calc Red; this->fadesteps[1] = (this->fademap[1][this->fade_zylk-1]-OCR2B)/this->fademap[3][this->fade_zylk-1]; //Calc Green; - this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue; + this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue;*/ } else { - if((this->fadesteps[0] > 0 && (OCR0B + this->fadesteps[0]) <= this->fademap[0][this->fade_zylk-1]) || (this->fadesteps[0] < 0 && (OCR0B + this->fadesteps[0]) >= this->fademap[0][this->fade_zylk-1])) { - OCR0B = OCR0B + this->fadesteps[0]; - 446: 68 b5 in r22, 0x28 ; 40 - 448: 70 e0 ldi r23, 0x00 ; 0 - 44a: 80 e0 ldi r24, 0x00 ; 0 - 44c: 90 e0 ldi r25, 0x00 ; 0 - 44e: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 452: 9b 01 movw r18, r22 - 454: ac 01 movw r20, r24 - 456: c7 01 movw r24, r14 - 458: b6 01 movw r22, r12 - 45a: 0e 94 3f 07 call 0xe7e ; 0xe7e <__addsf3> - 45e: 0e 94 a7 07 call 0xf4e ; 0xf4e <__fixunssfsi> - 462: 68 bd out 0x28, r22 ; 40 - 464: 1e cf rjmp .-452 ; 0x2a2 <__vector_13+0x1e4> - } else { - OCR0B = this->fademap[0][this->fade_zylk-1]; - this->fadesteps[0] = 0; + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) { + 330: c9 2d mov r28, r9 + 332: d0 e0 ldi r29, 0x00 ; 0 + 334: fe 01 movw r30, r28 + 336: ee 0f add r30, r30 + 338: ff 1f adc r31, r31 + 33a: ee 0f add r30, r30 + 33c: ff 1f adc r31, r31 + 33e: e8 57 subi r30, 0x78 ; 120 + 340: fe 4f sbci r31, 0xFE ; 254 + 342: c5 88 ldd r12, Z+21 ; 0x15 + 344: d6 88 ldd r13, Z+22 ; 0x16 + 346: e7 88 ldd r14, Z+23 ; 0x17 + 348: f0 8c ldd r15, Z+24 ; 0x18 + 34a: 20 e0 ldi r18, 0x00 ; 0 + 34c: 30 e0 ldi r19, 0x00 ; 0 + 34e: a9 01 movw r20, r18 + 350: c7 01 movw r24, r14 + 352: b6 01 movw r22, r12 + 354: 0e 94 92 08 call 0x1124 ; 0x1124 <__gesf2> + 358: 18 16 cp r1, r24 + 35a: 4c f5 brge .+82 ; 0x3ae <__vector_13+0x2f0> + 35c: 8e 01 movw r16, r28 + 35e: 00 0f add r16, r16 + 360: 11 1f adc r17, r17 + 362: 00 0f add r16, r16 + 364: 11 1f adc r17, r17 + 366: f8 01 movw r30, r16 + 368: e8 57 subi r30, 0x78 ; 120 + 36a: fe 4f sbci r31, 0xFE ; 254 + 36c: 21 a1 ldd r18, Z+33 ; 0x21 + 36e: 32 a1 ldd r19, Z+34 ; 0x22 + 370: 43 a1 ldd r20, Z+35 ; 0x23 + 372: 54 a1 ldd r21, Z+36 ; 0x24 + 374: c7 01 movw r24, r14 + 376: b6 01 movw r22, r12 + 378: 0e 94 4c 07 call 0xe98 ; 0xe98 <__addsf3> + 37c: 2b 01 movw r4, r22 + 37e: 3c 01 movw r6, r24 + 380: f5 01 movw r30, r10 + 382: 80 81 ld r24, Z + 384: f8 01 movw r30, r16 + 386: ec 0f add r30, r28 + 388: fd 1f adc r31, r29 + 38a: e8 0f add r30, r24 + 38c: f1 1d adc r31, r1 + 38e: e8 57 subi r30, 0x78 ; 120 + 390: fe 4f sbci r31, 0xFE ; 254 + 392: 60 81 ld r22, Z + 394: 70 e0 ldi r23, 0x00 ; 0 + 396: 80 e0 ldi r24, 0x00 ; 0 + 398: 90 e0 ldi r25, 0x00 ; 0 + 39a: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf> + 39e: 9b 01 movw r18, r22 + 3a0: ac 01 movw r20, r24 + 3a2: c3 01 movw r24, r6 + 3a4: b2 01 movw r22, r4 + 3a6: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2> + 3aa: 18 16 cp r1, r24 + 3ac: 9c f5 brge .+102 ; 0x414 <__vector_13+0x356> + 3ae: 20 e0 ldi r18, 0x00 ; 0 + 3b0: 30 e0 ldi r19, 0x00 ; 0 + 3b2: a9 01 movw r20, r18 + 3b4: c7 01 movw r24, r14 + 3b6: b6 01 movw r22, r12 + 3b8: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2> + 3bc: 88 23 and r24, r24 + 3be: 0c f0 brlt .+2 ; 0x3c2 <__vector_13+0x304> + 3c0: 56 c0 rjmp .+172 ; 0x46e <__vector_13+0x3b0> + 3c2: 8e 01 movw r16, r28 + 3c4: 00 0f add r16, r16 + 3c6: 11 1f adc r17, r17 + 3c8: 00 0f add r16, r16 + 3ca: 11 1f adc r17, r17 + 3cc: f8 01 movw r30, r16 + 3ce: e8 57 subi r30, 0x78 ; 120 + 3d0: fe 4f sbci r31, 0xFE ; 254 + 3d2: 21 a1 ldd r18, Z+33 ; 0x21 + 3d4: 32 a1 ldd r19, Z+34 ; 0x22 + 3d6: 43 a1 ldd r20, Z+35 ; 0x23 + 3d8: 54 a1 ldd r21, Z+36 ; 0x24 + 3da: c7 01 movw r24, r14 + 3dc: b6 01 movw r22, r12 + 3de: 0e 94 4c 07 call 0xe98 ; 0xe98 <__addsf3> + 3e2: 2b 01 movw r4, r22 + 3e4: 3c 01 movw r6, r24 + 3e6: f5 01 movw r30, r10 + 3e8: 80 81 ld r24, Z + 3ea: f8 01 movw r30, r16 + 3ec: ec 0f add r30, r28 + 3ee: fd 1f adc r31, r29 + 3f0: e8 0f add r30, r24 + 3f2: f1 1d adc r31, r1 + 3f4: e8 57 subi r30, 0x78 ; 120 + 3f6: fe 4f sbci r31, 0xFE ; 254 + 3f8: 60 81 ld r22, Z + 3fa: 70 e0 ldi r23, 0x00 ; 0 + 3fc: 80 e0 ldi r24, 0x00 ; 0 + 3fe: 90 e0 ldi r25, 0x00 ; 0 + 400: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf> + 404: 9b 01 movw r18, r22 + 406: ac 01 movw r20, r24 + 408: c3 01 movw r24, r6 + 40a: b2 01 movw r22, r4 + 40c: 0e 94 92 08 call 0x1124 ; 0x1124 <__gesf2> + 410: 88 23 and r24, r24 + 412: 6c f1 brlt .+90 ; 0x46e <__vector_13+0x3b0> + this->virtualcolor[i] = this->virtualcolor[i] + this->fadesteps[i]; + 414: cc 0f add r28, r28 + 416: dd 1f adc r29, r29 + 418: cc 0f add r28, r28 + 41a: dd 1f adc r29, r29 + 41c: c8 57 subi r28, 0x78 ; 120 + 41e: de 4f sbci r29, 0xFE ; 254 + 420: 29 a1 ldd r18, Y+33 ; 0x21 + 422: 3a a1 ldd r19, Y+34 ; 0x22 + 424: 4b a1 ldd r20, Y+35 ; 0x23 + 426: 5c a1 ldd r21, Y+36 ; 0x24 + 428: c7 01 movw r24, r14 + 42a: b6 01 movw r22, r12 + 42c: 0e 94 4c 07 call 0xe98 ; 0xe98 <__addsf3> + 430: 26 2f mov r18, r22 + 432: 37 2f mov r19, r23 + 434: 46 2f mov r20, r22 + 436: 57 2f mov r21, r23 + 438: 68 2f mov r22, r24 + 43a: 79 2f mov r23, r25 + 43c: 49 a3 std Y+33, r20 ; 0x21 + 43e: 5a a3 std Y+34, r21 ; 0x22 + 440: 6b a3 std Y+35, r22 ; 0x23 + 442: 7c a3 std Y+36, r23 ; 0x24 + this->sp(i, this->virtualcolor[i]); + 444: 62 2f mov r22, r18 + 446: 73 2f mov r23, r19 + 448: 0e 94 b4 07 call 0xf68 ; 0xf68 <__fixunssfsi> + this->fade_zylk = 0; + this->initTimer(); + this->color(0, 0, 0); + } + void sp(uint8_t i, uint8_t c) { + switch(i) { + 44c: f1 e0 ldi r31, 0x01 ; 1 + 44e: 9f 16 cp r9, r31 + 450: 41 f0 breq .+16 ; 0x462 <__vector_13+0x3a4> + 452: 9f 16 cp r9, r31 + 454: 20 f0 brcs .+8 ; 0x45e <__vector_13+0x3a0> + 456: 82 e0 ldi r24, 0x02 ; 2 + 458: 98 12 cpse r9, r24 + 45a: 32 c0 rjmp .+100 ; 0x4c0 <__vector_13+0x402> + 45c: 05 c0 rjmp .+10 ; 0x468 <__vector_13+0x3aa> + case 0: OCR0B = c; break; //ROT + 45e: 68 bd out 0x28, r22 ; 40 + 460: 53 cf rjmp .-346 ; 0x308 <__vector_13+0x24a> + case 1: OCR2B = c; break; //GRÜN + 462: f1 01 movw r30, r2 + 464: 60 83 st Z, r22 + 466: 50 cf rjmp .-352 ; 0x308 <__vector_13+0x24a> + case 2: OCR2A = c; break; //BLAU + 468: 60 93 b3 00 sts 0x00B3, r22 + 46c: 46 c0 rjmp .+140 ; 0x4fa <__vector_13+0x43c> + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) { + this->virtualcolor[i] = this->virtualcolor[i] + this->fadesteps[i]; + this->sp(i, this->virtualcolor[i]); + } else { + this->sp(i, this->fademap[i][this->fade_zylk-1]); + 46e: f5 01 movw r30, r10 + 470: 80 81 ld r24, Z + 472: fe 01 movw r30, r28 + 474: ee 0f add r30, r30 + 476: ff 1f adc r31, r31 + 478: ee 0f add r30, r30 + 47a: ff 1f adc r31, r31 + 47c: ec 0f add r30, r28 + 47e: fd 1f adc r31, r29 + 480: e8 0f add r30, r24 + 482: f1 1d adc r31, r1 + 484: e8 57 subi r30, 0x78 ; 120 + 486: fe 4f sbci r31, 0xFE ; 254 + 488: 80 81 ld r24, Z + this->fade_zylk = 0; + this->initTimer(); + this->color(0, 0, 0); + } + void sp(uint8_t i, uint8_t c) { + switch(i) { + 48a: f1 e0 ldi r31, 0x01 ; 1 + 48c: 9f 16 cp r9, r31 + 48e: 41 f0 breq .+16 ; 0x4a0 <__vector_13+0x3e2> + 490: 9f 16 cp r9, r31 + 492: 20 f0 brcs .+8 ; 0x49c <__vector_13+0x3de> + 494: 92 e0 ldi r25, 0x02 ; 2 + 496: 99 12 cpse r9, r25 + 498: 09 c0 rjmp .+18 ; 0x4ac <__vector_13+0x3ee> + 49a: 05 c0 rjmp .+10 ; 0x4a6 <__vector_13+0x3e8> + case 0: OCR0B = c; break; //ROT + 49c: 88 bd out 0x28, r24 ; 40 + 49e: 06 c0 rjmp .+12 ; 0x4ac <__vector_13+0x3ee> + case 1: OCR2B = c; break; //GRÜN + 4a0: f1 01 movw r30, r2 + 4a2: 80 83 st Z, r24 + 4a4: 03 c0 rjmp .+6 ; 0x4ac <__vector_13+0x3ee> + case 2: OCR2A = c; break; //BLAU + 4a6: e3 eb ldi r30, 0xB3 ; 179 + 4a8: f0 e0 ldi r31, 0x00 ; 0 + 4aa: 80 83 st Z, r24 + if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) { + this->virtualcolor[i] = this->virtualcolor[i] + this->fadesteps[i]; + this->sp(i, this->virtualcolor[i]); + } else { + this->sp(i, this->fademap[i][this->fade_zylk-1]); + this->fadesteps[i] = 0; + 4ac: cc 0f add r28, r28 + 4ae: dd 1f adc r29, r29 + 4b0: cc 0f add r28, r28 + 4b2: dd 1f adc r29, r29 + 4b4: c8 57 subi r28, 0x78 ; 120 + 4b6: de 4f sbci r29, 0xFE ; 254 + 4b8: 1d 8a std Y+21, r1 ; 0x15 + 4ba: 1e 8a std Y+22, r1 ; 0x16 + 4bc: 1f 8a std Y+23, r1 ; 0x17 + 4be: 18 8e std Y+24, r1 ; 0x18 } - if((this->fadesteps[1] > 0 && (OCR2B + this->fadesteps[1]) <= this->fademap[1][this->fade_zylk-1]) || (this->fadesteps[1] < 0 && (OCR2B + this->fadesteps[1]) >= this->fademap[1][this->fade_zylk-1])) { - OCR2B = OCR2B + this->fadesteps[1]; - 466: c4 eb ldi r28, 0xB4 ; 180 - 468: d0 e0 ldi r29, 0x00 ; 0 - 46a: 68 81 ld r22, Y - 46c: 70 e0 ldi r23, 0x00 ; 0 - 46e: 80 e0 ldi r24, 0x00 ; 0 - 470: 90 e0 ldi r25, 0x00 ; 0 - 472: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 476: 9b 01 movw r18, r22 - 478: ac 01 movw r20, r24 - 47a: c7 01 movw r24, r14 - 47c: b6 01 movw r22, r12 - 47e: 0e 94 3f 07 call 0xe7e ; 0xe7e <__addsf3> - 482: 0e 94 a7 07 call 0xf4e ; 0xf4e <__fixunssfsi> - 486: 68 83 st Y, r22 - 488: 6e cf rjmp .-292 ; 0x366 <__vector_13+0x2a8> - } else { - OCR2B = this->fademap[1][this->fade_zylk-1]; - 48a: e0 91 88 01 lds r30, 0x0188 - 48e: f0 e0 ldi r31, 0x00 ; 0 - 490: e8 57 subi r30, 0x78 ; 120 - 492: fe 4f sbci r31, 0xFE ; 254 - 494: 85 81 ldd r24, Z+5 ; 0x05 - 496: 80 93 b4 00 sts 0x00B4, r24 - this->fadesteps[1] = 0; - 49a: 10 92 a1 01 sts 0x01A1, r1 - 49e: 10 92 a2 01 sts 0x01A2, r1 - 4a2: 10 92 a3 01 sts 0x01A3, r1 - 4a6: 10 92 a4 01 sts 0x01A4, r1 - 4aa: 5d cf rjmp .-326 ; 0x366 <__vector_13+0x2a8> - } - if((this->fadesteps[2] > 0 && (OCR2A + this->fadesteps[2]) <= this->fademap[2][this->fade_zylk-1]) || (this->fadesteps[2] < 0 && (OCR2A + this->fadesteps[2]) >= this->fademap[2][this->fade_zylk-1])) { - OCR2A = OCR2A + this->fadesteps[2]; - 4ac: c3 eb ldi r28, 0xB3 ; 179 - 4ae: d0 e0 ldi r29, 0x00 ; 0 - 4b0: 68 81 ld r22, Y - 4b2: 70 e0 ldi r23, 0x00 ; 0 - 4b4: 80 e0 ldi r24, 0x00 ; 0 - 4b6: 90 e0 ldi r25, 0x00 ; 0 - 4b8: 0e 94 d5 07 call 0xfaa ; 0xfaa <__floatsisf> - 4bc: 9b 01 movw r18, r22 - 4be: ac 01 movw r20, r24 - 4c0: c7 01 movw r24, r14 - 4c2: b6 01 movw r22, r12 - 4c4: 0e 94 3f 07 call 0xe7e ; 0xe7e <__addsf3> - 4c8: 0e 94 a7 07 call 0xf4e ; 0xf4e <__fixunssfsi> - 4cc: 68 83 st Y, r22 - 4ce: 10 c0 rjmp .+32 ; 0x4f0 <__vector_13+0x432> - } else { - OCR2A = this->fademap[2][this->fade_zylk-1]; - 4d0: e0 91 88 01 lds r30, 0x0188 - 4d4: f0 e0 ldi r31, 0x00 ; 0 - 4d6: e8 57 subi r30, 0x78 ; 120 - 4d8: fe 4f sbci r31, 0xFE ; 254 - 4da: 82 85 ldd r24, Z+10 ; 0x0a - 4dc: 80 93 b3 00 sts 0x00B3, r24 - this->fadesteps[2] = 0; - 4e0: 10 92 a5 01 sts 0x01A5, r1 - 4e4: 10 92 a6 01 sts 0x01A6, r1 - 4e8: 10 92 a7 01 sts 0x01A7, r1 - 4ec: 10 92 a8 01 sts 0x01A8, r1 + /*this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-this->gp(0))/this->fademap[3][this->fade_zylk-1]; //Calc Red; + this->fadesteps[1] = (this->fademap[1][this->fade_zylk-1]-OCR2B)/this->fademap[3][this->fade_zylk-1]; //Calc Green; + this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue;*/ + } else { + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + 4c0: f2 e0 ldi r31, 0x02 ; 2 + 4c2: f8 15 cp r31, r8 + 4c4: 08 f0 brcs .+2 ; 0x4c8 <__vector_13+0x40a> + 4c6: 20 cf rjmp .-448 ; 0x308 <__vector_13+0x24a> + 4c8: 18 c0 rjmp .+48 ; 0x4fa <__vector_13+0x43c> + void interrupt() { + if(this->fade_zylk > 0) { + if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; + this->virtualcolor[i] = this->gp(i); + 4ca: c7 01 movw r24, r14 + 4cc: 88 0f add r24, r24 + 4ce: 99 1f adc r25, r25 + 4d0: 88 0f add r24, r24 + 4d2: 99 1f adc r25, r25 + 4d4: 0f 2e mov r0, r31 + 4d6: f8 e8 ldi r31, 0x88 ; 136 + 4d8: ef 2e mov r14, r31 + 4da: f1 e0 ldi r31, 0x01 ; 1 + 4dc: ff 2e mov r15, r31 + 4de: f0 2d mov r31, r0 + 4e0: e8 0e add r14, r24 + 4e2: f9 1e adc r15, r25 + 4e4: 70 e0 ldi r23, 0x00 ; 0 + 4e6: 80 e0 ldi r24, 0x00 ; 0 + 4e8: 90 e0 ldi r25, 0x00 ; 0 + 4ea: 0e 94 e0 07 call 0xfc0 ; 0xfc0 <__floatunsisf> + 4ee: f7 01 movw r30, r14 + 4f0: 61 a3 std Z+33, r22 ; 0x21 + 4f2: 72 a3 std Z+34, r23 ; 0x22 + 4f4: 83 a3 std Z+35, r24 ; 0x23 + 4f6: 94 a3 std Z+36, r25 ; 0x24 + 4f8: 3a ce rjmp .-908 ; 0x16e <__vector_13+0xb0> stripe.interrupt(); -} - 4f0: ff 91 pop r31 - 4f2: ef 91 pop r30 - 4f4: df 91 pop r29 - 4f6: cf 91 pop r28 - 4f8: bf 91 pop r27 - 4fa: af 91 pop r26 - 4fc: 9f 91 pop r25 - 4fe: 8f 91 pop r24 - 500: 7f 91 pop r23 - 502: 6f 91 pop r22 - 504: 5f 91 pop r21 - 506: 4f 91 pop r20 - 508: 3f 91 pop r19 - 50a: 2f 91 pop r18 - 50c: ff 90 pop r15 - 50e: ef 90 pop r14 - 510: df 90 pop r13 - 512: cf 90 pop r12 - 514: bf 90 pop r11 - 516: af 90 pop r10 - 518: 9f 90 pop r9 - 51a: 8f 90 pop r8 - 51c: 0f 90 pop r0 - 51e: 0f be out 0x3f, r0 ; 63 - 520: 0f 90 pop r0 - 522: 1f 90 pop r1 - 524: 18 95 reti + 4fa: ff 91 pop r31 + 4fc: ef 91 pop r30 + 4fe: df 91 pop r29 + 500: cf 91 pop r28 + 502: bf 91 pop r27 + 504: af 91 pop r26 + 506: 9f 91 pop r25 + 508: 8f 91 pop r24 + 50a: 7f 91 pop r23 + 50c: 6f 91 pop r22 + 50e: 5f 91 pop r21 + 510: 4f 91 pop r20 + 512: 3f 91 pop r19 + 514: 2f 91 pop r18 + 516: 1f 91 pop r17 + 518: 0f 91 pop r16 + 51a: ff 90 pop r15 + 51c: ef 90 pop r14 + 51e: df 90 pop r13 + 520: cf 90 pop r12 + 522: bf 90 pop r11 + 524: af 90 pop r10 + 526: 9f 90 pop r9 + 528: 8f 90 pop r8 + 52a: 7f 90 pop r7 + 52c: 6f 90 pop r6 + 52e: 5f 90 pop r5 + 530: 4f 90 pop r4 + 532: 3f 90 pop r3 + 534: 2f 90 pop r2 + 536: 0f 90 pop r0 + 538: 0f be out 0x3f, r0 ; 63 + 53a: 0f 90 pop r0 + 53c: 1f 90 pop r1 + 53e: 18 95 reti -00000526 <_ZN4UartILm9600EEC1Ev>: +00000540 <_ZN4UartILm9600EEC1Ev>: #include template class Uart { public: Uart() { - 526: cf 93 push r28 - 528: df 93 push r29 + 540: cf 93 push r28 + 542: df 93 push r29 sei(); - 52a: 78 94 sei + 544: 78 94 sei void print(uint8_t wert) { uart_putchar(wert); } private: void init() { UBRR0L = (F_CPU / (baudrate * 16L) - 1); //Teiler wird gesetzt - 52c: 81 e8 ldi r24, 0x81 ; 129 - 52e: 80 93 c4 00 sts 0x00C4, r24 + 546: 81 e8 ldi r24, 0x81 ; 129 + 548: 80 93 c4 00 sts 0x00C4, r24 UCSR0A= (0< + 56a: 80 81 ld r24, Z + 56c: 85 ff sbrs r24, 5 + 56e: fd cf rjmp .-6 ; 0x56a <_ZN4UartILm9600EEC1Ev+0x2a> UDR0 = c; - 556: 98 83 st Y, r25 + 570: 98 83 st Y, r25 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - 558: 9d 91 ld r25, X+ - 55a: 91 11 cpse r25, r1 - 55c: f9 cf rjmp .-14 ; 0x550 <_ZN4UartILm9600EEC1Ev+0x2a> + 572: 9d 91 ld r25, X+ + 574: 91 11 cpse r25, r1 + 576: f9 cf rjmp .-14 ; 0x56a <_ZN4UartILm9600EEC1Ev+0x2a> UCSR0A= (0< + 578: e0 ec ldi r30, 0xC0 ; 192 + 57a: f0 e0 ldi r31, 0x00 ; 0 + 57c: 80 81 ld r24, Z + 57e: 85 ff sbrs r24, 5 + 580: fd cf rjmp .-6 ; 0x57c <_ZN4UartILm9600EEC1Ev+0x3c> UDR0 = c; - 568: 8d e0 ldi r24, 0x0D ; 13 - 56a: 80 93 c6 00 sts 0x00C6, r24 + 582: 8d e0 ldi r24, 0x0D ; 13 + 584: 80 93 c6 00 sts 0x00C6, r24 UCSR0A= (0< + 588: e0 ec ldi r30, 0xC0 ; 192 + 58a: f0 e0 ldi r31, 0x00 ; 0 + 58c: 80 81 ld r24, Z + 58e: 85 ff sbrs r24, 5 + 590: fd cf rjmp .-6 ; 0x58c <_ZN4UartILm9600EEC1Ev+0x4c> UDR0 = c; - 578: 8a e0 ldi r24, 0x0A ; 10 - 57a: 80 93 c6 00 sts 0x00C6, r24 + 592: 8a e0 ldi r24, 0x0A ; 10 + 594: 80 93 c6 00 sts 0x00C6, r24 public: Uart() { sei(); init(); println("Uart done!"); } - 57e: df 91 pop r29 - 580: cf 91 pop r28 - 582: 08 95 ret + 598: df 91 pop r29 + 59a: cf 91 pop r28 + 59c: 08 95 ret -00000584 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh>: - OCR0B=r; //ROT - OCR2B=g; //GRÜN - OCR2A=b; //BLAU +0000059e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh>: + this->sp(0, r); //ROT + this->sp(1, g); //GRÜN + this->sp(2, b); //BLAU } void setcolor(uint8_t mask) { - (mask & (1<<0)) ? OCR2A=0xFF : OCR2A=0x00; - 584: 60 ff sbrs r22, 0 - 586: 04 c0 rjmp .+8 ; 0x590 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0xc> - 588: 8f ef ldi r24, 0xFF ; 255 - 58a: 80 93 b3 00 sts 0x00B3, r24 - 58e: 02 c0 rjmp .+4 ; 0x594 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x10> - 590: 10 92 b3 00 sts 0x00B3, r1 - (mask & (1<<1)) ? OCR2B=0xFF : OCR2B=0x00; - 594: 61 ff sbrs r22, 1 - 596: 04 c0 rjmp .+8 ; 0x5a0 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x1c> - 598: 8f ef ldi r24, 0xFF ; 255 - 59a: 80 93 b4 00 sts 0x00B4, r24 - 59e: 02 c0 rjmp .+4 ; 0x5a4 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x20> - 5a0: 10 92 b4 00 sts 0x00B4, r1 - (mask & (1<<2)) ? OCR0B=0xFF : OCR0B=0x00; - 5a4: 62 ff sbrs r22, 2 - 5a6: 03 c0 rjmp .+6 ; 0x5ae <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x2a> - 5a8: 8f ef ldi r24, 0xFF ; 255 - 5aa: 88 bd out 0x28, r24 ; 40 - 5ac: 08 95 ret - 5ae: 18 bc out 0x28, r1 ; 40 - 5b0: 08 95 ret + (mask & (1<<0)) ? this->sp(2, 0xFF) : this->sp(2, 0x00); //Blau + 59e: 60 ff sbrs r22, 0 + 5a0: 04 c0 rjmp .+8 ; 0x5aa <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0xc> + } + void sp(uint8_t i, uint8_t c) { + switch(i) { + case 0: OCR0B = c; break; //ROT + case 1: OCR2B = c; break; //GRÜN + case 2: OCR2A = c; break; //BLAU + 5a2: 8f ef ldi r24, 0xFF ; 255 + 5a4: 80 93 b3 00 sts 0x00B3, r24 + 5a8: 02 c0 rjmp .+4 ; 0x5ae <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x10> + 5aa: 10 92 b3 00 sts 0x00B3, r1 + this->sp(1, g); //GRÜN + this->sp(2, b); //BLAU + } + void setcolor(uint8_t mask) { + (mask & (1<<0)) ? this->sp(2, 0xFF) : this->sp(2, 0x00); //Blau + (mask & (1<<1)) ? this->sp(1, 0xFF) : this->sp(1, 0x00); //Grün + 5ae: 61 ff sbrs r22, 1 + 5b0: 04 c0 rjmp .+8 ; 0x5ba <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x1c> + this->color(0, 0, 0); + } + void sp(uint8_t i, uint8_t c) { + switch(i) { + case 0: OCR0B = c; break; //ROT + case 1: OCR2B = c; break; //GRÜN + 5b2: 8f ef ldi r24, 0xFF ; 255 + 5b4: 80 93 b4 00 sts 0x00B4, r24 + 5b8: 02 c0 rjmp .+4 ; 0x5be <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x20> + 5ba: 10 92 b4 00 sts 0x00B4, r1 + this->sp(2, b); //BLAU + } + void setcolor(uint8_t mask) { + (mask & (1<<0)) ? this->sp(2, 0xFF) : this->sp(2, 0x00); //Blau + (mask & (1<<1)) ? this->sp(1, 0xFF) : this->sp(1, 0x00); //Grün + (mask & (1<<2)) ? this->sp(0, 0xFF) : this->sp(0, 0x00); //Rot + 5be: 62 ff sbrs r22, 2 + 5c0: 03 c0 rjmp .+6 ; 0x5c8 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x2a> + this->initTimer(); + this->color(0, 0, 0); + } + void sp(uint8_t i, uint8_t c) { + switch(i) { + case 0: OCR0B = c; break; //ROT + 5c2: 8f ef ldi r24, 0xFF ; 255 + 5c4: 88 bd out 0x28, r24 ; 40 + 5c6: 08 95 ret + 5c8: 18 bc out 0x28, r1 ; 40 + 5ca: 08 95 ret -000005b2 <_ZN4UartILm9600EE7printlnEPKc>: +000005cc <_ZN4UartILm9600EE7printlnEPKc>: } else { print("0"); } } } void println(const char *text) { - 5b2: cf 93 push r28 - 5b4: df 93 push r29 + 5cc: cf 93 push r28 + 5ce: df 93 push r29 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - 5b6: fb 01 movw r30, r22 - 5b8: 90 81 ld r25, Z - 5ba: 99 23 and r25, r25 - 5bc: 69 f0 breq .+26 ; 0x5d8 <_ZN4UartILm9600EE7printlnEPKc+0x26> + 5d0: fb 01 movw r30, r22 + 5d2: 90 81 ld r25, Z + 5d4: 99 23 and r25, r25 + 5d6: 69 f0 breq .+26 ; 0x5f2 <_ZN4UartILm9600EE7printlnEPKc+0x26> } else { print("0"); } } } void println(const char *text) { - 5be: db 01 movw r26, r22 - 5c0: 11 96 adiw r26, 0x01 ; 1 + 5d8: db 01 movw r26, r22 + 5da: 11 96 adiw r26, 0x01 ; 1 UCSR0A= (0< + 5e4: 80 81 ld r24, Z + 5e6: 85 ff sbrs r24, 5 + 5e8: fd cf rjmp .-6 ; 0x5e4 <_ZN4UartILm9600EE7printlnEPKc+0x18> UDR0 = c; - 5d0: 98 83 st Y, r25 + 5ea: 98 83 st Y, r25 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - 5d2: 9d 91 ld r25, X+ - 5d4: 91 11 cpse r25, r1 - 5d6: f9 cf rjmp .-14 ; 0x5ca <_ZN4UartILm9600EE7printlnEPKc+0x18> + 5ec: 9d 91 ld r25, X+ + 5ee: 91 11 cpse r25, r1 + 5f0: f9 cf rjmp .-14 ; 0x5e4 <_ZN4UartILm9600EE7printlnEPKc+0x18> UCSR0A= (0< + 5f2: e0 ec ldi r30, 0xC0 ; 192 + 5f4: f0 e0 ldi r31, 0x00 ; 0 + 5f6: 80 81 ld r24, Z + 5f8: 85 ff sbrs r24, 5 + 5fa: fd cf rjmp .-6 ; 0x5f6 <_ZN4UartILm9600EE7printlnEPKc+0x2a> UDR0 = c; - 5e2: 8d e0 ldi r24, 0x0D ; 13 - 5e4: 80 93 c6 00 sts 0x00C6, r24 + 5fc: 8d e0 ldi r24, 0x0D ; 13 + 5fe: 80 93 c6 00 sts 0x00C6, r24 UCSR0A= (0< + 602: e0 ec ldi r30, 0xC0 ; 192 + 604: f0 e0 ldi r31, 0x00 ; 0 + 606: 80 81 ld r24, Z + 608: 85 ff sbrs r24, 5 + 60a: fd cf rjmp .-6 ; 0x606 <_ZN4UartILm9600EE7printlnEPKc+0x3a> UDR0 = c; - 5f2: 8a e0 ldi r24, 0x0A ; 10 - 5f4: 80 93 c6 00 sts 0x00C6, r24 + 60c: 8a e0 ldi r24, 0x0A ; 10 + 60e: 80 93 c6 00 sts 0x00C6, r24 } void println(const char *text) { print(text); print("\r"); print("\n"); } - 5f8: df 91 pop r29 - 5fa: cf 91 pop r28 - 5fc: 08 95 ret + 612: df 91 pop r29 + 614: cf 91 pop r28 + 616: 08 95 ret -000005fe
: +00000618
: ledclass led; compclass comp; irclass ir; int main(void) { - 5fe: cf 93 push r28 - 600: df 93 push r29 - 602: 00 d0 rcall .+0 ; 0x604 - 604: 00 d0 rcall .+0 ; 0x606 - 606: cd b7 in r28, 0x3d ; 61 - 608: de b7 in r29, 0x3e ; 62 + 618: cf 93 push r28 + 61a: df 93 push r29 + 61c: 00 d0 rcall .+0 ; 0x61e + 61e: 00 d0 rcall .+0 ; 0x620 + 620: cd b7 in r28, 0x3d ; 61 + 622: de b7 in r29, 0x3e ; 62 sei(); - 60a: 78 94 sei + 624: 78 94 sei uint8_t doorstatus = 0; stripe.setcolor(stripe.RED); - 60c: 64 e0 ldi r22, 0x04 ; 4 - 60e: 88 e8 ldi r24, 0x88 ; 136 - 610: 91 e0 ldi r25, 0x01 ; 1 - 612: 0e 94 c2 02 call 0x584 ; 0x584 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + 626: 64 e0 ldi r22, 0x04 ; 4 + 628: 88 e8 ldi r24, 0x88 ; 136 + 62a: 91 e0 ldi r25, 0x01 ; 1 + 62c: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> Serial.println("Rot!"); - 616: 6b e0 ldi r22, 0x0B ; 11 - 618: 71 e0 ldi r23, 0x01 ; 1 - 61a: 89 ea ldi r24, 0xA9 ; 169 - 61c: 91 e0 ldi r25, 0x01 ; 1 - 61e: 0e 94 d9 02 call 0x5b2 ; 0x5b2 <_ZN4UartILm9600EE7printlnEPKc> + 630: 6b e0 ldi r22, 0x0B ; 11 + 632: 71 e0 ldi r23, 0x01 ; 1 + 634: 85 eb ldi r24, 0xB5 ; 181 + 636: 91 e0 ldi r25, 0x01 ; 1 + 638: 0e 94 e6 02 call 0x5cc ; 0x5cc <_ZN4UartILm9600EE7printlnEPKc> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 622: 2f e7 ldi r18, 0x7F ; 127 - 624: 3a e1 ldi r19, 0x1A ; 26 - 626: 86 e0 ldi r24, 0x06 ; 6 - 628: 21 50 subi r18, 0x01 ; 1 - 62a: 30 40 sbci r19, 0x00 ; 0 - 62c: 80 40 sbci r24, 0x00 ; 0 - 62e: e1 f7 brne .-8 ; 0x628 - 630: 00 c0 rjmp .+0 ; 0x632 - 632: 00 00 nop + 63c: 2f e7 ldi r18, 0x7F ; 127 + 63e: 3a e1 ldi r19, 0x1A ; 26 + 640: 86 e0 ldi r24, 0x06 ; 6 + 642: 21 50 subi r18, 0x01 ; 1 + 644: 30 40 sbci r19, 0x00 ; 0 + 646: 80 40 sbci r24, 0x00 ; 0 + 648: e1 f7 brne .-8 ; 0x642 + 64a: 00 c0 rjmp .+0 ; 0x64c + 64c: 00 00 nop _delay_ms(100); stripe.setcolor(stripe.GREEN); - 634: 62 e0 ldi r22, 0x02 ; 2 - 636: 88 e8 ldi r24, 0x88 ; 136 - 638: 91 e0 ldi r25, 0x01 ; 1 - 63a: 0e 94 c2 02 call 0x584 ; 0x584 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + 64e: 62 e0 ldi r22, 0x02 ; 2 + 650: 88 e8 ldi r24, 0x88 ; 136 + 652: 91 e0 ldi r25, 0x01 ; 1 + 654: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> Serial.println("Grün!"); - 63e: 60 e1 ldi r22, 0x10 ; 16 - 640: 71 e0 ldi r23, 0x01 ; 1 - 642: 89 ea ldi r24, 0xA9 ; 169 - 644: 91 e0 ldi r25, 0x01 ; 1 - 646: 0e 94 d9 02 call 0x5b2 ; 0x5b2 <_ZN4UartILm9600EE7printlnEPKc> - 64a: 9f e7 ldi r25, 0x7F ; 127 - 64c: aa e1 ldi r26, 0x1A ; 26 - 64e: b6 e0 ldi r27, 0x06 ; 6 - 650: 91 50 subi r25, 0x01 ; 1 - 652: a0 40 sbci r26, 0x00 ; 0 - 654: b0 40 sbci r27, 0x00 ; 0 - 656: e1 f7 brne .-8 ; 0x650 - 658: 00 c0 rjmp .+0 ; 0x65a - 65a: 00 00 nop + 658: 60 e1 ldi r22, 0x10 ; 16 + 65a: 71 e0 ldi r23, 0x01 ; 1 + 65c: 85 eb ldi r24, 0xB5 ; 181 + 65e: 91 e0 ldi r25, 0x01 ; 1 + 660: 0e 94 e6 02 call 0x5cc ; 0x5cc <_ZN4UartILm9600EE7printlnEPKc> + 664: 9f e7 ldi r25, 0x7F ; 127 + 666: aa e1 ldi r26, 0x1A ; 26 + 668: b6 e0 ldi r27, 0x06 ; 6 + 66a: 91 50 subi r25, 0x01 ; 1 + 66c: a0 40 sbci r26, 0x00 ; 0 + 66e: b0 40 sbci r27, 0x00 ; 0 + 670: e1 f7 brne .-8 ; 0x66a + 672: 00 c0 rjmp .+0 ; 0x674 + 674: 00 00 nop _delay_ms(100); stripe.setcolor(stripe.BLUE); - 65c: 61 e0 ldi r22, 0x01 ; 1 - 65e: 88 e8 ldi r24, 0x88 ; 136 - 660: 91 e0 ldi r25, 0x01 ; 1 - 662: 0e 94 c2 02 call 0x584 ; 0x584 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + 676: 61 e0 ldi r22, 0x01 ; 1 + 678: 88 e8 ldi r24, 0x88 ; 136 + 67a: 91 e0 ldi r25, 0x01 ; 1 + 67c: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> Serial.println("Blau!"); - 666: 66 e1 ldi r22, 0x16 ; 22 - 668: 71 e0 ldi r23, 0x01 ; 1 - 66a: 89 ea ldi r24, 0xA9 ; 169 - 66c: 91 e0 ldi r25, 0x01 ; 1 - 66e: 0e 94 d9 02 call 0x5b2 ; 0x5b2 <_ZN4UartILm9600EE7printlnEPKc> - 672: 2f e7 ldi r18, 0x7F ; 127 - 674: 3a e1 ldi r19, 0x1A ; 26 - 676: 86 e0 ldi r24, 0x06 ; 6 - 678: 21 50 subi r18, 0x01 ; 1 - 67a: 30 40 sbci r19, 0x00 ; 0 - 67c: 80 40 sbci r24, 0x00 ; 0 - 67e: e1 f7 brne .-8 ; 0x678 - 680: 00 c0 rjmp .+0 ; 0x682 - 682: 00 00 nop + 680: 66 e1 ldi r22, 0x16 ; 22 + 682: 71 e0 ldi r23, 0x01 ; 1 + 684: 85 eb ldi r24, 0xB5 ; 181 + 686: 91 e0 ldi r25, 0x01 ; 1 + 688: 0e 94 e6 02 call 0x5cc ; 0x5cc <_ZN4UartILm9600EE7printlnEPKc> + 68c: 2f e7 ldi r18, 0x7F ; 127 + 68e: 3a e1 ldi r19, 0x1A ; 26 + 690: 86 e0 ldi r24, 0x06 ; 6 + 692: 21 50 subi r18, 0x01 ; 1 + 694: 30 40 sbci r19, 0x00 ; 0 + 696: 80 40 sbci r24, 0x00 ; 0 + 698: e1 f7 brne .-8 ; 0x692 + 69a: 00 c0 rjmp .+0 ; 0x69c + 69c: 00 00 nop _delay_ms(100); stripe.setcolor(stripe.WHITE); - 684: 67 e0 ldi r22, 0x07 ; 7 - 686: 88 e8 ldi r24, 0x88 ; 136 - 688: 91 e0 ldi r25, 0x01 ; 1 - 68a: 0e 94 c2 02 call 0x584 ; 0x584 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + 69e: 67 e0 ldi r22, 0x07 ; 7 + 6a0: 88 e8 ldi r24, 0x88 ; 136 + 6a2: 91 e0 ldi r25, 0x01 ; 1 + 6a4: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> Serial.println("Weiß, alles Initialisert! Habe Fertig und damit ab zum Normalbetrieb!"); - 68e: 6c e1 ldi r22, 0x1C ; 28 - 690: 71 e0 ldi r23, 0x01 ; 1 - 692: 89 ea ldi r24, 0xA9 ; 169 - 694: 91 e0 ldi r25, 0x01 ; 1 - 696: 0e 94 d9 02 call 0x5b2 ; 0x5b2 <_ZN4UartILm9600EE7printlnEPKc> - 69a: 9f e7 ldi r25, 0x7F ; 127 - 69c: aa e1 ldi r26, 0x1A ; 26 - 69e: b6 e0 ldi r27, 0x06 ; 6 - 6a0: 91 50 subi r25, 0x01 ; 1 - 6a2: a0 40 sbci r26, 0x00 ; 0 - 6a4: b0 40 sbci r27, 0x00 ; 0 - 6a6: e1 f7 brne .-8 ; 0x6a0 - 6a8: 00 c0 rjmp .+0 ; 0x6aa - 6aa: 00 00 nop + 6a8: 6c e1 ldi r22, 0x1C ; 28 + 6aa: 71 e0 ldi r23, 0x01 ; 1 + 6ac: 85 eb ldi r24, 0xB5 ; 181 + 6ae: 91 e0 ldi r25, 0x01 ; 1 + 6b0: 0e 94 e6 02 call 0x5cc ; 0x5cc <_ZN4UartILm9600EE7printlnEPKc> + 6b4: 9f e7 ldi r25, 0x7F ; 127 + 6b6: aa e1 ldi r26, 0x1A ; 26 + 6b8: b6 e0 ldi r27, 0x06 ; 6 + 6ba: 91 50 subi r25, 0x01 ; 1 + 6bc: a0 40 sbci r26, 0x00 ; 0 + 6be: b0 40 sbci r27, 0x00 ; 0 + 6c0: e1 f7 brne .-8 ; 0x6ba + 6c2: 00 c0 rjmp .+0 ; 0x6c4 + 6c4: 00 00 nop namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 6ac: 29 9a sbi 0x05, 1 ; 5 + 6c6: 29 9a sbi 0x05, 1 ; 5 _delay_ms(100); led.green(1); stripe.setcolor(stripe.BLACK); - 6ae: 60 e0 ldi r22, 0x00 ; 0 - 6b0: 88 e8 ldi r24, 0x88 ; 136 - 6b2: 91 e0 ldi r25, 0x01 ; 1 - 6b4: 0e 94 c2 02 call 0x584 ; 0x584 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> + 6c8: 60 e0 ldi r22, 0x00 ; 0 + 6ca: 88 e8 ldi r24, 0x88 ; 136 + 6cc: 91 e0 ldi r25, 0x01 ; 1 + 6ce: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh> irclass ir; int main(void) { sei(); uint8_t doorstatus = 0; - 6b8: 21 2c mov r2, r1 + 6d2: 21 2c mov r2, r1 } led.red(0); EIFR |= (1<_code; - 6ba: 45 e8 ldi r20, 0x85 ; 133 - 6bc: 51 e0 ldi r21, 0x01 ; 1 + 6d4: 45 e8 ldi r20, 0x85 ; 133 + 6d6: 51 e0 ldi r21, 0x01 ; 1 this->_code = 255; - 6be: bb 24 eor r11, r11 - 6c0: ba 94 dec r11 - 6c2: ab 2c mov r10, r11 + 6d8: bb 24 eor r11, r11 + 6da: ba 94 dec r11 + 6dc: ab 2c mov r10, r11 void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 6c4: 0f 2e mov r0, r31 - 6c6: f9 e8 ldi r31, 0x89 ; 137 - 6c8: ef 2e mov r14, r31 - 6ca: f1 e0 ldi r31, 0x01 ; 1 - 6cc: ff 2e mov r15, r31 - 6ce: f0 2d mov r31, r0 + 6de: 0f 2e mov r0, r31 + 6e0: f9 e8 ldi r31, 0x89 ; 137 + 6e2: ef 2e mov r14, r31 + 6e4: f1 e0 ldi r31, 0x01 ; 1 + 6e6: ff 2e mov r15, r31 + 6e8: f0 2d mov r31, r0 this->fademap[1][index] = green; - 6d0: 0e e8 ldi r16, 0x8E ; 142 - 6d2: 11 e0 ldi r17, 0x01 ; 1 + 6ea: 0e e8 ldi r16, 0x8E ; 142 + 6ec: 11 e0 ldi r17, 0x01 ; 1 this->fademap[2][index] = blue; - 6d4: 0f 2e mov r0, r31 - 6d6: f3 e9 ldi r31, 0x93 ; 147 - 6d8: 8f 2e mov r8, r31 - 6da: f1 e0 ldi r31, 0x01 ; 1 - 6dc: 9f 2e mov r9, r31 - 6de: f0 2d mov r31, r0 + 6ee: 0f 2e mov r0, r31 + 6f0: f3 e9 ldi r31, 0x93 ; 147 + 6f2: 8f 2e mov r8, r31 + 6f4: f1 e0 ldi r31, 0x01 ; 1 + 6f6: 9f 2e mov r9, r31 + 6f8: f0 2d mov r31, r0 this->fademap[3][index] = time; - 6e0: 0f 2e mov r0, r31 - 6e2: f8 e9 ldi r31, 0x98 ; 152 - 6e4: 6f 2e mov r6, r31 - 6e6: f1 e0 ldi r31, 0x01 ; 1 - 6e8: 7f 2e mov r7, r31 - 6ea: f0 2d mov r31, r0 - 6ec: 0f 2e mov r0, r31 - 6ee: fa e0 ldi r31, 0x0A ; 10 - 6f0: 3f 2e mov r3, r31 - 6f2: f0 2d mov r31, r0 + 6fa: 0f 2e mov r0, r31 + 6fc: f8 e9 ldi r31, 0x98 ; 152 + 6fe: 6f 2e mov r6, r31 + 700: f1 e0 ldi r31, 0x01 ; 1 + 702: 7f 2e mov r7, r31 + 704: f0 2d mov r31, r0 + 706: 0f 2e mov r0, r31 + 708: fa e0 ldi r31, 0x0A ; 10 + 70a: 3f 2e mov r3, r31 + 70c: f0 2d mov r31, r0 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 6f4: 0f 2e mov r0, r31 - 6f6: f8 e8 ldi r31, 0x88 ; 136 - 6f8: 4f 2e mov r4, r31 - 6fa: f1 e0 ldi r31, 0x01 ; 1 - 6fc: 5f 2e mov r5, r31 - 6fe: f0 2d mov r31, r0 - 700: cc 24 eor r12, r12 - 702: c3 94 inc r12 + 70e: 0f 2e mov r0, r31 + 710: f8 e8 ldi r31, 0x88 ; 136 + 712: 4f 2e mov r4, r31 + 714: f1 e0 ldi r31, 0x01 ; 1 + 716: 5f 2e mov r5, r31 + 718: f0 2d mov r31, r0 + 71a: cc 24 eor r12, r12 + 71c: c3 94 inc r12 UCSR0A= (0<_code; - 710: da 01 movw r26, r20 - 712: 8c 91 ld r24, X + 72a: da 01 movw r26, r20 + 72c: 8c 91 ld r24, X this->_code = 255; - 714: ac 92 st X, r10 + 72e: ac 92 st X, r10 uint8_t remotetimer = 10; while(1) { uint8_t c = ir.getCode(); switch(c) { - 716: 8c 30 cpi r24, 0x0C ; 12 - 718: 09 f4 brne .+2 ; 0x71c - 71a: fc c0 rjmp .+504 ; 0x914 - 71c: 38 f5 brcc .+78 ; 0x76c - 71e: 85 30 cpi r24, 0x05 ; 5 - 720: 09 f4 brne .+2 ; 0x724 - 722: b3 c0 rjmp .+358 ; 0x88a - 724: 90 f4 brcc .+36 ; 0x74a - 726: 82 30 cpi r24, 0x02 ; 2 - 728: 09 f4 brne .+2 ; 0x72c - 72a: 8c c0 rjmp .+280 ; 0x844 - 72c: 38 f4 brcc .+14 ; 0x73c - 72e: 88 23 and r24, r24 - 730: 09 f4 brne .+2 ; 0x734 - 732: 46 c0 rjmp .+140 ; 0x7c0 - 734: 81 30 cpi r24, 0x01 ; 1 - 736: 09 f0 breq .+2 ; 0x73a - 738: 56 c1 rjmp .+684 ; 0x9e6 - 73a: 63 c0 rjmp .+198 ; 0x802 - 73c: 83 30 cpi r24, 0x03 ; 3 - 73e: 09 f4 brne .+2 ; 0x742 - 740: 90 c0 rjmp .+288 ; 0x862 - 742: 84 30 cpi r24, 0x04 ; 4 - 744: 09 f0 breq .+2 ; 0x748 - 746: 4f c1 rjmp .+670 ; 0x9e6 - 748: 95 c0 rjmp .+298 ; 0x874 - 74a: 88 30 cpi r24, 0x08 ; 8 - 74c: 09 f4 brne .+2 ; 0x750 - 74e: be c0 rjmp .+380 ; 0x8cc - 750: 38 f4 brcc .+14 ; 0x760 - 752: 86 30 cpi r24, 0x06 ; 6 - 754: 09 f4 brne .+2 ; 0x758 - 756: a4 c0 rjmp .+328 ; 0x8a0 - 758: 87 30 cpi r24, 0x07 ; 7 - 75a: 09 f0 breq .+2 ; 0x75e - 75c: 44 c1 rjmp .+648 ; 0x9e6 - 75e: ab c0 rjmp .+342 ; 0x8b6 - 760: 8a 30 cpi r24, 0x0A ; 10 - 762: 09 f4 brne .+2 ; 0x766 - 764: cb c0 rjmp .+406 ; 0x8fc - 766: 08 f0 brcs .+2 ; 0x76a - 768: e5 c1 rjmp .+970 ; 0xb34 - 76a: bc c0 rjmp .+376 ; 0x8e4 - 76c: 82 31 cpi r24, 0x12 ; 18 - 76e: 09 f4 brne .+2 ; 0x772 - 770: 0d c1 rjmp .+538 ; 0x98c - 772: 90 f4 brcc .+36 ; 0x798 - 774: 8f 30 cpi r24, 0x0F ; 15 - 776: 09 f4 brne .+2 ; 0x77a - 778: dd c1 rjmp .+954 ; 0xb34 - 77a: 38 f4 brcc .+14 ; 0x78a - 77c: 8d 30 cpi r24, 0x0D ; 13 - 77e: 09 f4 brne .+2 ; 0x782 - 780: d5 c0 rjmp .+426 ; 0x92c - 782: 8e 30 cpi r24, 0x0E ; 14 - 784: 09 f0 breq .+2 ; 0x788 - 786: 2f c1 rjmp .+606 ; 0x9e6 - 788: dd c0 rjmp .+442 ; 0x944 - 78a: 80 31 cpi r24, 0x10 ; 16 - 78c: 09 f4 brne .+2 ; 0x790 - 78e: e6 c0 rjmp .+460 ; 0x95c - 790: 81 31 cpi r24, 0x11 ; 17 - 792: 09 f0 breq .+2 ; 0x796 - 794: 28 c1 rjmp .+592 ; 0x9e6 - 796: ee c0 rjmp .+476 ; 0x974 - 798: 85 31 cpi r24, 0x15 ; 21 - 79a: 09 f4 brne .+2 ; 0x79e - 79c: 0e c1 rjmp .+540 ; 0x9ba - 79e: 38 f4 brcc .+14 ; 0x7ae - 7a0: 83 31 cpi r24, 0x13 ; 19 - 7a2: 09 f4 brne .+2 ; 0x7a6 - 7a4: c7 c1 rjmp .+910 ; 0xb34 - 7a6: 84 31 cpi r24, 0x14 ; 20 - 7a8: 09 f0 breq .+2 ; 0x7ac - 7aa: 1d c1 rjmp .+570 ; 0x9e6 - 7ac: fb c0 rjmp .+502 ; 0x9a4 - 7ae: 87 31 cpi r24, 0x17 ; 23 - 7b0: 09 f4 brne .+2 ; 0x7b4 - 7b2: c0 c1 rjmp .+896 ; 0xb34 - 7b4: 08 f4 brcc .+2 ; 0x7b8 - 7b6: 0c c1 rjmp .+536 ; 0x9d0 - 7b8: 8f 3f cpi r24, 0xFF ; 255 - 7ba: 09 f0 breq .+2 ; 0x7be - 7bc: 14 c1 rjmp .+552 ; 0x9e6 - 7be: ba c1 rjmp .+884 ; 0xb34 + 730: 8c 30 cpi r24, 0x0C ; 12 + 732: 09 f4 brne .+2 ; 0x736 + 734: fc c0 rjmp .+504 ; 0x92e + 736: 38 f5 brcc .+78 ; 0x786 + 738: 85 30 cpi r24, 0x05 ; 5 + 73a: 09 f4 brne .+2 ; 0x73e + 73c: b3 c0 rjmp .+358 ; 0x8a4 + 73e: 90 f4 brcc .+36 ; 0x764 + 740: 82 30 cpi r24, 0x02 ; 2 + 742: 09 f4 brne .+2 ; 0x746 + 744: 8c c0 rjmp .+280 ; 0x85e + 746: 38 f4 brcc .+14 ; 0x756 + 748: 88 23 and r24, r24 + 74a: 09 f4 brne .+2 ; 0x74e + 74c: 46 c0 rjmp .+140 ; 0x7da + 74e: 81 30 cpi r24, 0x01 ; 1 + 750: 09 f0 breq .+2 ; 0x754 + 752: 56 c1 rjmp .+684 ; 0xa00 + 754: 63 c0 rjmp .+198 ; 0x81c + 756: 83 30 cpi r24, 0x03 ; 3 + 758: 09 f4 brne .+2 ; 0x75c + 75a: 90 c0 rjmp .+288 ; 0x87c + 75c: 84 30 cpi r24, 0x04 ; 4 + 75e: 09 f0 breq .+2 ; 0x762 + 760: 4f c1 rjmp .+670 ; 0xa00 + 762: 95 c0 rjmp .+298 ; 0x88e + 764: 88 30 cpi r24, 0x08 ; 8 + 766: 09 f4 brne .+2 ; 0x76a + 768: be c0 rjmp .+380 ; 0x8e6 + 76a: 38 f4 brcc .+14 ; 0x77a + 76c: 86 30 cpi r24, 0x06 ; 6 + 76e: 09 f4 brne .+2 ; 0x772 + 770: a4 c0 rjmp .+328 ; 0x8ba + 772: 87 30 cpi r24, 0x07 ; 7 + 774: 09 f0 breq .+2 ; 0x778 + 776: 44 c1 rjmp .+648 ; 0xa00 + 778: ab c0 rjmp .+342 ; 0x8d0 + 77a: 8a 30 cpi r24, 0x0A ; 10 + 77c: 09 f4 brne .+2 ; 0x780 + 77e: cb c0 rjmp .+406 ; 0x916 + 780: 08 f0 brcs .+2 ; 0x784 + 782: e5 c1 rjmp .+970 ; 0xb4e + 784: bc c0 rjmp .+376 ; 0x8fe + 786: 82 31 cpi r24, 0x12 ; 18 + 788: 09 f4 brne .+2 ; 0x78c + 78a: 0d c1 rjmp .+538 ; 0x9a6 + 78c: 90 f4 brcc .+36 ; 0x7b2 + 78e: 8f 30 cpi r24, 0x0F ; 15 + 790: 09 f4 brne .+2 ; 0x794 + 792: dd c1 rjmp .+954 ; 0xb4e + 794: 38 f4 brcc .+14 ; 0x7a4 + 796: 8d 30 cpi r24, 0x0D ; 13 + 798: 09 f4 brne .+2 ; 0x79c + 79a: d5 c0 rjmp .+426 ; 0x946 + 79c: 8e 30 cpi r24, 0x0E ; 14 + 79e: 09 f0 breq .+2 ; 0x7a2 + 7a0: 2f c1 rjmp .+606 ; 0xa00 + 7a2: dd c0 rjmp .+442 ; 0x95e + 7a4: 80 31 cpi r24, 0x10 ; 16 + 7a6: 09 f4 brne .+2 ; 0x7aa + 7a8: e6 c0 rjmp .+460 ; 0x976 + 7aa: 81 31 cpi r24, 0x11 ; 17 + 7ac: 09 f0 breq .+2 ; 0x7b0 + 7ae: 28 c1 rjmp .+592 ; 0xa00 + 7b0: ee c0 rjmp .+476 ; 0x98e + 7b2: 85 31 cpi r24, 0x15 ; 21 + 7b4: 09 f4 brne .+2 ; 0x7b8 + 7b6: 0e c1 rjmp .+540 ; 0x9d4 + 7b8: 38 f4 brcc .+14 ; 0x7c8 + 7ba: 83 31 cpi r24, 0x13 ; 19 + 7bc: 09 f4 brne .+2 ; 0x7c0 + 7be: c7 c1 rjmp .+910 ; 0xb4e + 7c0: 84 31 cpi r24, 0x14 ; 20 + 7c2: 09 f0 breq .+2 ; 0x7c6 + 7c4: 1d c1 rjmp .+570 ; 0xa00 + 7c6: fb c0 rjmp .+502 ; 0x9be + 7c8: 87 31 cpi r24, 0x17 ; 23 + 7ca: 09 f4 brne .+2 ; 0x7ce + 7cc: c0 c1 rjmp .+896 ; 0xb4e + 7ce: 08 f4 brcc .+2 ; 0x7d2 + 7d0: 0c c1 rjmp .+536 ; 0x9ea + 7d2: 8f 3f cpi r24, 0xFF ; 255 + 7d4: 09 f0 breq .+2 ; 0x7d8 + 7d6: 14 c1 rjmp .+552 ; 0xa00 + 7d8: ba c1 rjmp .+884 ; 0xb4e } else { OCR2A = 0; } } void higher() { if(OCR0B <= 250) { - 7c0: 88 b5 in r24, 0x28 ; 40 - 7c2: 8b 3f cpi r24, 0xFB ; 251 - 7c4: 20 f4 brcc .+8 ; 0x7ce + 7da: 88 b5 in r24, 0x28 ; 40 + 7dc: 8b 3f cpi r24, 0xFB ; 251 + 7de: 20 f4 brcc .+8 ; 0x7e8 OCR0B = OCR0B + 5; - 7c6: 88 b5 in r24, 0x28 ; 40 - 7c8: 8b 5f subi r24, 0xFB ; 251 - 7ca: 88 bd out 0x28, r24 ; 40 - 7cc: 01 c0 rjmp .+2 ; 0x7d0 + 7e0: 88 b5 in r24, 0x28 ; 40 + 7e2: 8b 5f subi r24, 0xFB ; 251 + 7e4: 88 bd out 0x28, r24 ; 40 + 7e6: 01 c0 rjmp .+2 ; 0x7ea } else { OCR0B = 0; - 7ce: 18 bc out 0x28, r1 ; 40 + 7e8: 18 bc out 0x28, r1 ; 40 } if(OCR2B <= 250) { - 7d0: a4 eb ldi r26, 0xB4 ; 180 - 7d2: b0 e0 ldi r27, 0x00 ; 0 - 7d4: 8c 91 ld r24, X - 7d6: 8b 3f cpi r24, 0xFB ; 251 - 7d8: 20 f4 brcc .+8 ; 0x7e2 + 7ea: a4 eb ldi r26, 0xB4 ; 180 + 7ec: b0 e0 ldi r27, 0x00 ; 0 + 7ee: 8c 91 ld r24, X + 7f0: 8b 3f cpi r24, 0xFB ; 251 + 7f2: 20 f4 brcc .+8 ; 0x7fc OCR2B = OCR2B + 5; - 7da: 8c 91 ld r24, X - 7dc: 8b 5f subi r24, 0xFB ; 251 - 7de: 8c 93 st X, r24 - 7e0: 03 c0 rjmp .+6 ; 0x7e8 + 7f4: 8c 91 ld r24, X + 7f6: 8b 5f subi r24, 0xFB ; 251 + 7f8: 8c 93 st X, r24 + 7fa: 03 c0 rjmp .+6 ; 0x802 } else { OCR2B = 0; - 7e2: a4 eb ldi r26, 0xB4 ; 180 - 7e4: b0 e0 ldi r27, 0x00 ; 0 - 7e6: 1c 92 st X, r1 + 7fc: a4 eb ldi r26, 0xB4 ; 180 + 7fe: b0 e0 ldi r27, 0x00 ; 0 + 800: 1c 92 st X, r1 } if(OCR2A <= 250) { - 7e8: a3 eb ldi r26, 0xB3 ; 179 - 7ea: b0 e0 ldi r27, 0x00 ; 0 - 7ec: 8c 91 ld r24, X - 7ee: 8b 3f cpi r24, 0xFB ; 251 - 7f0: 20 f4 brcc .+8 ; 0x7fa + 802: a3 eb ldi r26, 0xB3 ; 179 + 804: b0 e0 ldi r27, 0x00 ; 0 + 806: 8c 91 ld r24, X + 808: 8b 3f cpi r24, 0xFB ; 251 + 80a: 20 f4 brcc .+8 ; 0x814 OCR2A = OCR2A + 5; - 7f2: 8c 91 ld r24, X - 7f4: 8b 5f subi r24, 0xFB ; 251 - 7f6: 8c 93 st X, r24 - 7f8: 9d c1 rjmp .+826 ; 0xb34 + 80c: 8c 91 ld r24, X + 80e: 8b 5f subi r24, 0xFB ; 251 + 810: 8c 93 st X, r24 + 812: 9d c1 rjmp .+826 ; 0xb4e } else { OCR2A = 0; - 7fa: a3 eb ldi r26, 0xB3 ; 179 - 7fc: b0 e0 ldi r27, 0x00 ; 0 - 7fe: 1c 92 st X, r1 - 800: 99 c1 rjmp .+818 ; 0xb34 + 814: a3 eb ldi r26, 0xB3 ; 179 + 816: b0 e0 ldi r27, 0x00 ; 0 + 818: 1c 92 st X, r1 + 81a: 99 c1 rjmp .+818 ; 0xb4e } void on() { this->timerOn(); } void lower() { if(OCR0B >= 5) { - 802: 88 b5 in r24, 0x28 ; 40 - 804: 85 30 cpi r24, 0x05 ; 5 - 806: 20 f0 brcs .+8 ; 0x810 + 81c: 88 b5 in r24, 0x28 ; 40 + 81e: 85 30 cpi r24, 0x05 ; 5 + 820: 20 f0 brcs .+8 ; 0x82a OCR0B = OCR0B - 5; - 808: 88 b5 in r24, 0x28 ; 40 - 80a: 85 50 subi r24, 0x05 ; 5 - 80c: 88 bd out 0x28, r24 ; 40 - 80e: 01 c0 rjmp .+2 ; 0x812 + 822: 88 b5 in r24, 0x28 ; 40 + 824: 85 50 subi r24, 0x05 ; 5 + 826: 88 bd out 0x28, r24 ; 40 + 828: 01 c0 rjmp .+2 ; 0x82c } else { OCR0B = 0; - 810: 18 bc out 0x28, r1 ; 40 + 82a: 18 bc out 0x28, r1 ; 40 } if(OCR2B >= 5) { - 812: a4 eb ldi r26, 0xB4 ; 180 - 814: b0 e0 ldi r27, 0x00 ; 0 - 816: 8c 91 ld r24, X - 818: 85 30 cpi r24, 0x05 ; 5 - 81a: 20 f0 brcs .+8 ; 0x824 + 82c: a4 eb ldi r26, 0xB4 ; 180 + 82e: b0 e0 ldi r27, 0x00 ; 0 + 830: 8c 91 ld r24, X + 832: 85 30 cpi r24, 0x05 ; 5 + 834: 20 f0 brcs .+8 ; 0x83e OCR2B = OCR2B - 5; - 81c: 8c 91 ld r24, X - 81e: 85 50 subi r24, 0x05 ; 5 - 820: 8c 93 st X, r24 - 822: 03 c0 rjmp .+6 ; 0x82a + 836: 8c 91 ld r24, X + 838: 85 50 subi r24, 0x05 ; 5 + 83a: 8c 93 st X, r24 + 83c: 03 c0 rjmp .+6 ; 0x844 } else { OCR2B = 0; - 824: a4 eb ldi r26, 0xB4 ; 180 - 826: b0 e0 ldi r27, 0x00 ; 0 - 828: 1c 92 st X, r1 + 83e: a4 eb ldi r26, 0xB4 ; 180 + 840: b0 e0 ldi r27, 0x00 ; 0 + 842: 1c 92 st X, r1 } if(OCR2A >= 5) { - 82a: a3 eb ldi r26, 0xB3 ; 179 - 82c: b0 e0 ldi r27, 0x00 ; 0 - 82e: 8c 91 ld r24, X - 830: 85 30 cpi r24, 0x05 ; 5 - 832: 20 f0 brcs .+8 ; 0x83c + 844: a3 eb ldi r26, 0xB3 ; 179 + 846: b0 e0 ldi r27, 0x00 ; 0 + 848: 8c 91 ld r24, X + 84a: 85 30 cpi r24, 0x05 ; 5 + 84c: 20 f0 brcs .+8 ; 0x856 OCR2A = OCR2A - 5; - 834: 8c 91 ld r24, X - 836: 85 50 subi r24, 0x05 ; 5 - 838: 8c 93 st X, r24 - 83a: 7c c1 rjmp .+760 ; 0xb34 + 84e: 8c 91 ld r24, X + 850: 85 50 subi r24, 0x05 ; 5 + 852: 8c 93 st X, r24 + 854: 7c c1 rjmp .+760 ; 0xb4e } else { OCR2A = 0; - 83c: a3 eb ldi r26, 0xB3 ; 179 - 83e: b0 e0 ldi r27, 0x00 ; 0 - 840: 1c 92 st X, r1 - 842: 78 c1 rjmp .+752 ; 0xb34 + 856: a3 eb ldi r26, 0xB3 ; 179 + 858: b0 e0 ldi r27, 0x00 ; 0 + 85a: 1c 92 st X, r1 + 85c: 78 c1 rjmp .+752 ; 0xb4e } void timerOff() { // OC0B output: Disconnected // OC2A output: Disconnected // OC2B output: Disconnected TCCR0A &= ~(1< + 878: 23 9a sbi 0x04, 3 ; 4 + 87a: 69 c1 rjmp .+722 ; 0xb4e } void timerOn() { // OC0B output: Non-Inverted PWM // OC2A output: Non-Inverted PWM // OC2B output: Non-Inverted PWM TCCR0A |= (1< + 882: a0 eb ldi r26, 0xB0 ; 176 + 884: b0 e0 ldi r27, 0x00 ; 0 + 886: 8c 91 ld r24, X + 888: 80 6a ori r24, 0xA0 ; 160 + 88a: 8c 93 st X, r24 + 88c: 60 c1 rjmp .+704 ; 0xb4e void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 874: d7 01 movw r26, r14 - 876: bc 92 st X, r11 - this->fademap[1][index] = green; - 878: d8 01 movw r26, r16 - 87a: 1c 92 st X, r1 - this->fademap[2][index] = blue; - 87c: d4 01 movw r26, r8 - 87e: 1c 92 st X, r1 - this->fademap[3][index] = time; - 880: d3 01 movw r26, r6 - 882: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { - this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 884: d2 01 movw r26, r4 - 886: cc 92 st X, r12 - 888: 55 c1 rjmp .+682 ; 0xb34 - } - void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { - this->fademap[0][index] = red; - 88a: d7 01 movw r26, r14 - 88c: 1c 92 st X, r1 - this->fademap[1][index] = green; - 88e: d8 01 movw r26, r16 + 88e: d7 01 movw r26, r14 890: bc 92 st X, r11 - this->fademap[2][index] = blue; - 892: d4 01 movw r26, r8 + this->fademap[1][index] = green; + 892: d8 01 movw r26, r16 894: 1c 92 st X, r1 + this->fademap[2][index] = blue; + 896: d4 01 movw r26, r8 + 898: 1c 92 st X, r1 this->fademap[3][index] = time; - 896: d3 01 movw r26, r6 - 898: 3c 92 st X, r3 + 89a: d3 01 movw r26, r6 + 89c: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 89a: d2 01 movw r26, r4 - 89c: cc 92 st X, r12 - 89e: 4a c1 rjmp .+660 ; 0xb34 + 89e: d2 01 movw r26, r4 + 8a0: cc 92 st X, r12 + 8a2: 55 c1 rjmp .+682 ; 0xb4e } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 8a0: d7 01 movw r26, r14 - 8a2: 1c 92 st X, r1 - this->fademap[1][index] = green; - 8a4: d8 01 movw r26, r16 + 8a4: d7 01 movw r26, r14 8a6: 1c 92 st X, r1 - this->fademap[2][index] = blue; - 8a8: d4 01 movw r26, r8 + this->fademap[1][index] = green; + 8a8: d8 01 movw r26, r16 8aa: bc 92 st X, r11 - this->fademap[3][index] = time; - 8ac: d3 01 movw r26, r6 - 8ae: 3c 92 st X, r3 - OCR2A = 0; - } - } - void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { - this->setfadecolor(0, red, green, blue, time); - this->fade_zylk = 1; - 8b0: d2 01 movw r26, r4 - 8b2: cc 92 st X, r12 - 8b4: 3f c1 rjmp .+638 ; 0xb34 - } - void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { - this->fademap[0][index] = red; - 8b6: d7 01 movw r26, r14 - 8b8: bc 92 st X, r11 - this->fademap[1][index] = green; - 8ba: d8 01 movw r26, r16 - 8bc: bc 92 st X, r11 this->fademap[2][index] = blue; - 8be: d4 01 movw r26, r8 - 8c0: bc 92 st X, r11 + 8ac: d4 01 movw r26, r8 + 8ae: 1c 92 st X, r1 this->fademap[3][index] = time; - 8c2: d3 01 movw r26, r6 - 8c4: 3c 92 st X, r3 + 8b0: d3 01 movw r26, r6 + 8b2: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 8c6: d2 01 movw r26, r4 - 8c8: cc 92 st X, r12 - 8ca: 34 c1 rjmp .+616 ; 0xb34 + 8b4: d2 01 movw r26, r4 + 8b6: cc 92 st X, r12 + 8b8: 4a c1 rjmp .+660 ; 0xb4e } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 8cc: d7 01 movw r26, r14 - 8ce: bc 92 st X, r11 + 8ba: d7 01 movw r26, r14 + 8bc: 1c 92 st X, r1 this->fademap[1][index] = green; - 8d0: 20 e4 ldi r18, 0x40 ; 64 - 8d2: d8 01 movw r26, r16 - 8d4: 2c 93 st X, r18 + 8be: d8 01 movw r26, r16 + 8c0: 1c 92 st X, r1 this->fademap[2][index] = blue; - 8d6: d4 01 movw r26, r8 - 8d8: 1c 92 st X, r1 + 8c2: d4 01 movw r26, r8 + 8c4: bc 92 st X, r11 this->fademap[3][index] = time; - 8da: d3 01 movw r26, r6 - 8dc: 3c 92 st X, r3 + 8c6: d3 01 movw r26, r6 + 8c8: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 8de: d2 01 movw r26, r4 - 8e0: cc 92 st X, r12 - 8e2: 28 c1 rjmp .+592 ; 0xb34 + 8ca: d2 01 movw r26, r4 + 8cc: cc 92 st X, r12 + 8ce: 3f c1 rjmp .+638 ; 0xb4e } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 8e4: d7 01 movw r26, r14 - 8e6: 1c 92 st X, r1 + 8d0: d7 01 movw r26, r14 + 8d2: bc 92 st X, r11 this->fademap[1][index] = green; - 8e8: d8 01 movw r26, r16 - 8ea: bc 92 st X, r11 + 8d4: d8 01 movw r26, r16 + 8d6: bc 92 st X, r11 this->fademap[2][index] = blue; - 8ec: 20 e4 ldi r18, 0x40 ; 64 - 8ee: d4 01 movw r26, r8 - 8f0: 2c 93 st X, r18 + 8d8: d4 01 movw r26, r8 + 8da: bc 92 st X, r11 this->fademap[3][index] = time; - 8f2: d3 01 movw r26, r6 - 8f4: 3c 92 st X, r3 + 8dc: d3 01 movw r26, r6 + 8de: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 8f6: d2 01 movw r26, r4 - 8f8: cc 92 st X, r12 - 8fa: 1c c1 rjmp .+568 ; 0xb34 + 8e0: d2 01 movw r26, r4 + 8e2: cc 92 st X, r12 + 8e4: 34 c1 rjmp .+616 ; 0xb4e + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + 8e6: d7 01 movw r26, r14 + 8e8: bc 92 st X, r11 + this->fademap[1][index] = green; + 8ea: 20 e4 ldi r18, 0x40 ; 64 + 8ec: d8 01 movw r26, r16 + 8ee: 2c 93 st X, r18 + this->fademap[2][index] = blue; + 8f0: d4 01 movw r26, r8 + 8f2: 1c 92 st X, r1 + this->fademap[3][index] = time; + 8f4: d3 01 movw r26, r6 + 8f6: 3c 92 st X, r3 + OCR2A = 0; + } + } + void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->setfadecolor(0, red, green, blue, time); + this->fade_zylk = 1; + 8f8: d2 01 movw r26, r4 + 8fa: cc 92 st X, r12 + 8fc: 28 c1 rjmp .+592 ; 0xb4e } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 8fc: 20 e4 ldi r18, 0x40 ; 64 8fe: d7 01 movw r26, r14 - 900: 2c 93 st X, r18 + 900: 1c 92 st X, r1 this->fademap[1][index] = green; 902: d8 01 movw r26, r16 - 904: 1c 92 st X, r1 + 904: bc 92 st X, r11 this->fademap[2][index] = blue; - 906: d4 01 movw r26, r8 - 908: bc 92 st X, r11 + 906: 20 e4 ldi r18, 0x40 ; 64 + 908: d4 01 movw r26, r8 + 90a: 2c 93 st X, r18 this->fademap[3][index] = time; - 90a: d3 01 movw r26, r6 - 90c: 3c 92 st X, r3 + 90c: d3 01 movw r26, r6 + 90e: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 90e: d2 01 movw r26, r4 - 910: cc 92 st X, r12 - 912: 10 c1 rjmp .+544 ; 0xb34 + 910: d2 01 movw r26, r4 + 912: cc 92 st X, r12 + 914: 1c c1 rjmp .+568 ; 0xb4e } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 914: d7 01 movw r26, r14 - 916: bc 92 st X, r11 + 916: 20 e4 ldi r18, 0x40 ; 64 + 918: d7 01 movw r26, r14 + 91a: 2c 93 st X, r18 this->fademap[1][index] = green; - 918: 20 e8 ldi r18, 0x80 ; 128 - 91a: d8 01 movw r26, r16 - 91c: 2c 93 st X, r18 + 91c: d8 01 movw r26, r16 + 91e: 1c 92 st X, r1 this->fademap[2][index] = blue; - 91e: d4 01 movw r26, r8 - 920: 1c 92 st X, r1 + 920: d4 01 movw r26, r8 + 922: bc 92 st X, r11 this->fademap[3][index] = time; - 922: d3 01 movw r26, r6 - 924: 3c 92 st X, r3 + 924: d3 01 movw r26, r6 + 926: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 926: d2 01 movw r26, r4 - 928: cc 92 st X, r12 - 92a: 04 c1 rjmp .+520 ; 0xb34 + 928: d2 01 movw r26, r4 + 92a: cc 92 st X, r12 + 92c: 10 c1 rjmp .+544 ; 0xb4e } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 92c: d7 01 movw r26, r14 - 92e: 1c 92 st X, r1 + 92e: d7 01 movw r26, r14 + 930: bc 92 st X, r11 this->fademap[1][index] = green; - 930: d8 01 movw r26, r16 - 932: bc 92 st X, r11 + 932: 20 e8 ldi r18, 0x80 ; 128 + 934: d8 01 movw r26, r16 + 936: 2c 93 st X, r18 this->fademap[2][index] = blue; - 934: 20 e8 ldi r18, 0x80 ; 128 - 936: d4 01 movw r26, r8 - 938: 2c 93 st X, r18 + 938: d4 01 movw r26, r8 + 93a: 1c 92 st X, r1 this->fademap[3][index] = time; - 93a: d3 01 movw r26, r6 - 93c: 3c 92 st X, r3 + 93c: d3 01 movw r26, r6 + 93e: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 93e: d2 01 movw r26, r4 - 940: cc 92 st X, r12 - 942: f8 c0 rjmp .+496 ; 0xb34 + 940: d2 01 movw r26, r4 + 942: cc 92 st X, r12 + 944: 04 c1 rjmp .+520 ; 0xb4e } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 944: 20 e8 ldi r18, 0x80 ; 128 946: d7 01 movw r26, r14 - 948: 2c 93 st X, r18 + 948: 1c 92 st X, r1 this->fademap[1][index] = green; 94a: d8 01 movw r26, r16 - 94c: 1c 92 st X, r1 + 94c: bc 92 st X, r11 this->fademap[2][index] = blue; - 94e: d4 01 movw r26, r8 - 950: bc 92 st X, r11 + 94e: 20 e8 ldi r18, 0x80 ; 128 + 950: d4 01 movw r26, r8 + 952: 2c 93 st X, r18 this->fademap[3][index] = time; - 952: d3 01 movw r26, r6 - 954: 3c 92 st X, r3 + 954: d3 01 movw r26, r6 + 956: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 956: d2 01 movw r26, r4 - 958: cc 92 st X, r12 - 95a: ec c0 rjmp .+472 ; 0xb34 + 958: d2 01 movw r26, r4 + 95a: cc 92 st X, r12 + 95c: f8 c0 rjmp .+496 ; 0xb4e } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 95c: d7 01 movw r26, r14 - 95e: bc 92 st X, r11 + 95e: 20 e8 ldi r18, 0x80 ; 128 + 960: d7 01 movw r26, r14 + 962: 2c 93 st X, r18 this->fademap[1][index] = green; - 960: 20 ec ldi r18, 0xC0 ; 192 - 962: d8 01 movw r26, r16 - 964: 2c 93 st X, r18 + 964: d8 01 movw r26, r16 + 966: 1c 92 st X, r1 this->fademap[2][index] = blue; - 966: d4 01 movw r26, r8 - 968: 1c 92 st X, r1 + 968: d4 01 movw r26, r8 + 96a: bc 92 st X, r11 this->fademap[3][index] = time; - 96a: d3 01 movw r26, r6 - 96c: 3c 92 st X, r3 + 96c: d3 01 movw r26, r6 + 96e: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 96e: d2 01 movw r26, r4 - 970: cc 92 st X, r12 - 972: e0 c0 rjmp .+448 ; 0xb34 + 970: d2 01 movw r26, r4 + 972: cc 92 st X, r12 + 974: ec c0 rjmp .+472 ; 0xb4e } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 974: d7 01 movw r26, r14 - 976: 1c 92 st X, r1 + 976: d7 01 movw r26, r14 + 978: bc 92 st X, r11 this->fademap[1][index] = green; - 978: d8 01 movw r26, r16 - 97a: bc 92 st X, r11 + 97a: 20 ec ldi r18, 0xC0 ; 192 + 97c: d8 01 movw r26, r16 + 97e: 2c 93 st X, r18 this->fademap[2][index] = blue; - 97c: 20 ec ldi r18, 0xC0 ; 192 - 97e: d4 01 movw r26, r8 - 980: 2c 93 st X, r18 + 980: d4 01 movw r26, r8 + 982: 1c 92 st X, r1 this->fademap[3][index] = time; - 982: d3 01 movw r26, r6 - 984: 3c 92 st X, r3 + 984: d3 01 movw r26, r6 + 986: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 986: d2 01 movw r26, r4 - 988: cc 92 st X, r12 - 98a: d4 c0 rjmp .+424 ; 0xb34 + 988: d2 01 movw r26, r4 + 98a: cc 92 st X, r12 + 98c: e0 c0 rjmp .+448 ; 0xb4e } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 98c: 20 ec ldi r18, 0xC0 ; 192 98e: d7 01 movw r26, r14 - 990: 2c 93 st X, r18 + 990: 1c 92 st X, r1 this->fademap[1][index] = green; 992: d8 01 movw r26, r16 - 994: 1c 92 st X, r1 + 994: bc 92 st X, r11 this->fademap[2][index] = blue; - 996: d4 01 movw r26, r8 - 998: bc 92 st X, r11 + 996: 20 ec ldi r18, 0xC0 ; 192 + 998: d4 01 movw r26, r8 + 99a: 2c 93 st X, r18 this->fademap[3][index] = time; - 99a: d3 01 movw r26, r6 - 99c: 3c 92 st X, r3 + 99c: d3 01 movw r26, r6 + 99e: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 99e: d2 01 movw r26, r4 - 9a0: cc 92 st X, r12 - 9a2: c8 c0 rjmp .+400 ; 0xb34 + 9a0: d2 01 movw r26, r4 + 9a2: cc 92 st X, r12 + 9a4: d4 c0 rjmp .+424 ; 0xb4e } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 9a4: d7 01 movw r26, r14 - 9a6: bc 92 st X, r11 + 9a6: 20 ec ldi r18, 0xC0 ; 192 + 9a8: d7 01 movw r26, r14 + 9aa: 2c 93 st X, r18 this->fademap[1][index] = green; - 9a8: d8 01 movw r26, r16 - 9aa: bc 92 st X, r11 - this->fademap[2][index] = blue; - 9ac: d4 01 movw r26, r8 + 9ac: d8 01 movw r26, r16 9ae: 1c 92 st X, r1 + this->fademap[2][index] = blue; + 9b0: d4 01 movw r26, r8 + 9b2: bc 92 st X, r11 this->fademap[3][index] = time; - 9b0: d3 01 movw r26, r6 - 9b2: 3c 92 st X, r3 + 9b4: d3 01 movw r26, r6 + 9b6: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 9b4: d2 01 movw r26, r4 - 9b6: cc 92 st X, r12 - 9b8: bd c0 rjmp .+378 ; 0xb34 + 9b8: d2 01 movw r26, r4 + 9ba: cc 92 st X, r12 + 9bc: c8 c0 rjmp .+400 ; 0xb4e } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 9ba: d7 01 movw r26, r14 - 9bc: 1c 92 st X, r1 - this->fademap[1][index] = green; - 9be: d8 01 movw r26, r16 + 9be: d7 01 movw r26, r14 9c0: bc 92 st X, r11 - this->fademap[2][index] = blue; - 9c2: d4 01 movw r26, r8 + this->fademap[1][index] = green; + 9c2: d8 01 movw r26, r16 9c4: bc 92 st X, r11 + this->fademap[2][index] = blue; + 9c6: d4 01 movw r26, r8 + 9c8: 1c 92 st X, r1 this->fademap[3][index] = time; - 9c6: d3 01 movw r26, r6 - 9c8: 3c 92 st X, r3 + 9ca: d3 01 movw r26, r6 + 9cc: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 9ca: d2 01 movw r26, r4 - 9cc: cc 92 st X, r12 - 9ce: b2 c0 rjmp .+356 ; 0xb34 + 9ce: d2 01 movw r26, r4 + 9d0: cc 92 st X, r12 + 9d2: bd c0 rjmp .+378 ; 0xb4e } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - 9d0: d7 01 movw r26, r14 - 9d2: bc 92 st X, r11 - this->fademap[1][index] = green; - 9d4: d8 01 movw r26, r16 + 9d4: d7 01 movw r26, r14 9d6: 1c 92 st X, r1 - this->fademap[2][index] = blue; - 9d8: d4 01 movw r26, r8 + this->fademap[1][index] = green; + 9d8: d8 01 movw r26, r16 9da: bc 92 st X, r11 + this->fademap[2][index] = blue; + 9dc: d4 01 movw r26, r8 + 9de: bc 92 st X, r11 this->fademap[3][index] = time; - 9dc: d3 01 movw r26, r6 - 9de: 3c 92 st X, r3 + 9e0: d3 01 movw r26, r6 + 9e2: 3c 92 st X, r3 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - 9e0: d2 01 movw r26, r4 - 9e2: cc 92 st X, r12 - 9e4: a7 c0 rjmp .+334 ; 0xb34 + 9e4: d2 01 movw r26, r4 + 9e6: cc 92 st X, r12 + 9e8: b2 c0 rjmp .+356 ; 0xb4e + } + void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->fademap[0][index] = red; + 9ea: d7 01 movw r26, r14 + 9ec: bc 92 st X, r11 + this->fademap[1][index] = green; + 9ee: d8 01 movw r26, r16 + 9f0: 1c 92 st X, r1 + this->fademap[2][index] = blue; + 9f2: d4 01 movw r26, r8 + 9f4: bc 92 st X, r11 + this->fademap[3][index] = time; + 9f6: d3 01 movw r26, r6 + 9f8: 3c 92 st X, r3 + OCR2A = 0; + } + } + void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { + this->setfadecolor(0, red, green, blue, time); + this->fade_zylk = 1; + 9fa: d2 01 movw r26, r4 + 9fc: cc 92 st X, r12 + 9fe: a7 c0 rjmp .+334 ; 0xb4e case 19: break; //Button FADE case 20: stripe.fadeto(0xFF,0xFF,0x00,remotetimer); break; //Color Red 100 % + Green 100 % case 21: stripe.fadeto(0x00,0xFF,0xFF,remotetimer); break; //Color Green 100 % + Blue 100 % case 22: stripe.fadeto(0xFF,0x00,0xFF,remotetimer); break; //Color Blue 100 % + Red 100 % case 23: break; //Button SMOOTH default: Serial.printDec(c); Serial.println(" Pressed!"); break; //Code den ich nicht kenne - 9e6: 28 2f mov r18, r24 - 9e8: 30 e0 ldi r19, 0x00 ; 0 - 9ea: 3a 83 std Y+2, r19 ; 0x02 - 9ec: 29 83 std Y+1, r18 ; 0x01 + a00: 28 2f mov r18, r24 + a02: 30 e0 ldi r19, 0x00 ; 0 + a04: 3a 83 std Y+2, r19 ; 0x02 + a06: 29 83 std Y+1, r18 ; 0x01 UCSR0A= (0< + a08: 80 81 ld r24, Z + a0a: 85 ff sbrs r24, 5 + a0c: fd cf rjmp .-6 ; 0xa08 UDR0 = c; - 9f4: 80 e3 ldi r24, 0x30 ; 48 - 9f6: a6 ec ldi r26, 0xC6 ; 198 - 9f8: b0 e0 ldi r27, 0x00 ; 0 - 9fa: 8c 93 st X, r24 + a0e: 80 e3 ldi r24, 0x30 ; 48 + a10: a6 ec ldi r26, 0xC6 ; 198 + a12: b0 e0 ldi r27, 0x00 ; 0 + a14: 8c 93 st X, r24 text++; } } void printDec(uint16_t wert) { print((wert/10000)+'0'); print(((wert/1000)%10)+'0'); - 9fc: 60 e0 ldi r22, 0x00 ; 0 - 9fe: 70 e0 ldi r23, 0x00 ; 0 - a00: cb 01 movw r24, r22 - a02: 96 95 lsr r25 - a04: 87 95 ror r24 - a06: 96 95 lsr r25 - a08: 87 95 ror r24 - a0a: 96 95 lsr r25 - a0c: 87 95 ror r24 - a0e: 9c 01 movw r18, r24 - a10: 22 0f add r18, r18 - a12: 33 1f adc r19, r19 - a14: 88 0f add r24, r24 - a16: 99 1f adc r25, r25 - a18: 88 0f add r24, r24 - a1a: 99 1f adc r25, r25 - a1c: 88 0f add r24, r24 - a1e: 99 1f adc r25, r25 - a20: 82 0f add r24, r18 - a22: 93 1f adc r25, r19 - a24: 68 1b sub r22, r24 - a26: 79 0b sbc r23, r25 - a28: 60 5d subi r22, 0xD0 ; 208 + a16: 60 e0 ldi r22, 0x00 ; 0 + a18: 70 e0 ldi r23, 0x00 ; 0 + a1a: cb 01 movw r24, r22 + a1c: 96 95 lsr r25 + a1e: 87 95 ror r24 + a20: 96 95 lsr r25 + a22: 87 95 ror r24 + a24: 96 95 lsr r25 + a26: 87 95 ror r24 + a28: 9c 01 movw r18, r24 + a2a: 22 0f add r18, r18 + a2c: 33 1f adc r19, r19 + a2e: 88 0f add r24, r24 + a30: 99 1f adc r25, r25 + a32: 88 0f add r24, r24 + a34: 99 1f adc r25, r25 + a36: 88 0f add r24, r24 + a38: 99 1f adc r25, r25 + a3a: 82 0f add r24, r18 + a3c: 93 1f adc r25, r19 + a3e: 68 1b sub r22, r24 + a40: 79 0b sbc r23, r25 + a42: 60 5d subi r22, 0xD0 ; 208 UCSR0A= (0< + a44: 80 81 ld r24, Z + a46: 85 ff sbrs r24, 5 + a48: fd cf rjmp .-6 ; 0xa44 UDR0 = c; - a30: a6 ec ldi r26, 0xC6 ; 198 - a32: b0 e0 ldi r27, 0x00 ; 0 - a34: 6c 93 st X, r22 + a4a: a6 ec ldi r26, 0xC6 ; 198 + a4c: b0 e0 ldi r27, 0x00 ; 0 + a4e: 6c 93 st X, r22 } } void printDec(uint16_t wert) { print((wert/10000)+'0'); print(((wert/1000)%10)+'0'); print(((wert/100)%10)+'0'); - a36: 29 81 ldd r18, Y+1 ; 0x01 - a38: 3a 81 ldd r19, Y+2 ; 0x02 - a3a: 36 95 lsr r19 - a3c: 27 95 ror r18 - a3e: 36 95 lsr r19 - a40: 27 95 ror r18 - a42: ab e7 ldi r26, 0x7B ; 123 - a44: b4 e1 ldi r27, 0x14 ; 20 - a46: 0e 94 9d 08 call 0x113a ; 0x113a <__umulhisi3> - a4a: 96 95 lsr r25 - a4c: 87 95 ror r24 - a4e: 80 5d subi r24, 0xD0 ; 208 + a50: 29 81 ldd r18, Y+1 ; 0x01 + a52: 3a 81 ldd r19, Y+2 ; 0x02 + a54: 36 95 lsr r19 + a56: 27 95 ror r18 + a58: 36 95 lsr r19 + a5a: 27 95 ror r18 + a5c: ab e7 ldi r26, 0x7B ; 123 + a5e: b4 e1 ldi r27, 0x14 ; 20 + a60: 0e 94 aa 08 call 0x1154 ; 0x1154 <__umulhisi3> + a64: 96 95 lsr r25 + a66: 87 95 ror r24 + a68: 80 5d subi r24, 0xD0 ; 208 UCSR0A= (0< + a6a: 90 81 ld r25, Z + a6c: 95 ff sbrs r25, 5 + a6e: fd cf rjmp .-6 ; 0xa6a UDR0 = c; - a56: a6 ec ldi r26, 0xC6 ; 198 - a58: b0 e0 ldi r27, 0x00 ; 0 - a5a: 8c 93 st X, r24 + a70: a6 ec ldi r26, 0xC6 ; 198 + a72: b0 e0 ldi r27, 0x00 ; 0 + a74: 8c 93 st X, r24 } void printDec(uint16_t wert) { print((wert/10000)+'0'); print(((wert/1000)%10)+'0'); print(((wert/100)%10)+'0'); print(((wert/10)%10)+'0'); - a5c: 29 81 ldd r18, Y+1 ; 0x01 - a5e: 3a 81 ldd r19, Y+2 ; 0x02 - a60: ad ec ldi r26, 0xCD ; 205 - a62: bc ec ldi r27, 0xCC ; 204 - a64: 0e 94 9d 08 call 0x113a ; 0x113a <__umulhisi3> - a68: 96 95 lsr r25 - a6a: 87 95 ror r24 - a6c: 96 95 lsr r25 - a6e: 87 95 ror r24 - a70: 96 95 lsr r25 - a72: 87 95 ror r24 - a74: 9c 83 std Y+4, r25 ; 0x04 - a76: 8b 83 std Y+3, r24 ; 0x03 - a78: 9c 01 movw r18, r24 - a7a: 0e 94 9d 08 call 0x113a ; 0x113a <__umulhisi3> - a7e: 96 95 lsr r25 - a80: 87 95 ror r24 + a76: 29 81 ldd r18, Y+1 ; 0x01 + a78: 3a 81 ldd r19, Y+2 ; 0x02 + a7a: ad ec ldi r26, 0xCD ; 205 + a7c: bc ec ldi r27, 0xCC ; 204 + a7e: 0e 94 aa 08 call 0x1154 ; 0x1154 <__umulhisi3> a82: 96 95 lsr r25 a84: 87 95 ror r24 a86: 96 95 lsr r25 a88: 87 95 ror r24 - a8a: 9c 01 movw r18, r24 - a8c: 22 0f add r18, r18 - a8e: 33 1f adc r19, r19 - a90: 88 0f add r24, r24 - a92: 99 1f adc r25, r25 - a94: 88 0f add r24, r24 - a96: 99 1f adc r25, r25 - a98: 88 0f add r24, r24 - a9a: 99 1f adc r25, r25 - a9c: 82 0f add r24, r18 - a9e: 93 1f adc r25, r19 - aa0: 2b 81 ldd r18, Y+3 ; 0x03 - aa2: 3c 81 ldd r19, Y+4 ; 0x04 - aa4: 28 1b sub r18, r24 - aa6: 39 0b sbc r19, r25 - aa8: c9 01 movw r24, r18 - aaa: 80 5d subi r24, 0xD0 ; 208 + a8a: 96 95 lsr r25 + a8c: 87 95 ror r24 + a8e: 9c 83 std Y+4, r25 ; 0x04 + a90: 8b 83 std Y+3, r24 ; 0x03 + a92: 9c 01 movw r18, r24 + a94: 0e 94 aa 08 call 0x1154 ; 0x1154 <__umulhisi3> + a98: 96 95 lsr r25 + a9a: 87 95 ror r24 + a9c: 96 95 lsr r25 + a9e: 87 95 ror r24 + aa0: 96 95 lsr r25 + aa2: 87 95 ror r24 + aa4: 9c 01 movw r18, r24 + aa6: 22 0f add r18, r18 + aa8: 33 1f adc r19, r19 + aaa: 88 0f add r24, r24 + aac: 99 1f adc r25, r25 + aae: 88 0f add r24, r24 + ab0: 99 1f adc r25, r25 + ab2: 88 0f add r24, r24 + ab4: 99 1f adc r25, r25 + ab6: 82 0f add r24, r18 + ab8: 93 1f adc r25, r19 + aba: 2b 81 ldd r18, Y+3 ; 0x03 + abc: 3c 81 ldd r19, Y+4 ; 0x04 + abe: 28 1b sub r18, r24 + ac0: 39 0b sbc r19, r25 + ac2: c9 01 movw r24, r18 + ac4: 80 5d subi r24, 0xD0 ; 208 UCSR0A= (0< + ac6: 90 81 ld r25, Z + ac8: 95 ff sbrs r25, 5 + aca: fd cf rjmp .-6 ; 0xac6 UDR0 = c; - ab2: a6 ec ldi r26, 0xC6 ; 198 - ab4: b0 e0 ldi r27, 0x00 ; 0 - ab6: 8c 93 st X, r24 + acc: a6 ec ldi r26, 0xC6 ; 198 + ace: b0 e0 ldi r27, 0x00 ; 0 + ad0: 8c 93 st X, r24 void printDec(uint16_t wert) { print((wert/10000)+'0'); print(((wert/1000)%10)+'0'); print(((wert/100)%10)+'0'); print(((wert/10)%10)+'0'); print((wert%10)+'0'); - ab8: 29 81 ldd r18, Y+1 ; 0x01 - aba: 3a 81 ldd r19, Y+2 ; 0x02 - abc: ad ec ldi r26, 0xCD ; 205 - abe: bc ec ldi r27, 0xCC ; 204 - ac0: 0e 94 9d 08 call 0x113a ; 0x113a <__umulhisi3> - ac4: 96 95 lsr r25 - ac6: 87 95 ror r24 - ac8: 96 95 lsr r25 - aca: 87 95 ror r24 - acc: 96 95 lsr r25 - ace: 87 95 ror r24 - ad0: 9c 01 movw r18, r24 - ad2: 22 0f add r18, r18 - ad4: 33 1f adc r19, r19 - ad6: 88 0f add r24, r24 - ad8: 99 1f adc r25, r25 - ada: 88 0f add r24, r24 - adc: 99 1f adc r25, r25 - ade: 88 0f add r24, r24 - ae0: 99 1f adc r25, r25 - ae2: 82 0f add r24, r18 - ae4: 93 1f adc r25, r19 - ae6: 29 81 ldd r18, Y+1 ; 0x01 - ae8: 3a 81 ldd r19, Y+2 ; 0x02 - aea: 28 1b sub r18, r24 - aec: 39 0b sbc r19, r25 - aee: c9 01 movw r24, r18 - af0: 80 5d subi r24, 0xD0 ; 208 + ad2: 29 81 ldd r18, Y+1 ; 0x01 + ad4: 3a 81 ldd r19, Y+2 ; 0x02 + ad6: ad ec ldi r26, 0xCD ; 205 + ad8: bc ec ldi r27, 0xCC ; 204 + ada: 0e 94 aa 08 call 0x1154 ; 0x1154 <__umulhisi3> + ade: 96 95 lsr r25 + ae0: 87 95 ror r24 + ae2: 96 95 lsr r25 + ae4: 87 95 ror r24 + ae6: 96 95 lsr r25 + ae8: 87 95 ror r24 + aea: 9c 01 movw r18, r24 + aec: 22 0f add r18, r18 + aee: 33 1f adc r19, r19 + af0: 88 0f add r24, r24 + af2: 99 1f adc r25, r25 + af4: 88 0f add r24, r24 + af6: 99 1f adc r25, r25 + af8: 88 0f add r24, r24 + afa: 99 1f adc r25, r25 + afc: 82 0f add r24, r18 + afe: 93 1f adc r25, r19 + b00: 29 81 ldd r18, Y+1 ; 0x01 + b02: 3a 81 ldd r19, Y+2 ; 0x02 + b04: 28 1b sub r18, r24 + b06: 39 0b sbc r19, r25 + b08: c9 01 movw r24, r18 + b0a: 80 5d subi r24, 0xD0 ; 208 UCSR0A= (0< + b0c: 90 81 ld r25, Z + b0e: 95 ff sbrs r25, 5 + b10: fd cf rjmp .-6 ; 0xb0c UDR0 = c; - af8: a6 ec ldi r26, 0xC6 ; 198 - afa: b0 e0 ldi r27, 0x00 ; 0 - afc: 8c 93 st X, r24 - afe: a3 e6 ldi r26, 0x63 ; 99 - b00: b1 e0 ldi r27, 0x01 ; 1 + b12: a6 ec ldi r26, 0xC6 ; 198 + b14: b0 e0 ldi r27, 0x00 ; 0 + b16: 8c 93 st X, r24 + b18: a3 e6 ldi r26, 0x63 ; 99 + b1a: b1 e0 ldi r27, 0x01 ; 1 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - b02: 90 e2 ldi r25, 0x20 ; 32 - b04: 9d 01 movw r18, r26 + b1c: 90 e2 ldi r25, 0x20 ; 32 + b1e: 9d 01 movw r18, r26 UCSR0A= (0< + b20: 80 81 ld r24, Z + b22: 85 ff sbrs r24, 5 + b24: fd cf rjmp .-6 ; 0xb20 UDR0 = c; - b0c: a6 ec ldi r26, 0xC6 ; 198 - b0e: b0 e0 ldi r27, 0x00 ; 0 - b10: 9c 93 st X, r25 + b26: a6 ec ldi r26, 0xC6 ; 198 + b28: b0 e0 ldi r27, 0x00 ; 0 + b2a: 9c 93 st X, r25 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - b12: d9 01 movw r26, r18 - b14: 9d 91 ld r25, X+ - b16: 9d 01 movw r18, r26 - b18: 91 11 cpse r25, r1 - b1a: f5 cf rjmp .-22 ; 0xb06 + b2c: d9 01 movw r26, r18 + b2e: 9d 91 ld r25, X+ + b30: 9d 01 movw r18, r26 + b32: 91 11 cpse r25, r1 + b34: f5 cf rjmp .-22 ; 0xb20 UCSR0A= (0< + b36: 80 81 ld r24, Z + b38: 85 ff sbrs r24, 5 + b3a: fd cf rjmp .-6 ; 0xb36 UDR0 = c; - b22: a6 ec ldi r26, 0xC6 ; 198 - b24: b0 e0 ldi r27, 0x00 ; 0 - b26: dc 92 st X, r13 + b3c: a6 ec ldi r26, 0xC6 ; 198 + b3e: b0 e0 ldi r27, 0x00 ; 0 + b40: dc 92 st X, r13 UCSR0A= (0< + b42: 80 81 ld r24, Z + b44: 85 ff sbrs r24, 5 + b46: fd cf rjmp .-6 ; 0xb42 UDR0 = c; - b2e: a6 ec ldi r26, 0xC6 ; 198 - b30: b0 e0 ldi r27, 0x00 ; 0 - b32: 3c 92 st X, r3 + b48: a6 ec ldi r26, 0xC6 ; 198 + b4a: b0 e0 ldi r27, 0x00 ; 0 + b4c: 3c 92 st X, r3 } if(comp.is_active()) { - b34: 00 b6 in r0, 0x30 ; 48 - b36: 05 fe sbrs r0, 5 - b38: 2a c0 rjmp .+84 ; 0xb8e + b4e: 00 b6 in r0, 0x30 ; 48 + b50: 05 fe sbrs r0, 5 + b52: 2a c0 rjmp .+84 ; 0xba8 if(doorstatus == 0) { - b3a: 21 10 cpse r2, r1 - b3c: 52 c0 rjmp .+164 ; 0xbe2 + b54: 21 10 cpse r2, r1 + b56: 52 c0 rjmp .+164 ; 0xbfc } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - b3e: d7 01 movw r26, r14 - b40: bc 92 st X, r11 + b58: d7 01 movw r26, r14 + b5a: bc 92 st X, r11 this->fademap[1][index] = green; - b42: d8 01 movw r26, r16 - b44: 1c 92 st X, r1 + b5c: d8 01 movw r26, r16 + b5e: 1c 92 st X, r1 this->fademap[2][index] = blue; - b46: d4 01 movw r26, r8 - b48: 1c 92 st X, r1 + b60: d4 01 movw r26, r8 + b62: 1c 92 st X, r1 this->fademap[3][index] = time; - b4a: 24 e6 ldi r18, 0x64 ; 100 - b4c: d3 01 movw r26, r6 - b4e: 2c 93 st X, r18 + b64: 24 e6 ldi r18, 0x64 ; 100 + b66: d3 01 movw r26, r6 + b68: 2c 93 st X, r18 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - b50: d2 01 movw r26, r4 - b52: cc 92 st X, r12 - b54: ad e6 ldi r26, 0x6D ; 109 - b56: b1 e0 ldi r27, 0x01 ; 1 + b6a: d2 01 movw r26, r4 + b6c: cc 92 st X, r12 + b6e: ad e6 ldi r26, 0x6D ; 109 + b70: b1 e0 ldi r27, 0x01 ; 1 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - b58: 94 e5 ldi r25, 0x54 ; 84 - b5a: 9d 01 movw r18, r26 + b72: 94 e5 ldi r25, 0x54 ; 84 + b74: 9d 01 movw r18, r26 UCSR0A= (0< + b76: 80 81 ld r24, Z + b78: 85 ff sbrs r24, 5 + b7a: fd cf rjmp .-6 ; 0xb76 UDR0 = c; - b62: a6 ec ldi r26, 0xC6 ; 198 - b64: b0 e0 ldi r27, 0x00 ; 0 - b66: 9c 93 st X, r25 + b7c: a6 ec ldi r26, 0xC6 ; 198 + b7e: b0 e0 ldi r27, 0x00 ; 0 + b80: 9c 93 st X, r25 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - b68: d9 01 movw r26, r18 - b6a: 9d 91 ld r25, X+ - b6c: 9d 01 movw r18, r26 - b6e: 91 11 cpse r25, r1 - b70: f5 cf rjmp .-22 ; 0xb5c + b82: d9 01 movw r26, r18 + b84: 9d 91 ld r25, X+ + b86: 9d 01 movw r18, r26 + b88: 91 11 cpse r25, r1 + b8a: f5 cf rjmp .-22 ; 0xb76 UCSR0A= (0< + b8c: 80 81 ld r24, Z + b8e: 85 ff sbrs r24, 5 + b90: fd cf rjmp .-6 ; 0xb8c UDR0 = c; - b78: a6 ec ldi r26, 0xC6 ; 198 - b7a: b0 e0 ldi r27, 0x00 ; 0 - b7c: dc 92 st X, r13 + b92: a6 ec ldi r26, 0xC6 ; 198 + b94: b0 e0 ldi r27, 0x00 ; 0 + b96: dc 92 st X, r13 UCSR0A= (0< + b98: 80 81 ld r24, Z + b9a: 85 ff sbrs r24, 5 + b9c: fd cf rjmp .-6 ; 0xb98 UDR0 = c; - b84: a6 ec ldi r26, 0xC6 ; 198 - b86: b0 e0 ldi r27, 0x00 ; 0 - b88: 3c 92 st X, r3 + b9e: a6 ec ldi r26, 0xC6 ; 198 + ba0: b0 e0 ldi r27, 0x00 ; 0 + ba2: 3c 92 st X, r3 doorstatus = 1; - b8a: 2c 2c mov r2, r12 - b8c: 2a c0 rjmp .+84 ; 0xbe2 + ba4: 2c 2c mov r2, r12 + ba6: 2a c0 rjmp .+84 ; 0xbfc stripe.fadeto(0xFF,0x00,0x00,100); Serial.println("Tür Zu..."); } } else { if(doorstatus == 1) { - b8e: b1 e0 ldi r27, 0x01 ; 1 - b90: 2b 12 cpse r2, r27 - b92: 27 c0 rjmp .+78 ; 0xbe2 - b94: a7 e7 ldi r26, 0x77 ; 119 - b96: b1 e0 ldi r27, 0x01 ; 1 + ba8: b1 e0 ldi r27, 0x01 ; 1 + baa: 2b 12 cpse r2, r27 + bac: 27 c0 rjmp .+78 ; 0xbfc + bae: a7 e7 ldi r26, 0x77 ; 119 + bb0: b1 e0 ldi r27, 0x01 ; 1 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - b98: 94 e5 ldi r25, 0x54 ; 84 - b9a: 9d 01 movw r18, r26 + bb2: 94 e5 ldi r25, 0x54 ; 84 + bb4: 9d 01 movw r18, r26 UCSR0A= (0< + bb6: 80 81 ld r24, Z + bb8: 85 ff sbrs r24, 5 + bba: fd cf rjmp .-6 ; 0xbb6 UDR0 = c; - ba2: a6 ec ldi r26, 0xC6 ; 198 - ba4: b0 e0 ldi r27, 0x00 ; 0 - ba6: 9c 93 st X, r25 + bbc: a6 ec ldi r26, 0xC6 ; 198 + bbe: b0 e0 ldi r27, 0x00 ; 0 + bc0: 9c 93 st X, r25 sei(); init(); println("Uart done!"); } void print(const char *text) { while (*text) - ba8: d9 01 movw r26, r18 - baa: 9d 91 ld r25, X+ - bac: 9d 01 movw r18, r26 - bae: 91 11 cpse r25, r1 - bb0: f5 cf rjmp .-22 ; 0xb9c + bc2: d9 01 movw r26, r18 + bc4: 9d 91 ld r25, X+ + bc6: 9d 01 movw r18, r26 + bc8: 91 11 cpse r25, r1 + bca: f5 cf rjmp .-22 ; 0xbb6 UCSR0A= (0< + bcc: 80 81 ld r24, Z + bce: 85 ff sbrs r24, 5 + bd0: fd cf rjmp .-6 ; 0xbcc UDR0 = c; - bb8: a6 ec ldi r26, 0xC6 ; 198 - bba: b0 e0 ldi r27, 0x00 ; 0 - bbc: dc 92 st X, r13 + bd2: a6 ec ldi r26, 0xC6 ; 198 + bd4: b0 e0 ldi r27, 0x00 ; 0 + bd6: dc 92 st X, r13 UCSR0A= (0< + bd8: 80 81 ld r24, Z + bda: 85 ff sbrs r24, 5 + bdc: fd cf rjmp .-6 ; 0xbd8 UDR0 = c; - bc4: a6 ec ldi r26, 0xC6 ; 198 - bc6: b0 e0 ldi r27, 0x00 ; 0 - bc8: 3c 92 st X, r3 + bde: a6 ec ldi r26, 0xC6 ; 198 + be0: b0 e0 ldi r27, 0x00 ; 0 + be2: 3c 92 st X, r3 } void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->fademap[0][index] = red; - bca: d7 01 movw r26, r14 - bcc: 1c 92 st X, r1 + be4: d7 01 movw r26, r14 + be6: 1c 92 st X, r1 this->fademap[1][index] = green; - bce: d8 01 movw r26, r16 - bd0: bc 92 st X, r11 + be8: d8 01 movw r26, r16 + bea: bc 92 st X, r11 this->fademap[2][index] = blue; - bd2: d4 01 movw r26, r8 - bd4: 1c 92 st X, r1 + bec: d4 01 movw r26, r8 + bee: 1c 92 st X, r1 this->fademap[3][index] = time; - bd6: 22 e3 ldi r18, 0x32 ; 50 - bd8: d3 01 movw r26, r6 - bda: 2c 93 st X, r18 + bf0: 22 e3 ldi r18, 0x32 ; 50 + bf2: d3 01 movw r26, r6 + bf4: 2c 93 st X, r18 OCR2A = 0; } } void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) { this->setfadecolor(0, red, green, blue, time); this->fade_zylk = 1; - bdc: d2 01 movw r26, r4 - bde: cc 92 st X, r12 + bf6: d2 01 movw r26, r4 + bf8: cc 92 st X, r12 doorstatus = 0; - be0: 21 2c mov r2, r1 - be2: 87 e8 ldi r24, 0x87 ; 135 - be4: 93 e1 ldi r25, 0x13 ; 19 - be6: 01 97 sbiw r24, 0x01 ; 1 - be8: f1 f7 brne .-4 ; 0xbe6 - bea: 00 c0 rjmp .+0 ; 0xbec - bec: 00 00 nop + bfa: 21 2c mov r2, r1 + bfc: 87 e8 ldi r24, 0x87 ; 135 + bfe: 93 e1 ldi r25, 0x13 ; 19 + c00: 01 97 sbiw r24, 0x01 ; 1 + c02: f1 f7 brne .-4 ; 0xc00 + c04: 00 c0 rjmp .+0 ; 0xc06 + c06: 00 00 nop namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - bee: 29 98 cbi 0x05, 1 ; 5 - bf0: 9f ed ldi r25, 0xDF ; 223 - bf2: aa e0 ldi r26, 0x0A ; 10 - bf4: b6 e0 ldi r27, 0x06 ; 6 - bf6: 91 50 subi r25, 0x01 ; 1 - bf8: a0 40 sbci r26, 0x00 ; 0 - bfa: b0 40 sbci r27, 0x00 ; 0 - bfc: e1 f7 brne .-8 ; 0xbf6 - bfe: 00 c0 rjmp .+0 ; 0xc00 - c00: 00 00 nop - c02: 29 9a sbi 0x05, 1 ; 5 - c04: 85 cd rjmp .-1270 ; 0x710 + c08: 29 98 cbi 0x05, 1 ; 5 + c0a: 9f ed ldi r25, 0xDF ; 223 + c0c: aa e0 ldi r26, 0x0A ; 10 + c0e: b6 e0 ldi r27, 0x06 ; 6 + c10: 91 50 subi r25, 0x01 ; 1 + c12: a0 40 sbci r26, 0x00 ; 0 + c14: b0 40 sbci r27, 0x00 ; 0 + c16: e1 f7 brne .-8 ; 0xc10 + c18: 00 c0 rjmp .+0 ; 0xc1a + c1a: 00 00 nop + c1c: 29 9a sbi 0x05, 1 ; 5 + c1e: 85 cd rjmp .-1270 ; 0x72a -00000c06 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv>: - c06: 55 9a sbi 0x0a, 5 ; 10 - c08: 53 9a sbi 0x0a, 3 ; 10 +00000c20 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv>: + c20: 55 9a sbi 0x0a, 5 ; 10 + c22: 53 9a sbi 0x0a, 3 ; 10 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - c0a: 23 9a sbi 0x04, 3 ; 4 - float fadesteps[3]; + c24: 23 9a sbi 0x04, 3 ; 4 + float virtualcolor[3]; void init() { stripered::make_output(); stripegreen::make_output(); stripeblue::make_output(); this->fade_zylk = 0; - c0c: fc 01 movw r30, r24 - c0e: 10 82 st Z, r1 + c26: fc 01 movw r30, r24 + c28: 10 82 st Z, r1 // Mode: Phase correct PWM top=0xFF // OC0A output: Disconnected // Timer Period: 0,06375 ms // Output Pulse(s): // OC0B Period: 0,06375 ms Width: 0 us TCCR0A=(0<init(); + c6c: 80 81 ld r24, Z + c6e: 80 6a ori r24, 0xA0 ; 160 + c70: 80 83 st Z, r24 + this->initTimer(); + this->color(0, 0, 0); } - void color(uint8_t r, uint8_t g, uint8_t b) { - OCR0B=r; //ROT - c58: 18 bc out 0x28, r1 ; 40 - OCR2B=g; //GRÜN - c5a: 10 92 b4 00 sts 0x00B4, r1 - OCR2A=b; //BLAU - c5e: 10 92 b3 00 sts 0x00B3, r1 - c62: 08 95 ret + void sp(uint8_t i, uint8_t c) { + switch(i) { + case 0: OCR0B = c; break; //ROT + c72: 18 bc out 0x28, r1 ; 40 + case 1: OCR2B = c; break; //GRÜN + c74: 10 92 b4 00 sts 0x00B4, r1 + case 2: OCR2A = c; break; //BLAU + c78: 10 92 b3 00 sts 0x00B3, r1 + c7c: 08 95 ret -00000c64 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv>: +00000c7e <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv>: // Interrupt on any change on pins PCINT16-23: Off EICRA=(0< + c88: 4a 9b sbis 0x09, 2 ; 9 + c8a: fe cf rjmp .-4 ; 0xc88 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0xa> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - c72: ef e9 ldi r30, 0x9F ; 159 - c74: ff e0 ldi r31, 0x0F ; 15 - c76: 31 97 sbiw r30, 0x01 ; 1 - c78: f1 f7 brne .-4 ; 0xc76 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x12> - c7a: 00 c0 rjmp .+0 ; 0xc7c <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x18> - c7c: 00 00 nop + c8c: ef e9 ldi r30, 0x9F ; 159 + c8e: ff e0 ldi r31, 0x0F ; 15 + c90: 31 97 sbiw r30, 0x01 ; 1 + c92: f1 f7 brne .-4 ; 0xc90 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x12> + c94: 00 c0 rjmp .+0 ; 0xc96 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x18> + c96: 00 00 nop uint8_t read8bit() { uint8_t r = 0; for (uint8_t i=0;i<8;i++) { intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { - c7e: 4a 9b sbis 0x09, 2 ; 9 - c80: 08 c0 rjmp .+16 ; 0xc92 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x2e> + c98: 4a 9b sbis 0x09, 2 ; 9 + c9a: 08 c0 rjmp .+16 ; 0xcac <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x2e> r |= (1< - c88: 44 0f add r20, r20 - c8a: 55 1f adc r21, r21 - c8c: 0a 94 dec r0 - c8e: e2 f7 brpl .-8 ; 0xc88 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x24> - c90: 84 2b or r24, r20 + c9c: ab 01 movw r20, r22 + c9e: 02 2e mov r0, r18 + ca0: 02 c0 rjmp .+4 ; 0xca6 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x28> + ca2: 44 0f add r20, r20 + ca4: 55 1f adc r21, r21 + ca6: 0a 94 dec r0 + ca8: e2 f7 brpl .-8 ; 0xca2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x24> + caa: 84 2b or r24, r20 } for(uint8_t j=0;j<50;j++) { if(!intpin::value()) { - c92: 4a 99 sbic 0x09, 2 ; 9 - c94: 0f c0 rjmp .+30 ; 0xcb4 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x50> - c96: 08 c0 rjmp .+16 ; 0xca8 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x44> - c98: 4a 9b sbis 0x09, 2 ; 9 - c9a: 06 c0 rjmp .+12 ; 0xca8 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x44> - c9c: f5 e8 ldi r31, 0x85 ; 133 - c9e: fa 95 dec r31 - ca0: f1 f7 brne .-4 ; 0xc9e <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x3a> - ca2: 00 00 nop - ca4: 91 50 subi r25, 0x01 ; 1 + cac: 4a 99 sbic 0x09, 2 ; 9 + cae: 0f c0 rjmp .+30 ; 0xcce <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x50> + cb0: 08 c0 rjmp .+16 ; 0xcc2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x44> + cb2: 4a 9b sbis 0x09, 2 ; 9 + cb4: 06 c0 rjmp .+12 ; 0xcc2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x44> + cb6: f5 e8 ldi r31, 0x85 ; 133 + cb8: fa 95 dec r31 + cba: f1 f7 brne .-4 ; 0xcb8 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x3a> + cbc: 00 00 nop + cbe: 91 50 subi r25, 0x01 ; 1 intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { r |= (1< - ca8: 2f 5f subi r18, 0xFF ; 255 - caa: 3f 4f sbci r19, 0xFF ; 255 + cc0: c1 f7 brne .-16 ; 0xcb2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x34> + cc2: 2f 5f subi r18, 0xFF ; 255 + cc4: 3f 4f sbci r19, 0xFF ; 255 EIMSK=(0< - cb2: 08 95 ret - cb4: 45 e8 ldi r20, 0x85 ; 133 - cb6: 4a 95 dec r20 - cb8: f1 f7 brne .-4 ; 0xcb6 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x52> - cba: 00 00 nop - cbc: 91 e3 ldi r25, 0x31 ; 49 - cbe: ec cf rjmp .-40 ; 0xc98 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x34> + cc6: 28 30 cpi r18, 0x08 ; 8 + cc8: 31 05 cpc r19, r1 + cca: f1 f6 brne .-68 ; 0xc88 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0xa> + ccc: 08 95 ret + cce: 45 e8 ldi r20, 0x85 ; 133 + cd0: 4a 95 dec r20 + cd2: f1 f7 brne .-4 ; 0xcd0 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x52> + cd4: 00 00 nop + cd6: 91 e3 ldi r25, 0x31 ; 49 + cd8: ec cf rjmp .-40 ; 0xcb2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x34> -00000cc0 <__vector_1>: +00000cda <__vector_1>: _delay_ms(99); led.green(1); } } ISR(INT0_vect) { - cc0: 1f 92 push r1 - cc2: 0f 92 push r0 - cc4: 0f b6 in r0, 0x3f ; 63 - cc6: 0f 92 push r0 - cc8: 11 24 eor r1, r1 - cca: 2f 93 push r18 - ccc: 3f 93 push r19 - cce: 4f 93 push r20 - cd0: 5f 93 push r21 - cd2: 6f 93 push r22 - cd4: 7f 93 push r23 - cd6: 8f 93 push r24 - cd8: 9f 93 push r25 - cda: af 93 push r26 - cdc: bf 93 push r27 - cde: cf 93 push r28 - ce0: ef 93 push r30 - ce2: ff 93 push r31 + cda: 1f 92 push r1 + cdc: 0f 92 push r0 + cde: 0f b6 in r0, 0x3f ; 63 + ce0: 0f 92 push r0 + ce2: 11 24 eor r1, r1 + ce4: 2f 93 push r18 + ce6: 3f 93 push r19 + ce8: 4f 93 push r20 + cea: 5f 93 push r21 + cec: 6f 93 push r22 + cee: 7f 93 push r23 + cf0: 8f 93 push r24 + cf2: 9f 93 push r25 + cf4: af 93 push r26 + cf6: bf 93 push r27 + cf8: cf 93 push r28 + cfa: ef 93 push r30 + cfc: ff 93 push r31 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - ce4: 28 9a sbi 0x05, 0 ; 5 + cfe: 28 9a sbi 0x05, 0 ; 5 public: IR() { this->init(); } int read() { if(intpin::value()) { //Is High, Abbort - ce6: 4a 99 sbic 0x09, 2 ; 9 - ce8: 79 c0 rjmp .+242 ; 0xddc <__vector_1+0x11c> + d00: 4a 99 sbic 0x09, 2 ; 9 + d02: 79 c0 rjmp .+242 ; 0xdf6 <__vector_1+0x11c> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - cea: 8f e1 ldi r24, 0x1F ; 31 - cec: 9e e4 ldi r25, 0x4E ; 78 - cee: 01 97 sbiw r24, 0x01 ; 1 - cf0: f1 f7 brne .-4 ; 0xcee <__vector_1+0x2e> - cf2: 00 c0 rjmp .+0 ; 0xcf4 <__vector_1+0x34> - cf4: 00 00 nop + d04: 8f e1 ldi r24, 0x1F ; 31 + d06: 9e e4 ldi r25, 0x4E ; 78 + d08: 01 97 sbiw r24, 0x01 ; 1 + d0a: f1 f7 brne .-4 ; 0xd08 <__vector_1+0x2e> + d0c: 00 c0 rjmp .+0 ; 0xd0e <__vector_1+0x34> + d0e: 00 00 nop return 254; } _delay_ms(4); //Wait 4ms if(intpin::value()) { //Is High, Abbort - cf6: 4a 99 sbic 0x09, 2 ; 9 - cf8: 71 c0 rjmp .+226 ; 0xddc <__vector_1+0x11c> - cfa: 4a 9b sbis 0x09, 2 ; 9 - cfc: fe cf rjmp .-4 ; 0xcfa <__vector_1+0x3a> + d10: 4a 99 sbic 0x09, 2 ; 9 + d12: 71 c0 rjmp .+226 ; 0xdf6 <__vector_1+0x11c> + d14: 4a 9b sbis 0x09, 2 ; 9 + d16: fe cf rjmp .-4 ; 0xd14 <__vector_1+0x3a> static void wait_is_clear() { do {} while ((Port::pin() & (1< - d02: 80 e0 ldi r24, 0x00 ; 0 - d04: 90 e0 ldi r25, 0x00 ; 0 - d06: 60 e0 ldi r22, 0x00 ; 0 + d18: 4a 99 sbic 0x09, 2 ; 9 + d1a: fe cf rjmp .-4 ; 0xd18 <__vector_1+0x3e> + d1c: 80 e0 ldi r24, 0x00 ; 0 + d1e: 90 e0 ldi r25, 0x00 ; 0 + d20: 60 e0 ldi r22, 0x00 ; 0 uint8_t r = 0; for (uint8_t i=0;i<8;i++) { intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { r |= (1< + d26: 4a 9b sbis 0x09, 2 ; 9 + d28: fe cf rjmp .-4 ; 0xd26 <__vector_1+0x4c> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - d10: ef e9 ldi r30, 0x9F ; 159 - d12: ff e0 ldi r31, 0x0F ; 15 - d14: 31 97 sbiw r30, 0x01 ; 1 - d16: f1 f7 brne .-4 ; 0xd14 <__vector_1+0x54> - d18: 00 c0 rjmp .+0 ; 0xd1a <__vector_1+0x5a> - d1a: 00 00 nop + d2a: ef e9 ldi r30, 0x9F ; 159 + d2c: ff e0 ldi r31, 0x0F ; 15 + d2e: 31 97 sbiw r30, 0x01 ; 1 + d30: f1 f7 brne .-4 ; 0xd2e <__vector_1+0x54> + d32: 00 c0 rjmp .+0 ; 0xd34 <__vector_1+0x5a> + d34: 00 00 nop uint8_t read8bit() { uint8_t r = 0; for (uint8_t i=0;i<8;i++) { intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { - d1c: 4a 9b sbis 0x09, 2 ; 9 - d1e: 08 c0 rjmp .+16 ; 0xd30 <__vector_1+0x70> + d36: 4a 9b sbis 0x09, 2 ; 9 + d38: 08 c0 rjmp .+16 ; 0xd4a <__vector_1+0x70> r |= (1< - d26: 22 0f add r18, r18 - d28: 33 1f adc r19, r19 - d2a: 0a 94 dec r0 - d2c: e2 f7 brpl .-8 ; 0xd26 <__vector_1+0x66> - d2e: 62 2b or r22, r18 + d3a: 9a 01 movw r18, r20 + d3c: 08 2e mov r0, r24 + d3e: 02 c0 rjmp .+4 ; 0xd44 <__vector_1+0x6a> + d40: 22 0f add r18, r18 + d42: 33 1f adc r19, r19 + d44: 0a 94 dec r0 + d46: e2 f7 brpl .-8 ; 0xd40 <__vector_1+0x66> + d48: 62 2b or r22, r18 } for(uint8_t j=0;j<50;j++) { if(!intpin::value()) { - d30: 4a 99 sbic 0x09, 2 ; 9 - d32: 66 c0 rjmp .+204 ; 0xe00 <__vector_1+0x140> - d34: 08 c0 rjmp .+16 ; 0xd46 <__vector_1+0x86> - d36: 4a 9b sbis 0x09, 2 ; 9 - d38: 06 c0 rjmp .+12 ; 0xd46 <__vector_1+0x86> - d3a: f5 e8 ldi r31, 0x85 ; 133 - d3c: fa 95 dec r31 - d3e: f1 f7 brne .-4 ; 0xd3c <__vector_1+0x7c> - d40: 00 00 nop - d42: 21 50 subi r18, 0x01 ; 1 + d4a: 4a 99 sbic 0x09, 2 ; 9 + d4c: 66 c0 rjmp .+204 ; 0xe1a <__vector_1+0x140> + d4e: 08 c0 rjmp .+16 ; 0xd60 <__vector_1+0x86> + d50: 4a 9b sbis 0x09, 2 ; 9 + d52: 06 c0 rjmp .+12 ; 0xd60 <__vector_1+0x86> + d54: f5 e8 ldi r31, 0x85 ; 133 + d56: fa 95 dec r31 + d58: f1 f7 brne .-4 ; 0xd56 <__vector_1+0x7c> + d5a: 00 00 nop + d5c: 21 50 subi r18, 0x01 ; 1 intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { r |= (1< - d46: 01 96 adiw r24, 0x01 ; 1 + d5e: c1 f7 brne .-16 ; 0xd50 <__vector_1+0x76> + d60: 01 96 adiw r24, 0x01 ; 1 EIMSK=(0< + d62: 88 30 cpi r24, 0x08 ; 8 + d64: 91 05 cpc r25, r1 + d66: f9 f6 brne .-66 ; 0xd26 <__vector_1+0x4c> } intpin::wait_is_set(); //Wait for the rest of the init. intpin::wait_is_clear(); // Init Complete, wait for first Byte //Read First Byte must be 0! if(this->read8bit() != 0) { //Is first Byte not 0 Abbort; - d4e: 61 11 cpse r22, r1 - d50: 39 c0 rjmp .+114 ; 0xdc4 <__vector_1+0x104> - d52: 80 e0 ldi r24, 0x00 ; 0 - d54: 90 e0 ldi r25, 0x00 ; 0 + d68: 61 11 cpse r22, r1 + d6a: 39 c0 rjmp .+114 ; 0xdde <__vector_1+0x104> + d6c: 80 e0 ldi r24, 0x00 ; 0 + d6e: 90 e0 ldi r25, 0x00 ; 0 uint8_t r = 0; for (uint8_t i=0;i<8;i++) { intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { r |= (1< - d5e: ef e9 ldi r30, 0x9F ; 159 - d60: ff e0 ldi r31, 0x0F ; 15 - d62: 31 97 sbiw r30, 0x01 ; 1 - d64: f1 f7 brne .-4 ; 0xd62 <__vector_1+0xa2> - d66: 00 c0 rjmp .+0 ; 0xd68 <__vector_1+0xa8> - d68: 00 00 nop + d70: 41 e0 ldi r20, 0x01 ; 1 + d72: 50 e0 ldi r21, 0x00 ; 0 + d74: 4a 9b sbis 0x09, 2 ; 9 + d76: fe cf rjmp .-4 ; 0xd74 <__vector_1+0x9a> + d78: ef e9 ldi r30, 0x9F ; 159 + d7a: ff e0 ldi r31, 0x0F ; 15 + d7c: 31 97 sbiw r30, 0x01 ; 1 + d7e: f1 f7 brne .-4 ; 0xd7c <__vector_1+0xa2> + d80: 00 c0 rjmp .+0 ; 0xd82 <__vector_1+0xa8> + d82: 00 00 nop uint8_t read8bit() { uint8_t r = 0; for (uint8_t i=0;i<8;i++) { intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { - d6a: 4a 9b sbis 0x09, 2 ; 9 - d6c: 08 c0 rjmp .+16 ; 0xd7e <__vector_1+0xbe> + d84: 4a 9b sbis 0x09, 2 ; 9 + d86: 08 c0 rjmp .+16 ; 0xd98 <__vector_1+0xbe> r |= (1< - d74: 22 0f add r18, r18 - d76: 33 1f adc r19, r19 - d78: 0a 94 dec r0 - d7a: e2 f7 brpl .-8 ; 0xd74 <__vector_1+0xb4> - d7c: 62 2b or r22, r18 + d88: 9a 01 movw r18, r20 + d8a: 08 2e mov r0, r24 + d8c: 02 c0 rjmp .+4 ; 0xd92 <__vector_1+0xb8> + d8e: 22 0f add r18, r18 + d90: 33 1f adc r19, r19 + d92: 0a 94 dec r0 + d94: e2 f7 brpl .-8 ; 0xd8e <__vector_1+0xb4> + d96: 62 2b or r22, r18 } for(uint8_t j=0;j<50;j++) { if(!intpin::value()) { - d7e: 4a 99 sbic 0x09, 2 ; 9 - d80: 39 c0 rjmp .+114 ; 0xdf4 <__vector_1+0x134> - d82: 08 c0 rjmp .+16 ; 0xd94 <__vector_1+0xd4> - d84: 4a 9b sbis 0x09, 2 ; 9 - d86: 06 c0 rjmp .+12 ; 0xd94 <__vector_1+0xd4> - d88: f5 e8 ldi r31, 0x85 ; 133 - d8a: fa 95 dec r31 - d8c: f1 f7 brne .-4 ; 0xd8a <__vector_1+0xca> - d8e: 00 00 nop - d90: 21 50 subi r18, 0x01 ; 1 + d98: 4a 99 sbic 0x09, 2 ; 9 + d9a: 39 c0 rjmp .+114 ; 0xe0e <__vector_1+0x134> + d9c: 08 c0 rjmp .+16 ; 0xdae <__vector_1+0xd4> + d9e: 4a 9b sbis 0x09, 2 ; 9 + da0: 06 c0 rjmp .+12 ; 0xdae <__vector_1+0xd4> + da2: f5 e8 ldi r31, 0x85 ; 133 + da4: fa 95 dec r31 + da6: f1 f7 brne .-4 ; 0xda4 <__vector_1+0xca> + da8: 00 00 nop + daa: 21 50 subi r18, 0x01 ; 1 intpin::wait_is_set(); _delay_us(800); if(intpin::read()) { r |= (1< - d94: 01 96 adiw r24, 0x01 ; 1 + dac: c1 f7 brne .-16 ; 0xd9e <__vector_1+0xc4> + dae: 01 96 adiw r24, 0x01 ; 1 EIMSK=(0< + db0: 88 30 cpi r24, 0x08 ; 8 + db2: 91 05 cpc r25, r1 + db4: f9 f6 brne .-66 ; 0xd74 <__vector_1+0x9a> //Read First Byte must be 0! if(this->read8bit() != 0) { //Is first Byte not 0 Abbort; return 255; } //Read Second Byte must be 239! if(this->read8bit() != 239) { - d9c: 6f 3e cpi r22, 0xEF ; 239 - d9e: 91 f4 brne .+36 ; 0xdc4 <__vector_1+0x104> + db6: 6f 3e cpi r22, 0xEF ; 239 + db8: 91 f4 brne .+36 ; 0xdde <__vector_1+0x104> return 255; } //Read Byte 3 and 4 (Data Byte and Checksum Byte! uint8_t a = this->read8bit(); - da0: 84 e8 ldi r24, 0x84 ; 132 - da2: 91 e0 ldi r25, 0x01 ; 1 - da4: 0e 94 32 06 call 0xc64 ; 0xc64 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv> - da8: c8 2f mov r28, r24 + dba: 84 e8 ldi r24, 0x84 ; 132 + dbc: 91 e0 ldi r25, 0x01 ; 1 + dbe: 0e 94 3f 06 call 0xc7e ; 0xc7e <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv> + dc2: c8 2f mov r28, r24 uint8_t b = this->read8bit(); - daa: 84 e8 ldi r24, 0x84 ; 132 - dac: 91 e0 ldi r25, 0x01 ; 1 - dae: 0e 94 32 06 call 0xc64 ; 0xc64 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv> + dc4: 84 e8 ldi r24, 0x84 ; 132 + dc6: 91 e0 ldi r25, 0x01 ; 1 + dc8: 0e 94 3f 06 call 0xc7e ; 0xc7e <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv> //Make Checksum Byte 3 + 4 must be 255! if(a+b != 255) { - db2: 28 2f mov r18, r24 - db4: 30 e0 ldi r19, 0x00 ; 0 - db6: 2c 0f add r18, r28 - db8: 31 1d adc r19, r1 - dba: 2f 3f cpi r18, 0xFF ; 255 - dbc: 31 05 cpc r19, r1 - dbe: 11 f4 brne .+4 ; 0xdc4 <__vector_1+0x104> + dcc: 28 2f mov r18, r24 + dce: 30 e0 ldi r19, 0x00 ; 0 + dd0: 2c 0f add r18, r28 + dd2: 31 1d adc r19, r1 + dd4: 2f 3f cpi r18, 0xFF ; 255 + dd6: 31 05 cpc r19, r1 + dd8: 11 f4 brne .+4 ; 0xdde <__vector_1+0x104> } //The Interrupt Function void interrupt() { led.red(1); uint8_t code = this->read(); if(code == 255) { - dc0: cf 3f cpi r28, 0xFF ; 255 - dc2: 51 f4 brne .+20 ; 0xdd8 <__vector_1+0x118> + dda: cf 3f cpi r28, 0xFF ; 255 + ddc: 51 f4 brne .+20 ; 0xdf2 <__vector_1+0x118> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - dc4: 2f e7 ldi r18, 0x7F ; 127 - dc6: 34 e8 ldi r19, 0x84 ; 132 - dc8: 8e e1 ldi r24, 0x1E ; 30 - dca: 21 50 subi r18, 0x01 ; 1 - dcc: 30 40 sbci r19, 0x00 ; 0 - dce: 80 40 sbci r24, 0x00 ; 0 - dd0: e1 f7 brne .-8 ; 0xdca <__vector_1+0x10a> - dd2: 00 c0 rjmp .+0 ; 0xdd4 <__vector_1+0x114> - dd4: 00 00 nop - dd6: 0b c0 rjmp .+22 ; 0xdee <__vector_1+0x12e> + dde: 2f e7 ldi r18, 0x7F ; 127 + de0: 34 e8 ldi r19, 0x84 ; 132 + de2: 8e e1 ldi r24, 0x1E ; 30 + de4: 21 50 subi r18, 0x01 ; 1 + de6: 30 40 sbci r19, 0x00 ; 0 + de8: 80 40 sbci r24, 0x00 ; 0 + dea: e1 f7 brne .-8 ; 0xde4 <__vector_1+0x10a> + dec: 00 c0 rjmp .+0 ; 0xdee <__vector_1+0x114> + dee: 00 00 nop + df0: 0b c0 rjmp .+22 ; 0xe08 <__vector_1+0x12e> _delay_ms(500); } else if(code == 254) { - dd8: ce 3f cpi r28, 0xFE ; 254 - dda: 39 f4 brne .+14 ; 0xdea <__vector_1+0x12a> - ddc: e7 e8 ldi r30, 0x87 ; 135 - dde: f3 e1 ldi r31, 0x13 ; 19 - de0: 31 97 sbiw r30, 0x01 ; 1 - de2: f1 f7 brne .-4 ; 0xde0 <__vector_1+0x120> - de4: 00 c0 rjmp .+0 ; 0xde6 <__vector_1+0x126> - de6: 00 00 nop - de8: 02 c0 rjmp .+4 ; 0xdee <__vector_1+0x12e> + df2: ce 3f cpi r28, 0xFE ; 254 + df4: 39 f4 brne .+14 ; 0xe04 <__vector_1+0x12a> + df6: e7 e8 ldi r30, 0x87 ; 135 + df8: f3 e1 ldi r31, 0x13 ; 19 + dfa: 31 97 sbiw r30, 0x01 ; 1 + dfc: f1 f7 brne .-4 ; 0xdfa <__vector_1+0x120> + dfe: 00 c0 rjmp .+0 ; 0xe00 <__vector_1+0x126> + e00: 00 00 nop + e02: 02 c0 rjmp .+4 ; 0xe08 <__vector_1+0x12e> _delay_ms(1); } else { this->_code = code; - dea: c0 93 85 01 sts 0x0185, r28 - dee: 28 98 cbi 0x05, 0 ; 5 + e04: c0 93 85 01 sts 0x0185, r28 + e08: 28 98 cbi 0x05, 0 ; 5 } led.red(0); EIFR |= (1< + e0a: e0 9a sbi 0x1c, 0 ; 28 + e0c: 0c c0 rjmp .+24 ; 0xe26 <__vector_1+0x14c> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - df4: f5 e8 ldi r31, 0x85 ; 133 - df6: fa 95 dec r31 - df8: f1 f7 brne .-4 ; 0xdf6 <__vector_1+0x136> - dfa: 00 00 nop - dfc: 21 e3 ldi r18, 0x31 ; 49 - dfe: c2 cf rjmp .-124 ; 0xd84 <__vector_1+0xc4> - e00: 25 e8 ldi r18, 0x85 ; 133 - e02: 2a 95 dec r18 - e04: f1 f7 brne .-4 ; 0xe02 <__vector_1+0x142> - e06: 00 00 nop - e08: 21 e3 ldi r18, 0x31 ; 49 - e0a: 95 cf rjmp .-214 ; 0xd36 <__vector_1+0x76> + e0e: f5 e8 ldi r31, 0x85 ; 133 + e10: fa 95 dec r31 + e12: f1 f7 brne .-4 ; 0xe10 <__vector_1+0x136> + e14: 00 00 nop + e16: 21 e3 ldi r18, 0x31 ; 49 + e18: c2 cf rjmp .-124 ; 0xd9e <__vector_1+0xc4> + e1a: 25 e8 ldi r18, 0x85 ; 133 + e1c: 2a 95 dec r18 + e1e: f1 f7 brne .-4 ; 0xe1c <__vector_1+0x142> + e20: 00 00 nop + e22: 21 e3 ldi r18, 0x31 ; 49 + e24: 95 cf rjmp .-214 ; 0xd50 <__vector_1+0x76> ir.interrupt(); } - e0c: ff 91 pop r31 - e0e: ef 91 pop r30 - e10: cf 91 pop r28 - e12: bf 91 pop r27 - e14: af 91 pop r26 - e16: 9f 91 pop r25 - e18: 8f 91 pop r24 - e1a: 7f 91 pop r23 - e1c: 6f 91 pop r22 - e1e: 5f 91 pop r21 - e20: 4f 91 pop r20 - e22: 3f 91 pop r19 - e24: 2f 91 pop r18 - e26: 0f 90 pop r0 - e28: 0f be out 0x3f, r0 ; 63 - e2a: 0f 90 pop r0 - e2c: 1f 90 pop r1 - e2e: 18 95 reti + e26: ff 91 pop r31 + e28: ef 91 pop r30 + e2a: cf 91 pop r28 + e2c: bf 91 pop r27 + e2e: af 91 pop r26 + e30: 9f 91 pop r25 + e32: 8f 91 pop r24 + e34: 7f 91 pop r23 + e36: 6f 91 pop r22 + e38: 5f 91 pop r21 + e3a: 4f 91 pop r20 + e3c: 3f 91 pop r19 + e3e: 2f 91 pop r18 + e40: 0f 90 pop r0 + e42: 0f be out 0x3f, r0 ; 63 + e44: 0f 90 pop r0 + e46: 1f 90 pop r1 + e48: 18 95 reti -00000e30 <_GLOBAL__sub_I_Serial>: +00000e4a <_GLOBAL__sub_I_Serial>: */ #include "peripheral.h" #include uartclass Serial; - e30: 89 ea ldi r24, 0xA9 ; 169 - e32: 91 e0 ldi r25, 0x01 ; 1 - e34: 0e 94 93 02 call 0x526 ; 0x526 <_ZN4UartILm9600EEC1Ev> + e4a: 85 eb ldi r24, 0xB5 ; 181 + e4c: 91 e0 ldi r25, 0x01 ; 1 + e4e: 0e 94 a0 02 call 0x540 ; 0x540 <_ZN4UartILm9600EEC1Ev> template class Stripe { public: Stripe() { this->init(); - e38: 88 e8 ldi r24, 0x88 ; 136 - e3a: 91 e0 ldi r25, 0x01 ; 1 - e3c: 0e 94 03 06 call 0xc06 ; 0xc06 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv> + e52: 88 e8 ldi r24, 0x88 ; 136 + e54: 91 e0 ldi r25, 0x01 ; 1 + e56: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv> static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - e40: 20 9a sbi 0x04, 0 ; 4 - e42: 21 9a sbi 0x04, 1 ; 4 + e5a: 20 9a sbi 0x04, 0 ; 4 + e5c: 21 9a sbi 0x04, 1 ; 4 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - e44: 28 98 cbi 0x05, 0 ; 5 - e46: 29 98 cbi 0x05, 1 ; 5 - e48: 56 98 cbi 0x0a, 6 ; 10 + e5e: 28 98 cbi 0x05, 0 ; 5 + e60: 29 98 cbi 0x05, 1 ; 5 + e62: 56 98 cbi 0x0a, 6 ; 10 namespace avrlib { struct portd { static uint8_t port() { return PORTD; } static void port(uint8_t v) { PORTD = v; } - e4a: 5e 98 cbi 0x0b, 6 ; 11 + e64: 5e 98 cbi 0x0b, 6 ; 11 static uint8_t pin() { return PIND; } static void pin(uint8_t v) { PIND = v; } static uint8_t dir() { return DDRD; } static void dir(uint8_t v) { DDRD = v; } - e4c: 57 98 cbi 0x0a, 7 ; 10 + e66: 57 98 cbi 0x0a, 7 ; 10 namespace avrlib { struct portd { static uint8_t port() { return PORTD; } static void port(uint8_t v) { PORTD = v; } - e4e: 5f 98 cbi 0x0b, 7 ; 11 + e68: 5f 98 cbi 0x0b, 7 ; 11 // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=(0<_code = 255; - e68: 8f ef ldi r24, 0xFF ; 255 - e6a: 80 93 85 01 sts 0x0185, r24 + e82: 8f ef ldi r24, 0xFF ; 255 + e84: 80 93 85 01 sts 0x0185, r24 // INT0 Mode: Falling Edge // INT1: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-14: Off // Interrupt on any change on pins PCINT16-23: Off EICRA=(0<: - e7c: 50 58 subi r21, 0x80 ; 128 +00000e96 <__subsf3>: + e96: 50 58 subi r21, 0x80 ; 128 -00000e7e <__addsf3>: - e7e: bb 27 eor r27, r27 - e80: aa 27 eor r26, r26 - e82: 0e d0 rcall .+28 ; 0xea0 <__addsf3x> - e84: 08 c1 rjmp .+528 ; 0x1096 <__fp_round> - e86: f9 d0 rcall .+498 ; 0x107a <__fp_pscA> - e88: 30 f0 brcs .+12 ; 0xe96 <__addsf3+0x18> - e8a: fe d0 rcall .+508 ; 0x1088 <__fp_pscB> - e8c: 20 f0 brcs .+8 ; 0xe96 <__addsf3+0x18> - e8e: 31 f4 brne .+12 ; 0xe9c <__addsf3+0x1e> - e90: 9f 3f cpi r25, 0xFF ; 255 - e92: 11 f4 brne .+4 ; 0xe98 <__addsf3+0x1a> - e94: 1e f4 brtc .+6 ; 0xe9c <__addsf3+0x1e> - e96: ee c0 rjmp .+476 ; 0x1074 <__fp_nan> - e98: 0e f4 brtc .+2 ; 0xe9c <__addsf3+0x1e> - e9a: e0 95 com r30 - e9c: e7 fb bst r30, 7 - e9e: e4 c0 rjmp .+456 ; 0x1068 <__fp_inf> +00000e98 <__addsf3>: + e98: bb 27 eor r27, r27 + e9a: aa 27 eor r26, r26 + e9c: 0e d0 rcall .+28 ; 0xeba <__addsf3x> + e9e: 08 c1 rjmp .+528 ; 0x10b0 <__fp_round> + ea0: f9 d0 rcall .+498 ; 0x1094 <__fp_pscA> + ea2: 30 f0 brcs .+12 ; 0xeb0 <__addsf3+0x18> + ea4: fe d0 rcall .+508 ; 0x10a2 <__fp_pscB> + ea6: 20 f0 brcs .+8 ; 0xeb0 <__addsf3+0x18> + ea8: 31 f4 brne .+12 ; 0xeb6 <__addsf3+0x1e> + eaa: 9f 3f cpi r25, 0xFF ; 255 + eac: 11 f4 brne .+4 ; 0xeb2 <__addsf3+0x1a> + eae: 1e f4 brtc .+6 ; 0xeb6 <__addsf3+0x1e> + eb0: ee c0 rjmp .+476 ; 0x108e <__fp_nan> + eb2: 0e f4 brtc .+2 ; 0xeb6 <__addsf3+0x1e> + eb4: e0 95 com r30 + eb6: e7 fb bst r30, 7 + eb8: e4 c0 rjmp .+456 ; 0x1082 <__fp_inf> -00000ea0 <__addsf3x>: - ea0: e9 2f mov r30, r25 - ea2: 0a d1 rcall .+532 ; 0x10b8 <__fp_split3> - ea4: 80 f3 brcs .-32 ; 0xe86 <__addsf3+0x8> - ea6: ba 17 cp r27, r26 - ea8: 62 07 cpc r22, r18 - eaa: 73 07 cpc r23, r19 - eac: 84 07 cpc r24, r20 - eae: 95 07 cpc r25, r21 - eb0: 18 f0 brcs .+6 ; 0xeb8 <__addsf3x+0x18> - eb2: 71 f4 brne .+28 ; 0xed0 <__addsf3x+0x30> - eb4: 9e f5 brtc .+102 ; 0xf1c <__addsf3x+0x7c> - eb6: 22 c1 rjmp .+580 ; 0x10fc <__fp_zero> - eb8: 0e f4 brtc .+2 ; 0xebc <__addsf3x+0x1c> - eba: e0 95 com r30 - ebc: 0b 2e mov r0, r27 - ebe: ba 2f mov r27, r26 - ec0: a0 2d mov r26, r0 - ec2: 0b 01 movw r0, r22 - ec4: b9 01 movw r22, r18 - ec6: 90 01 movw r18, r0 - ec8: 0c 01 movw r0, r24 - eca: ca 01 movw r24, r20 - ecc: a0 01 movw r20, r0 - ece: 11 24 eor r1, r1 - ed0: ff 27 eor r31, r31 - ed2: 59 1b sub r21, r25 - ed4: 99 f0 breq .+38 ; 0xefc <__addsf3x+0x5c> - ed6: 59 3f cpi r21, 0xF9 ; 249 - ed8: 50 f4 brcc .+20 ; 0xeee <__addsf3x+0x4e> - eda: 50 3e cpi r21, 0xE0 ; 224 - edc: 68 f1 brcs .+90 ; 0xf38 <__addsf3x+0x98> - ede: 1a 16 cp r1, r26 - ee0: f0 40 sbci r31, 0x00 ; 0 - ee2: a2 2f mov r26, r18 - ee4: 23 2f mov r18, r19 - ee6: 34 2f mov r19, r20 - ee8: 44 27 eor r20, r20 - eea: 58 5f subi r21, 0xF8 ; 248 - eec: f3 cf rjmp .-26 ; 0xed4 <__addsf3x+0x34> - eee: 46 95 lsr r20 - ef0: 37 95 ror r19 - ef2: 27 95 ror r18 - ef4: a7 95 ror r26 - ef6: f0 40 sbci r31, 0x00 ; 0 - ef8: 53 95 inc r21 - efa: c9 f7 brne .-14 ; 0xeee <__addsf3x+0x4e> - efc: 7e f4 brtc .+30 ; 0xf1c <__addsf3x+0x7c> - efe: 1f 16 cp r1, r31 - f00: ba 0b sbc r27, r26 - f02: 62 0b sbc r22, r18 - f04: 73 0b sbc r23, r19 - f06: 84 0b sbc r24, r20 - f08: ba f0 brmi .+46 ; 0xf38 <__addsf3x+0x98> - f0a: 91 50 subi r25, 0x01 ; 1 - f0c: a1 f0 breq .+40 ; 0xf36 <__addsf3x+0x96> - f0e: ff 0f add r31, r31 - f10: bb 1f adc r27, r27 - f12: 66 1f adc r22, r22 - f14: 77 1f adc r23, r23 - f16: 88 1f adc r24, r24 - f18: c2 f7 brpl .-16 ; 0xf0a <__addsf3x+0x6a> - f1a: 0e c0 rjmp .+28 ; 0xf38 <__addsf3x+0x98> - f1c: ba 0f add r27, r26 - f1e: 62 1f adc r22, r18 - f20: 73 1f adc r23, r19 - f22: 84 1f adc r24, r20 - f24: 48 f4 brcc .+18 ; 0xf38 <__addsf3x+0x98> - f26: 87 95 ror r24 - f28: 77 95 ror r23 - f2a: 67 95 ror r22 - f2c: b7 95 ror r27 - f2e: f7 95 ror r31 - f30: 9e 3f cpi r25, 0xFE ; 254 - f32: 08 f0 brcs .+2 ; 0xf36 <__addsf3x+0x96> - f34: b3 cf rjmp .-154 ; 0xe9c <__addsf3+0x1e> - f36: 93 95 inc r25 - f38: 88 0f add r24, r24 - f3a: 08 f0 brcs .+2 ; 0xf3e <__addsf3x+0x9e> - f3c: 99 27 eor r25, r25 - f3e: ee 0f add r30, r30 - f40: 97 95 ror r25 - f42: 87 95 ror r24 - f44: 08 95 ret +00000eba <__addsf3x>: + eba: e9 2f mov r30, r25 + ebc: 0a d1 rcall .+532 ; 0x10d2 <__fp_split3> + ebe: 80 f3 brcs .-32 ; 0xea0 <__addsf3+0x8> + ec0: ba 17 cp r27, r26 + ec2: 62 07 cpc r22, r18 + ec4: 73 07 cpc r23, r19 + ec6: 84 07 cpc r24, r20 + ec8: 95 07 cpc r25, r21 + eca: 18 f0 brcs .+6 ; 0xed2 <__addsf3x+0x18> + ecc: 71 f4 brne .+28 ; 0xeea <__addsf3x+0x30> + ece: 9e f5 brtc .+102 ; 0xf36 <__addsf3x+0x7c> + ed0: 22 c1 rjmp .+580 ; 0x1116 <__fp_zero> + ed2: 0e f4 brtc .+2 ; 0xed6 <__addsf3x+0x1c> + ed4: e0 95 com r30 + ed6: 0b 2e mov r0, r27 + ed8: ba 2f mov r27, r26 + eda: a0 2d mov r26, r0 + edc: 0b 01 movw r0, r22 + ede: b9 01 movw r22, r18 + ee0: 90 01 movw r18, r0 + ee2: 0c 01 movw r0, r24 + ee4: ca 01 movw r24, r20 + ee6: a0 01 movw r20, r0 + ee8: 11 24 eor r1, r1 + eea: ff 27 eor r31, r31 + eec: 59 1b sub r21, r25 + eee: 99 f0 breq .+38 ; 0xf16 <__addsf3x+0x5c> + ef0: 59 3f cpi r21, 0xF9 ; 249 + ef2: 50 f4 brcc .+20 ; 0xf08 <__addsf3x+0x4e> + ef4: 50 3e cpi r21, 0xE0 ; 224 + ef6: 68 f1 brcs .+90 ; 0xf52 <__addsf3x+0x98> + ef8: 1a 16 cp r1, r26 + efa: f0 40 sbci r31, 0x00 ; 0 + efc: a2 2f mov r26, r18 + efe: 23 2f mov r18, r19 + f00: 34 2f mov r19, r20 + f02: 44 27 eor r20, r20 + f04: 58 5f subi r21, 0xF8 ; 248 + f06: f3 cf rjmp .-26 ; 0xeee <__addsf3x+0x34> + f08: 46 95 lsr r20 + f0a: 37 95 ror r19 + f0c: 27 95 ror r18 + f0e: a7 95 ror r26 + f10: f0 40 sbci r31, 0x00 ; 0 + f12: 53 95 inc r21 + f14: c9 f7 brne .-14 ; 0xf08 <__addsf3x+0x4e> + f16: 7e f4 brtc .+30 ; 0xf36 <__addsf3x+0x7c> + f18: 1f 16 cp r1, r31 + f1a: ba 0b sbc r27, r26 + f1c: 62 0b sbc r22, r18 + f1e: 73 0b sbc r23, r19 + f20: 84 0b sbc r24, r20 + f22: ba f0 brmi .+46 ; 0xf52 <__addsf3x+0x98> + f24: 91 50 subi r25, 0x01 ; 1 + f26: a1 f0 breq .+40 ; 0xf50 <__addsf3x+0x96> + f28: ff 0f add r31, r31 + f2a: bb 1f adc r27, r27 + f2c: 66 1f adc r22, r22 + f2e: 77 1f adc r23, r23 + f30: 88 1f adc r24, r24 + f32: c2 f7 brpl .-16 ; 0xf24 <__addsf3x+0x6a> + f34: 0e c0 rjmp .+28 ; 0xf52 <__addsf3x+0x98> + f36: ba 0f add r27, r26 + f38: 62 1f adc r22, r18 + f3a: 73 1f adc r23, r19 + f3c: 84 1f adc r24, r20 + f3e: 48 f4 brcc .+18 ; 0xf52 <__addsf3x+0x98> + f40: 87 95 ror r24 + f42: 77 95 ror r23 + f44: 67 95 ror r22 + f46: b7 95 ror r27 + f48: f7 95 ror r31 + f4a: 9e 3f cpi r25, 0xFE ; 254 + f4c: 08 f0 brcs .+2 ; 0xf50 <__addsf3x+0x96> + f4e: b3 cf rjmp .-154 ; 0xeb6 <__addsf3+0x1e> + f50: 93 95 inc r25 + f52: 88 0f add r24, r24 + f54: 08 f0 brcs .+2 ; 0xf58 <__addsf3x+0x9e> + f56: 99 27 eor r25, r25 + f58: ee 0f add r30, r30 + f5a: 97 95 ror r25 + f5c: 87 95 ror r24 + f5e: 08 95 ret -00000f46 <__cmpsf2>: - f46: 6c d0 rcall .+216 ; 0x1020 <__fp_cmp> - f48: 08 f4 brcc .+2 ; 0xf4c <__cmpsf2+0x6> - f4a: 81 e0 ldi r24, 0x01 ; 1 - f4c: 08 95 ret +00000f60 <__cmpsf2>: + f60: 6c d0 rcall .+216 ; 0x103a <__fp_cmp> + f62: 08 f4 brcc .+2 ; 0xf66 <__cmpsf2+0x6> + f64: 81 e0 ldi r24, 0x01 ; 1 + f66: 08 95 ret -00000f4e <__fixunssfsi>: - f4e: bc d0 rcall .+376 ; 0x10c8 <__fp_splitA> - f50: 88 f0 brcs .+34 ; 0xf74 <__fixunssfsi+0x26> - f52: 9f 57 subi r25, 0x7F ; 127 - f54: 90 f0 brcs .+36 ; 0xf7a <__fixunssfsi+0x2c> - f56: b9 2f mov r27, r25 - f58: 99 27 eor r25, r25 - f5a: b7 51 subi r27, 0x17 ; 23 - f5c: a0 f0 brcs .+40 ; 0xf86 <__fixunssfsi+0x38> - f5e: d1 f0 breq .+52 ; 0xf94 <__fixunssfsi+0x46> - f60: 66 0f add r22, r22 - f62: 77 1f adc r23, r23 - f64: 88 1f adc r24, r24 - f66: 99 1f adc r25, r25 - f68: 1a f0 brmi .+6 ; 0xf70 <__fixunssfsi+0x22> - f6a: ba 95 dec r27 - f6c: c9 f7 brne .-14 ; 0xf60 <__fixunssfsi+0x12> - f6e: 12 c0 rjmp .+36 ; 0xf94 <__fixunssfsi+0x46> - f70: b1 30 cpi r27, 0x01 ; 1 - f72: 81 f0 breq .+32 ; 0xf94 <__fixunssfsi+0x46> - f74: c3 d0 rcall .+390 ; 0x10fc <__fp_zero> - f76: b1 e0 ldi r27, 0x01 ; 1 - f78: 08 95 ret - f7a: c0 c0 rjmp .+384 ; 0x10fc <__fp_zero> - f7c: 67 2f mov r22, r23 - f7e: 78 2f mov r23, r24 - f80: 88 27 eor r24, r24 - f82: b8 5f subi r27, 0xF8 ; 248 - f84: 39 f0 breq .+14 ; 0xf94 <__fixunssfsi+0x46> - f86: b9 3f cpi r27, 0xF9 ; 249 - f88: cc f3 brlt .-14 ; 0xf7c <__fixunssfsi+0x2e> - f8a: 86 95 lsr r24 - f8c: 77 95 ror r23 - f8e: 67 95 ror r22 - f90: b3 95 inc r27 - f92: d9 f7 brne .-10 ; 0xf8a <__fixunssfsi+0x3c> - f94: 3e f4 brtc .+14 ; 0xfa4 <__fixunssfsi+0x56> - f96: 90 95 com r25 - f98: 80 95 com r24 - f9a: 70 95 com r23 - f9c: 61 95 neg r22 - f9e: 7f 4f sbci r23, 0xFF ; 255 - fa0: 8f 4f sbci r24, 0xFF ; 255 - fa2: 9f 4f sbci r25, 0xFF ; 255 - fa4: 08 95 ret +00000f68 <__fixunssfsi>: + f68: bc d0 rcall .+376 ; 0x10e2 <__fp_splitA> + f6a: 88 f0 brcs .+34 ; 0xf8e <__fixunssfsi+0x26> + f6c: 9f 57 subi r25, 0x7F ; 127 + f6e: 90 f0 brcs .+36 ; 0xf94 <__fixunssfsi+0x2c> + f70: b9 2f mov r27, r25 + f72: 99 27 eor r25, r25 + f74: b7 51 subi r27, 0x17 ; 23 + f76: a0 f0 brcs .+40 ; 0xfa0 <__fixunssfsi+0x38> + f78: d1 f0 breq .+52 ; 0xfae <__fixunssfsi+0x46> + f7a: 66 0f add r22, r22 + f7c: 77 1f adc r23, r23 + f7e: 88 1f adc r24, r24 + f80: 99 1f adc r25, r25 + f82: 1a f0 brmi .+6 ; 0xf8a <__fixunssfsi+0x22> + f84: ba 95 dec r27 + f86: c9 f7 brne .-14 ; 0xf7a <__fixunssfsi+0x12> + f88: 12 c0 rjmp .+36 ; 0xfae <__fixunssfsi+0x46> + f8a: b1 30 cpi r27, 0x01 ; 1 + f8c: 81 f0 breq .+32 ; 0xfae <__fixunssfsi+0x46> + f8e: c3 d0 rcall .+390 ; 0x1116 <__fp_zero> + f90: b1 e0 ldi r27, 0x01 ; 1 + f92: 08 95 ret + f94: c0 c0 rjmp .+384 ; 0x1116 <__fp_zero> + f96: 67 2f mov r22, r23 + f98: 78 2f mov r23, r24 + f9a: 88 27 eor r24, r24 + f9c: b8 5f subi r27, 0xF8 ; 248 + f9e: 39 f0 breq .+14 ; 0xfae <__fixunssfsi+0x46> + fa0: b9 3f cpi r27, 0xF9 ; 249 + fa2: cc f3 brlt .-14 ; 0xf96 <__fixunssfsi+0x2e> + fa4: 86 95 lsr r24 + fa6: 77 95 ror r23 + fa8: 67 95 ror r22 + faa: b3 95 inc r27 + fac: d9 f7 brne .-10 ; 0xfa4 <__fixunssfsi+0x3c> + fae: 3e f4 brtc .+14 ; 0xfbe <__fixunssfsi+0x56> + fb0: 90 95 com r25 + fb2: 80 95 com r24 + fb4: 70 95 com r23 + fb6: 61 95 neg r22 + fb8: 7f 4f sbci r23, 0xFF ; 255 + fba: 8f 4f sbci r24, 0xFF ; 255 + fbc: 9f 4f sbci r25, 0xFF ; 255 + fbe: 08 95 ret -00000fa6 <__floatunsisf>: - fa6: e8 94 clt - fa8: 09 c0 rjmp .+18 ; 0xfbc <__floatsisf+0x12> +00000fc0 <__floatunsisf>: + fc0: e8 94 clt + fc2: 09 c0 rjmp .+18 ; 0xfd6 <__floatsisf+0x12> -00000faa <__floatsisf>: - faa: 97 fb bst r25, 7 - fac: 3e f4 brtc .+14 ; 0xfbc <__floatsisf+0x12> - fae: 90 95 com r25 - fb0: 80 95 com r24 - fb2: 70 95 com r23 - fb4: 61 95 neg r22 - fb6: 7f 4f sbci r23, 0xFF ; 255 - fb8: 8f 4f sbci r24, 0xFF ; 255 - fba: 9f 4f sbci r25, 0xFF ; 255 - fbc: 99 23 and r25, r25 - fbe: a9 f0 breq .+42 ; 0xfea <__floatsisf+0x40> - fc0: f9 2f mov r31, r25 - fc2: 96 e9 ldi r25, 0x96 ; 150 - fc4: bb 27 eor r27, r27 - fc6: 93 95 inc r25 - fc8: f6 95 lsr r31 - fca: 87 95 ror r24 - fcc: 77 95 ror r23 - fce: 67 95 ror r22 - fd0: b7 95 ror r27 - fd2: f1 11 cpse r31, r1 - fd4: f8 cf rjmp .-16 ; 0xfc6 <__floatsisf+0x1c> - fd6: fa f4 brpl .+62 ; 0x1016 <__floatsisf+0x6c> - fd8: bb 0f add r27, r27 - fda: 11 f4 brne .+4 ; 0xfe0 <__floatsisf+0x36> - fdc: 60 ff sbrs r22, 0 - fde: 1b c0 rjmp .+54 ; 0x1016 <__floatsisf+0x6c> - fe0: 6f 5f subi r22, 0xFF ; 255 - fe2: 7f 4f sbci r23, 0xFF ; 255 - fe4: 8f 4f sbci r24, 0xFF ; 255 - fe6: 9f 4f sbci r25, 0xFF ; 255 - fe8: 16 c0 rjmp .+44 ; 0x1016 <__floatsisf+0x6c> - fea: 88 23 and r24, r24 - fec: 11 f0 breq .+4 ; 0xff2 <__floatsisf+0x48> - fee: 96 e9 ldi r25, 0x96 ; 150 - ff0: 11 c0 rjmp .+34 ; 0x1014 <__floatsisf+0x6a> - ff2: 77 23 and r23, r23 - ff4: 21 f0 breq .+8 ; 0xffe <__floatsisf+0x54> - ff6: 9e e8 ldi r25, 0x8E ; 142 - ff8: 87 2f mov r24, r23 - ffa: 76 2f mov r23, r22 - ffc: 05 c0 rjmp .+10 ; 0x1008 <__floatsisf+0x5e> - ffe: 66 23 and r22, r22 - 1000: 71 f0 breq .+28 ; 0x101e <__floatsisf+0x74> - 1002: 96 e8 ldi r25, 0x86 ; 134 - 1004: 86 2f mov r24, r22 - 1006: 70 e0 ldi r23, 0x00 ; 0 - 1008: 60 e0 ldi r22, 0x00 ; 0 - 100a: 2a f0 brmi .+10 ; 0x1016 <__floatsisf+0x6c> - 100c: 9a 95 dec r25 - 100e: 66 0f add r22, r22 - 1010: 77 1f adc r23, r23 - 1012: 88 1f adc r24, r24 - 1014: da f7 brpl .-10 ; 0x100c <__floatsisf+0x62> - 1016: 88 0f add r24, r24 - 1018: 96 95 lsr r25 - 101a: 87 95 ror r24 - 101c: 97 f9 bld r25, 7 - 101e: 08 95 ret +00000fc4 <__floatsisf>: + fc4: 97 fb bst r25, 7 + fc6: 3e f4 brtc .+14 ; 0xfd6 <__floatsisf+0x12> + fc8: 90 95 com r25 + fca: 80 95 com r24 + fcc: 70 95 com r23 + fce: 61 95 neg r22 + fd0: 7f 4f sbci r23, 0xFF ; 255 + fd2: 8f 4f sbci r24, 0xFF ; 255 + fd4: 9f 4f sbci r25, 0xFF ; 255 + fd6: 99 23 and r25, r25 + fd8: a9 f0 breq .+42 ; 0x1004 <__floatsisf+0x40> + fda: f9 2f mov r31, r25 + fdc: 96 e9 ldi r25, 0x96 ; 150 + fde: bb 27 eor r27, r27 + fe0: 93 95 inc r25 + fe2: f6 95 lsr r31 + fe4: 87 95 ror r24 + fe6: 77 95 ror r23 + fe8: 67 95 ror r22 + fea: b7 95 ror r27 + fec: f1 11 cpse r31, r1 + fee: f8 cf rjmp .-16 ; 0xfe0 <__floatsisf+0x1c> + ff0: fa f4 brpl .+62 ; 0x1030 <__floatsisf+0x6c> + ff2: bb 0f add r27, r27 + ff4: 11 f4 brne .+4 ; 0xffa <__floatsisf+0x36> + ff6: 60 ff sbrs r22, 0 + ff8: 1b c0 rjmp .+54 ; 0x1030 <__floatsisf+0x6c> + ffa: 6f 5f subi r22, 0xFF ; 255 + ffc: 7f 4f sbci r23, 0xFF ; 255 + ffe: 8f 4f sbci r24, 0xFF ; 255 + 1000: 9f 4f sbci r25, 0xFF ; 255 + 1002: 16 c0 rjmp .+44 ; 0x1030 <__floatsisf+0x6c> + 1004: 88 23 and r24, r24 + 1006: 11 f0 breq .+4 ; 0x100c <__floatsisf+0x48> + 1008: 96 e9 ldi r25, 0x96 ; 150 + 100a: 11 c0 rjmp .+34 ; 0x102e <__floatsisf+0x6a> + 100c: 77 23 and r23, r23 + 100e: 21 f0 breq .+8 ; 0x1018 <__floatsisf+0x54> + 1010: 9e e8 ldi r25, 0x8E ; 142 + 1012: 87 2f mov r24, r23 + 1014: 76 2f mov r23, r22 + 1016: 05 c0 rjmp .+10 ; 0x1022 <__floatsisf+0x5e> + 1018: 66 23 and r22, r22 + 101a: 71 f0 breq .+28 ; 0x1038 <__floatsisf+0x74> + 101c: 96 e8 ldi r25, 0x86 ; 134 + 101e: 86 2f mov r24, r22 + 1020: 70 e0 ldi r23, 0x00 ; 0 + 1022: 60 e0 ldi r22, 0x00 ; 0 + 1024: 2a f0 brmi .+10 ; 0x1030 <__floatsisf+0x6c> + 1026: 9a 95 dec r25 + 1028: 66 0f add r22, r22 + 102a: 77 1f adc r23, r23 + 102c: 88 1f adc r24, r24 + 102e: da f7 brpl .-10 ; 0x1026 <__floatsisf+0x62> + 1030: 88 0f add r24, r24 + 1032: 96 95 lsr r25 + 1034: 87 95 ror r24 + 1036: 97 f9 bld r25, 7 + 1038: 08 95 ret -00001020 <__fp_cmp>: - 1020: 99 0f add r25, r25 - 1022: 00 08 sbc r0, r0 - 1024: 55 0f add r21, r21 - 1026: aa 0b sbc r26, r26 - 1028: e0 e8 ldi r30, 0x80 ; 128 - 102a: fe ef ldi r31, 0xFE ; 254 - 102c: 16 16 cp r1, r22 - 102e: 17 06 cpc r1, r23 - 1030: e8 07 cpc r30, r24 - 1032: f9 07 cpc r31, r25 - 1034: c0 f0 brcs .+48 ; 0x1066 <__fp_cmp+0x46> - 1036: 12 16 cp r1, r18 - 1038: 13 06 cpc r1, r19 - 103a: e4 07 cpc r30, r20 - 103c: f5 07 cpc r31, r21 - 103e: 98 f0 brcs .+38 ; 0x1066 <__fp_cmp+0x46> - 1040: 62 1b sub r22, r18 - 1042: 73 0b sbc r23, r19 - 1044: 84 0b sbc r24, r20 - 1046: 95 0b sbc r25, r21 - 1048: 39 f4 brne .+14 ; 0x1058 <__fp_cmp+0x38> - 104a: 0a 26 eor r0, r26 - 104c: 61 f0 breq .+24 ; 0x1066 <__fp_cmp+0x46> - 104e: 23 2b or r18, r19 - 1050: 24 2b or r18, r20 - 1052: 25 2b or r18, r21 - 1054: 21 f4 brne .+8 ; 0x105e <__fp_cmp+0x3e> - 1056: 08 95 ret - 1058: 0a 26 eor r0, r26 - 105a: 09 f4 brne .+2 ; 0x105e <__fp_cmp+0x3e> - 105c: a1 40 sbci r26, 0x01 ; 1 - 105e: a6 95 lsr r26 - 1060: 8f ef ldi r24, 0xFF ; 255 - 1062: 81 1d adc r24, r1 - 1064: 81 1d adc r24, r1 - 1066: 08 95 ret +0000103a <__fp_cmp>: + 103a: 99 0f add r25, r25 + 103c: 00 08 sbc r0, r0 + 103e: 55 0f add r21, r21 + 1040: aa 0b sbc r26, r26 + 1042: e0 e8 ldi r30, 0x80 ; 128 + 1044: fe ef ldi r31, 0xFE ; 254 + 1046: 16 16 cp r1, r22 + 1048: 17 06 cpc r1, r23 + 104a: e8 07 cpc r30, r24 + 104c: f9 07 cpc r31, r25 + 104e: c0 f0 brcs .+48 ; 0x1080 <__fp_cmp+0x46> + 1050: 12 16 cp r1, r18 + 1052: 13 06 cpc r1, r19 + 1054: e4 07 cpc r30, r20 + 1056: f5 07 cpc r31, r21 + 1058: 98 f0 brcs .+38 ; 0x1080 <__fp_cmp+0x46> + 105a: 62 1b sub r22, r18 + 105c: 73 0b sbc r23, r19 + 105e: 84 0b sbc r24, r20 + 1060: 95 0b sbc r25, r21 + 1062: 39 f4 brne .+14 ; 0x1072 <__fp_cmp+0x38> + 1064: 0a 26 eor r0, r26 + 1066: 61 f0 breq .+24 ; 0x1080 <__fp_cmp+0x46> + 1068: 23 2b or r18, r19 + 106a: 24 2b or r18, r20 + 106c: 25 2b or r18, r21 + 106e: 21 f4 brne .+8 ; 0x1078 <__fp_cmp+0x3e> + 1070: 08 95 ret + 1072: 0a 26 eor r0, r26 + 1074: 09 f4 brne .+2 ; 0x1078 <__fp_cmp+0x3e> + 1076: a1 40 sbci r26, 0x01 ; 1 + 1078: a6 95 lsr r26 + 107a: 8f ef ldi r24, 0xFF ; 255 + 107c: 81 1d adc r24, r1 + 107e: 81 1d adc r24, r1 + 1080: 08 95 ret -00001068 <__fp_inf>: - 1068: 97 f9 bld r25, 7 - 106a: 9f 67 ori r25, 0x7F ; 127 - 106c: 80 e8 ldi r24, 0x80 ; 128 - 106e: 70 e0 ldi r23, 0x00 ; 0 - 1070: 60 e0 ldi r22, 0x00 ; 0 - 1072: 08 95 ret +00001082 <__fp_inf>: + 1082: 97 f9 bld r25, 7 + 1084: 9f 67 ori r25, 0x7F ; 127 + 1086: 80 e8 ldi r24, 0x80 ; 128 + 1088: 70 e0 ldi r23, 0x00 ; 0 + 108a: 60 e0 ldi r22, 0x00 ; 0 + 108c: 08 95 ret -00001074 <__fp_nan>: - 1074: 9f ef ldi r25, 0xFF ; 255 - 1076: 80 ec ldi r24, 0xC0 ; 192 - 1078: 08 95 ret +0000108e <__fp_nan>: + 108e: 9f ef ldi r25, 0xFF ; 255 + 1090: 80 ec ldi r24, 0xC0 ; 192 + 1092: 08 95 ret -0000107a <__fp_pscA>: - 107a: 00 24 eor r0, r0 - 107c: 0a 94 dec r0 - 107e: 16 16 cp r1, r22 - 1080: 17 06 cpc r1, r23 - 1082: 18 06 cpc r1, r24 - 1084: 09 06 cpc r0, r25 - 1086: 08 95 ret +00001094 <__fp_pscA>: + 1094: 00 24 eor r0, r0 + 1096: 0a 94 dec r0 + 1098: 16 16 cp r1, r22 + 109a: 17 06 cpc r1, r23 + 109c: 18 06 cpc r1, r24 + 109e: 09 06 cpc r0, r25 + 10a0: 08 95 ret -00001088 <__fp_pscB>: - 1088: 00 24 eor r0, r0 - 108a: 0a 94 dec r0 - 108c: 12 16 cp r1, r18 - 108e: 13 06 cpc r1, r19 - 1090: 14 06 cpc r1, r20 - 1092: 05 06 cpc r0, r21 - 1094: 08 95 ret +000010a2 <__fp_pscB>: + 10a2: 00 24 eor r0, r0 + 10a4: 0a 94 dec r0 + 10a6: 12 16 cp r1, r18 + 10a8: 13 06 cpc r1, r19 + 10aa: 14 06 cpc r1, r20 + 10ac: 05 06 cpc r0, r21 + 10ae: 08 95 ret -00001096 <__fp_round>: - 1096: 09 2e mov r0, r25 - 1098: 03 94 inc r0 - 109a: 00 0c add r0, r0 - 109c: 11 f4 brne .+4 ; 0x10a2 <__fp_round+0xc> - 109e: 88 23 and r24, r24 - 10a0: 52 f0 brmi .+20 ; 0x10b6 <__fp_round+0x20> - 10a2: bb 0f add r27, r27 - 10a4: 40 f4 brcc .+16 ; 0x10b6 <__fp_round+0x20> - 10a6: bf 2b or r27, r31 - 10a8: 11 f4 brne .+4 ; 0x10ae <__fp_round+0x18> - 10aa: 60 ff sbrs r22, 0 - 10ac: 04 c0 rjmp .+8 ; 0x10b6 <__fp_round+0x20> - 10ae: 6f 5f subi r22, 0xFF ; 255 - 10b0: 7f 4f sbci r23, 0xFF ; 255 - 10b2: 8f 4f sbci r24, 0xFF ; 255 - 10b4: 9f 4f sbci r25, 0xFF ; 255 - 10b6: 08 95 ret +000010b0 <__fp_round>: + 10b0: 09 2e mov r0, r25 + 10b2: 03 94 inc r0 + 10b4: 00 0c add r0, r0 + 10b6: 11 f4 brne .+4 ; 0x10bc <__fp_round+0xc> + 10b8: 88 23 and r24, r24 + 10ba: 52 f0 brmi .+20 ; 0x10d0 <__fp_round+0x20> + 10bc: bb 0f add r27, r27 + 10be: 40 f4 brcc .+16 ; 0x10d0 <__fp_round+0x20> + 10c0: bf 2b or r27, r31 + 10c2: 11 f4 brne .+4 ; 0x10c8 <__fp_round+0x18> + 10c4: 60 ff sbrs r22, 0 + 10c6: 04 c0 rjmp .+8 ; 0x10d0 <__fp_round+0x20> + 10c8: 6f 5f subi r22, 0xFF ; 255 + 10ca: 7f 4f sbci r23, 0xFF ; 255 + 10cc: 8f 4f sbci r24, 0xFF ; 255 + 10ce: 9f 4f sbci r25, 0xFF ; 255 + 10d0: 08 95 ret -000010b8 <__fp_split3>: - 10b8: 57 fd sbrc r21, 7 - 10ba: 90 58 subi r25, 0x80 ; 128 - 10bc: 44 0f add r20, r20 - 10be: 55 1f adc r21, r21 - 10c0: 59 f0 breq .+22 ; 0x10d8 <__fp_splitA+0x10> - 10c2: 5f 3f cpi r21, 0xFF ; 255 - 10c4: 71 f0 breq .+28 ; 0x10e2 <__fp_splitA+0x1a> - 10c6: 47 95 ror r20 +000010d2 <__fp_split3>: + 10d2: 57 fd sbrc r21, 7 + 10d4: 90 58 subi r25, 0x80 ; 128 + 10d6: 44 0f add r20, r20 + 10d8: 55 1f adc r21, r21 + 10da: 59 f0 breq .+22 ; 0x10f2 <__fp_splitA+0x10> + 10dc: 5f 3f cpi r21, 0xFF ; 255 + 10de: 71 f0 breq .+28 ; 0x10fc <__fp_splitA+0x1a> + 10e0: 47 95 ror r20 -000010c8 <__fp_splitA>: - 10c8: 88 0f add r24, r24 - 10ca: 97 fb bst r25, 7 - 10cc: 99 1f adc r25, r25 - 10ce: 61 f0 breq .+24 ; 0x10e8 <__fp_splitA+0x20> - 10d0: 9f 3f cpi r25, 0xFF ; 255 - 10d2: 79 f0 breq .+30 ; 0x10f2 <__fp_splitA+0x2a> - 10d4: 87 95 ror r24 - 10d6: 08 95 ret - 10d8: 12 16 cp r1, r18 - 10da: 13 06 cpc r1, r19 - 10dc: 14 06 cpc r1, r20 - 10de: 55 1f adc r21, r21 - 10e0: f2 cf rjmp .-28 ; 0x10c6 <__fp_split3+0xe> - 10e2: 46 95 lsr r20 - 10e4: f1 df rcall .-30 ; 0x10c8 <__fp_splitA> - 10e6: 08 c0 rjmp .+16 ; 0x10f8 <__fp_splitA+0x30> - 10e8: 16 16 cp r1, r22 - 10ea: 17 06 cpc r1, r23 - 10ec: 18 06 cpc r1, r24 - 10ee: 99 1f adc r25, r25 - 10f0: f1 cf rjmp .-30 ; 0x10d4 <__fp_splitA+0xc> - 10f2: 86 95 lsr r24 - 10f4: 71 05 cpc r23, r1 - 10f6: 61 05 cpc r22, r1 - 10f8: 08 94 sec - 10fa: 08 95 ret +000010e2 <__fp_splitA>: + 10e2: 88 0f add r24, r24 + 10e4: 97 fb bst r25, 7 + 10e6: 99 1f adc r25, r25 + 10e8: 61 f0 breq .+24 ; 0x1102 <__fp_splitA+0x20> + 10ea: 9f 3f cpi r25, 0xFF ; 255 + 10ec: 79 f0 breq .+30 ; 0x110c <__fp_splitA+0x2a> + 10ee: 87 95 ror r24 + 10f0: 08 95 ret + 10f2: 12 16 cp r1, r18 + 10f4: 13 06 cpc r1, r19 + 10f6: 14 06 cpc r1, r20 + 10f8: 55 1f adc r21, r21 + 10fa: f2 cf rjmp .-28 ; 0x10e0 <__fp_split3+0xe> + 10fc: 46 95 lsr r20 + 10fe: f1 df rcall .-30 ; 0x10e2 <__fp_splitA> + 1100: 08 c0 rjmp .+16 ; 0x1112 <__fp_splitA+0x30> + 1102: 16 16 cp r1, r22 + 1104: 17 06 cpc r1, r23 + 1106: 18 06 cpc r1, r24 + 1108: 99 1f adc r25, r25 + 110a: f1 cf rjmp .-30 ; 0x10ee <__fp_splitA+0xc> + 110c: 86 95 lsr r24 + 110e: 71 05 cpc r23, r1 + 1110: 61 05 cpc r22, r1 + 1112: 08 94 sec + 1114: 08 95 ret -000010fc <__fp_zero>: - 10fc: e8 94 clt +00001116 <__fp_zero>: + 1116: e8 94 clt -000010fe <__fp_szero>: - 10fe: bb 27 eor r27, r27 - 1100: 66 27 eor r22, r22 - 1102: 77 27 eor r23, r23 - 1104: cb 01 movw r24, r22 - 1106: 97 f9 bld r25, 7 - 1108: 08 95 ret +00001118 <__fp_szero>: + 1118: bb 27 eor r27, r27 + 111a: 66 27 eor r22, r22 + 111c: 77 27 eor r23, r23 + 111e: cb 01 movw r24, r22 + 1120: 97 f9 bld r25, 7 + 1122: 08 95 ret -0000110a <__gesf2>: - 110a: 8a df rcall .-236 ; 0x1020 <__fp_cmp> - 110c: 08 f4 brcc .+2 ; 0x1110 <__gesf2+0x6> - 110e: 8f ef ldi r24, 0xFF ; 255 - 1110: 08 95 ret +00001124 <__gesf2>: + 1124: 8a df rcall .-236 ; 0x103a <__fp_cmp> + 1126: 08 f4 brcc .+2 ; 0x112a <__gesf2+0x6> + 1128: 8f ef ldi r24, 0xFF ; 255 + 112a: 08 95 ret -00001112 <__divmodhi4>: - 1112: 97 fb bst r25, 7 - 1114: 07 2e mov r0, r23 - 1116: 16 f4 brtc .+4 ; 0x111c <__divmodhi4+0xa> - 1118: 00 94 com r0 - 111a: 07 d0 rcall .+14 ; 0x112a <__divmodhi4_neg1> - 111c: 77 fd sbrc r23, 7 - 111e: 09 d0 rcall .+18 ; 0x1132 <__divmodhi4_neg2> - 1120: 0e 94 a9 08 call 0x1152 ; 0x1152 <__udivmodhi4> - 1124: 07 fc sbrc r0, 7 - 1126: 05 d0 rcall .+10 ; 0x1132 <__divmodhi4_neg2> - 1128: 3e f4 brtc .+14 ; 0x1138 <__divmodhi4_exit> +0000112c <__divmodhi4>: + 112c: 97 fb bst r25, 7 + 112e: 07 2e mov r0, r23 + 1130: 16 f4 brtc .+4 ; 0x1136 <__divmodhi4+0xa> + 1132: 00 94 com r0 + 1134: 07 d0 rcall .+14 ; 0x1144 <__divmodhi4_neg1> + 1136: 77 fd sbrc r23, 7 + 1138: 09 d0 rcall .+18 ; 0x114c <__divmodhi4_neg2> + 113a: 0e 94 b6 08 call 0x116c ; 0x116c <__udivmodhi4> + 113e: 07 fc sbrc r0, 7 + 1140: 05 d0 rcall .+10 ; 0x114c <__divmodhi4_neg2> + 1142: 3e f4 brtc .+14 ; 0x1152 <__divmodhi4_exit> -0000112a <__divmodhi4_neg1>: - 112a: 90 95 com r25 - 112c: 81 95 neg r24 - 112e: 9f 4f sbci r25, 0xFF ; 255 - 1130: 08 95 ret +00001144 <__divmodhi4_neg1>: + 1144: 90 95 com r25 + 1146: 81 95 neg r24 + 1148: 9f 4f sbci r25, 0xFF ; 255 + 114a: 08 95 ret -00001132 <__divmodhi4_neg2>: - 1132: 70 95 com r23 - 1134: 61 95 neg r22 - 1136: 7f 4f sbci r23, 0xFF ; 255 +0000114c <__divmodhi4_neg2>: + 114c: 70 95 com r23 + 114e: 61 95 neg r22 + 1150: 7f 4f sbci r23, 0xFF ; 255 -00001138 <__divmodhi4_exit>: - 1138: 08 95 ret +00001152 <__divmodhi4_exit>: + 1152: 08 95 ret -0000113a <__umulhisi3>: - 113a: a2 9f mul r26, r18 - 113c: b0 01 movw r22, r0 - 113e: b3 9f mul r27, r19 - 1140: c0 01 movw r24, r0 - 1142: a3 9f mul r26, r19 - 1144: 01 d0 rcall .+2 ; 0x1148 <__umulhisi3+0xe> - 1146: b2 9f mul r27, r18 - 1148: 70 0d add r23, r0 - 114a: 81 1d adc r24, r1 - 114c: 11 24 eor r1, r1 - 114e: 91 1d adc r25, r1 - 1150: 08 95 ret +00001154 <__umulhisi3>: + 1154: a2 9f mul r26, r18 + 1156: b0 01 movw r22, r0 + 1158: b3 9f mul r27, r19 + 115a: c0 01 movw r24, r0 + 115c: a3 9f mul r26, r19 + 115e: 01 d0 rcall .+2 ; 0x1162 <__umulhisi3+0xe> + 1160: b2 9f mul r27, r18 + 1162: 70 0d add r23, r0 + 1164: 81 1d adc r24, r1 + 1166: 11 24 eor r1, r1 + 1168: 91 1d adc r25, r1 + 116a: 08 95 ret -00001152 <__udivmodhi4>: - 1152: aa 1b sub r26, r26 - 1154: bb 1b sub r27, r27 - 1156: 51 e1 ldi r21, 0x11 ; 17 - 1158: 07 c0 rjmp .+14 ; 0x1168 <__udivmodhi4_ep> +0000116c <__udivmodhi4>: + 116c: aa 1b sub r26, r26 + 116e: bb 1b sub r27, r27 + 1170: 51 e1 ldi r21, 0x11 ; 17 + 1172: 07 c0 rjmp .+14 ; 0x1182 <__udivmodhi4_ep> -0000115a <__udivmodhi4_loop>: - 115a: aa 1f adc r26, r26 - 115c: bb 1f adc r27, r27 - 115e: a6 17 cp r26, r22 - 1160: b7 07 cpc r27, r23 - 1162: 10 f0 brcs .+4 ; 0x1168 <__udivmodhi4_ep> - 1164: a6 1b sub r26, r22 - 1166: b7 0b sbc r27, r23 +00001174 <__udivmodhi4_loop>: + 1174: aa 1f adc r26, r26 + 1176: bb 1f adc r27, r27 + 1178: a6 17 cp r26, r22 + 117a: b7 07 cpc r27, r23 + 117c: 10 f0 brcs .+4 ; 0x1182 <__udivmodhi4_ep> + 117e: a6 1b sub r26, r22 + 1180: b7 0b sbc r27, r23 -00001168 <__udivmodhi4_ep>: - 1168: 88 1f adc r24, r24 - 116a: 99 1f adc r25, r25 - 116c: 5a 95 dec r21 - 116e: a9 f7 brne .-22 ; 0x115a <__udivmodhi4_loop> - 1170: 80 95 com r24 - 1172: 90 95 com r25 - 1174: bc 01 movw r22, r24 - 1176: cd 01 movw r24, r26 - 1178: 08 95 ret +00001182 <__udivmodhi4_ep>: + 1182: 88 1f adc r24, r24 + 1184: 99 1f adc r25, r25 + 1186: 5a 95 dec r21 + 1188: a9 f7 brne .-22 ; 0x1174 <__udivmodhi4_loop> + 118a: 80 95 com r24 + 118c: 90 95 com r25 + 118e: bc 01 movw r22, r24 + 1190: cd 01 movw r24, r26 + 1192: 08 95 ret -0000117a <__tablejump2__>: - 117a: ee 0f add r30, r30 - 117c: ff 1f adc r31, r31 +00001194 <__tablejump2__>: + 1194: ee 0f add r30, r30 + 1196: ff 1f adc r31, r31 -0000117e <__tablejump__>: - 117e: 05 90 lpm r0, Z+ - 1180: f4 91 lpm r31, Z - 1182: e0 2d mov r30, r0 - 1184: 09 94 ijmp +00001198 <__tablejump__>: + 1198: 05 90 lpm r0, Z+ + 119a: f4 91 lpm r31, Z + 119c: e0 2d mov r30, r0 + 119e: 09 94 ijmp -00001186 <_exit>: - 1186: f8 94 cli +000011a0 <_exit>: + 11a0: f8 94 cli -00001188 <__stop_program>: - 1188: ff cf rjmp .-2 ; 0x1188 <__stop_program> +000011a2 <__stop_program>: + 11a2: ff cf rjmp .-2 ; 0x11a2 <__stop_program> diff --git a/Door/Debug/Door.map b/Door/Debug/Door.map index f6a1f49..55dd186 100644 --- a/Door/Debug/Door.map +++ b/Door/Debug/Door.map @@ -9,7 +9,7 @@ c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu- c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) Door.o (__fixunssfsi) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) - Door.o (__floatsisf) + Door.o (__floatunsisf) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(cmpsf2.o) (__fp_cmp) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_inf.o) @@ -296,7 +296,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0x118a +.text 0x00000000 0x11a4 *(.vectors) .vectors 0x00000000 0x68 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm168a.o 0x00000000 __vector_default @@ -382,100 +382,100 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x000000be . = ALIGN (0x2) *(.text.*) .text.__vector_13 - 0x000000be 0x468 Door.o + 0x000000be 0x482 Door.o 0x000000be __vector_13 .text._ZN4UartILm9600EEC2Ev - 0x00000526 0x5e Door.o - 0x00000526 _ZN4UartILm9600EEC1Ev - 0x00000526 _ZN4UartILm9600EEC2Ev + 0x00000540 0x5e Door.o + 0x00000540 _ZN4UartILm9600EEC1Ev + 0x00000540 _ZN4UartILm9600EEC2Ev .text._ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh - 0x00000584 0x2e Door.o - 0x00000584 _ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh + 0x0000059e 0x2e Door.o + 0x0000059e _ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh .text._ZN4UartILm9600EE7printlnEPKc - 0x000005b2 0x4c Door.o - 0x000005b2 _ZN4UartILm9600EE7printlnEPKc - .text.main 0x000005fe 0x608 Door.o - 0x000005fe main + 0x000005cc 0x4c Door.o + 0x000005cc _ZN4UartILm9600EE7printlnEPKc + .text.main 0x00000618 0x608 Door.o + 0x00000618 main .text._ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv - 0x00000c06 0x5e Door.o - 0x00000c06 _ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv + 0x00000c20 0x5e Door.o + 0x00000c20 _ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv .text._ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv - 0x00000c64 0x5c Door.o - 0x00000c64 _ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv + 0x00000c7e 0x5c Door.o + 0x00000c7e _ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv .text.__vector_1 - 0x00000cc0 0x170 Door.o - 0x00000cc0 __vector_1 + 0x00000cda 0x170 Door.o + 0x00000cda __vector_1 .text._GLOBAL__sub_I_Serial - 0x00000e30 0x4c Door.o + 0x00000e4a 0x4c Door.o .text.avr-libc.fplib - 0x00000e7c 0xa c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3.o) - 0x00000e7c __subsf3 - 0x00000e7e __addsf3 + 0x00000e96 0xa c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3.o) + 0x00000e96 __subsf3 + 0x00000e98 __addsf3 .text.avr-libc.fplib - 0x00000e86 0xc0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) - 0x00000ea0 __addsf3x + 0x00000ea0 0xc0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) + 0x00000eba __addsf3x .text.avr-libc.fplib - 0x00000f46 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(cmpsf2.o) - 0x00000f46 __nesf2 - 0x00000f46 __eqsf2 - 0x00000f46 __cmpsf2 - 0x00000f46 __ltsf2 - 0x00000f46 __lesf2 + 0x00000f60 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(cmpsf2.o) + 0x00000f60 __nesf2 + 0x00000f60 __eqsf2 + 0x00000f60 __cmpsf2 + 0x00000f60 __ltsf2 + 0x00000f60 __lesf2 .text.avr-libc.fplib - 0x00000f4e 0x58 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) - 0x00000f4e __fixunssfsi + 0x00000f68 0x58 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) + 0x00000f68 __fixunssfsi .text.avr-libc.fplib - 0x00000fa6 0x7a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) - 0x00000fa6 __floatunsisf - 0x00000faa __floatsisf + 0x00000fc0 0x7a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) + 0x00000fc0 __floatunsisf + 0x00000fc4 __floatsisf .text.avr-libc.fplib - 0x00001020 0x48 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) - 0x00001020 __fp_cmp + 0x0000103a 0x48 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) + 0x0000103a __fp_cmp .text.avr-libc.fplib - 0x00001068 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_inf.o) - 0x00001068 __fp_inf + 0x00001082 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_inf.o) + 0x00001082 __fp_inf .text.avr-libc.fplib - 0x00001074 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) - 0x00001074 __fp_nan + 0x0000108e 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) + 0x0000108e __fp_nan .text.avr-libc.fplib - 0x0000107a 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscA.o) - 0x0000107a __fp_pscA + 0x00001094 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscA.o) + 0x00001094 __fp_pscA .text.avr-libc.fplib - 0x00001088 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscB.o) - 0x00001088 __fp_pscB + 0x000010a2 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscB.o) + 0x000010a2 __fp_pscB .text.avr-libc.fplib - 0x00001096 0x22 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_round.o) - 0x00001096 __fp_round + 0x000010b0 0x22 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_round.o) + 0x000010b0 __fp_round .text.avr-libc.fplib - 0x000010b8 0x44 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_split3.o) - 0x000010b8 __fp_split3 - 0x000010c8 __fp_splitA + 0x000010d2 0x44 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_split3.o) + 0x000010d2 __fp_split3 + 0x000010e2 __fp_splitA .text.avr-libc.fplib - 0x000010fc 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) - 0x000010fc __fp_zero - 0x000010fe __fp_szero + 0x00001116 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) + 0x00001116 __fp_zero + 0x00001118 __fp_szero .text.avr-libc.fplib - 0x0000110a 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(gesf2.o) - 0x0000110a __gesf2 - 0x0000110a __gtsf2 + 0x00001124 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(gesf2.o) + 0x00001124 __gesf2 + 0x00001124 __gtsf2 .text.libgcc.div - 0x00001112 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) - 0x00001112 _div - 0x00001112 __divmodhi4 + 0x0000112c 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) + 0x0000112c _div + 0x0000112c __divmodhi4 .text.libgcc.mul - 0x0000113a 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) - 0x0000113a __umulhisi3 + 0x00001154 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) + 0x00001154 __umulhisi3 .text.libgcc.div - 0x00001152 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) - 0x00001152 __udivmodhi4 - .text.libgcc 0x0000117a 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) - 0x0000117a __tablejump2__ - 0x0000117e __tablejump__ - 0x00001186 . = ALIGN (0x2) + 0x0000116c 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + 0x0000116c __udivmodhi4 + .text.libgcc 0x00001194 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) + 0x00001194 __tablejump2__ + 0x00001198 __tablejump__ + 0x000011a0 . = ALIGN (0x2) *(.fini9) - .fini9 0x00001186 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) - 0x00001186 _exit - 0x00001186 exit + .fini9 0x000011a0 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) + 0x000011a0 _exit + 0x000011a0 exit *(.fini9) *(.fini8) *(.fini8) @@ -494,11 +494,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00001186 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) + .fini0 0x000011a0 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) *(.fini0) - 0x0000118a _etext = . + 0x000011a4 _etext = . -.data 0x00800100 0x84 load address 0x0000118a +.data 0x00800100 0x84 load address 0x000011a4 0x00800100 PROVIDE (__data_start, .) *(.data) .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm168a.o @@ -536,27 +536,27 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x00800184 _edata = . 0x00800184 PROVIDE (__data_end, .) -.bss 0x00800184 0x26 +.bss 0x00800184 0x32 0x00800184 PROVIDE (__bss_start, .) *(.bss) - .bss 0x00800184 0x26 Door.o + .bss 0x00800184 0x32 Door.o 0x00800184 ir 0x00800186 comp 0x00800187 led 0x00800188 stripe - 0x008001a9 Serial + 0x008001b5 Serial *(.bss*) *(COMMON) - 0x008001aa PROVIDE (__bss_end, .) - 0x0000118a __data_load_start = LOADADDR (.data) - 0x0000120e __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x008001b6 PROVIDE (__bss_end, .) + 0x000011a4 __data_load_start = LOADADDR (.data) + 0x00001228 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x008001aa 0x0 - 0x008001aa PROVIDE (__noinit_start, .) +.noinit 0x008001b6 0x0 + 0x008001b6 PROVIDE (__noinit_start, .) *(.noinit*) - 0x008001aa PROVIDE (__noinit_end, .) - 0x008001aa _end = . - 0x008001aa PROVIDE (__heap_start, .) + 0x008001b6 PROVIDE (__noinit_end, .) + 0x008001b6 _end = . + 0x008001b6 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -650,31 +650,31 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x3546 +.debug_info 0x00000000 0x384a *(.debug_info) - .debug_info 0x00000000 0x3546 Door.o + .debug_info 0x00000000 0x384a Door.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x4bb +.debug_abbrev 0x00000000 0x4fd *(.debug_abbrev) - .debug_abbrev 0x00000000 0x4bb Door.o + .debug_abbrev 0x00000000 0x4fd Door.o -.debug_line 0x00000000 0x5d5 +.debug_line 0x00000000 0x5f9 *(.debug_line) - .debug_line 0x00000000 0x5d5 Door.o + .debug_line 0x00000000 0x5f9 Door.o -.debug_frame 0x00000000 0x190 +.debug_frame 0x00000000 0x1b8 *(.debug_frame) - .debug_frame 0x00000000 0x190 Door.o + .debug_frame 0x00000000 0x1b8 Door.o -.debug_str 0x00000000 0x13b1 +.debug_str 0x00000000 0x1435 *(.debug_str) - .debug_str 0x00000000 0x13b1 Door.o - 0x1419 (size before relaxing) + .debug_str 0x00000000 0x1435 Door.o + 0x149d (size before relaxing) -.debug_loc 0x00000000 0x14d0 +.debug_loc 0x00000000 0x17a5 *(.debug_loc) - .debug_loc 0x00000000 0x14d0 Door.o + .debug_loc 0x00000000 0x17a5 Door.o .debug_macinfo *(.debug_macinfo) @@ -682,9 +682,9 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x2d8 +.debug_ranges 0x00000000 0x340 *(.debug_ranges) - .debug_ranges 0x00000000 0x2d8 Door.o + .debug_ranges 0x00000000 0x340 Door.o .debug_macro *(.debug_macro) diff --git a/Door/Debug/Door.srec b/Door/Debug/Door.srec index 1b82835..a9f6e14 100644 --- a/Door/Debug/Door.srec +++ b/Door/Debug/Door.srec @@ -1,292 +1,294 @@ S00C0000446F6F722E7372656384 -S11300000C9435000C9460060C945D000C945D0017 +S11300000C9435000C946D060C945D000C945D000A S11300100C945D000C945D000C945D000C945D00E8 S11300200C945D000C945D000C945D000C945D00D8 S11300300C945D000C945F000C945D000C945D00C6 S11300400C945D000C945D000C945D000C945D00B8 S11300500C945D000C945D000C945D000C945D00A8 -S11300600C945D000C945D00180711241FBECFEFA3 -S1130070D4E0DEBFCDBF11E0A0E0B1E0EAE8F1E1F9 +S11300600C945D000C945D00250711241FBECFEF96 +S1130070D4E0DEBFCDBF11E0A0E0B1E0E4EAF1E1FD S113008002C005900D92A438B107D9F721E0A4E885 -S1130090B1E001C01D92AA3AB207E1F710E0CAE646 -S11300A0D0E004C02297FE010E94BF08C836D107E1 -S11300B0C9F70E94FF020C94C3080C9400001F921D -S11300C00F920FB60F9211248F929F92AF92BF920C -S11300D0CF92DF92EF92FF922F933F934F935F93D0 -S11300E06F937F938F939F93AF93BF93CF93DF933C -S11300F0EF93FF93C0918801CC2309F4F9C1C09018 -S11301009D01D0909E01E0909F01F090A00120E01D -S113011030E0A901C701B6010E94A30781116BC099 -S113012020E030E0A9016091A1017091A2018091C9 -S1130130A3019091A4010E94A30781115CC020E057 -S113014030E0A9016091A5017091A6018091A701F9 -S11301509091A8010E94A30781114DC0D0E028B559 -S1130160C957DE4FE888F12C898190E0821B910900 -S11301706E2D7F2D0E948908882777FD8095982F02 -S11301800E94D50760939D0170939E0180939F0107 -S11301909093A0012091B4008E8190E0821B91097C -S11301A06E2D7F2D0E948908882777FD8095982FD2 -S11301B00E94D5076093A1017093A2018093A301CB -S11301C09093A4012091B3008B8590E0821B910948 -S11301D06E2D7F2D0E948908882777FD8095982FA2 -S11301E00E94D5076093A5017093A6018093A7018F -S11301F09093A8017DC120E030E0A901C701B601B8 -S11302000E94850818160CF568B570E080E090E04F -S11302100E94D5079B01AC01C701B6010E943F07AC -S11302204B015C01EC2FF0E0E857FE4F608170E079 -S113023080E090E00E94D5079B01AC01C501B401A8 -S11302400E94A30718160CF0FEC020E030E0A901BC -S1130250C701B6010E94A30788230CF0E6C068B565 -S113026070E080E090E00E94D5079B01AC01C701DB -S1130270B6010E943F074B015C01EC2FF0E0E85708 -S1130280FE4F608170E080E090E00E94D5079B0102 -S1130290AC01C501B4010E94850888230CF0D3C0C9 -S11302A0C4C0C090A101D090A201E090A301F0903D -S11302B0A40120E030E0A901C701B6010E9485082D -S11302C018161CF56091B40070E080E090E00E9484 -S11302D0D5079B01AC01C701B6010E943F074B0142 -S11302E05C01E0918801F0E0E857FE4F658170E021 -S11302F080E090E00E94D5079B01AC01C501B401E8 -S11303000E94A30718160CF0AEC020E030E0A9014B -S1130310C701B6010E94A30788230CF0B6C0609100 -S1130320B40070E080E090E00E94D5079B01AC012E -S1130330C701B6010E943F074B015C01E0918801AF -S1130340F0E0E857FE4F658170E080E090E00E94A5 -S1130350D5079B01AC01C501B4010E94850888231F -S11303600CF081C092C0C090A501D090A601E0908D -S1130370A701F090A80120E030E0A901C701B6016F -S11303800E94850818161CF56091B30070E080E0A7 -S113039090E00E94D5079B01AC01C701B6010E9401 -S11303A03F074B015C01E0918801F0E0E857FE4F04 -S11303B0628570E080E090E00E94D5079B01AC016B -S11303C0C501B4010E94A30718160CF06FC020E009 -S11303D030E0A901C701B6010E94A30788230CF0ED -S11303E077C06091B30070E080E090E00E94D50790 -S11303F09B01AC01C701B6010E943F074B015C01A0 -S1130400E0918801F0E0E857FE4F628570E080E0FB -S113041090E00E94D5079B01AC01C501B4010E9484 -S1130420850888230CF042C053C0D0E0C857DE4F83 -S1130430888188BD10929D0110929E0110929F01A7 -S11304401092A0012ECF68B570E080E090E00E9489 -S1130450D5079B01AC01C701B6010E943F070E946A -S1130460A70768BD1ECFC4EBD0E0688170E080E0D0 -S113047090E00E94D5079B01AC01C701B6010E9420 -S11304803F070E94A70768836ECFE0918801F0E0E0 -S1130490E857FE4F85818093B4001092A101109219 -S11304A0A2011092A3011092A4015DCFC3EBD0E08E -S11304B0688170E080E090E00E94D5079B01AC0168 -S11304C0C701B6010E943F070E94A707688310C0B6 -S11304D0E0918801F0E0E857FE4F82858093B300F5 -S11304E01092A5011092A6011092A7011092A801E2 -S11304F0FF91EF91DF91CF91BF91AF919F918F9138 -S11305007F916F915F914F913F912F91FF90EF9069 -S1130510DF90CF90BF90AF909F908F900F900FBEC1 -S11305200F901F901895CF93DF93789481E8809370 -S1130530C4001092C00088E08093C10086E08093DC -S1130540C200A1E0B1E095E5E0ECF0E0C6ECD0E05B -S1130550808185FFFDCF98839D919111F9CFE0ECC7 -S1130560F0E0808185FFFDCF8DE08093C600E0EC54 -S1130570F0E0808185FFFDCF8AE08093C600DF91A3 -S1130580CF91089560FF04C08FEF8093B30002C041 -S11305901092B30061FF04C08FEF8093B40002C0D7 -S11305A01092B40062FF03C08FEF88BD089518BC99 -S11305B00895CF93DF93FB019081992369F0DB01C8 -S11305C01196E0ECF0E0C6ECD0E0808185FFFDCF31 -S11305D098839D919111F9CFE0ECF0E0808185FF43 -S11305E0FDCF8DE08093C600E0ECF0E0808185FFD4 -S11305F0FDCF8AE08093C600DF91CF910895CF9319 -S1130600DF9300D000D0CDB7DEB7789464E088E8FB -S113061091E00E94C2026BE071E089EA91E00E94DD -S1130620D9022FE73AE186E0215030408040E1F7DB -S113063000C0000062E088E891E00E94C20260E12C -S113064071E089EA91E00E94D9029FE7AAE1B6E04D -S11306509150A040B040E1F700C0000061E088E89C -S113066091E00E94C20266E171E089EA91E00E9491 -S1130670D9022FE73AE186E0215030408040E1F78B -S113068000C0000067E088E891E00E94C2026CE1CB -S113069071E089EA91E00E94D9029FE7AAE1B6E0FD -S11306A09150A040B040E1F700C00000299A60E0FA -S11306B088E891E00E94C202212C45E851E0BB2465 -S11306C0BA94AB2C0F2EF9E8EF2EF1E0FF2EF02DAB -S11306D00EE811E00F2EF3E98F2EF1E09F2EF02D9E -S11306E00F2EF8E96F2EF1E07F2EF02D0F2EFAE099 -S11306F03F2EF02D0F2EF8E84F2EF1E05F2EF02D57 -S1130700CC24C394E0ECF0E00F2EFDE0DF2EF02DBE -S1130710DA018C91AC928C3009F4FCC038F5853048 -S113072009F4B3C090F4823009F48CC038F48823FF -S113073009F446C0813009F056C163C0833009F41E -S113074090C0843009F04FC195C0883009F4BEC010 -S113075038F4863009F4A4C0873009F044C1ABC032 -S11307608A3009F4CBC008F0E5C1BCC0823109F479 -S11307700DC190F48F3009F4DDC138F48D3009F4E3 -S1130780D5C08E3009F02FC1DDC0803109F4E6C038 -S1130790813109F028C1EEC0853109F40EC138F465 -S11307A0833109F4C7C1843109F01DC1FBC087310D -S11307B009F4C0C108F40CC18F3F09F014C1BAC1D7 -S11307C088B58B3F20F488B58B5F88BD01C018BC09 -S11307D0A4EBB0E08C918B3F20F48C918B5F8C93D5 -S11307E003C0A4EBB0E01C92A3EBB0E08C918B3F70 -S11307F020F48C918B5F8C939DC1A3EBB0E01C9291 -S113080099C188B5853020F088B5855088BD01C070 -S113081018BCA4EBB0E08C91853020F08C9185500D -S11308208C9303C0A4EBB0E01C92A3EBB0E08C91DA -S1130830853020F08C9185508C937CC1A3EBB0E083 -S11308401C9278C184B58F7D84BDA0EBB0E08C91FF -S11308508F758C935D98559A5B98539A2B98239A2D -S113086069C184B5806284BDA0EBB0E08C91806ADC -S11308708C9360C1D701BC92D8011C92D4011C9204 -S1130880D3013C92D201CC9255C1D7011C92D8011C -S1130890BC92D4011C92D3013C92D201CC924AC1A5 -S11308A0D7011C92D8011C92D401BC92D3013C9272 -S11308B0D201CC923FC1D701BC92D801BC92D401E1 -S11308C0BC92D3013C92D201CC9234C1D701BC92E8 -S11308D020E4D8012C93D4011C92D3013C92D20180 -S11308E0CC9228C1D7011C92D801BC9220E4D40137 -S11308F02C93D3013C92D201CC921CC120E4D701A9 -S11309002C93D8011C92D401BC92D3013C92D20105 -S1130910CC9210C1D701BC9220E8D8012C93D40109 -S11309201C92D3013C92D201CC9204C1D7011C92F7 -S1130930D801BC9220E8D4012C93D3013C92D2017B -S1130940CC92F8C020E8D7012C93D8011C92D40192 -S1130950BC92D3013C92D201CC92ECC0D701BC92A0 -S113096020ECD8012C93D4011C92D3013C92D201E7 -S1130970CC92E0C0D7011C92D801BC9220ECD401E7 -S11309802C93D3013C92D201CC92D4C020ECD70159 -S11309902C93D8011C92D401BC92D3013C92D20175 -S11309A0CC92C8C0D701BC92D801BC92D4011C928D -S11309B0D3013C92D201CC92BDC0D7011C92D80184 -S11309C0BC92D401BC92D3013C92D201CC92B2C06D -S11309D0D701BC92D8011C92D401BC92D3013C92A1 -S11309E0D201CC92A7C0282F30E03A83298380819A -S11309F085FFFDCF80E3A6ECB0E08C9360E070E06F -S1130A00CB019695879596958795969587959C01A4 -S1130A10220F331F880F991F880F991F880F991F62 -S1130A20820F931F681B790B605D808185FFFDCF6A -S1130A30A6ECB0E06C9329813A81369527953695DA -S1130A402795ABE7B4E10E949D0896958795805D54 -S1130A50908195FFFDCFA6ECB0E08C9329813A817B -S1130A60ADECBCEC0E949D0896958795969587956C -S1130A70969587959C838B839C010E949D089695EF -S1130A80879596958795969587959C01220F331F98 -S1130A90880F991F880F991F880F991F820F931F22 -S1130AA02B813C81281B390BC901805D908195FF06 -S1130AB0FDCFA6ECB0E08C9329813A81ADECBCEC7F -S1130AC00E949D0896958795969587959695879506 -S1130AD09C01220F331F880F991F880F991F880FBD -S1130AE0991F820F931F29813A81281B390BC90151 -S1130AF0805D908195FFFDCFA6ECB0E08C93A3E6DA -S1130B00B1E090E29D01808185FFFDCFA6ECB0E0CD -S1130B109C93D9019D919D019111F5CF808185FF11 -S1130B20FDCFA6ECB0E0DC92808185FFFDCFA6EC82 -S1130B30B0E03C9200B605FE2AC0211052C0D70195 -S1130B40BC92D8011C92D4011C9224E6D3012C93AC -S1130B50D201CC92ADE6B1E094E59D01808185FFA0 -S1130B60FDCFA6ECB0E09C93D9019D919D0191111C -S1130B70F5CF808185FFFDCFA6ECB0E0DC928081CB -S1130B8085FFFDCFA6ECB0E03C922C2C2AC0B1E04E -S1130B902B1227C0A7E7B1E094E59D01808185FF72 -S1130BA0FDCFA6ECB0E09C93D9019D919D019111DC -S1130BB0F5CF808185FFFDCFA6ECB0E0DC9280818B -S1130BC085FFFDCFA6ECB0E03C92D7011C92D80182 -S1130BD0BC92D4011C9222E3D3012C93D201CC9277 -S1130BE0212C87E893E10197F1F700C000002998D0 -S1130BF09FEDAAE0B6E09150A040B040E1F700C0FC -S1130C000000299A85CD559A539A239AFC011082A3 -S1130C1081E084BD94E095BD16BC1092800092E002 -S1130C209093810010928500109284001092B60077 -S1130C30E0EBF0E0808395E09093B1001092B20075 -S1130C4010926E0080936F001092700084B58062E1 -S1130C5084BD8081806A808318BC1092B400109295 -S1130C60B300089520E030E080E061E070E04A9B4A -S1130C70FECFEFE9FFE03197F1F700C000004A9B97 -S1130C8008C0AB01022E02C0440F551F0A94E2F7BC -S1130C90842B4A990FC008C04A9B06C0F5E8FA9510 -S1130CA0F1F700009150C1F72F5F3F4F2830310515 -S1130CB0F1F6089545E84A95F1F7000091E3ECCF89 -S1130CC01F920F920FB60F9211242F933F934F93BD -S1130CD05F936F937F938F939F93AF93BF93CF93C0 -S1130CE0EF93FF93289A4A9979C08FE19EE4019784 -S1130CF0F1F700C000004A9971C04A9BFECF4A999F -S1130D00FECF80E090E060E041E050E04A9BFECFFF -S1130D10EFE9FFE03197F1F700C000004A9B08C0FB -S1130D209A01082E02C0220F331F0A94E2F7622BA5 -S1130D304A9966C008C04A9B06C0F5E8FA95F1F7DF -S1130D4000002150C1F7019688309105F9F6611130 -S1130D5039C080E090E041E050E04A9BFECFEFE9EB -S1130D60FFE03197F1F700C000004A9B08C09A01E8 -S1130D70082E02C0220F331F0A94E2F7622B4A990D -S1130D8039C008C04A9B06C0F5E8FA95F1F700009F -S1130D902150C1F7019688309105F9F66F3E91F420 -S1130DA084E891E00E943206C82F84E891E00E9412 -S1130DB03206282F30E02C0F311D2F3F310511F45E -S1130DC0CF3F51F42FE734E88EE12150304080408A -S1130DD0E1F700C000000BC0CE3F39F4E7E8F3E1CF -S1130DE03197F1F700C0000002C0C0938501289834 -S1130DF0E09A0CC0F5E8FA95F1F7000021E3C2CFC0 -S1130E0025E82A95F1F7000021E395CFFF91EF91B2 -S1130E10CF91BF91AF919F918F917F916F915F918E -S1130E204F913F912F910F900FBE0F901F901895E7 -S1130E3089EA91E00E94930288E891E00E94030607 -S1130E40209A219A2898299856985E9857985F98DE -S1130E5010BE10927B0083E080937F00209A219A39 -S1130E602898299852985A988FEF8093850182E0A8 -S1130E708093690081E08DBB1CBA08955058BB274C -S1130E80AA270ED008C1F9D030F0FED020F031F4FA -S1130E909F3F11F41EF4EEC00EF4E095E7FBE4C0AE -S1130EA0E92F0AD180F3BA176207730784079507FD -S1130EB018F071F49EF522C10EF4E0950B2EBA2FB2 -S1130EC0A02D0B01B90190010C01CA01A00111244C -S1130ED0FF27591B99F0593F50F4503E68F11A16F8 -S1130EE0F040A22F232F342F4427585FF3CF469589 -S1130EF037952795A795F0405395C9F77EF41F16AB -S1130F00BA0B620B730B840BBAF09150A1F0FF0F74 -S1130F10BB1F661F771F881FC2F70EC0BA0F621F60 -S1130F20731F841F48F4879577956795B795F79550 -S1130F309E3F08F0B3CF9395880F08F09927EE0FE2 -S1130F409795879508956CD008F481E00895BCD0F6 -S1130F5088F09F5790F0B92F9927B751A0F0D1F09E -S1130F60660F771F881F991F1AF0BA95C9F712C028 -S1130F70B13081F0C3D0B1E00895C0C0672F782F9D -S1130F808827B85F39F0B93FCCF386957795679594 -S1130F90B395D9F73EF490958095709561957F4F00 -S1130FA08F4F9F4F0895E89409C097FB3EF49095A6 -S1130FB08095709561957F4F8F4F9F4F9923A9F02E -S1130FC0F92F96E9BB279395F695879577956795BD -S1130FD0B795F111F8CFFAF4BB0F11F460FF1BC001 -S1130FE06F5F7F4F8F4F9F4F16C0882311F096E994 -S1130FF011C0772321F09EE8872F762F05C0662342 -S113100071F096E8862F70E060E02AF09A95660FFA -S1131010771F881FDAF7880F9695879597F90895B3 -S1131020990F0008550FAA0BE0E8FEEF16161706F5 -S1131030E807F907C0F012161306E407F50798F05D -S1131040621B730B840B950B39F40A2661F0232B76 -S1131050242B252B21F408950A2609F4A140A695F2 -S11310608FEF811D811D089597F99F6780E870E0D7 -S113107060E008959FEF80EC089500240A9416160A -S1131080170618060906089500240A941216130672 -S1131090140605060895092E0394000C11F4882300 -S11310A052F0BB0F40F4BF2B11F460FF04C06F5F1C -S11310B07F4F8F4F9F4F089557FD9058440F551FF2 -S11310C059F05F3F71F04795880F97FB991F61F0C6 -S11310D09F3F79F087950895121613061406551F3D -S11310E0F2CF4695F1DF08C0161617061806991FA9 -S11310F0F1CF86957105610508940895E894BB279E -S113110066277727CB0197F908958ADF08F48FEFD4 -S1131110089597FB072E16F4009407D077FD09D0A5 -S11311200E94A90807FC05D03EF4909581959F4F35 -S11311300895709561957F4F0895A29FB001B39F64 -S1131140C001A39F01D0B29F700D811D1124911D78 -S11311500895AA1BBB1B51E107C0AA1FBB1FA617FA -S1131160B70710F0A61BB70B881F991F5A95A9F74C -S113117080959095BC01CD010895EE0FFF1F059059 -S10D1180F491E02D0994F894FFCFD8 -S113118A5561727420646F6E652100526F74210078 -S113119A4772FC6E2100426C61752100576569DF54 -S11311AA2C20616C6C657320496E697469616C6981 -S11311BA7365727421204861626520466572746998 -S11311CA6720756E642064616D6974206162207A97 -S11311DA756D204E6F726D616C62657472696562B9 -S11311EA21002050726573736564210054FC7220D7 -S11311FA5A752E2E2E0054FC72204F6666656E2E8A -S107120A2E2E000080 +S1130090B1E001C01D92A63BB207E1F710E0CAE649 +S11300A0D0E004C02297FE010E94CC08C836D107D4 +S11300B0C9F70E940C030C94D0080C9400001F9202 +S11300C00F920FB60F9211242F923F924F925F928C +S11300D06F927F928F929F92AF92BF92CF92DF9254 +S11300E0EF92FF920F931F932F933F934F935F933E +S11300F06F937F938F939F93AF93BF93CF93DF932C +S1130100EF93FF93C0918801CC2309F4F6C120E05A +S113011030E0A90160919D0170919E0180919F0141 +S11301209091A0010E94B0078111F0C020E030E05E +S1130130A9016091A1017091A2018091A301909104 +S1130140A4010E94B0078111E4C020E030E0A901BD +S11301506091A5017091A6018091A7019091A801D9 +S11301600E94B007882329F088248394D4C0B394D0 +S113017011C0BB24B394D0E021970F2EF4EBCF2E03 +S1130180D12CF02D0F2EF8E96F2EF1E07F2EF02DFB +S11301906C0E7D1E1B2D1150E12EF12C9E01F701DA +S11301A0EE0FFF1FEE0FFF1FEE0DFF1DE857FE4F72 +S11301B0EC0FFD1F818190E0113009F120F0123025 +S11301C009F057C039C048B59701220F331F220FD9 +S11301D0331F890108571E4F841B9109F301608165 +S11301E070E00E949608882777FD8095982F0E94DA +S11301F0E207F801658B768B878B908F5DC0F601E3 +S113020040819701220F331F220F331F89010857A2 +S11302101E4F841B9109F301608170E00E949608CF +S1130220882777FD8095982F0E94E207F801658B57 +S1130230768B878B908F42C04091B300E701CC0F3F +S1130240DD1FCC0FDD1FC857DE4F841B9109F90158 +S1130250E857FE4F608970E00E949608882777FD72 +S11302608095982F0E94E2076D8B7E8B8F8B988FE1 +S113027028C09701220F331F220F331F0F2EF8E8D7 +S11302808F2EF1E09F2EF02D820E931EF3016081DC +S113029070E00E949608882777FD8095982F0E9429 +S11302A0E207F401658B768B878B908F113031F0E8 +S11302B018F01230C9F405C068B507C1F6016081B1 +S11302C004C16091B300E701CC0FDD1FCC0FDD1F2B +S11302D0C857DE4F70E080E090E00E94E00769A319 +S11302E07AA38BA39CA309C1F701EE0FFF1FEE0FA6 +S11302F0FF1FE857FE4F11A212A213A214A2F2E0AC +S1130300FB1508F034CFF9C0839410C0882483947B +S113031002C0882483940F2EF8E8AF2EF1E0BF2E9C +S1130320F02D0F2EF4EB2F2E312CF02D982C9A94C7 +S1130330C92DD0E0FE01EE0FFF1FEE0FFF1FE8579F +S1130340FE4FC588D688E788F08C20E030E0A9010C +S1130350C701B6010E94920818164CF58E01000FD1 +S1130360111F000F111FF801E857FE4F21A132A100 +S113037043A154A1C701B6010E944C072B013C01C3 +S1130380F5018081F801EC0FFD1FE80FF11DE8571E +S1130390FE4F608170E080E090E00E94E2079B01E4 +S11303A0AC01C301B2010E94B00718169CF520E00D +S11303B030E0A901C701B6010E94B00788230CF000 +S11303C056C08E01000F111F000F111FF801E857CE +S11303D0FE4F21A132A143A154A1C701B6010E943D +S11303E04C072B013C01F5018081F801EC0FFD1F46 +S11303F0E80FF11DE857FE4F608170E080E090E067 +S11304000E94E2079B01AC01C301B2010E94920861 +S113041088236CF1CC0FDD1FCC0FDD1FC857DE4FD6 +S113042029A13AA14BA15CA1C701B6010E944C07C6 +S1130430262F372F462F572F682F792F49A35AA3DA +S11304406BA37CA3622F732F0E94B407F1E09F1665 +S113045041F09F1620F082E0981232C005C068BDBA +S113046053CFF101608350CF6093B30046C0F501D0 +S11304708081FE01EE0FFF1FEE0FFF1FEC0FFD1F2B +S1130480E80FF11DE857FE4F8081F1E09F1641F01F +S11304909F1620F092E0991209C005C088BD06C0DD +S11304A0F101808303C0E3EBF0E08083CC0FDD1F18 +S11304B0CC0FDD1FC857DE4F1D8A1E8A1F8A188E77 +S11304C0F2E0F81508F020CF18C0C701880F991F73 +S11304D0880F991F0F2EF8E8EF2EF1E0FF2EF02D74 +S11304E0E80EF91E70E080E090E00E94E007F7015A +S11304F061A372A383A394A33ACEFF91EF91DF91FA +S1130500CF91BF91AF919F918F917F916F915F91A7 +S11305104F913F912F911F910F91FF90EF90DF909A +S1130520CF90BF90AF909F908F907F906F905F908F +S11305304F903F902F900F900FBE0F901F901895E3 +S1130540CF93DF93789481E88093C4001092C00025 +S113055088E08093C10086E08093C200A1E0B1E00E +S113056095E5E0ECF0E0C6ECD0E0808185FFFDCFBE +S113057098839D919111F9CFE0ECF0E0808185FFA3 +S1130580FDCF8DE08093C600E0ECF0E0808185FF34 +S1130590FDCF8AE08093C600DF91CF91089560FF7C +S11305A004C08FEF8093B30002C01092B30061FFC8 +S11305B004C08FEF8093B40002C01092B40062FFB5 +S11305C003C08FEF88BD089518BC0895CF93DF93BF +S11305D0FB019081992369F0DB011196E0ECF0E0D6 +S11305E0C6ECD0E0808185FFFDCF98839D91911169 +S11305F0F9CFE0ECF0E0808185FFFDCF8DE08093C2 +S1130600C600E0ECF0E0808185FFFDCF8AE08093B6 +S1130610C600DF91CF910895CF93DF9300D000D02F +S1130620CDB7DEB7789464E088E891E00E94CF0209 +S11306306BE071E085EB91E00E94E6022FE73AE17E +S113064086E0215030408040E1F700C0000062E0C5 +S113065088E891E00E94CF0260E171E085EB91E0CF +S11306600E94E6029FE7AAE1B6E09150A040B040A4 +S1130670E1F700C0000061E088E891E00E94CF0249 +S113068066E171E085EB91E00E94E6022FE73AE132 +S113069086E0215030408040E1F700C0000067E070 +S11306A088E891E00E94CF026CE171E085EB91E073 +S11306B00E94E6029FE7AAE1B6E09150A040B04054 +S11306C0E1F700C00000299A60E088E891E00E9408 +S11306D0CF02212C45E851E0BB24BA94AB2C0F2E59 +S11306E0F9E8EF2EF1E0FF2EF02D0EE811E00F2EC9 +S11306F0F3E98F2EF1E09F2EF02D0F2EF8E96F2EE7 +S1130700F1E07F2EF02D0F2EFAE03F2EF02D0F2E6C +S1130710F8E84F2EF1E05F2EF02DCC24C394E0ECEA +S1130720F0E00F2EFDE0DF2EF02DDA018C91AC927B +S11307308C3009F4FCC038F5853009F4B3C090F46A +S1130740823009F48CC038F4882309F446C081301F +S113075009F056C163C0833009F490C0843009F0B5 +S11307604FC195C0883009F4BEC038F4863009F40E +S1130770A4C0873009F044C1ABC08A3009F4CBC0AF +S113078008F0E5C1BCC0823109F40DC190F48F308A +S113079009F4DDC138F48D3009F4D5C08E3009F088 +S11307A02FC1DDC0803109F4E6C0813109F028C1D0 +S11307B0EEC0853109F40EC138F4833109F4C7C1A0 +S11307C0843109F01DC1FBC0873109F4C0C108F4AC +S11307D00CC18F3F09F014C1BAC188B58B3F20F416 +S11307E088B58B5F88BD01C018BCA4EBB0E08C91C8 +S11307F08B3F20F48C918B5F8C9303C0A4EBB0E00F +S11308001C92A3EBB0E08C918B3F20F48C918B5F16 +S11308108C939DC1A3EBB0E01C9299C188B585303F +S113082020F088B5855088BD01C018BCA4EBB0E0A9 +S11308308C91853020F08C9185508C9303C0A4EB6F +S1130840B0E01C92A3EBB0E08C91853020F08C9149 +S113085085508C937CC1A3EBB0E01C9278C184B525 +S11308608F7D84BDA0EBB0E08C918F758C935D98E7 +S1130870559A5B98539A2B98239A69C184B58062E0 +S113088084BDA0EBB0E08C91806A8C9360C1D701E9 +S1130890BC92D8011C92D4011C92D3013C92D20187 +S11308A0CC9255C1D7011C92D801BC92D4011C92A0 +S11308B0D3013C92D201CC924AC1D7011C92D801F7 +S11308C01C92D401BC92D3013C92D201CC923FC180 +S11308D0D701BC92D801BC92D401BC92D3013C9202 +S11308E0D201CC9234C1D701BC9220E4D8012C931C +S11308F0D4011C92D3013C92D201CC9228C1D701DD +S11309001C92D801BC9220E4D4012C93D3013C92D4 +S1130910D201CC921CC120E4D7012C93D8011C92A3 +S1130920D401BC92D3013C92D201CC9210C1D70124 +S1130930BC9220E8D8012C93D4011C92D3013C92A0 +S1130940D201CC9204C1D7011C92D801BC9220E8F8 +S1130950D4012C93D3013C92D201CC92F8C020E86C +S1130960D7012C93D8011C92D401BC92D3013C92A0 +S1130970D201CC92ECC0D701BC9220ECD8012C93CC +S1130980D4011C92D3013C92D201CC92E0C0D70195 +S11309901C92D801BC9220ECD4012C93D3013C923C +S11309A0D201CC92D4C020ECD7012C93D8011C9254 +S11309B0D401BC92D3013C92D201CC92C8C0D701DD +S11309C0BC92D801BC92D4011C92D3013C92D201B6 +S11309D0CC92BDC0D7011C92D801BC92D401BC9268 +S11309E0D3013C92D201CC92B2C0D701BC92D801BF +S11309F01C92D401BC92D3013C92D201CC92A7C0E8 +S1130A00282F30E03A832983808185FFFDCF80E35E +S1130A10A6ECB0E08C9360E070E0CB0196958795EE +S1130A2096958795969587959C01220F331F880F7D +S1130A30991F880F991F880F991F820F931F681B96 +S1130A40790B605D808185FFFDCFA6ECB0E06C93EF +S1130A5029813A813695279536952795ABE7B4E1F8 +S1130A600E94AA0896958795805D908195FFFDCF99 +S1130A70A6ECB0E08C9329813A81ADECBCEC0E94E9 +S1130A80AA089695879596958795969587959C83BC +S1130A908B839C010E94AA089695879596958795C5 +S1130AA0969587959C01220F331F880F991F880FF5 +S1130AB0991F880F991F820F931F2B813C81281B3C +S1130AC0390BC901805D908195FFFDCFA6ECB0E0A4 +S1130AD08C9329813A81ADECBCEC0E94AA089695CE +S1130AE0879596958795969587959C01220F331F38 +S1130AF0880F991F880F991F880F991F820F931FC2 +S1130B0029813A81281B390BC901805D908195FFA9 +S1130B10FDCFA6ECB0E08C93A3E6B1E090E29D019A +S1130B20808185FFFDCFA6ECB0E09C93D9019D9117 +S1130B309D019111F5CF808185FFFDCFA6ECB0E03A +S1130B40DC92808185FFFDCFA6ECB0E03C9200B63C +S1130B5005FE2AC0211052C0D701BC92D8011C92B4 +S1130B60D4011C9224E6D3012C93D201CC92ADE69D +S1130B70B1E094E59D01808185FFFDCFA6ECB0E056 +S1130B809C93D9019D919D019111F5CF808185FFA1 +S1130B90FDCFA6ECB0E0DC92808185FFFDCFA6EC12 +S1130BA0B0E03C922C2C2AC0B1E02B1227C0A7E75E +S1130BB0B1E094E59D01808185FFFDCFA6ECB0E016 +S1130BC09C93D9019D919D019111F5CF808185FF61 +S1130BD0FDCFA6ECB0E0DC92808185FFFDCFA6ECD2 +S1130BE0B0E03C92D7011C92D801BC92D4011C9273 +S1130BF022E3D3012C93D201CC92212C87E893E1F8 +S1130C000197F1F700C0000029989FEDAAE0B6E033 +S1130C109150A040B040E1F700C00000299A85CD72 +S1130C20559A539A239AFC01108281E084BD94E082 +S1130C3095BD16BC1092800092E0909381001092B2 +S1130C408500109284001092B600E0EBF0E08083FF +S1130C5095E09093B1001092B20010926E008093D0 +S1130C606F001092700084B5806284BD8081806AB8 +S1130C70808318BC1092B4001092B300089520E051 +S1130C8030E080E061E070E04A9BFECFEFE9FFE0F6 +S1130C903197F1F700C000004A9B08C0AB01022E57 +S1130CA002C0440F551F0A94E2F7842B4A990FC0DF +S1130CB008C04A9B06C0F5E8FA95F1F70000915088 +S1130CC0C1F72F5F3F4F28303105F1F6089545E80D +S1130CD04A95F1F7000091E3ECCF1F920F920FB603 +S1130CE00F9211242F933F934F935F936F937F93AE +S1130CF08F939F93AF93BF93CF93EF93FF93289AD0 +S1130D004A9979C08FE19EE40197F1F700C0000091 +S1130D104A9971C04A9BFECF4A99FECF80E090E089 +S1130D2060E041E050E04A9BFECFEFE9FFE03197FD +S1130D30F1F700C000004A9B08C09A01082E02C0C7 +S1130D40220F331F0A94E2F7622B4A9966C008C047 +S1130D504A9B06C0F5E8FA95F1F700002150C1F767 +S1130D60019688309105F9F6611139C080E090E070 +S1130D7041E050E04A9BFECFEFE9FFE03197F1F705 +S1130D8000C000004A9B08C09A01082E02C0220F2E +S1130D90331F0A94E2F7622B4A9939C008C04A9B70 +S1130DA006C0F5E8FA95F1F700002150C1F7019665 +S1130DB088309105F9F66F3E91F484E891E00E9441 +S1130DC03F06C82F84E891E00E943F06282F30E0B8 +S1130DD02C0F311D2F3F310511F4CF3F51F42FE774 +S1130DE034E88EE1215030408040E1F700C000003B +S1130DF00BC0CE3F39F4E7E8F3E13197F1F700C0D7 +S1130E00000002C0C09385012898E09A0CC0F5E860 +S1130E10FA95F1F7000021E3C2CF25E82A95F1F70E +S1130E20000021E395CFFF91EF91CF91BF91AF9156 +S1130E309F918F917F916F915F914F913F912F91EE +S1130E400F900FBE0F901F90189585EB91E00E94B4 +S1130E50A00288E891E00E941006209A219A28981E +S1130E60299856985E9857985F9810BE10927B0008 +S1130E7083E080937F00209A219A28982998529899 +S1130E805A988FEF8093850182E08093690081E016 +S1130E908DBB1CBA08955058BB27AA270ED008C191 +S1130EA0F9D030F0FED020F031F49F3F11F41EF45D +S1130EB0EEC00EF4E095E7FBE4C0E92F0AD180F31D +S1130EC0BA17620773078407950718F071F49EF543 +S1130ED022C10EF4E0950B2EBA2FA02D0B01B901FF +S1130EE090010C01CA01A0011124FF27591B99F09C +S1130EF0593F50F4503E68F11A16F040A22F232FA8 +S1130F00342F4427585FF3CF469537952795A795F7 +S1130F10F0405395C9F77EF41F16BA0B620B730B9E +S1130F20840BBAF09150A1F0FF0FBB1F661F771F0F +S1130F30881FC2F70EC0BA0F621F731F841F48F4C4 +S1130F40879577956795B795F7959E3F08F0B3CF4A +S1130F509395880F08F09927EE0F97958795089534 +S1130F606CD008F481E00895BCD088F09F5790F0CD +S1130F70B92F9927B751A0F0D1F0660F771F881FBA +S1130F80991F1AF0BA95C9F712C0B13081F0C3D0D5 +S1130F90B1E00895C0C0672F782F8827B85F39F073 +S1130FA0B93FCCF3869577956795B395D9F73EF419 +S1130FB090958095709561957F4F8F4F9F4F0895C1 +S1130FC0E89409C097FB3EF49095809570956195DF +S1130FD07F4F8F4F9F4F9923A9F0F92F96E9BB2795 +S1130FE09395F695879577956795B795F111F8CF11 +S1130FF0FAF4BB0F11F460FF1BC06F5F7F4F8F4F7C +S11310009F4F16C0882311F096E911C0772321F071 +S11310109EE8872F762F05C0662371F096E8862F09 +S113102070E060E02AF09A95660F771F881FDAF760 +S1131030880F9695879597F90895990F0008550F8D +S1131040AA0BE0E8FEEF16161706E807F907C0F04A +S113105012161306E407F50798F0621B730B840B52 +S1131060950B39F40A2661F0232B242B252B21F42C +S113107008950A2609F4A140A6958FEF811D811DCC +S1131080089597F99F6780E870E060E008959FEF06 +S113109080EC089500240A9416161706180609060B +S11310A0089500240A9412161306140605060895DA +S11310B0092E0394000C11F4882352F0BB0F40F462 +S11310C0BF2B11F460FF04C06F5F7F4F8F4F9F4FA2 +S11310D0089557FD9058440F551F59F05F3F71F024 +S11310E04795880F97FB991F61F09F3F79F087958B +S11310F00895121613061406551FF2CF4695F1DF14 +S113110008C0161617061806991FF1CF86957105A3 +S1131110610508940895E894BB2766277727CB01D7 +S113112097F908958ADF08F48FEF089597FB072E47 +S113113016F4009407D077FD09D00E94B60807FC86 +S113114005D03EF4909581959F4F089570956195D3 +S11311507F4F0895A29FB001B39FC001A39F01D008 +S1131160B29F700D811D1124911D0895AA1BBB1BF4 +S113117051E107C0AA1FBB1FA617B70710F0A61B93 +S1131180B70B881F991F5A95A9F780959095BC01B4 +S1131190CD010895EE0FFF1F0590F491E02D099401 +S10711A0F894FFCFED +S11311A45561727420646F6E652100526F7421005E +S11311B44772FC6E2100426C61752100576569DF3A +S11311C42C20616C6C657320496E697469616C6967 +S11311D4736572742120486162652046657274697E +S11311E46720756E642064616D6974206162207A7D +S11311F4756D204E6F726D616C626574726965629F +S113120421002050726573736564210054FC7220BC +S11312145A752E2E2E0054FC72204F6666656E2E6F +S10712242E2E000066 S9030000FC diff --git a/Door/Door.cppproj b/Door/Door.cppproj index 91df6e9..d20f6f3 100644 --- a/Door/Door.cppproj +++ b/Door/Door.cppproj @@ -18,8 +18,7 @@ Native true false - - + exception_table 0 true 0x20000000 @@ -116,42 +115,42 @@ - True - True - True - True - True - True - - - DEBUG - - - Optimize (-O1) - True - True - Default (-g2) - True - True - True - - - DEBUG - - - Optimize (-O1) - True - True - Default (-g2) - True - - - libm - - - <segmentname>=<address>, for example .boot=0xff - Default (-Wa,-g) - + True + True + True + True + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + <segmentname>=<address>, for example .boot=0xff + Default (-Wa,-g) + diff --git a/Door/io/Stripe.hpp b/Door/io/Stripe.hpp index 9ecca33..cbebaee 100644 --- a/Door/io/Stripe.hpp +++ b/Door/io/Stripe.hpp @@ -10,8 +10,6 @@ #include "hardware/pin.hpp" -#include - template class Stripe { public: @@ -19,14 +17,14 @@ class Stripe { this->init(); } void color(uint8_t r, uint8_t g, uint8_t b) { - OCR0B=r; //ROT - OCR2B=g; //GRÜN - OCR2A=b; //BLAU + this->sp(0, r); //ROT + this->sp(1, g); //GRÜN + this->sp(2, b); //BLAU } void setcolor(uint8_t mask) { - (mask & (1<<0)) ? OCR2A=0xFF : OCR2A=0x00; - (mask & (1<<1)) ? OCR2B=0xFF : OCR2B=0x00; - (mask & (1<<2)) ? OCR0B=0xFF : OCR0B=0x00; + (mask & (1<<0)) ? this->sp(2, 0xFF) : this->sp(2, 0x00); //Blau + (mask & (1<<1)) ? this->sp(1, 0xFF) : this->sp(1, 0x00); //Grün + (mask & (1<<2)) ? this->sp(0, 0xFF) : this->sp(0, 0x00); //Rot } static const uint8_t BLACK = 0; static const uint8_t BLUE = 1; @@ -92,11 +90,24 @@ class Stripe { void interrupt() { if(this->fade_zylk > 0) { if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) { - this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-OCR0B)/this->fademap[3][this->fade_zylk-1]; //Calc Red; + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1]; + this->virtualcolor[i] = this->gp(i); + } + /*this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-this->gp(0))/this->fademap[3][this->fade_zylk-1]; //Calc Red; this->fadesteps[1] = (this->fademap[1][this->fade_zylk-1]-OCR2B)/this->fademap[3][this->fade_zylk-1]; //Calc Green; - this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue; + this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue;*/ } else { - if((this->fadesteps[0] > 0 && (OCR0B + this->fadesteps[0]) <= this->fademap[0][this->fade_zylk-1]) || (this->fadesteps[0] < 0 && (OCR0B + this->fadesteps[0]) >= this->fademap[0][this->fade_zylk-1])) { + for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue + if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) { + this->virtualcolor[i] = this->virtualcolor[i] + this->fadesteps[i]; + this->sp(i, this->virtualcolor[i]); + } else { + this->sp(i, this->fademap[i][this->fade_zylk-1]); + this->fadesteps[i] = 0; + } + } + /*if((this->fadesteps[0] > 0 && (OCR0B + this->fadesteps[0]) <= this->fademap[0][this->fade_zylk-1]) || (this->fadesteps[0] < 0 && (OCR0B + this->fadesteps[0]) >= this->fademap[0][this->fade_zylk-1])) { OCR0B = OCR0B + this->fadesteps[0]; } else { OCR0B = this->fademap[0][this->fade_zylk-1]; @@ -113,7 +124,7 @@ class Stripe { } else { OCR2A = this->fademap[2][this->fade_zylk-1]; this->fadesteps[2] = 0; - } + }*/ } } } @@ -121,6 +132,7 @@ class Stripe { uint8_t fade_zylk; uint8_t fademap[4][5]; float fadesteps[3]; + float virtualcolor[3]; void init() { stripered::make_output(); stripegreen::make_output(); @@ -129,6 +141,21 @@ class Stripe { this->initTimer(); this->color(0, 0, 0); } + void sp(uint8_t i, uint8_t c) { + switch(i) { + case 0: OCR0B = c; break; //ROT + case 1: OCR2B = c; break; //GRÜN + case 2: OCR2A = c; break; //BLAU + } + } + uint8_t gp(uint8_t i) { + switch(i) { + case 0: return OCR0B; //ROT + case 1: return OCR2B; //GRÜN + case 2: return OCR2A; //BLAU + } + return 0; + } void timerOff() { // OC0B output: Disconnected // OC2A output: Disconnected