From 468e113a305776b8d7b6f0a354801aa9f9cb968e Mon Sep 17 00:00:00 2001 From: Gast Date: Tue, 27 Mar 2018 22:01:57 +0200 Subject: [PATCH] So ein Schmutz! --- sketches/pendulum/.dep/color_hsv.o.d | 3 - sketches/pendulum/.dep/pendulum.o.d | 3 - sketches/pendulum/color_hsv.lst | 662 --------- sketches/pendulum/color_hsv.o | Bin 8484 -> 0 bytes sketches/pendulum/pendulum.c | 61 +- sketches/pendulum/pendulum.eep | 1 - sketches/pendulum/pendulum.elf | Bin 15764 -> 0 bytes sketches/pendulum/pendulum.hex | 216 --- sketches/pendulum/pendulum.lss | 1929 -------------------------- sketches/pendulum/pendulum.lst | 1078 -------------- sketches/pendulum/pendulum.map | 772 ----------- sketches/pendulum/pendulum.o | Bin 11412 -> 0 bytes sketches/pendulum/pendulum.sym | 109 -- 13 files changed, 51 insertions(+), 4783 deletions(-) delete mode 100644 sketches/pendulum/.dep/color_hsv.o.d delete mode 100644 sketches/pendulum/.dep/pendulum.o.d delete mode 100644 sketches/pendulum/color_hsv.lst delete mode 100644 sketches/pendulum/color_hsv.o delete mode 100644 sketches/pendulum/pendulum.eep delete mode 100755 sketches/pendulum/pendulum.elf delete mode 100644 sketches/pendulum/pendulum.hex delete mode 100644 sketches/pendulum/pendulum.lss delete mode 100644 sketches/pendulum/pendulum.lst delete mode 100644 sketches/pendulum/pendulum.map delete mode 100644 sketches/pendulum/pendulum.o delete mode 100644 sketches/pendulum/pendulum.sym diff --git a/sketches/pendulum/.dep/color_hsv.o.d b/sketches/pendulum/.dep/color_hsv.o.d deleted file mode 100644 index a89a8ee..0000000 --- a/sketches/pendulum/.dep/color_hsv.o.d +++ /dev/null @@ -1,3 +0,0 @@ -color_hsv.o: color_hsv.c color_hsv.h - -color_hsv.h: diff --git a/sketches/pendulum/.dep/pendulum.o.d b/sketches/pendulum/.dep/pendulum.o.d deleted file mode 100644 index 45ae2d3..0000000 --- a/sketches/pendulum/.dep/pendulum.o.d +++ /dev/null @@ -1,3 +0,0 @@ -pendulum.o: pendulum.c color_hsv.h - -color_hsv.h: diff --git a/sketches/pendulum/color_hsv.lst b/sketches/pendulum/color_hsv.lst deleted file mode 100644 index 0976998..0000000 --- a/sketches/pendulum/color_hsv.lst +++ /dev/null @@ -1,662 +0,0 @@ - 1 .file "color_hsv.c" - 2 __SP_H__ = 0x3e - 3 __SP_L__ = 0x3d - 4 __SREG__ = 0x3f - 5 __tmp_reg__ = 0 - 6 __zero_reg__ = 1 - 9 .text - 10 .Ltext0: - 103 .global interpolate - 105 interpolate: - 106 .stabd 46,0,0 - 1:color_hsv.c **** #include "color_hsv.h" - 2:color_hsv.c **** - 3:color_hsv.c **** void interpolate(hsv_t start, hsv_t end, size_t steps, hsv_t *colors) { - 108 .LM0: - 109 .LFBB1: - 110 0000 2F92 push r2 - 111 0002 3F92 push r3 - 112 0004 4F92 push r4 - 113 0006 5F92 push r5 - 114 0008 6F92 push r6 - 115 000a 7F92 push r7 - 116 000c 8F92 push r8 - 117 000e 9F92 push r9 - 118 0010 AF92 push r10 - 119 0012 BF92 push r11 - 120 0014 CF92 push r12 - 121 0016 DF92 push r13 - 122 0018 EF92 push r14 - 123 001a FF92 push r15 - 124 001c 0F93 push r16 - 125 001e 1F93 push r17 - 126 0020 CF93 push r28 - 127 0022 DF93 push r29 - 128 0024 CDB7 in r28,__SP_L__ - 129 0026 DEB7 in r29,__SP_H__ - 130 0028 2A97 sbiw r28,10 - 131 002a 0FB6 in __tmp_reg__,__SREG__ - 132 002c F894 cli - 133 002e DEBF out __SP_H__,r29 - 134 0030 0FBE out __SREG__,__tmp_reg__ - 135 0032 CDBF out __SP_L__,r28 - 136 /* prologue: function */ - 137 /* frame size = 10 */ - 138 /* stack size = 28 */ - 139 .L__stack_usage = 28 - 140 0034 D82E mov r13,r24 - 141 0036 C92E mov r12,r25 - 142 0038 F701 movw r30,r14 - 4:color_hsv.c **** if( steps == 1 ) { - 144 .LM1: - 145 003a 0130 cpi r16,1 - 146 003c 1105 cpc r17,__zero_reg__ - 147 003e 01F0 breq .L2 - 148 .LBB2: - 149 .LBB3: - 5:color_hsv.c **** colors[0] = start; - 6:color_hsv.c **** return; - 7:color_hsv.c **** } - 8:color_hsv.c **** - 9:color_hsv.c **** for( size_t i = 0; i < steps; i++ ) { - 10:color_hsv.c **** hsv_t tmp; - 11:color_hsv.c **** tmp.hue = (uint16_t)((int16_t)start.hue + ((int16_t)end.hue - (int16_t)start.hue) * (int16_t)i / - 151 .LM2: - 152 0040 3B01 movw r6,r22 - 153 0042 2901 movw r4,r18 - 154 0044 461A sub r4,r22 - 155 0046 570A sbc r5,r23 - 156 0048 842F mov r24,r20 - 157 004a 90E0 ldi r25,0 - 12:color_hsv.c **** tmp.sat = (uint8_t)((int16_t)start.sat + ((int16_t)end.sat - (int16_t)start.sat) * (int16_t)i / ( - 159 .LM3: - 160 004c BC01 movw r22,r24 - 161 004e 6D19 sub r22,r13 - 162 0050 7109 sbc r23,__zero_reg__ - 163 0052 7E83 std Y+6,r23 - 164 0054 6D83 std Y+5,r22 - 165 0056 852F mov r24,r21 - 166 0058 90E0 ldi r25,0 - 13:color_hsv.c **** tmp.val = (uint8_t)((int16_t)start.val + ((int16_t)end.val - (int16_t)start.val) * (int16_t)i / ( - 168 .LM4: - 169 005a 9C01 movw r18,r24 - 170 005c 2C19 sub r18,r12 - 171 005e 3109 sbc r19,__zero_reg__ - 172 0060 3887 std Y+8,r19 - 173 0062 2F83 std Y+7,r18 - 174 0064 3396 adiw r30,3 - 175 0066 1A86 std Y+10,__zero_reg__ - 176 0068 1986 std Y+9,__zero_reg__ - 177 006a E12C mov r14,__zero_reg__ - 178 006c F12C mov r15,__zero_reg__ - 179 006e 80E0 ldi r24,0 - 180 0070 90E0 ldi r25,0 - 181 0072 20E0 ldi r18,0 - 182 0074 30E0 ldi r19,0 - 11:color_hsv.c **** tmp.sat = (uint8_t)((int16_t)start.sat + ((int16_t)end.sat - (int16_t)start.sat) * (int16_t)i / ( - 184 .LM5: - 185 0076 5801 movw r10,r16 - 186 0078 41E0 ldi r20,1 - 187 007a A41A sub r10,r20 - 188 007c B108 sbc r11,__zero_reg__ - 189 007e 00C0 rjmp .L3 - 190 .L2: - 191 .LBE3: - 192 .LBE2: - 5:color_hsv.c **** return; - 194 .LM6: - 195 0080 6083 st Z,r22 - 196 0082 7183 std Z+1,r23 - 197 0084 8283 std Z+2,r24 - 198 0086 9383 std Z+3,r25 - 6:color_hsv.c **** } - 200 .LM7: - 201 0088 00C0 rjmp .L1 - 202 .L3: - 203 008a 1C01 movw r2,r24 - 204 008c 240C add r2,r4 - 205 008e 351C adc r3,r5 - 206 0090 4D81 ldd r20,Y+5 - 207 0092 5E81 ldd r21,Y+6 - 208 0094 4E0D add r20,r14 - 209 0096 5F1D adc r21,r15 - 210 0098 5A83 std Y+2,r21 - 211 009a 4983 std Y+1,r20 - 212 009c 4F81 ldd r20,Y+7 - 213 009e 5885 ldd r21,Y+8 - 214 00a0 6985 ldd r22,Y+9 - 215 00a2 7A85 ldd r23,Y+10 - 216 00a4 460F add r20,r22 - 217 00a6 571F adc r21,r23 - 218 00a8 5C83 std Y+4,r21 - 219 00aa 4B83 std Y+3,r20 - 220 .LBB5: - 9:color_hsv.c **** hsv_t tmp; - 222 .LM8: - 223 00ac 2017 cp r18,r16 - 224 00ae 3107 cpc r19,r17 - 225 00b0 01F0 breq .L1 - 226 00b2 4F01 movw r8,r30 - 227 00b4 53E0 ldi r21,3 - 228 00b6 851A sub r8,r21 - 229 00b8 9108 sbc r9,__zero_reg__ - 230 .LBB4: - 11:color_hsv.c **** tmp.sat = (uint8_t)((int16_t)start.sat + ((int16_t)end.sat - (int16_t)start.sat) * (int16_t)i / ( - 232 .LM9: - 233 00ba B501 movw r22,r10 - 234 00bc 0E94 0000 call __divmodhi4 - 235 00c0 660D add r22,r6 - 236 00c2 771D adc r23,r7 - 14:color_hsv.c **** colors[i] = tmp; - 238 .LM10: - 239 00c4 D401 movw r26,r8 - 240 00c6 6D93 st X+,r22 - 241 00c8 7C93 st X,r23 - 242 00ca 4F01 movw r8,r30 - 243 00cc B1E0 ldi r27,1 - 244 00ce 8B1A sub r8,r27 - 245 00d0 9108 sbc r9,__zero_reg__ - 12:color_hsv.c **** tmp.val = (uint8_t)((int16_t)start.val + ((int16_t)end.val - (int16_t)start.val) * (int16_t)i / ( - 247 .LM11: - 248 00d2 C701 movw r24,r14 - 249 00d4 B501 movw r22,r10 - 250 00d6 0E94 0000 call __divmodhi4 - 251 00da 6D0D add r22,r13 - 253 .LM12: - 254 00dc D401 movw r26,r8 - 255 00de 6C93 st X,r22 - 13:color_hsv.c **** colors[i] = tmp; - 257 .LM13: - 258 00e0 8985 ldd r24,Y+9 - 259 00e2 9A85 ldd r25,Y+10 - 260 00e4 B501 movw r22,r10 - 261 00e6 0E94 0000 call __divmodhi4 - 262 00ea 6C0D add r22,r12 - 264 .LM14: - 265 00ec 6083 st Z,r22 - 266 .LBE4: - 9:color_hsv.c **** hsv_t tmp; - 268 .LM15: - 269 00ee 2F5F subi r18,-1 - 270 00f0 3F4F sbci r19,-1 - 271 00f2 3496 adiw r30,4 - 272 00f4 4B81 ldd r20,Y+3 - 273 00f6 5C81 ldd r21,Y+4 - 274 00f8 5A87 std Y+10,r21 - 275 00fa 4987 std Y+9,r20 - 276 00fc E980 ldd r14,Y+1 - 277 00fe FA80 ldd r15,Y+2 - 278 0100 C101 movw r24,r2 - 279 0102 00C0 rjmp .L3 - 280 .L1: - 281 /* epilogue start */ - 282 .LBE5: - 15:color_hsv.c **** } - 16:color_hsv.c **** } - 284 .LM16: - 285 0104 2A96 adiw r28,10 - 286 0106 0FB6 in __tmp_reg__,__SREG__ - 287 0108 F894 cli - 288 010a DEBF out __SP_H__,r29 - 289 010c 0FBE out __SREG__,__tmp_reg__ - 290 010e CDBF out __SP_L__,r28 - 291 0110 DF91 pop r29 - 292 0112 CF91 pop r28 - 293 0114 1F91 pop r17 - 294 0116 0F91 pop r16 - 295 0118 FF90 pop r15 - 296 011a EF90 pop r14 - 297 011c DF90 pop r13 - 298 011e CF90 pop r12 - 299 0120 BF90 pop r11 - 300 0122 AF90 pop r10 - 301 0124 9F90 pop r9 - 302 0126 8F90 pop r8 - 303 0128 7F90 pop r7 - 304 012a 6F90 pop r6 - 305 012c 5F90 pop r5 - 306 012e 4F90 pop r4 - 307 0130 3F90 pop r3 - 308 0132 2F90 pop r2 - 309 0134 0895 ret - 317 .Lscope1: - 319 .stabd 78,0,0 - 320 .global __floatunsisf - 321 .global __divsf3 - 322 .global __fixunssfsi - 323 .global __floatsisf - 324 .global __subsf3 - 325 .global __mulsf3 - 328 .global hsv2rgb - 330 hsv2rgb: - 331 .stabd 46,0,0 - 17:color_hsv.c **** - 18:color_hsv.c **** void hsv2rgbList(hsv_t* hsvList, rgb_t* rgbList, size_t count) { - 19:color_hsv.c **** for(size_t i = 0; i < count; ++i) { - 20:color_hsv.c **** rgbList[i] = hsv2rgb(&hsvList[i]); - 21:color_hsv.c **** } - 22:color_hsv.c **** } - 23:color_hsv.c **** - 24:color_hsv.c **** rgb_t hsv2rgb(hsv_t* hsv) { - 333 .LM17: - 334 .LFBB2: - 335 0136 2F92 push r2 - 336 0138 3F92 push r3 - 337 013a 4F92 push r4 - 338 013c 5F92 push r5 - 339 013e 6F92 push r6 - 340 0140 7F92 push r7 - 341 0142 8F92 push r8 - 342 0144 9F92 push r9 - 343 0146 AF92 push r10 - 344 0148 BF92 push r11 - 345 014a CF92 push r12 - 346 014c DF92 push r13 - 347 014e EF92 push r14 - 348 0150 FF92 push r15 - 349 0152 0F93 push r16 - 350 0154 1F93 push r17 - 351 0156 CF93 push r28 - 352 0158 DF93 push r29 - 353 015a 00D0 rcall . - 354 015c 00D0 rcall . - 355 015e CDB7 in r28,__SP_L__ - 356 0160 DEB7 in r29,__SP_H__ - 357 /* prologue: function */ - 358 /* frame size = 4 */ - 359 /* stack size = 22 */ - 360 .L__stack_usage = 22 - 25:color_hsv.c **** rgb_t res; - 26:color_hsv.c **** - 27:color_hsv.c **** if(hsv->sat == 0) { - 362 .LM18: - 363 0162 FC01 movw r30,r24 - 364 0164 B280 ldd r11,Z+2 - 365 0166 3380 ldd r3,Z+3 - 366 0168 B110 cpse r11,__zero_reg__ - 367 016a 00C0 rjmp .L8 - 28:color_hsv.c **** res.r = res.g = res.b = hsv->val; - 369 .LM19: - 370 016c 232C mov r2,r3 - 371 016e 3B82 std Y+3,r3 - 372 0170 3C82 std Y+4,r3 - 373 0172 00C0 rjmp .L9 - 374 .L8: - 375 0174 FC01 movw r30,r24 - 376 .LBB6: - 29:color_hsv.c **** } else { - 30:color_hsv.c **** float hue = (float) (hsv->hue<360?hsv->hue:hsv->hue-360); - 378 .LM20: - 379 0176 0081 ld r16,Z - 380 0178 1181 ldd r17,Z+1 - 381 017a B801 movw r22,r16 - 382 017c 0836 cpi r16,104 - 383 017e F1E0 ldi r31,1 - 384 0180 1F07 cpc r17,r31 - 385 0182 00F0 brlo .L20 - 387 .LM21: - 388 0184 6856 subi r22,104 - 389 0186 7140 sbci r23,1 - 390 .L20: - 391 0188 80E0 ldi r24,0 - 392 018a 90E0 ldi r25,0 - 393 018c 0E94 0000 call __floatunsisf - 394 0190 2B01 movw r4,r22 - 395 0192 3C01 movw r6,r24 - 31:color_hsv.c **** float val = ((float) hsv->val ) / 100.0; - 397 .LM22: - 398 0194 632D mov r22,r3 - 399 0196 70E0 ldi r23,0 - 400 0198 80E0 ldi r24,0 - 401 019a 90E0 ldi r25,0 - 402 019c 0E94 0000 call __floatunsisf - 403 01a0 20E0 ldi r18,0 - 404 01a2 30E0 ldi r19,0 - 405 01a4 48EC ldi r20,lo8(-56) - 406 01a6 52E4 ldi r21,lo8(66) - 407 01a8 0E94 0000 call __divsf3 - 408 01ac 6B01 movw r12,r22 - 409 01ae 7C01 movw r14,r24 - 32:color_hsv.c **** float sat = ((float) hsv->sat ) / 100.0; - 411 .LM23: - 412 01b0 6B2D mov r22,r11 - 413 01b2 70E0 ldi r23,0 - 414 01b4 80E0 ldi r24,0 - 415 01b6 90E0 ldi r25,0 - 416 01b8 0E94 0000 call __floatunsisf - 417 01bc 20E0 ldi r18,0 - 418 01be 30E0 ldi r19,0 - 419 01c0 48EC ldi r20,lo8(-56) - 420 01c2 52E4 ldi r21,lo8(66) - 421 01c4 0E94 0000 call __divsf3 - 422 01c8 4B01 movw r8,r22 - 423 01ca 5C01 movw r10,r24 - 33:color_hsv.c **** - 34:color_hsv.c **** uint8_t h = hue / 60; - 425 .LM24: - 426 01cc 20E0 ldi r18,0 - 427 01ce 30E0 ldi r19,0 - 428 01d0 40E7 ldi r20,lo8(112) - 429 01d2 52E4 ldi r21,lo8(66) - 430 01d4 C301 movw r24,r6 - 431 01d6 B201 movw r22,r4 - 432 01d8 0E94 0000 call __divsf3 - 433 01dc 2B01 movw r4,r22 - 434 01de 3C01 movw r6,r24 - 435 01e0 0E94 0000 call __fixunssfsi - 436 01e4 6A83 std Y+2,r22 - 35:color_hsv.c **** float f = ( hue / 60 ) - h; - 438 .LM25: - 439 01e6 70E0 ldi r23,0 - 440 01e8 80E0 ldi r24,0 - 441 01ea 90E0 ldi r25,0 - 442 01ec 0E94 0000 call __floatsisf - 443 01f0 9B01 movw r18,r22 - 444 01f2 AC01 movw r20,r24 - 445 01f4 C301 movw r24,r6 - 446 01f6 B201 movw r22,r4 - 447 01f8 0E94 0000 call __subsf3 - 448 01fc 2B01 movw r4,r22 - 449 01fe 3C01 movw r6,r24 - 36:color_hsv.c **** - 37:color_hsv.c **** uint8_t p = RGB_MAX * ( val * ( 1 - sat )); - 451 .LM26: - 452 0200 A501 movw r20,r10 - 453 0202 9401 movw r18,r8 - 454 0204 60E0 ldi r22,0 - 455 0206 70E0 ldi r23,0 - 456 0208 80E8 ldi r24,lo8(-128) - 457 020a 9FE3 ldi r25,lo8(63) - 458 020c 0E94 0000 call __subsf3 - 459 0210 9B01 movw r18,r22 - 460 0212 AC01 movw r20,r24 - 461 0214 C701 movw r24,r14 - 462 0216 B601 movw r22,r12 - 463 0218 0E94 0000 call __mulsf3 - 464 021c 20E0 ldi r18,0 - 465 021e 30E0 ldi r19,0 - 466 0220 40E0 ldi r20,0 - 467 0222 53E4 ldi r21,lo8(67) - 468 0224 0E94 0000 call __mulsf3 - 469 0228 0E94 0000 call __fixunssfsi - 470 022c 262E mov r2,r22 - 38:color_hsv.c **** uint8_t q = RGB_MAX * ( val * ( 1 - sat * f )); - 472 .LM27: - 473 022e A301 movw r20,r6 - 474 0230 9201 movw r18,r4 - 475 0232 C501 movw r24,r10 - 476 0234 B401 movw r22,r8 - 477 0236 0E94 0000 call __mulsf3 - 478 023a 9B01 movw r18,r22 - 479 023c AC01 movw r20,r24 - 480 023e 60E0 ldi r22,0 - 481 0240 70E0 ldi r23,0 - 482 0242 80E8 ldi r24,lo8(-128) - 483 0244 9FE3 ldi r25,lo8(63) - 484 0246 0E94 0000 call __subsf3 - 485 024a 9B01 movw r18,r22 - 486 024c AC01 movw r20,r24 - 487 024e C701 movw r24,r14 - 488 0250 B601 movw r22,r12 - 489 0252 0E94 0000 call __mulsf3 - 490 0256 20E0 ldi r18,0 - 491 0258 30E0 ldi r19,0 - 492 025a 40E0 ldi r20,0 - 493 025c 53E4 ldi r21,lo8(67) - 494 025e 0E94 0000 call __mulsf3 - 495 0262 0E94 0000 call __fixunssfsi - 496 0266 6983 std Y+1,r22 - 39:color_hsv.c **** uint8_t t = RGB_MAX * ( val * ( 1 - sat * ( 1 - f ))); - 498 .LM28: - 499 0268 A301 movw r20,r6 - 500 026a 9201 movw r18,r4 - 501 026c 60E0 ldi r22,0 - 502 026e 70E0 ldi r23,0 - 503 0270 80E8 ldi r24,lo8(-128) - 504 0272 9FE3 ldi r25,lo8(63) - 505 0274 0E94 0000 call __subsf3 - 506 0278 9B01 movw r18,r22 - 507 027a AC01 movw r20,r24 - 508 027c C501 movw r24,r10 - 509 027e B401 movw r22,r8 - 510 0280 0E94 0000 call __mulsf3 - 511 0284 9B01 movw r18,r22 - 512 0286 AC01 movw r20,r24 - 513 0288 60E0 ldi r22,0 - 514 028a 70E0 ldi r23,0 - 515 028c 80E8 ldi r24,lo8(-128) - 516 028e 9FE3 ldi r25,lo8(63) - 517 0290 0E94 0000 call __subsf3 - 518 0294 9B01 movw r18,r22 - 519 0296 AC01 movw r20,r24 - 520 0298 C701 movw r24,r14 - 521 029a B601 movw r22,r12 - 522 029c 0E94 0000 call __mulsf3 - 523 02a0 20E0 ldi r18,0 - 524 02a2 30E0 ldi r19,0 - 525 02a4 40E0 ldi r20,0 - 526 02a6 53E4 ldi r21,lo8(67) - 527 02a8 0E94 0000 call __mulsf3 - 528 02ac 0E94 0000 call __fixunssfsi - 40:color_hsv.c **** - 41:color_hsv.c **** switch(h) { - 530 .LM29: - 531 02b0 2A81 ldd r18,Y+2 - 532 02b2 822F mov r24,r18 - 533 02b4 90E0 ldi r25,0 - 534 02b6 8730 cpi r24,7 - 535 02b8 9105 cpc r25,__zero_reg__ - 536 02ba 00F4 brsh .L19 - 538 .LM30: - 539 02bc FC01 movw r30,r24 - 540 02be E050 subi r30,lo8(-(gs(.L13))) - 541 02c0 F040 sbci r31,hi8(-(gs(.L13))) - 542 02c2 0C94 0000 jmp __tablejump2__ - 543 .section .progmem.gcc_sw_table,"a",@progbits - 544 .p2align 1 - 545 .L13: - 546 0000 0000 .word gs(.L12) - 547 0002 0000 .word gs(.L14) - 548 0004 0000 .word gs(.L15) - 549 0006 0000 .word gs(.L16) - 550 0008 0000 .word gs(.L17) - 551 000a 0000 .word gs(.L18) - 552 000c 0000 .word gs(.L12) - 553 .text - 554 .L12: - 42:color_hsv.c **** case 0: - 43:color_hsv.c **** case 6: res.r = hsv->val; res.g = t; res.b = p; break; - 556 .LM31: - 557 02c6 2B82 std Y+3,r2 - 558 02c8 6C83 std Y+4,r22 - 559 02ca 232C mov r2,r3 - 560 02cc 00C0 rjmp .L9 - 561 .L14: - 44:color_hsv.c **** case 1: res.r = q; res.g = hsv->val; res.b = p; break; - 563 .LM32: - 564 02ce 2B82 std Y+3,r2 - 565 02d0 3C82 std Y+4,r3 - 566 02d2 2980 ldd r2,Y+1 - 567 02d4 00C0 rjmp .L9 - 568 .L15: - 45:color_hsv.c **** case 2: res.r = p; res.g = hsv->val; res.b = t; break; - 570 .LM33: - 571 02d6 6B83 std Y+3,r22 - 572 02d8 3C82 std Y+4,r3 - 573 02da 00C0 rjmp .L9 - 574 .L16: - 46:color_hsv.c **** case 3: res.r = p; res.g = q; res.b = hsv->val; break; - 576 .LM34: - 577 02dc 3B82 std Y+3,r3 - 578 02de 8981 ldd r24,Y+1 - 579 02e0 8C83 std Y+4,r24 - 580 02e2 00C0 rjmp .L9 - 581 .L17: - 47:color_hsv.c **** case 4: res.r = t; res.g = p; res.b = hsv->val; break; - 583 .LM35: - 584 02e4 3B82 std Y+3,r3 - 585 02e6 2C82 std Y+4,r2 - 586 02e8 262E mov r2,r22 - 587 02ea 00C0 rjmp .L9 - 588 .L18: - 48:color_hsv.c **** case 5: res.r = hsv->hue; res.g = p; res.b = q; break; - 590 .LM36: - 591 02ec E981 ldd r30,Y+1 - 592 02ee EB83 std Y+3,r30 - 593 02f0 2C82 std Y+4,r2 - 594 02f2 202E mov r2,r16 - 595 02f4 00C0 rjmp .L9 - 596 .L19: - 41:color_hsv.c **** case 0: - 598 .LM37: - 599 02f6 212C mov r2,__zero_reg__ - 600 .L9: - 601 .LBE6: - 49:color_hsv.c **** - 50:color_hsv.c **** } - 51:color_hsv.c **** } - 52:color_hsv.c **** return res; - 53:color_hsv.c **** } - 603 .LM38: - 604 02f8 622D mov r22,r2 - 605 02fa 7C81 ldd r23,Y+4 - 606 02fc 8B81 ldd r24,Y+3 - 607 /* epilogue start */ - 608 02fe 0F90 pop __tmp_reg__ - 609 0300 0F90 pop __tmp_reg__ - 610 0302 0F90 pop __tmp_reg__ - 611 0304 0F90 pop __tmp_reg__ - 612 0306 DF91 pop r29 - 613 0308 CF91 pop r28 - 614 030a 1F91 pop r17 - 615 030c 0F91 pop r16 - 616 030e FF90 pop r15 - 617 0310 EF90 pop r14 - 618 0312 DF90 pop r13 - 619 0314 CF90 pop r12 - 620 0316 BF90 pop r11 - 621 0318 AF90 pop r10 - 622 031a 9F90 pop r9 - 623 031c 8F90 pop r8 - 624 031e 7F90 pop r7 - 625 0320 6F90 pop r6 - 626 0322 5F90 pop r5 - 627 0324 4F90 pop r4 - 628 0326 3F90 pop r3 - 629 0328 2F90 pop r2 - 630 032a 0895 ret - 635 .Lscope2: - 637 .stabd 78,0,0 - 641 .global hsv2rgbList - 643 hsv2rgbList: - 644 .stabd 46,0,0 - 18:color_hsv.c **** for(size_t i = 0; i < count; ++i) { - 646 .LM39: - 647 .LFBB3: - 648 032c CF92 push r12 - 649 032e DF92 push r13 - 650 0330 EF92 push r14 - 651 0332 FF92 push r15 - 652 0334 0F93 push r16 - 653 0336 1F93 push r17 - 654 0338 CF93 push r28 - 655 033a DF93 push r29 - 656 /* prologue: function */ - 657 /* frame size = 0 */ - 658 /* stack size = 8 */ - 659 .L__stack_usage = 8 - 660 033c 6A01 movw r12,r20 - 661 033e EB01 movw r28,r22 - 662 0340 7C01 movw r14,r24 - 663 .LBB7: - 19:color_hsv.c **** rgbList[i] = hsv2rgb(&hsvList[i]); - 665 .LM40: - 666 0342 00E0 ldi r16,0 - 667 0344 10E0 ldi r17,0 - 668 .L22: - 19:color_hsv.c **** rgbList[i] = hsv2rgb(&hsvList[i]); - 670 .LM41: - 671 0346 0C15 cp r16,r12 - 672 0348 1D05 cpc r17,r13 - 673 034a 01F0 breq .L24 - 20:color_hsv.c **** } - 675 .LM42: - 676 034c C701 movw r24,r14 - 677 034e 0E94 0000 call hsv2rgb - 678 0352 6993 st Y+,r22 - 679 0354 7993 st Y+,r23 - 680 0356 8993 st Y+,r24 - 19:color_hsv.c **** rgbList[i] = hsv2rgb(&hsvList[i]); - 682 .LM43: - 683 0358 0F5F subi r16,-1 - 684 035a 1F4F sbci r17,-1 - 685 035c 84E0 ldi r24,4 - 686 035e E80E add r14,r24 - 687 0360 F11C adc r15,__zero_reg__ - 688 0362 00C0 rjmp .L22 - 689 .L24: - 690 /* epilogue start */ - 691 .LBE7: - 22:color_hsv.c **** - 693 .LM44: - 694 0364 DF91 pop r29 - 695 0366 CF91 pop r28 - 696 0368 1F91 pop r17 - 697 036a 0F91 pop r16 - 698 036c FF90 pop r15 - 699 036e EF90 pop r14 - 700 0370 DF90 pop r13 - 701 0372 CF90 pop r12 - 702 0374 0895 ret - 707 .Lscope3: - 709 .stabd 78,0,0 - 713 .global init_hsv_t - 715 init_hsv_t: - 716 .stabd 46,0,0 - 54:color_hsv.c **** - 55:color_hsv.c **** hsv_t init_hsv_t(uint16_t hue, uint8_t sat, uint8_t val) { - 718 .LM45: - 719 .LFBB4: - 720 /* prologue: function */ - 721 /* frame size = 0 */ - 722 /* stack size = 0 */ - 723 .L__stack_usage = 0 - 724 0376 282F mov r18,r24 - 725 0378 862F mov r24,r22 - 56:color_hsv.c **** hsv_t tmp; - 57:color_hsv.c **** tmp.hue = hue; - 58:color_hsv.c **** tmp.sat = sat; - 59:color_hsv.c **** tmp.val = val; - 60:color_hsv.c **** - 61:color_hsv.c **** return tmp; - 62:color_hsv.c **** } - 727 .LM46: - 728 037a 622F mov r22,r18 - 729 037c 792F mov r23,r25 - 730 037e 942F mov r25,r20 - 731 0380 0895 ret - 733 .Lscope4: - 735 .stabd 78,0,0 - 737 .Letext0: - 738 .ident "GCC: (GNU) 4.9.2" -DEFINED SYMBOLS - *ABS*:0000000000000000 color_hsv.c - /tmp/cclIci1E.s:2 *ABS*:000000000000003e __SP_H__ - /tmp/cclIci1E.s:3 *ABS*:000000000000003d __SP_L__ - /tmp/cclIci1E.s:4 *ABS*:000000000000003f __SREG__ - /tmp/cclIci1E.s:5 *ABS*:0000000000000000 __tmp_reg__ - /tmp/cclIci1E.s:6 *ABS*:0000000000000001 __zero_reg__ - /tmp/cclIci1E.s:105 .text:0000000000000000 interpolate - /tmp/cclIci1E.s:330 .text:0000000000000136 hsv2rgb - /tmp/cclIci1E.s:643 .text:000000000000032c hsv2rgbList - /tmp/cclIci1E.s:715 .text:0000000000000376 init_hsv_t - -UNDEFINED SYMBOLS -__divmodhi4 -__floatunsisf -__divsf3 -__fixunssfsi -__floatsisf -__subsf3 -__mulsf3 -__tablejump2__ diff --git a/sketches/pendulum/color_hsv.o b/sketches/pendulum/color_hsv.o deleted file mode 100644 index 0f9b198125801f30d44c5b891ea1ca0ed411645c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8484 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 diff --git a/sketches/pendulum/pendulum.c b/sketches/pendulum/pendulum.c index 71b8934..d4f6647 100644 --- a/sketches/pendulum/pendulum.c +++ b/sketches/pendulum/pendulum.c @@ -32,16 +32,23 @@ uint16_t volatile max = HUE_MID; uint32_t volatile time = 0; uint32_t volatile T_half = 0; uint32_t volatile oldTime = 0; -uint32_t volatile cooldown = 0; +uint32_t volatile cooldown = 14000000; //~ uint32_t volatile delay = 0; // On External Interrupt: ISR(INT1_vect) { EIMSK &= 0xfd; // Disable INT1 + PORTC &= 0xef; // Turn LED off while INT1 disabled + //~ uint64_t time2 = TCNT2; + //~ uint64_t time1 = TCNT1; + //~ uint64_t time0 = TCNT0; + //~ T_half = time2 | (time1 << 9) | (time0 << 26); T_half = time + TCNT1; - //~ delay = T_half / 16; - cooldown = T_half / 2; + //~ delay = T_half / 16; //Delay for the next possible external interrupt + //~ cooldown = T_half / 2; + TCNT2 = 0; // Reset Timer/Counter2 TCNT1 = 0; // Reset Timer/Counter1 + TCNT0 = 0; // Reset Timer/Counter0 time = 0; oldTime = 0; PORTC ^= 0x02; @@ -50,7 +57,7 @@ ISR(INT1_vect) { //~ status = (status == 1 ? -1 : 1); } -// On Timer Overflow Interrupt: +//~ // On Timer Overflow Interrupt: ISR(TIMER1_OVF_vect) { time += 0x00010000; } @@ -67,18 +74,47 @@ int main(void) { TCCR1B |= 0x01; // Timer/Counter1 Control Register B // Prescale Factor 1 + SREG |= 0x80; // Status Register // Enable global interrupts DDRC = 0x3f; // Digital Direction PORTC[5:0] = output PORTC = 0x00; + // Timer concatenation + // Timer 2 (8 Bit, 50 ns) + //~ DDRB |= 0x08; // Digital Direction PORTB3 = output (PIN17 OC2A) + //~ PORTB |= 0x08; // POTRB3 = HIGH + //~ TCNT2 = 0x00; // Timer/Counter2 value register clear + //~ OCR2A = 0xff; // Timer/Counter2 output compare register A + //~ TIMSK2 |= 0x02; // Timer/Counter2 Interrupt Mask Register + //~ // Enable compare A match interrupt + //~ TCCR2A |= 0x40; // Timer/Counter2 Control Register A + //~ // Toggle OC2A on compare match + //~ TCCR2B |= 0x01; // Timer/Counter2 Control Register B + //~ // Prescale Factor 1 + //~ // Timer 1 (16 Bit, 25.55 µs) + //~ DDRB |= 0x02; // Digital Direction PORTB1 = output (PIN15 OC1A) + //~ PORTB |= 0x02; // POTRB1 = HIGH + //~ TCNT1 = 0x0000; // Timer/Counter1 value register clear + //~ OCR1A = 0xffff; // Timer/Counter1 output compare register A + //~ TIMSK1 |= 0x02; // Timer/Counter1 Interrupt Mask Register + //~ // Enable compare register A match interrupt + //~ TCCR1A |= 0x40; // Timer/Counter1 Control Register A + //~ // Toggle OC1A on compare match + //~ TCCR1B |= 0x07; // Timer/Counter1 Control Register B + //~ // External Clock Source on T1 (PIN11) on rising edge + //~ // Timer 0 (8 Bit, 3,34891515 s) + //~ TCNT0 = 0x00; // Timer/Counter0 value register clear + //~ TCCR0B |= 0x07; // Timer/Counter0 Control Register B + //~ // External clock source on T0 (PIN6, PD4) on rising edge + // Init color hsv_t colorsHSV[LEDS]; rgb_t colorsRGB[LEDS]; interpolate( init_hsv_t(min, HUE_SAT, HUE_VAL), // from color - init_hsv_t(max, HUE_SAT, HUE_VAL), // to color + init_hsv_t(max, HUE_SAT, HUE_VAL), // to color LEDS, colorsHSV ); @@ -93,14 +129,18 @@ int main(void) { min += sign * HUE_STEP; max -= sign * HUE_STEP; interpolate( - init_hsv_t(min, HUE_SAT, HUE_VAL),// from color - init_hsv_t(max, HUE_SAT, HUE_VAL), // to color + init_hsv_t(min, HUE_SAT, HUE_VAL), // from color + init_hsv_t(max, HUE_SAT, HUE_VAL), // to color LEDS, colorsHSV ); hsv2rgbList(colorsHSV, colorsRGB, LEDS); while(1) { + //~ uint64_t time2 = TCNT2; + //~ uint64_t time1 = TCNT1; + //~ uint64_t time0 = TCNT0; + //~ uint64_t now = time2 | (time1 << 9) | (time0 << 26); uint32_t now = time + TCNT1; //~ if(now > delay) { //~ PORTC |= 0x08; // PORTC3 = HIGH @@ -110,7 +150,8 @@ int main(void) { //~ } if(now > cooldown) { - EIMSK |= 0x02; // Enable INT1 + EIMSK |= 0x02; // Enable INT1 + PORTC |= 0x10; // Turn on LED while INT1 enabled } uint32_t T_step = T_half / colorSteps; @@ -120,11 +161,11 @@ int main(void) { oldTime += T_step; PORTC ^= 0x04; // Assign color - cli(); + //~ EIMSK &= 0xfd; //~ cli(); for(int i = 0; i < LEDS; i++) { writeRGB( colorsRGB[i].r, colorsRGB[i].g, colorsRGB[i].b); } - sei(); + //~ EIMSK |= 0x02; //~ sei(); //~ _delay_us(51); // Next color diff --git a/sketches/pendulum/pendulum.eep b/sketches/pendulum/pendulum.eep deleted file mode 100644 index 1996e8f..0000000 --- a/sketches/pendulum/pendulum.eep +++ /dev/null @@ -1 +0,0 @@ -:00000001FF diff --git a/sketches/pendulum/pendulum.elf b/sketches/pendulum/pendulum.elf deleted file mode 100755 index 4b90eb1d081a50ac1fbd7fa1b5c98343360f5568..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15764 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 VJ&K=}U)kQd62>m-gF&X-`(Ltr9NGW? diff --git a/sketches/pendulum/pendulum.hex b/sketches/pendulum/pendulum.hex deleted file mode 100644 index da2db86..0000000 --- a/sketches/pendulum/pendulum.hex +++ /dev/null @@ -1,216 +0,0 @@ -:100000000C943B000C9458000C945A000C9458002B -:100010000C9458000C9458000C9458000C94580000 -:100020000C9458000C9458000C9458000C945800F0 -:100030000C9458000C94B7000C9458000C94580081 -:100040000C9458000C9458000C9458000C945800D0 -:100050000C9458000C9458000C9458000C945800C0 -:100060000C9458000C945800AA02AE02B202B502D9 -:10007000B902BD02AA0211241FBECFEFD8E0DEBF35 -:10008000CDBF11E0A0E0B1E0E0E6FDE002C00590E8 -:100090000D92AA30B107D9F721E0AAE0B1E001C082 -:1000A0001D92AA31B207E1F70E9408030C94AE0634 -:1000B0000C9400001F920F920FB60F9211242F93F1 -:1000C0003F938F939F93AF93BF93EF93FF93E998E1 -:1000D0008091160190911701A0911801B09119011A -:1000E000E4E8F0E020813181820F931FA11DB11D52 -:1000F0008093120190931301A0931401B093150102 -:100100008091120190911301A0911401B0911501F9 -:10011000B695A7959795879580930A0190930B01C3 -:10012000A0930C01B0930D01118210821092160160 -:1001300010921701109218011092190110920E01DD -:1001400010920F01109210011092110198B182E0EB -:10015000892788B9FF91EF91BF91AF919F918F91BE -:100160003F912F910F900FBE0F901F9018951F92E7 -:100170000F920FB60F9211248F939F93AF93BF935B -:100180008091160190911701A0911801B091190169 -:1001900011968093160190931701A0931801B093C4 -:1001A0001901BF91AF919F918F910F900FBE0F904A -:1001B0001F901895409A00C000C000C0409800C031 -:1001C00000C000C000C000C000C000C00000089512 -:1001D000409A00C000C000C000C000C000C000C005 -:1001E000409800C000C000C000C00895AF92BF9208 -:1001F000CF92DF92EF92FF920F931F93CF93DF93F3 -:10020000C82EE42EC8E0D0E000E810E0A62EB12C05 -:10021000C8018A219B21892B19F00E94E80002C0A5 -:100220000E94DA0015950795219791F7C8E0D0E074 -:1002300000E810E0D12CC8018C219D21892B19F0F8 -:100240000E94E80002C00E94DA00159507952197E8 -:1002500091F7C8E0D0E000E810E0F12CC8018E2151 -:100260009F21892B19F00E94E80002C00E94DA0049 -:1002700015950795219791F7DF91CF911F910F91D8 -:10028000FF90EF90DF90CF90BF90AF9008952F92A6 -:100290003F924F925F926F927F928F929F92AF9216 -:1002A000BF92CF92DF92EF92FF920F931F93CF9363 -:1002B000DF93CDB7DEB72A970FB6F894DEBF0FBE37 -:1002C000CDBFD82EC92EF7010130110501F13B0138 -:1002D0002901461A570A842F90E0BC016D19710953 -:1002E0007E836D83852F90E09C012C19310938871E -:1002F0002F8333961A861986E12CF12C80E090E04A -:1003000020E030E0580141E0A41AB10805C0608344 -:100310007183828393833DC01C01240C351C4D8165 -:100320005E814E0D5F1D5A8349834F8158856985D3 -:100330007A85460F571F5C834B832017310749F19D -:100340004F0153E0851A9108B5010E948006660DA1 -:10035000771DD4016D937C934F01B1E08B1A910806 -:10036000C701B5010E9480066D0DD4016C9389858B -:100370009A85B5010E9480066C0D60832F5F3F4F08 -:1003800034964B815C815A874987E980FA80C101A4 -:10039000C3CF2A960FB6F894DEBF0FBECDBFDF9154 -:1003A000CF911F910F91FF90EF90DF90CF90BF9072 -:1003B000AF909F908F907F906F905F904F903F9005 -:1003C0002F9008952F923F924F925F926F927F925B -:1003D0008F929F92AF92BF92CF92DF92EF92FF9255 -:1003E0000F931F93CF93DF9300D000D0CDB7DEB72C -:1003F000FC01B2803380B11004C0232C3B823C82CC -:10040000C2C0FC0100811181B8010836F1E01F076C -:1004100010F06856714080E090E00E9485052B0145 -:100420003C01632D70E080E090E00E94850520E0B3 -:1004300030E048EC52E40E94E4046B017C016B2D37 -:1004400070E080E090E00E94850520E030E048EC1C -:1004500052E40E94E4044B015C0120E030E040E7FC -:1004600052E4C301B2010E94E4042B013C010E944A -:1004700056056A8370E080E090E00E9487059B014A -:10048000AC01C301B2010E9477042B013C01A5011C -:10049000940160E070E080E89FE30E9477049B0194 -:1004A000AC01C701B6010E94130620E030E040E035 -:1004B00053E40E9413060E945605262EA3019201C2 -:1004C000C501B4010E9413069B01AC0160E070E01D -:1004D00080E89FE30E9477049B01AC01C701B6014D -:1004E0000E94130620E030E040E053E40E9413062F -:1004F0000E9456056983A301920160E070E080E8E4 -:100500009FE30E9477049B01AC01C501B4010E94E6 -:1005100013069B01AC0160E070E080E89FE30E945D -:1005200077049B01AC01C701B6010E94130620E0CD -:1005300030E040E053E40E9413060E9456052A81F1 -:10054000822F90E087309105E8F4FC01EC5CFF4FCE -:100550000C9494062B826C83232C15C02B823C8236 -:10056000298011C06B833C820EC03B8289818C83C1 -:100570000AC03B822C82262E06C0E981EB832C82A6 -:10058000202E01C0212C622D7C818B810F900F9039 -:100590000F900F90DF91CF911F910F91FF90EF90EF -:1005A000DF90CF90BF90AF909F908F907F906F9093 -:1005B0005F904F903F902F900895CF92DF92EF92EF -:1005C000FF920F931F93CF93DF936A01EB017C019E -:1005D00000E010E00C151D0561F0C7010E94E2016A -:1005E0006993799389930F5F1F4F84E0E80EF11CA4 -:1005F000F1CFDF91CF911F910F91FF90EF90DF909E -:10060000CF900895282F862F622F792F942F089549 -:10061000CF93DF93CDB7DEB7C25DD1090FB6F894A3 -:10062000DEBF0FBECDBFE99A809169008C608093D8 -:10063000690080916F00816080936F0080918100DC -:100640008160809381008FB780688FBF8FE387B907 -:1006500018B8809100019091010144E164E60E9484 -:1006600002034B015C01809102019091030144E17E -:1006700064E60E9402039E012F5F3F4F79010EE165 -:1006800010E0A50194010E9447014EE150E0BE0137 -:1006900067587F4FC7010E94DD0249E7A42EB12CA5 -:1006A000AC0EBD1E32E0A30EB11C4E0185ED880ECE -:1006B000911C8501D8011197C8010297F80140816A -:1006C0006C91FC0180810E94F6000D5F1F4F0815A0 -:1006D000190581F78091020190910301089690938A -:1006E000030180930201809100019091010108971C -:1006F000909301018093000180910001909101018C -:1007000044E164E60E9402032B013C018091020156 -:100710009091030144E164E60E9402039E012F5F71 -:100720003F4F79010EE110E0A30192010E944701C1 -:100730004EE150E0BE0167587F4FC7010E94DD02C5 -:10074000DD24D39434E0C32E40911601509117015B -:100750006091180170911901809184009091850039 -:10076000480F591F611D711D80910A0190910B0165 -:10077000A0910C01B0910D0184179507A607B7074A -:1007800008F4E99A8091120190911301A09114014B -:10079000B091150125E0B695A795979587952A956F -:1007A000D1F700910E0110910F01209110013091AD -:1007B0001101080F191F2A1F3B1F041715072607D1 -:1007C000370710F640910E0150910F016091100112 -:1007D00070911101840F951FA61FB71F80930E0102 -:1007E00090930F01A0931001B093110188B18C2553 -:1007F00088B9F8948501D8011197C8010297F801CA -:1008000040816C91FC0180810E94F6000D5F1F4FBA -:100810000815190581F778948091020190910301E0 -:10082000FD2D28E0F202800D911D1124909303010B -:1008300080930201809100019091010138E0F30260 -:1008400080199109112490930101809300018091F6 -:1008500000019091010144E164E60E9402032B0132 -:100860003C01809102019091030144E164E60E9401 -:100870000203FE0131967F010EE110E0A301920117 -:100880000E9447014EE150E0BE0167587F4FC7010B -:100890000E94DD02F1E0DF1212C08091020190910E -:1008A00003018236924018F0DD24DA944DCF809116 -:1008B0000001909101018F359140B0F345CF8FEF4A -:1008C000D81611F0D12C40CF8091020190910301F4 -:1008D0008F35914018F4DD24D39436CF80910001F8 -:1008E000909101018236924008F42ECFF4CF5058F7 -:1008F000BB27AA270E948F040C94D9050E94CB0520 -:1009000038F00E94D20520F039F49F3F19F426F404 -:100910000C94C8050EF4E095E7FB0C94C205E92F92 -:100920000E94EA0558F3BA17620773078407950710 -:1009300020F079F4A6F50C940C060EF4E0950B2E3D -:10094000BA2FA02D0B01B90190010C01CA01A00121 -:100950001124FF27591B99F0593F50F4503E68F17C -:100960001A16F040A22F232F342F4427585FF3CFBD -:10097000469537952795A795F0405395C9F77EF48E -:100980001F16BA0B620B730B840BBAF09150A1F0D7 -:10099000FF0FBB1F661F771F881FC2F70EC0BA0F5D -:1009A000621F731F841F48F4879577956795B795E5 -:1009B000F7959E3F08F0B0CF9395880F08F09927E0 -:1009C000EE0F9795879508950E94F8040C94D90529 -:1009D0000E94D20558F00E94CB0540F029F45F3FF9 -:1009E00029F00C94C20551110C940D060C94C80505 -:1009F0000E94EA0568F39923B1F3552391F3951BFF -:100A0000550BBB27AA2762177307840738F09F5F2F -:100A10005F4F220F331F441FAA1FA9F335D00E2E9C -:100A20003AF0E0E832D091505040E695001CCAF709 -:100A30002BD0FE2F29D0660F771F881FBB1F2617CC -:100A400037074807AB07B0E809F0BB0B802DBF01A3 -:100A5000FF2793585F4F3AF09E3F510578F00C9472 -:100A6000C2050C940D065F3FE4F3983ED4F38695DF -:100A700077956795B795F7959F5FC9F7880F911D93 -:100A80009695879597F90895E1E0660F771F881F7F -:100A9000BB1F621773078407BA0720F0621B730B32 -:100AA000840BBA0BEE1F88F7E09508950E94F205BB -:100AB00088F09F5798F0B92F9927B751B0F0E1F01F -:100AC000660F771F881F991F1AF0BA95C9F714C0CF -:100AD000B13091F00E940C06B1E008950C940C0620 -:100AE000672F782F8827B85F39F0B93FCCF3869508 -:100AF00077956795B395D9F73EF490958095709565 -:100B000061957F4F8F4F9F4F0895E89409C097FBE1 -:100B10003EF490958095709561957F4F8F4F9F4FD4 -:100B20009923A9F0F92F96E9BB279395F695879518 -:100B300077956795B795F111F8CFFAF4BB0F11F4DB -:100B400060FF1BC06F5F7F4F8F4F9F4F16C0882382 -:100B500011F096E911C0772321F09EE8872F762FB8 -:100B600005C0662371F096E8862F70E060E02AF0F9 -:100B70009A95660F771F881FDAF7880F96958795E5 -:100B800097F9089597F99F6780E870E060E008950D -:100B90009FEF80EC089500240A9416161706180695 -:100BA0000906089500240A94121613061406050671 -:100BB0000895092E0394000C11F4882352F0BB0F02 -:100BC00040F4BF2B11F460FF04C06F5F7F4F8F4F65 -:100BD0009F4F089557FD9058440F551F59F05F3FA0 -:100BE00071F04795880F97FB991F61F09F3F79F04F -:100BF00087950895121613061406551FF2CF4695D1 -:100C0000F1DF08C0161617061806991FF1CF869552 -:100C10007105610508940895E894BB276627772736 -:100C2000CB0197F908950E9426060C94D9050E94DD -:100C3000CB0538F00E94D20520F0952311F00C94DA -:100C4000C2050C94C80511240C940D060E94EA05F7 -:100C500070F3959FC1F3950F50E0551F629FF0010F -:100C6000729FBB27F00DB11D639FAA27F00DB11D28 -:100C7000AA1F649F6627B00DA11D661F829F2227B1 -:100C8000B00DA11D621F739FB00DA11D621F839F38 -:100C9000A00D611D221F749F3327A00D611D231F0E -:100CA000849F600D211D822F762F6A2F11249F575C -:100CB00050409AF0F1F088234AF0EE0FFF1FBB1F5F -:100CC000661F771F881F91505040A9F79E3F51051E -:100CD00080F00C94C2050C940D065F3FE4F3983E3F -:100CE000D4F3869577956795B795F795E7959F5FC8 -:100CF000C1F7FE2B880F911D9695879597F908955A -:100D000097FB072E16F4009407D077FD09D00E94B8 -:100D10009A0607FC05D03EF4909581959F4F089563 -:100D2000709561957F4F0895EE0FFF1F0590F49128 -:100D3000E02D0994AA1BBB1B51E107C0AA1FBB1FD2 -:100D4000A617B70710F0A61BB70B881F991F5A9557 -:100D5000A9F780959095BC01CD010895F894FFCF37 -:0A0D6000E001E001012000000000A6 -:00000001FF diff --git a/sketches/pendulum/pendulum.lss b/sketches/pendulum/pendulum.lss deleted file mode 100644 index d13a71a..0000000 --- a/sketches/pendulum/pendulum.lss +++ /dev/null @@ -1,1929 +0,0 @@ - -pendulum.elf: Dateiformat elf32-avr - -Sektionen: -Idx Name Größe VMA LMA Datei-Off Ausr. - 0 .data 0000000a 00800100 00000d1e 00000db2 2**0 - CONTENTS, ALLOC, LOAD, DATA - 1 .text 00000d1e 00000000 00000000 00000094 2**1 - CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 0000000c 0080010a 0080010a 00000dbc 2**0 - ALLOC - 3 .stab 000010d4 00000000 00000000 00000dbc 2**2 - CONTENTS, READONLY, DEBUGGING - 4 .stabstr 00000f4b 00000000 00000000 00001e90 2**0 - CONTENTS, READONLY, DEBUGGING - 5 .comment 00000011 00000000 00000000 00002ddb 2**0 - CONTENTS, READONLY - 6 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 00002dec 2**2 - CONTENTS, READONLY - -Disassembly of section .text: - -00000000 <__vectors>: - 0: 0c 94 3b 00 jmp 0x76 ; 0x76 <__ctors_end> - 4: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 8: 0c 94 5a 00 jmp 0xb4 ; 0xb4 <__vector_2> - c: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 10: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 14: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 18: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 1c: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 20: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 24: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 28: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 2c: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 30: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 34: 0c 94 a3 00 jmp 0x146 ; 0x146 <__vector_13> - 38: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 3c: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 40: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 44: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 48: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 4c: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 50: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 54: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 58: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 5c: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 60: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 64: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 68: 96 02 muls r25, r22 - 6a: 9a 02 muls r25, r26 - 6c: 9e 02 muls r25, r30 - 6e: a1 02 muls r26, r17 - 70: a5 02 muls r26, r21 - 72: a9 02 muls r26, r25 - 74: 96 02 muls r25, r22 - -00000076 <__ctors_end>: - 76: 11 24 eor r1, r1 - 78: 1f be out 0x3f, r1 ; 63 - 7a: cf ef ldi r28, 0xFF ; 255 - 7c: d8 e0 ldi r29, 0x08 ; 8 - 7e: de bf out 0x3e, r29 ; 62 - 80: cd bf out 0x3d, r28 ; 61 - -00000082 <__do_copy_data>: - 82: 11 e0 ldi r17, 0x01 ; 1 - 84: a0 e0 ldi r26, 0x00 ; 0 - 86: b1 e0 ldi r27, 0x01 ; 1 - 88: ee e1 ldi r30, 0x1E ; 30 - 8a: fd e0 ldi r31, 0x0D ; 13 - 8c: 02 c0 rjmp .+4 ; 0x92 <__do_copy_data+0x10> - 8e: 05 90 lpm r0, Z+ - 90: 0d 92 st X+, r0 - 92: aa 30 cpi r26, 0x0A ; 10 - 94: b1 07 cpc r27, r17 - 96: d9 f7 brne .-10 ; 0x8e <__do_copy_data+0xc> - -00000098 <__do_clear_bss>: - 98: 21 e0 ldi r18, 0x01 ; 1 - 9a: aa e0 ldi r26, 0x0A ; 10 - 9c: b1 e0 ldi r27, 0x01 ; 1 - 9e: 01 c0 rjmp .+2 ; 0xa2 <.do_clear_bss_start> - -000000a0 <.do_clear_bss_loop>: - a0: 1d 92 st X+, r1 - -000000a2 <.do_clear_bss_start>: - a2: a6 31 cpi r26, 0x16 ; 22 - a4: b2 07 cpc r27, r18 - a6: e1 f7 brne .-8 ; 0xa0 <.do_clear_bss_loop> - a8: 0e 94 f4 02 call 0x5e8 ; 0x5e8
- ac: 0c 94 8d 06 jmp 0xd1a ; 0xd1a <_exit> - -000000b0 <__bad_interrupt>: - b0: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> - -000000b4 <__vector_2>: -uint32_t volatile time = 0; -uint32_t volatile T_half = 0; -uint32_t volatile oldTime = 0; - -// On External Interrupt: -ISR(INT1_vect) { - b4: 1f 92 push r1 - b6: 0f 92 push r0 - b8: 0f b6 in r0, 0x3f ; 63 - ba: 0f 92 push r0 - bc: 11 24 eor r1, r1 - be: 2f 93 push r18 - c0: 3f 93 push r19 - c2: 8f 93 push r24 - c4: 9f 93 push r25 - c6: af 93 push r26 - c8: bf 93 push r27 - ca: ef 93 push r30 - cc: ff 93 push r31 - cli(); - ce: f8 94 cli - T_half = time + TCNT1; - d0: 80 91 12 01 lds r24, 0x0112 - d4: 90 91 13 01 lds r25, 0x0113 - d8: a0 91 14 01 lds r26, 0x0114 - dc: b0 91 15 01 lds r27, 0x0115 - e0: e4 e8 ldi r30, 0x84 ; 132 - e2: f0 e0 ldi r31, 0x00 ; 0 - e4: 20 81 ld r18, Z - e6: 31 81 ldd r19, Z+1 ; 0x01 - e8: 82 0f add r24, r18 - ea: 93 1f adc r25, r19 - ec: a1 1d adc r26, r1 - ee: b1 1d adc r27, r1 - f0: 80 93 0e 01 sts 0x010E, r24 - f4: 90 93 0f 01 sts 0x010F, r25 - f8: a0 93 10 01 sts 0x0110, r26 - fc: b0 93 11 01 sts 0x0111, r27 - TCNT1 = 0; // Reset Timer/Counter1 - 100: 11 82 std Z+1, r1 ; 0x01 - 102: 10 82 st Z, r1 - time = 0; - 104: 10 92 12 01 sts 0x0112, r1 - 108: 10 92 13 01 sts 0x0113, r1 - 10c: 10 92 14 01 sts 0x0114, r1 - 110: 10 92 15 01 sts 0x0115, r1 - oldTime = 0; - 114: 10 92 0a 01 sts 0x010A, r1 - 118: 10 92 0b 01 sts 0x010B, r1 - 11c: 10 92 0c 01 sts 0x010C, r1 - 120: 10 92 0d 01 sts 0x010D, r1 - PORTC ^= 0x02; - 124: 98 b1 in r25, 0x08 ; 8 - 126: 82 e0 ldi r24, 0x02 ; 2 - 128: 89 27 eor r24, r25 - 12a: 88 b9 out 0x08, r24 ; 8 - //~ min = HUE_MID; - //~ max = HUE_MID; - //~ status = (status == 1 ? -1 : 1); -} - 12c: ff 91 pop r31 - 12e: ef 91 pop r30 - 130: bf 91 pop r27 - 132: af 91 pop r26 - 134: 9f 91 pop r25 - 136: 8f 91 pop r24 - 138: 3f 91 pop r19 - 13a: 2f 91 pop r18 - 13c: 0f 90 pop r0 - 13e: 0f be out 0x3f, r0 ; 63 - 140: 0f 90 pop r0 - 142: 1f 90 pop r1 - 144: 18 95 reti - -00000146 <__vector_13>: - -// On Timer Overflow Interrupt: -ISR(TIMER1_OVF_vect) { - 146: 1f 92 push r1 - 148: 0f 92 push r0 - 14a: 0f b6 in r0, 0x3f ; 63 - 14c: 0f 92 push r0 - 14e: 11 24 eor r1, r1 - 150: 8f 93 push r24 - 152: 9f 93 push r25 - 154: af 93 push r26 - 156: bf 93 push r27 - time += 0x00010000; - 158: 80 91 12 01 lds r24, 0x0112 - 15c: 90 91 13 01 lds r25, 0x0113 - 160: a0 91 14 01 lds r26, 0x0114 - 164: b0 91 15 01 lds r27, 0x0115 - 168: 11 96 adiw r26, 0x01 ; 1 - 16a: 80 93 12 01 sts 0x0112, r24 - 16e: 90 93 13 01 sts 0x0113, r25 - 172: a0 93 14 01 sts 0x0114, r26 - 176: b0 93 15 01 sts 0x0115, r27 -} - 17a: bf 91 pop r27 - 17c: af 91 pop r26 - 17e: 9f 91 pop r25 - 180: 8f 91 pop r24 - 182: 0f 90 pop r0 - 184: 0f be out 0x3f, r0 ; 63 - 186: 0f 90 pop r0 - 188: 1f 90 pop r1 - 18a: 18 95 reti - -0000018c : -#define wait14 wait8; wait6 -#define wait15 wait14; w_nop1 - -// WS2812B protocol -inline void writeZero() { - PORTC |= 0x01; // PORTC0 = 1, PORTC[5:1] = invariant - 18c: 40 9a sbi 0x08, 0 ; 8 - wait6; - 18e: 00 c0 rjmp .+0 ; 0x190 - 190: 00 c0 rjmp .+0 ; 0x192 - 192: 00 c0 rjmp .+0 ; 0x194 - PORTC &= 0xfe; // PORTC0 = 0, PORTC[5:1] = invariant - 194: 40 98 cbi 0x08, 0 ; 8 - wait15; - 196: 00 c0 rjmp .+0 ; 0x198 - 198: 00 c0 rjmp .+0 ; 0x19a - 19a: 00 c0 rjmp .+0 ; 0x19c - 19c: 00 c0 rjmp .+0 ; 0x19e - 19e: 00 c0 rjmp .+0 ; 0x1a0 - 1a0: 00 c0 rjmp .+0 ; 0x1a2 - 1a2: 00 c0 rjmp .+0 ; 0x1a4 - 1a4: 00 00 nop - 1a6: 08 95 ret - -000001a8 : -} - -// WS2812B protocol -inline void writeOne() { - PORTC |= 0x01; // PORTC0 = 1, PORTC[5:1] = invariant - 1a8: 40 9a sbi 0x08, 0 ; 8 - wait14; - 1aa: 00 c0 rjmp .+0 ; 0x1ac - 1ac: 00 c0 rjmp .+0 ; 0x1ae - 1ae: 00 c0 rjmp .+0 ; 0x1b0 - 1b0: 00 c0 rjmp .+0 ; 0x1b2 - 1b2: 00 c0 rjmp .+0 ; 0x1b4 - 1b4: 00 c0 rjmp .+0 ; 0x1b6 - 1b6: 00 c0 rjmp .+0 ; 0x1b8 - PORTC &= 0xfe; // PORTC0 = 0, PORTC[5:1] = invariant - 1b8: 40 98 cbi 0x08, 0 ; 8 - wait8; - 1ba: 00 c0 rjmp .+0 ; 0x1bc - 1bc: 00 c0 rjmp .+0 ; 0x1be - 1be: 00 c0 rjmp .+0 ; 0x1c0 - 1c0: 00 c0 rjmp .+0 ; 0x1c2 - 1c2: 08 95 ret - -000001c4 : -} - -inline void writeRGB(uint8_t red, uint8_t green, uint8_t blue) { - 1c4: af 92 push r10 - 1c6: bf 92 push r11 - 1c8: cf 92 push r12 - 1ca: df 92 push r13 - 1cc: ef 92 push r14 - 1ce: ff 92 push r15 - 1d0: 0f 93 push r16 - 1d2: 1f 93 push r17 - 1d4: cf 93 push r28 - 1d6: df 93 push r29 - 1d8: c8 2e mov r12, r24 - 1da: e4 2e mov r14, r20 - 1dc: c8 e0 ldi r28, 0x08 ; 8 - 1de: d0 e0 ldi r29, 0x00 ; 0 - int i; - - for( i = 128; i > 0; i >>= 1 ) { - 1e0: 00 e8 ldi r16, 0x80 ; 128 - 1e2: 10 e0 ldi r17, 0x00 ; 0 - if( green & i ){ - 1e4: a6 2e mov r10, r22 - 1e6: b1 2c mov r11, r1 - 1e8: c8 01 movw r24, r16 - 1ea: 8a 21 and r24, r10 - 1ec: 9b 21 and r25, r11 - 1ee: 89 2b or r24, r25 - 1f0: 19 f0 breq .+6 ; 0x1f8 - writeOne(); - 1f2: 0e 94 d4 00 call 0x1a8 ; 0x1a8 - 1f6: 02 c0 rjmp .+4 ; 0x1fc - } else { - writeZero(); - 1f8: 0e 94 c6 00 call 0x18c ; 0x18c -} - -inline void writeRGB(uint8_t red, uint8_t green, uint8_t blue) { - int i; - - for( i = 128; i > 0; i >>= 1 ) { - 1fc: 15 95 asr r17 - 1fe: 07 95 ror r16 - 200: 21 97 sbiw r28, 0x01 ; 1 - 202: 91 f7 brne .-28 ; 0x1e8 - 204: c8 e0 ldi r28, 0x08 ; 8 - 206: d0 e0 ldi r29, 0x00 ; 0 - 208: 00 e8 ldi r16, 0x80 ; 128 - 20a: 10 e0 ldi r17, 0x00 ; 0 - writeZero(); - } - } - - for( i = 128; i > 0; i >>= 1 ) { - if( red & i ){ - 20c: d1 2c mov r13, r1 - 20e: c8 01 movw r24, r16 - 210: 8c 21 and r24, r12 - 212: 9d 21 and r25, r13 - 214: 89 2b or r24, r25 - 216: 19 f0 breq .+6 ; 0x21e - writeOne(); - 218: 0e 94 d4 00 call 0x1a8 ; 0x1a8 - 21c: 02 c0 rjmp .+4 ; 0x222 - } else { - writeZero(); - 21e: 0e 94 c6 00 call 0x18c ; 0x18c - } else { - writeZero(); - } - } - - for( i = 128; i > 0; i >>= 1 ) { - 222: 15 95 asr r17 - 224: 07 95 ror r16 - 226: 21 97 sbiw r28, 0x01 ; 1 - 228: 91 f7 brne .-28 ; 0x20e - 22a: c8 e0 ldi r28, 0x08 ; 8 - 22c: d0 e0 ldi r29, 0x00 ; 0 - 22e: 00 e8 ldi r16, 0x80 ; 128 - 230: 10 e0 ldi r17, 0x00 ; 0 - writeZero(); - } - } - - for( i = 128; i > 0; i >>= 1 ) { - if( blue & i ){ - 232: f1 2c mov r15, r1 - 234: c8 01 movw r24, r16 - 236: 8e 21 and r24, r14 - 238: 9f 21 and r25, r15 - 23a: 89 2b or r24, r25 - 23c: 19 f0 breq .+6 ; 0x244 - writeOne(); - 23e: 0e 94 d4 00 call 0x1a8 ; 0x1a8 - 242: 02 c0 rjmp .+4 ; 0x248 - } else { - writeZero(); - 244: 0e 94 c6 00 call 0x18c ; 0x18c - } else { - writeZero(); - } - } - - for( i = 128; i > 0; i >>= 1 ) { - 248: 15 95 asr r17 - 24a: 07 95 ror r16 - 24c: 21 97 sbiw r28, 0x01 ; 1 - 24e: 91 f7 brne .-28 ; 0x234 - writeOne(); - } else { - writeZero(); - } - } -} - 250: df 91 pop r29 - 252: cf 91 pop r28 - 254: 1f 91 pop r17 - 256: 0f 91 pop r16 - 258: ff 90 pop r15 - 25a: ef 90 pop r14 - 25c: df 90 pop r13 - 25e: cf 90 pop r12 - 260: bf 90 pop r11 - 262: af 90 pop r10 - 264: 08 95 ret - -00000266 : -#include "color_hsv.h" - -void interpolate(hsv_t start, hsv_t end, size_t steps, hsv_t *colors) { - 266: 2f 92 push r2 - 268: 3f 92 push r3 - 26a: 4f 92 push r4 - 26c: 5f 92 push r5 - 26e: 6f 92 push r6 - 270: 7f 92 push r7 - 272: 8f 92 push r8 - 274: 9f 92 push r9 - 276: af 92 push r10 - 278: bf 92 push r11 - 27a: cf 92 push r12 - 27c: df 92 push r13 - 27e: ef 92 push r14 - 280: ff 92 push r15 - 282: 0f 93 push r16 - 284: 1f 93 push r17 - 286: cf 93 push r28 - 288: df 93 push r29 - 28a: cd b7 in r28, 0x3d ; 61 - 28c: de b7 in r29, 0x3e ; 62 - 28e: 2a 97 sbiw r28, 0x0a ; 10 - 290: 0f b6 in r0, 0x3f ; 63 - 292: f8 94 cli - 294: de bf out 0x3e, r29 ; 62 - 296: 0f be out 0x3f, r0 ; 63 - 298: cd bf out 0x3d, r28 ; 61 - 29a: d8 2e mov r13, r24 - 29c: c9 2e mov r12, r25 - 29e: f7 01 movw r30, r14 - if( steps == 1 ) { - 2a0: 01 30 cpi r16, 0x01 ; 1 - 2a2: 11 05 cpc r17, r1 - 2a4: 01 f1 breq .+64 ; 0x2e6 - return; - } - - for( size_t i = 0; i < steps; i++ ) { - hsv_t tmp; - tmp.hue = (uint16_t)((int16_t)start.hue + ((int16_t)end.hue - (int16_t)start.hue) * (int16_t)i / ((int16_t)steps-1)); - 2a6: 3b 01 movw r6, r22 - 2a8: 29 01 movw r4, r18 - 2aa: 46 1a sub r4, r22 - 2ac: 57 0a sbc r5, r23 - 2ae: 84 2f mov r24, r20 - 2b0: 90 e0 ldi r25, 0x00 ; 0 - tmp.sat = (uint8_t)((int16_t)start.sat + ((int16_t)end.sat - (int16_t)start.sat) * (int16_t)i / ((int16_t)steps-1)); - 2b2: bc 01 movw r22, r24 - 2b4: 6d 19 sub r22, r13 - 2b6: 71 09 sbc r23, r1 - 2b8: 7e 83 std Y+6, r23 ; 0x06 - 2ba: 6d 83 std Y+5, r22 ; 0x05 - 2bc: 85 2f mov r24, r21 - 2be: 90 e0 ldi r25, 0x00 ; 0 - tmp.val = (uint8_t)((int16_t)start.val + ((int16_t)end.val - (int16_t)start.val) * (int16_t)i / ((int16_t)steps-1)); - 2c0: 9c 01 movw r18, r24 - 2c2: 2c 19 sub r18, r12 - 2c4: 31 09 sbc r19, r1 - 2c6: 38 87 std Y+8, r19 ; 0x08 - 2c8: 2f 83 std Y+7, r18 ; 0x07 - 2ca: 33 96 adiw r30, 0x03 ; 3 - 2cc: 1a 86 std Y+10, r1 ; 0x0a - 2ce: 19 86 std Y+9, r1 ; 0x09 - 2d0: e1 2c mov r14, r1 - 2d2: f1 2c mov r15, r1 - 2d4: 80 e0 ldi r24, 0x00 ; 0 - 2d6: 90 e0 ldi r25, 0x00 ; 0 - 2d8: 20 e0 ldi r18, 0x00 ; 0 - 2da: 30 e0 ldi r19, 0x00 ; 0 - return; - } - - for( size_t i = 0; i < steps; i++ ) { - hsv_t tmp; - tmp.hue = (uint16_t)((int16_t)start.hue + ((int16_t)end.hue - (int16_t)start.hue) * (int16_t)i / ((int16_t)steps-1)); - 2dc: 58 01 movw r10, r16 - 2de: 41 e0 ldi r20, 0x01 ; 1 - 2e0: a4 1a sub r10, r20 - 2e2: b1 08 sbc r11, r1 - 2e4: 05 c0 rjmp .+10 ; 0x2f0 -#include "color_hsv.h" - -void interpolate(hsv_t start, hsv_t end, size_t steps, hsv_t *colors) { - if( steps == 1 ) { - colors[0] = start; - 2e6: 60 83 st Z, r22 - 2e8: 71 83 std Z+1, r23 ; 0x01 - 2ea: 82 83 std Z+2, r24 ; 0x02 - 2ec: 93 83 std Z+3, r25 ; 0x03 - return; - 2ee: 3d c0 rjmp .+122 ; 0x36a - 2f0: 1c 01 movw r2, r24 - 2f2: 24 0c add r2, r4 - 2f4: 35 1c adc r3, r5 - 2f6: 4d 81 ldd r20, Y+5 ; 0x05 - 2f8: 5e 81 ldd r21, Y+6 ; 0x06 - 2fa: 4e 0d add r20, r14 - 2fc: 5f 1d adc r21, r15 - 2fe: 5a 83 std Y+2, r21 ; 0x02 - 300: 49 83 std Y+1, r20 ; 0x01 - 302: 4f 81 ldd r20, Y+7 ; 0x07 - 304: 58 85 ldd r21, Y+8 ; 0x08 - 306: 69 85 ldd r22, Y+9 ; 0x09 - 308: 7a 85 ldd r23, Y+10 ; 0x0a - 30a: 46 0f add r20, r22 - 30c: 57 1f adc r21, r23 - 30e: 5c 83 std Y+4, r21 ; 0x04 - 310: 4b 83 std Y+3, r20 ; 0x03 - } - - for( size_t i = 0; i < steps; i++ ) { - 312: 20 17 cp r18, r16 - 314: 31 07 cpc r19, r17 - 316: 49 f1 breq .+82 ; 0x36a - 318: 4f 01 movw r8, r30 - 31a: 53 e0 ldi r21, 0x03 ; 3 - 31c: 85 1a sub r8, r21 - 31e: 91 08 sbc r9, r1 - hsv_t tmp; - tmp.hue = (uint16_t)((int16_t)start.hue + ((int16_t)end.hue - (int16_t)start.hue) * (int16_t)i / ((int16_t)steps-1)); - 320: b5 01 movw r22, r10 - 322: 0e 94 5f 06 call 0xcbe ; 0xcbe <__divmodhi4> - 326: 66 0d add r22, r6 - 328: 77 1d adc r23, r7 - tmp.sat = (uint8_t)((int16_t)start.sat + ((int16_t)end.sat - (int16_t)start.sat) * (int16_t)i / ((int16_t)steps-1)); - tmp.val = (uint8_t)((int16_t)start.val + ((int16_t)end.val - (int16_t)start.val) * (int16_t)i / ((int16_t)steps-1)); - colors[i] = tmp; - 32a: d4 01 movw r26, r8 - 32c: 6d 93 st X+, r22 - 32e: 7c 93 st X, r23 - 330: 4f 01 movw r8, r30 - 332: b1 e0 ldi r27, 0x01 ; 1 - 334: 8b 1a sub r8, r27 - 336: 91 08 sbc r9, r1 - } - - for( size_t i = 0; i < steps; i++ ) { - hsv_t tmp; - tmp.hue = (uint16_t)((int16_t)start.hue + ((int16_t)end.hue - (int16_t)start.hue) * (int16_t)i / ((int16_t)steps-1)); - tmp.sat = (uint8_t)((int16_t)start.sat + ((int16_t)end.sat - (int16_t)start.sat) * (int16_t)i / ((int16_t)steps-1)); - 338: c7 01 movw r24, r14 - 33a: b5 01 movw r22, r10 - 33c: 0e 94 5f 06 call 0xcbe ; 0xcbe <__divmodhi4> - 340: 6d 0d add r22, r13 - tmp.val = (uint8_t)((int16_t)start.val + ((int16_t)end.val - (int16_t)start.val) * (int16_t)i / ((int16_t)steps-1)); - colors[i] = tmp; - 342: d4 01 movw r26, r8 - 344: 6c 93 st X, r22 - - for( size_t i = 0; i < steps; i++ ) { - hsv_t tmp; - tmp.hue = (uint16_t)((int16_t)start.hue + ((int16_t)end.hue - (int16_t)start.hue) * (int16_t)i / ((int16_t)steps-1)); - tmp.sat = (uint8_t)((int16_t)start.sat + ((int16_t)end.sat - (int16_t)start.sat) * (int16_t)i / ((int16_t)steps-1)); - tmp.val = (uint8_t)((int16_t)start.val + ((int16_t)end.val - (int16_t)start.val) * (int16_t)i / ((int16_t)steps-1)); - 346: 89 85 ldd r24, Y+9 ; 0x09 - 348: 9a 85 ldd r25, Y+10 ; 0x0a - 34a: b5 01 movw r22, r10 - 34c: 0e 94 5f 06 call 0xcbe ; 0xcbe <__divmodhi4> - 350: 6c 0d add r22, r12 - colors[i] = tmp; - 352: 60 83 st Z, r22 - if( steps == 1 ) { - colors[0] = start; - return; - } - - for( size_t i = 0; i < steps; i++ ) { - 354: 2f 5f subi r18, 0xFF ; 255 - 356: 3f 4f sbci r19, 0xFF ; 255 - 358: 34 96 adiw r30, 0x04 ; 4 - 35a: 4b 81 ldd r20, Y+3 ; 0x03 - 35c: 5c 81 ldd r21, Y+4 ; 0x04 - 35e: 5a 87 std Y+10, r21 ; 0x0a - 360: 49 87 std Y+9, r20 ; 0x09 - 362: e9 80 ldd r14, Y+1 ; 0x01 - 364: fa 80 ldd r15, Y+2 ; 0x02 - 366: c1 01 movw r24, r2 - 368: c3 cf rjmp .-122 ; 0x2f0 - tmp.hue = (uint16_t)((int16_t)start.hue + ((int16_t)end.hue - (int16_t)start.hue) * (int16_t)i / ((int16_t)steps-1)); - tmp.sat = (uint8_t)((int16_t)start.sat + ((int16_t)end.sat - (int16_t)start.sat) * (int16_t)i / ((int16_t)steps-1)); - tmp.val = (uint8_t)((int16_t)start.val + ((int16_t)end.val - (int16_t)start.val) * (int16_t)i / ((int16_t)steps-1)); - colors[i] = tmp; - } -} - 36a: 2a 96 adiw r28, 0x0a ; 10 - 36c: 0f b6 in r0, 0x3f ; 63 - 36e: f8 94 cli - 370: de bf out 0x3e, r29 ; 62 - 372: 0f be out 0x3f, r0 ; 63 - 374: cd bf out 0x3d, r28 ; 61 - 376: df 91 pop r29 - 378: cf 91 pop r28 - 37a: 1f 91 pop r17 - 37c: 0f 91 pop r16 - 37e: ff 90 pop r15 - 380: ef 90 pop r14 - 382: df 90 pop r13 - 384: cf 90 pop r12 - 386: bf 90 pop r11 - 388: af 90 pop r10 - 38a: 9f 90 pop r9 - 38c: 8f 90 pop r8 - 38e: 7f 90 pop r7 - 390: 6f 90 pop r6 - 392: 5f 90 pop r5 - 394: 4f 90 pop r4 - 396: 3f 90 pop r3 - 398: 2f 90 pop r2 - 39a: 08 95 ret - -0000039c : - for(size_t i = 0; i < count; ++i) { - rgbList[i] = hsv2rgb(&hsvList[i]); - } -} - -rgb_t hsv2rgb(hsv_t* hsv) { - 39c: 2f 92 push r2 - 39e: 3f 92 push r3 - 3a0: 4f 92 push r4 - 3a2: 5f 92 push r5 - 3a4: 6f 92 push r6 - 3a6: 7f 92 push r7 - 3a8: 8f 92 push r8 - 3aa: 9f 92 push r9 - 3ac: af 92 push r10 - 3ae: bf 92 push r11 - 3b0: cf 92 push r12 - 3b2: df 92 push r13 - 3b4: ef 92 push r14 - 3b6: ff 92 push r15 - 3b8: 0f 93 push r16 - 3ba: 1f 93 push r17 - 3bc: cf 93 push r28 - 3be: df 93 push r29 - 3c0: 00 d0 rcall .+0 ; 0x3c2 - 3c2: 00 d0 rcall .+0 ; 0x3c4 - 3c4: cd b7 in r28, 0x3d ; 61 - 3c6: de b7 in r29, 0x3e ; 62 - rgb_t res; - - if(hsv->sat == 0) { - 3c8: fc 01 movw r30, r24 - 3ca: b2 80 ldd r11, Z+2 ; 0x02 - 3cc: 33 80 ldd r3, Z+3 ; 0x03 - 3ce: b1 10 cpse r11, r1 - 3d0: 04 c0 rjmp .+8 ; 0x3da - res.r = res.g = res.b = hsv->val; - 3d2: 23 2c mov r2, r3 - 3d4: 3b 82 std Y+3, r3 ; 0x03 - 3d6: 3c 82 std Y+4, r3 ; 0x04 - 3d8: c2 c0 rjmp .+388 ; 0x55e - 3da: fc 01 movw r30, r24 - } else { - float hue = (float) (hsv->hue<360?hsv->hue:hsv->hue-360); - 3dc: 00 81 ld r16, Z - 3de: 11 81 ldd r17, Z+1 ; 0x01 - 3e0: b8 01 movw r22, r16 - 3e2: 08 36 cpi r16, 0x68 ; 104 - 3e4: f1 e0 ldi r31, 0x01 ; 1 - 3e6: 1f 07 cpc r17, r31 - 3e8: 10 f0 brcs .+4 ; 0x3ee - 3ea: 68 56 subi r22, 0x68 ; 104 - 3ec: 71 40 sbci r23, 0x01 ; 1 - 3ee: 80 e0 ldi r24, 0x00 ; 0 - 3f0: 90 e0 ldi r25, 0x00 ; 0 - 3f2: 0e 94 64 05 call 0xac8 ; 0xac8 <__floatunsisf> - 3f6: 2b 01 movw r4, r22 - 3f8: 3c 01 movw r6, r24 - float val = ((float) hsv->val ) / 100.0; - 3fa: 63 2d mov r22, r3 - 3fc: 70 e0 ldi r23, 0x00 ; 0 - 3fe: 80 e0 ldi r24, 0x00 ; 0 - 400: 90 e0 ldi r25, 0x00 ; 0 - 402: 0e 94 64 05 call 0xac8 ; 0xac8 <__floatunsisf> - 406: 20 e0 ldi r18, 0x00 ; 0 - 408: 30 e0 ldi r19, 0x00 ; 0 - 40a: 48 ec ldi r20, 0xC8 ; 200 - 40c: 52 e4 ldi r21, 0x42 ; 66 - 40e: 0e 94 c3 04 call 0x986 ; 0x986 <__divsf3> - 412: 6b 01 movw r12, r22 - 414: 7c 01 movw r14, r24 - float sat = ((float) hsv->sat ) / 100.0; - 416: 6b 2d mov r22, r11 - 418: 70 e0 ldi r23, 0x00 ; 0 - 41a: 80 e0 ldi r24, 0x00 ; 0 - 41c: 90 e0 ldi r25, 0x00 ; 0 - 41e: 0e 94 64 05 call 0xac8 ; 0xac8 <__floatunsisf> - 422: 20 e0 ldi r18, 0x00 ; 0 - 424: 30 e0 ldi r19, 0x00 ; 0 - 426: 48 ec ldi r20, 0xC8 ; 200 - 428: 52 e4 ldi r21, 0x42 ; 66 - 42a: 0e 94 c3 04 call 0x986 ; 0x986 <__divsf3> - 42e: 4b 01 movw r8, r22 - 430: 5c 01 movw r10, r24 - - uint8_t h = hue / 60; - 432: 20 e0 ldi r18, 0x00 ; 0 - 434: 30 e0 ldi r19, 0x00 ; 0 - 436: 40 e7 ldi r20, 0x70 ; 112 - 438: 52 e4 ldi r21, 0x42 ; 66 - 43a: c3 01 movw r24, r6 - 43c: b2 01 movw r22, r4 - 43e: 0e 94 c3 04 call 0x986 ; 0x986 <__divsf3> - 442: 2b 01 movw r4, r22 - 444: 3c 01 movw r6, r24 - 446: 0e 94 35 05 call 0xa6a ; 0xa6a <__fixunssfsi> - 44a: 6a 83 std Y+2, r22 ; 0x02 - float f = ( hue / 60 ) - h; - 44c: 70 e0 ldi r23, 0x00 ; 0 - 44e: 80 e0 ldi r24, 0x00 ; 0 - 450: 90 e0 ldi r25, 0x00 ; 0 - 452: 0e 94 66 05 call 0xacc ; 0xacc <__floatsisf> - 456: 9b 01 movw r18, r22 - 458: ac 01 movw r20, r24 - 45a: c3 01 movw r24, r6 - 45c: b2 01 movw r22, r4 - 45e: 0e 94 56 04 call 0x8ac ; 0x8ac <__subsf3> - 462: 2b 01 movw r4, r22 - 464: 3c 01 movw r6, r24 - - uint8_t p = RGB_MAX * ( val * ( 1 - sat )); - 466: a5 01 movw r20, r10 - 468: 94 01 movw r18, r8 - 46a: 60 e0 ldi r22, 0x00 ; 0 - 46c: 70 e0 ldi r23, 0x00 ; 0 - 46e: 80 e8 ldi r24, 0x80 ; 128 - 470: 9f e3 ldi r25, 0x3F ; 63 - 472: 0e 94 56 04 call 0x8ac ; 0x8ac <__subsf3> - 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 f2 05 call 0xbe4 ; 0xbe4 <__mulsf3> - 482: 20 e0 ldi r18, 0x00 ; 0 - 484: 30 e0 ldi r19, 0x00 ; 0 - 486: 40 e0 ldi r20, 0x00 ; 0 - 488: 53 e4 ldi r21, 0x43 ; 67 - 48a: 0e 94 f2 05 call 0xbe4 ; 0xbe4 <__mulsf3> - 48e: 0e 94 35 05 call 0xa6a ; 0xa6a <__fixunssfsi> - 492: 26 2e mov r2, r22 - uint8_t q = RGB_MAX * ( val * ( 1 - sat * f )); - 494: a3 01 movw r20, r6 - 496: 92 01 movw r18, r4 - 498: c5 01 movw r24, r10 - 49a: b4 01 movw r22, r8 - 49c: 0e 94 f2 05 call 0xbe4 ; 0xbe4 <__mulsf3> - 4a0: 9b 01 movw r18, r22 - 4a2: ac 01 movw r20, r24 - 4a4: 60 e0 ldi r22, 0x00 ; 0 - 4a6: 70 e0 ldi r23, 0x00 ; 0 - 4a8: 80 e8 ldi r24, 0x80 ; 128 - 4aa: 9f e3 ldi r25, 0x3F ; 63 - 4ac: 0e 94 56 04 call 0x8ac ; 0x8ac <__subsf3> - 4b0: 9b 01 movw r18, r22 - 4b2: ac 01 movw r20, r24 - 4b4: c7 01 movw r24, r14 - 4b6: b6 01 movw r22, r12 - 4b8: 0e 94 f2 05 call 0xbe4 ; 0xbe4 <__mulsf3> - 4bc: 20 e0 ldi r18, 0x00 ; 0 - 4be: 30 e0 ldi r19, 0x00 ; 0 - 4c0: 40 e0 ldi r20, 0x00 ; 0 - 4c2: 53 e4 ldi r21, 0x43 ; 67 - 4c4: 0e 94 f2 05 call 0xbe4 ; 0xbe4 <__mulsf3> - 4c8: 0e 94 35 05 call 0xa6a ; 0xa6a <__fixunssfsi> - 4cc: 69 83 std Y+1, r22 ; 0x01 - uint8_t t = RGB_MAX * ( val * ( 1 - sat * ( 1 - f ))); - 4ce: a3 01 movw r20, r6 - 4d0: 92 01 movw r18, r4 - 4d2: 60 e0 ldi r22, 0x00 ; 0 - 4d4: 70 e0 ldi r23, 0x00 ; 0 - 4d6: 80 e8 ldi r24, 0x80 ; 128 - 4d8: 9f e3 ldi r25, 0x3F ; 63 - 4da: 0e 94 56 04 call 0x8ac ; 0x8ac <__subsf3> - 4de: 9b 01 movw r18, r22 - 4e0: ac 01 movw r20, r24 - 4e2: c5 01 movw r24, r10 - 4e4: b4 01 movw r22, r8 - 4e6: 0e 94 f2 05 call 0xbe4 ; 0xbe4 <__mulsf3> - 4ea: 9b 01 movw r18, r22 - 4ec: ac 01 movw r20, r24 - 4ee: 60 e0 ldi r22, 0x00 ; 0 - 4f0: 70 e0 ldi r23, 0x00 ; 0 - 4f2: 80 e8 ldi r24, 0x80 ; 128 - 4f4: 9f e3 ldi r25, 0x3F ; 63 - 4f6: 0e 94 56 04 call 0x8ac ; 0x8ac <__subsf3> - 4fa: 9b 01 movw r18, r22 - 4fc: ac 01 movw r20, r24 - 4fe: c7 01 movw r24, r14 - 500: b6 01 movw r22, r12 - 502: 0e 94 f2 05 call 0xbe4 ; 0xbe4 <__mulsf3> - 506: 20 e0 ldi r18, 0x00 ; 0 - 508: 30 e0 ldi r19, 0x00 ; 0 - 50a: 40 e0 ldi r20, 0x00 ; 0 - 50c: 53 e4 ldi r21, 0x43 ; 67 - 50e: 0e 94 f2 05 call 0xbe4 ; 0xbe4 <__mulsf3> - 512: 0e 94 35 05 call 0xa6a ; 0xa6a <__fixunssfsi> - - switch(h) { - 516: 2a 81 ldd r18, Y+2 ; 0x02 - 518: 82 2f mov r24, r18 - 51a: 90 e0 ldi r25, 0x00 ; 0 - 51c: 87 30 cpi r24, 0x07 ; 7 - 51e: 91 05 cpc r25, r1 - 520: e8 f4 brcc .+58 ; 0x55c - 522: fc 01 movw r30, r24 - 524: ec 5c subi r30, 0xCC ; 204 - 526: ff 4f sbci r31, 0xFF ; 255 - 528: 0c 94 73 06 jmp 0xce6 ; 0xce6 <__tablejump2__> - case 0: - case 6: res.r = hsv->val; res.g = t; res.b = p; break; - 52c: 2b 82 std Y+3, r2 ; 0x03 - 52e: 6c 83 std Y+4, r22 ; 0x04 - 530: 23 2c mov r2, r3 - 532: 15 c0 rjmp .+42 ; 0x55e - case 1: res.r = q; res.g = hsv->val; res.b = p; break; - 534: 2b 82 std Y+3, r2 ; 0x03 - 536: 3c 82 std Y+4, r3 ; 0x04 - 538: 29 80 ldd r2, Y+1 ; 0x01 - 53a: 11 c0 rjmp .+34 ; 0x55e - case 2: res.r = p; res.g = hsv->val; res.b = t; break; - 53c: 6b 83 std Y+3, r22 ; 0x03 - 53e: 3c 82 std Y+4, r3 ; 0x04 - 540: 0e c0 rjmp .+28 ; 0x55e - case 3: res.r = p; res.g = q; res.b = hsv->val; break; - 542: 3b 82 std Y+3, r3 ; 0x03 - 544: 89 81 ldd r24, Y+1 ; 0x01 - 546: 8c 83 std Y+4, r24 ; 0x04 - 548: 0a c0 rjmp .+20 ; 0x55e - case 4: res.r = t; res.g = p; res.b = hsv->val; break; - 54a: 3b 82 std Y+3, r3 ; 0x03 - 54c: 2c 82 std Y+4, r2 ; 0x04 - 54e: 26 2e mov r2, r22 - 550: 06 c0 rjmp .+12 ; 0x55e - case 5: res.r = hsv->hue; res.g = p; res.b = q; break; - 552: e9 81 ldd r30, Y+1 ; 0x01 - 554: eb 83 std Y+3, r30 ; 0x03 - 556: 2c 82 std Y+4, r2 ; 0x04 - 558: 20 2e mov r2, r16 - 55a: 01 c0 rjmp .+2 ; 0x55e - - uint8_t p = RGB_MAX * ( val * ( 1 - sat )); - uint8_t q = RGB_MAX * ( val * ( 1 - sat * f )); - uint8_t t = RGB_MAX * ( val * ( 1 - sat * ( 1 - f ))); - - switch(h) { - 55c: 21 2c mov r2, r1 - case 5: res.r = hsv->hue; res.g = p; res.b = q; break; - - } - } - return res; -} - 55e: 62 2d mov r22, r2 - 560: 7c 81 ldd r23, Y+4 ; 0x04 - 562: 8b 81 ldd r24, Y+3 ; 0x03 - 564: 0f 90 pop r0 - 566: 0f 90 pop r0 - 568: 0f 90 pop r0 - 56a: 0f 90 pop r0 - 56c: df 91 pop r29 - 56e: cf 91 pop r28 - 570: 1f 91 pop r17 - 572: 0f 91 pop r16 - 574: ff 90 pop r15 - 576: ef 90 pop r14 - 578: df 90 pop r13 - 57a: cf 90 pop r12 - 57c: bf 90 pop r11 - 57e: af 90 pop r10 - 580: 9f 90 pop r9 - 582: 8f 90 pop r8 - 584: 7f 90 pop r7 - 586: 6f 90 pop r6 - 588: 5f 90 pop r5 - 58a: 4f 90 pop r4 - 58c: 3f 90 pop r3 - 58e: 2f 90 pop r2 - 590: 08 95 ret - -00000592 : - tmp.val = (uint8_t)((int16_t)start.val + ((int16_t)end.val - (int16_t)start.val) * (int16_t)i / ((int16_t)steps-1)); - colors[i] = tmp; - } -} - -void hsv2rgbList(hsv_t* hsvList, rgb_t* rgbList, size_t count) { - 592: cf 92 push r12 - 594: df 92 push r13 - 596: ef 92 push r14 - 598: ff 92 push r15 - 59a: 0f 93 push r16 - 59c: 1f 93 push r17 - 59e: cf 93 push r28 - 5a0: df 93 push r29 - 5a2: 6a 01 movw r12, r20 - 5a4: eb 01 movw r28, r22 - 5a6: 7c 01 movw r14, r24 - for(size_t i = 0; i < count; ++i) { - 5a8: 00 e0 ldi r16, 0x00 ; 0 - 5aa: 10 e0 ldi r17, 0x00 ; 0 - 5ac: 0c 15 cp r16, r12 - 5ae: 1d 05 cpc r17, r13 - 5b0: 61 f0 breq .+24 ; 0x5ca - rgbList[i] = hsv2rgb(&hsvList[i]); - 5b2: c7 01 movw r24, r14 - 5b4: 0e 94 ce 01 call 0x39c ; 0x39c - 5b8: 69 93 st Y+, r22 - 5ba: 79 93 st Y+, r23 - 5bc: 89 93 st Y+, r24 - colors[i] = tmp; - } -} - -void hsv2rgbList(hsv_t* hsvList, rgb_t* rgbList, size_t count) { - for(size_t i = 0; i < count; ++i) { - 5be: 0f 5f subi r16, 0xFF ; 255 - 5c0: 1f 4f sbci r17, 0xFF ; 255 - 5c2: 84 e0 ldi r24, 0x04 ; 4 - 5c4: e8 0e add r14, r24 - 5c6: f1 1c adc r15, r1 - 5c8: f1 cf rjmp .-30 ; 0x5ac - rgbList[i] = hsv2rgb(&hsvList[i]); - } -} - 5ca: df 91 pop r29 - 5cc: cf 91 pop r28 - 5ce: 1f 91 pop r17 - 5d0: 0f 91 pop r16 - 5d2: ff 90 pop r15 - 5d4: ef 90 pop r14 - 5d6: df 90 pop r13 - 5d8: cf 90 pop r12 - 5da: 08 95 ret - -000005dc : - 5dc: 28 2f mov r18, r24 - 5de: 86 2f mov r24, r22 - 5e0: 62 2f mov r22, r18 - 5e2: 79 2f mov r23, r25 - 5e4: 94 2f mov r25, r20 - 5e6: 08 95 ret - -000005e8
: -// On Timer Overflow Interrupt: -ISR(TIMER1_OVF_vect) { - time += 0x00010000; -} - -int main(void) { - 5e8: cf 93 push r28 - 5ea: df 93 push r29 - 5ec: cd b7 in r28, 0x3d ; 61 - 5ee: de b7 in r29, 0x3e ; 62 - 5f0: c2 5d subi r28, 0xD2 ; 210 - 5f2: d1 09 sbc r29, r1 - 5f4: 0f b6 in r0, 0x3f ; 63 - 5f6: f8 94 cli - 5f8: de bf out 0x3e, r29 ; 62 - 5fa: 0f be out 0x3f, r0 ; 63 - 5fc: cd bf out 0x3d, r28 ; 61 - - EIMSK |= 0x02; // External Interrupt Mask Register - 5fe: e9 9a sbi 0x1d, 1 ; 29 - // Enable INT1 (PIN5) for interrupt - EICRA |= 0x0c; // External Interrupt Control Register - 600: 80 91 69 00 lds r24, 0x0069 - 604: 8c 60 ori r24, 0x0C ; 12 - 606: 80 93 69 00 sts 0x0069, r24 - // INT1 on rising edge - - TIMSK1 |= 0x01; // Timer/Counter1 Interrupt Mask Register - 60a: 80 91 6f 00 lds r24, 0x006F - 60e: 81 60 ori r24, 0x01 ; 1 - 610: 80 93 6f 00 sts 0x006F, r24 - // Enable overflow interrupt - TCCR1B |= 0x01; // Timer/Counter1 Control Register B - 614: 80 91 81 00 lds r24, 0x0081 - 618: 81 60 ori r24, 0x01 ; 1 - 61a: 80 93 81 00 sts 0x0081, r24 - // Prescale Factor 1 - - SREG |= 0x80; // Status Register - 61e: 8f b7 in r24, 0x3f ; 63 - 620: 80 68 ori r24, 0x80 ; 128 - 622: 8f bf out 0x3f, r24 ; 63 - // Enable global interrupts - - DDRC = 0x3f; // Digital Direction PORTC[5:0] = output - 624: 8f e3 ldi r24, 0x3F ; 63 - 626: 87 b9 out 0x07, r24 ; 7 - PORTC = 0x00; - 628: 18 b8 out 0x08, r1 ; 8 - - // Init color - hsv_t colorsHSV[LEDS]; - rgb_t colorsRGB[LEDS]; - interpolate( - 62a: 80 91 00 01 lds r24, 0x0100 - 62e: 90 91 01 01 lds r25, 0x0101 - 632: 44 e1 ldi r20, 0x14 ; 20 - 634: 64 e6 ldi r22, 0x64 ; 100 - 636: 0e 94 ee 02 call 0x5dc ; 0x5dc - 63a: 4b 01 movw r8, r22 - 63c: 5c 01 movw r10, r24 - 63e: 80 91 02 01 lds r24, 0x0102 - 642: 90 91 03 01 lds r25, 0x0103 - 646: 44 e1 ldi r20, 0x14 ; 20 - 648: 64 e6 ldi r22, 0x64 ; 100 - 64a: 0e 94 ee 02 call 0x5dc ; 0x5dc - 64e: 9e 01 movw r18, r28 - 650: 2f 5f subi r18, 0xFF ; 255 - 652: 3f 4f sbci r19, 0xFF ; 255 - 654: 79 01 movw r14, r18 - 656: 0e e1 ldi r16, 0x1E ; 30 - 658: 10 e0 ldi r17, 0x00 ; 0 - 65a: a5 01 movw r20, r10 - 65c: 94 01 movw r18, r8 - 65e: 0e 94 33 01 call 0x266 ; 0x266 - init_hsv_t(min, HUE_SAT, HUE_VAL), // from color - init_hsv_t(max, HUE_SAT, HUE_VAL), // to color - LEDS, - colorsHSV - ); - hsv2rgbList(colorsHSV, colorsRGB, LEDS); - 662: 4e e1 ldi r20, 0x1E ; 30 - 664: 50 e0 ldi r21, 0x00 ; 0 - 666: be 01 movw r22, r28 - 668: 67 58 subi r22, 0x87 ; 135 - 66a: 7f 4f sbci r23, 0xFF ; 255 - 66c: c7 01 movw r24, r14 - 66e: 0e 94 c9 02 call 0x592 ; 0x592 - 672: 49 e7 ldi r20, 0x79 ; 121 - 674: a4 2e mov r10, r20 - 676: b1 2c mov r11, r1 - 678: ac 0e add r10, r28 - 67a: bd 1e adc r11, r29 - 67c: 32 e0 ldi r19, 0x02 ; 2 - 67e: a3 0e add r10, r19 - 680: b1 1c adc r11, r1 - 682: 4e 01 movw r8, r28 - 684: 85 ed ldi r24, 0xD5 ; 213 - 686: 88 0e add r8, r24 - 688: 91 1c adc r9, r1 - 68a: 85 01 movw r16, r10 - 68c: d8 01 movw r26, r16 - 68e: 11 97 sbiw r26, 0x01 ; 1 - 690: c8 01 movw r24, r16 - 692: 02 97 sbiw r24, 0x02 ; 2 - // Assign color - for(int i = 0; i < LEDS; i++) { - writeRGB( colorsRGB[i].r, colorsRGB[i].g, colorsRGB[i].b); - 694: f8 01 movw r30, r16 - 696: 40 81 ld r20, Z - 698: 6c 91 ld r22, X - 69a: fc 01 movw r30, r24 - 69c: 80 81 ld r24, Z - 69e: 0e 94 e2 00 call 0x1c4 ; 0x1c4 - 6a2: 0d 5f subi r16, 0xFD ; 253 - 6a4: 1f 4f sbci r17, 0xFF ; 255 - LEDS, - colorsHSV - ); - hsv2rgbList(colorsHSV, colorsRGB, LEDS); - // Assign color - for(int i = 0; i < LEDS; i++) { - 6a6: 08 15 cp r16, r8 - 6a8: 19 05 cpc r17, r9 - 6aa: 81 f7 brne .-32 ; 0x68c - writeRGB( colorsRGB[i].r, colorsRGB[i].g, colorsRGB[i].b); - } - - // Next color - int8_t sign = 1; - min += sign * HUE_STEP; - 6ac: 80 91 02 01 lds r24, 0x0102 - 6b0: 90 91 03 01 lds r25, 0x0103 - 6b4: 08 96 adiw r24, 0x08 ; 8 - 6b6: 90 93 03 01 sts 0x0103, r25 - 6ba: 80 93 02 01 sts 0x0102, r24 - max -= sign * HUE_STEP; - 6be: 80 91 00 01 lds r24, 0x0100 - 6c2: 90 91 01 01 lds r25, 0x0101 - 6c6: 08 97 sbiw r24, 0x08 ; 8 - 6c8: 90 93 01 01 sts 0x0101, r25 - 6cc: 80 93 00 01 sts 0x0100, r24 - interpolate( - 6d0: 80 91 00 01 lds r24, 0x0100 - 6d4: 90 91 01 01 lds r25, 0x0101 - 6d8: 44 e1 ldi r20, 0x14 ; 20 - 6da: 64 e6 ldi r22, 0x64 ; 100 - 6dc: 0e 94 ee 02 call 0x5dc ; 0x5dc - 6e0: 2b 01 movw r4, r22 - 6e2: 3c 01 movw r6, r24 - 6e4: 80 91 02 01 lds r24, 0x0102 - 6e8: 90 91 03 01 lds r25, 0x0103 - 6ec: 44 e1 ldi r20, 0x14 ; 20 - 6ee: 64 e6 ldi r22, 0x64 ; 100 - 6f0: 0e 94 ee 02 call 0x5dc ; 0x5dc - 6f4: 9e 01 movw r18, r28 - 6f6: 2f 5f subi r18, 0xFF ; 255 - 6f8: 3f 4f sbci r19, 0xFF ; 255 - 6fa: 79 01 movw r14, r18 - 6fc: 0e e1 ldi r16, 0x1E ; 30 - 6fe: 10 e0 ldi r17, 0x00 ; 0 - 700: a3 01 movw r20, r6 - 702: 92 01 movw r18, r4 - 704: 0e 94 33 01 call 0x266 ; 0x266 - init_hsv_t(min, HUE_SAT, HUE_VAL), // from color - init_hsv_t(max, HUE_SAT, HUE_VAL), // to color - LEDS, - colorsHSV - ); - hsv2rgbList(colorsHSV, colorsRGB, LEDS); - 708: 4e e1 ldi r20, 0x1E ; 30 - 70a: 50 e0 ldi r21, 0x00 ; 0 - 70c: be 01 movw r22, r28 - 70e: 67 58 subi r22, 0x87 ; 135 - 710: 7f 4f sbci r23, 0xFF ; 255 - 712: c7 01 movw r24, r14 - 714: 0e 94 c9 02 call 0x592 ; 0x592 - for(int i = 0; i < LEDS; i++) { - writeRGB( colorsRGB[i].r, colorsRGB[i].g, colorsRGB[i].b); - } - - // Next color - int8_t sign = 1; - 718: dd 24 eor r13, r13 - 71a: d3 94 inc r13 - uint32_t T_step = T_half / colorSteps; - - // Check if it is time for next color - if(time + TCNT1 > oldTime + T_step) { - oldTime += T_step; - PORTC ^= 0x04; - 71c: 34 e0 ldi r19, 0x04 ; 4 - 71e: c3 2e mov r12, r19 - colorsHSV - ); - hsv2rgbList(colorsHSV, colorsRGB, LEDS); - - while(1) { - sei(); - 720: 78 94 sei - uint32_t T_step = T_half / colorSteps; - 722: 80 91 0e 01 lds r24, 0x010E - 726: 90 91 0f 01 lds r25, 0x010F - 72a: a0 91 10 01 lds r26, 0x0110 - 72e: b0 91 11 01 lds r27, 0x0111 - 732: 25 e0 ldi r18, 0x05 ; 5 - 734: b6 95 lsr r27 - 736: a7 95 ror r26 - 738: 97 95 ror r25 - 73a: 87 95 ror r24 - 73c: 2a 95 dec r18 - 73e: d1 f7 brne .-12 ; 0x734 - - // Check if it is time for next color - if(time + TCNT1 > oldTime + T_step) { - 740: 00 91 12 01 lds r16, 0x0112 - 744: 10 91 13 01 lds r17, 0x0113 - 748: 20 91 14 01 lds r18, 0x0114 - 74c: 30 91 15 01 lds r19, 0x0115 - 750: e0 91 84 00 lds r30, 0x0084 - 754: f0 91 85 00 lds r31, 0x0085 - 758: 40 91 0a 01 lds r20, 0x010A - 75c: 50 91 0b 01 lds r21, 0x010B - 760: 60 91 0c 01 lds r22, 0x010C - 764: 70 91 0d 01 lds r23, 0x010D - 768: 0e 0f add r16, r30 - 76a: 1f 1f adc r17, r31 - 76c: 21 1d adc r18, r1 - 76e: 31 1d adc r19, r1 - 770: 48 0f add r20, r24 - 772: 59 1f adc r21, r25 - 774: 6a 1f adc r22, r26 - 776: 7b 1f adc r23, r27 - 778: 40 17 cp r20, r16 - 77a: 51 07 cpc r21, r17 - 77c: 62 07 cpc r22, r18 - 77e: 73 07 cpc r23, r19 - 780: 78 f6 brcc .-98 ; 0x720 - oldTime += T_step; - 782: 40 91 0a 01 lds r20, 0x010A - 786: 50 91 0b 01 lds r21, 0x010B - 78a: 60 91 0c 01 lds r22, 0x010C - 78e: 70 91 0d 01 lds r23, 0x010D - 792: 84 0f add r24, r20 - 794: 95 1f adc r25, r21 - 796: a6 1f adc r26, r22 - 798: b7 1f adc r27, r23 - 79a: 80 93 0a 01 sts 0x010A, r24 - 79e: 90 93 0b 01 sts 0x010B, r25 - 7a2: a0 93 0c 01 sts 0x010C, r26 - 7a6: b0 93 0d 01 sts 0x010D, r27 - PORTC ^= 0x04; - 7aa: 88 b1 in r24, 0x08 ; 8 - 7ac: 8c 25 eor r24, r12 - 7ae: 88 b9 out 0x08, r24 ; 8 - // Assign color - cli(); - 7b0: f8 94 cli - 7b2: 85 01 movw r16, r10 - 7b4: d8 01 movw r26, r16 - 7b6: 11 97 sbiw r26, 0x01 ; 1 - 7b8: c8 01 movw r24, r16 - 7ba: 02 97 sbiw r24, 0x02 ; 2 - for(int i = 0; i < LEDS; i++) { - writeRGB( colorsRGB[i].r, colorsRGB[i].g, colorsRGB[i].b); - 7bc: f8 01 movw r30, r16 - 7be: 40 81 ld r20, Z - 7c0: 6c 91 ld r22, X - 7c2: fc 01 movw r30, r24 - 7c4: 80 81 ld r24, Z - 7c6: 0e 94 e2 00 call 0x1c4 ; 0x1c4 - 7ca: 0d 5f subi r16, 0xFD ; 253 - 7cc: 1f 4f sbci r17, 0xFF ; 255 - if(time + TCNT1 > oldTime + T_step) { - oldTime += T_step; - PORTC ^= 0x04; - // Assign color - cli(); - for(int i = 0; i < LEDS; i++) { - 7ce: 08 15 cp r16, r8 - 7d0: 19 05 cpc r17, r9 - 7d2: 81 f7 brne .-32 ; 0x7b4 - writeRGB( colorsRGB[i].r, colorsRGB[i].g, colorsRGB[i].b); - } - sei(); - 7d4: 78 94 sei - //~ _delay_us(51); - - // Next color - min += sign * HUE_STEP; - 7d6: 80 91 02 01 lds r24, 0x0102 - 7da: 90 91 03 01 lds r25, 0x0103 - 7de: fd 2d mov r31, r13 - 7e0: 28 e0 ldi r18, 0x08 ; 8 - 7e2: f2 02 muls r31, r18 - 7e4: 80 0d add r24, r0 - 7e6: 91 1d adc r25, r1 - 7e8: 11 24 eor r1, r1 - 7ea: 90 93 03 01 sts 0x0103, r25 - 7ee: 80 93 02 01 sts 0x0102, r24 - max -= sign * HUE_STEP; - 7f2: 80 91 00 01 lds r24, 0x0100 - 7f6: 90 91 01 01 lds r25, 0x0101 - 7fa: 38 e0 ldi r19, 0x08 ; 8 - 7fc: f3 02 muls r31, r19 - 7fe: 80 19 sub r24, r0 - 800: 91 09 sbc r25, r1 - 802: 11 24 eor r1, r1 - 804: 90 93 01 01 sts 0x0101, r25 - 808: 80 93 00 01 sts 0x0100, r24 - interpolate( - 80c: 80 91 00 01 lds r24, 0x0100 - 810: 90 91 01 01 lds r25, 0x0101 - 814: 44 e1 ldi r20, 0x14 ; 20 - 816: 64 e6 ldi r22, 0x64 ; 100 - 818: 0e 94 ee 02 call 0x5dc ; 0x5dc - 81c: 2b 01 movw r4, r22 - 81e: 3c 01 movw r6, r24 - 820: 80 91 02 01 lds r24, 0x0102 - 824: 90 91 03 01 lds r25, 0x0103 - 828: 44 e1 ldi r20, 0x14 ; 20 - 82a: 64 e6 ldi r22, 0x64 ; 100 - 82c: 0e 94 ee 02 call 0x5dc ; 0x5dc - 830: fe 01 movw r30, r28 - 832: 31 96 adiw r30, 0x01 ; 1 - 834: 7f 01 movw r14, r30 - 836: 0e e1 ldi r16, 0x1E ; 30 - 838: 10 e0 ldi r17, 0x00 ; 0 - 83a: a3 01 movw r20, r6 - 83c: 92 01 movw r18, r4 - 83e: 0e 94 33 01 call 0x266 ; 0x266 - init_hsv_t(min, HUE_SAT, HUE_VAL), // from color - init_hsv_t(max, HUE_SAT, HUE_VAL), // to color - LEDS, - colorsHSV - ); - hsv2rgbList(colorsHSV, colorsRGB, LEDS); - 842: 4e e1 ldi r20, 0x1E ; 30 - 844: 50 e0 ldi r21, 0x00 ; 0 - 846: be 01 movw r22, r28 - 848: 67 58 subi r22, 0x87 ; 135 - 84a: 7f 4f sbci r23, 0xFF ; 255 - 84c: c7 01 movw r24, r14 - 84e: 0e 94 c9 02 call 0x592 ; 0x592 - // Check if reached amplitude - if(sign == 1 && (min >= HUE_MAX || max <= HUE_MIN)) { - 852: f1 e0 ldi r31, 0x01 ; 1 - 854: df 12 cpse r13, r31 - 856: 12 c0 rjmp .+36 ; 0x87c - 858: 80 91 02 01 lds r24, 0x0102 - 85c: 90 91 03 01 lds r25, 0x0103 - 860: 82 36 cpi r24, 0x62 ; 98 - 862: 92 40 sbci r25, 0x02 ; 2 - 864: 18 f0 brcs .+6 ; 0x86c - sign = -1; - 866: dd 24 eor r13, r13 - 868: da 94 dec r13 - 86a: 5a cf rjmp .-332 ; 0x720 - LEDS, - colorsHSV - ); - hsv2rgbList(colorsHSV, colorsRGB, LEDS); - // Check if reached amplitude - if(sign == 1 && (min >= HUE_MAX || max <= HUE_MIN)) { - 86c: 80 91 00 01 lds r24, 0x0100 - 870: 90 91 01 01 lds r25, 0x0101 - 874: 8f 35 cpi r24, 0x5F ; 95 - 876: 91 40 sbci r25, 0x01 ; 1 - 878: b0 f3 brcs .-20 ; 0x866 - 87a: 52 cf rjmp .-348 ; 0x720 - sign = -1; - } else if(sign == -1 && (min <= HUE_MIN || max >= HUE_MAX)) { - 87c: 8f ef ldi r24, 0xFF ; 255 - 87e: d8 16 cp r13, r24 - 880: 11 f0 breq .+4 ; 0x886 - 882: d1 2c mov r13, r1 - 884: 4d cf rjmp .-358 ; 0x720 - 886: 80 91 02 01 lds r24, 0x0102 - 88a: 90 91 03 01 lds r25, 0x0103 - 88e: 8f 35 cpi r24, 0x5F ; 95 - 890: 91 40 sbci r25, 0x01 ; 1 - 892: 18 f4 brcc .+6 ; 0x89a - sign = 1; - 894: dd 24 eor r13, r13 - 896: d3 94 inc r13 - 898: 43 cf rjmp .-378 ; 0x720 - ); - hsv2rgbList(colorsHSV, colorsRGB, LEDS); - // Check if reached amplitude - if(sign == 1 && (min >= HUE_MAX || max <= HUE_MIN)) { - sign = -1; - } else if(sign == -1 && (min <= HUE_MIN || max >= HUE_MAX)) { - 89a: 80 91 00 01 lds r24, 0x0100 - 89e: 90 91 01 01 lds r25, 0x0101 - 8a2: 82 36 cpi r24, 0x62 ; 98 - 8a4: 92 40 sbci r25, 0x02 ; 2 - 8a6: 08 f4 brcc .+2 ; 0x8aa - 8a8: 3b cf rjmp .-394 ; 0x720 - 8aa: f4 cf rjmp .-24 ; 0x894 - -000008ac <__subsf3>: - 8ac: 50 58 subi r21, 0x80 ; 128 - -000008ae <__addsf3>: - 8ae: bb 27 eor r27, r27 - 8b0: aa 27 eor r26, r26 - 8b2: 0e 94 6e 04 call 0x8dc ; 0x8dc <__addsf3x> - 8b6: 0c 94 b8 05 jmp 0xb70 ; 0xb70 <__fp_round> - 8ba: 0e 94 aa 05 call 0xb54 ; 0xb54 <__fp_pscA> - 8be: 38 f0 brcs .+14 ; 0x8ce <__addsf3+0x20> - 8c0: 0e 94 b1 05 call 0xb62 ; 0xb62 <__fp_pscB> - 8c4: 20 f0 brcs .+8 ; 0x8ce <__addsf3+0x20> - 8c6: 39 f4 brne .+14 ; 0x8d6 <__addsf3+0x28> - 8c8: 9f 3f cpi r25, 0xFF ; 255 - 8ca: 19 f4 brne .+6 ; 0x8d2 <__addsf3+0x24> - 8cc: 26 f4 brtc .+8 ; 0x8d6 <__addsf3+0x28> - 8ce: 0c 94 a7 05 jmp 0xb4e ; 0xb4e <__fp_nan> - 8d2: 0e f4 brtc .+2 ; 0x8d6 <__addsf3+0x28> - 8d4: e0 95 com r30 - 8d6: e7 fb bst r30, 7 - 8d8: 0c 94 a1 05 jmp 0xb42 ; 0xb42 <__fp_inf> - -000008dc <__addsf3x>: - 8dc: e9 2f mov r30, r25 - 8de: 0e 94 c9 05 call 0xb92 ; 0xb92 <__fp_split3> - 8e2: 58 f3 brcs .-42 ; 0x8ba <__addsf3+0xc> - 8e4: ba 17 cp r27, r26 - 8e6: 62 07 cpc r22, r18 - 8e8: 73 07 cpc r23, r19 - 8ea: 84 07 cpc r24, r20 - 8ec: 95 07 cpc r25, r21 - 8ee: 20 f0 brcs .+8 ; 0x8f8 <__addsf3x+0x1c> - 8f0: 79 f4 brne .+30 ; 0x910 <__stack+0x11> - 8f2: a6 f5 brtc .+104 ; 0x95c <__stack+0x5d> - 8f4: 0c 94 eb 05 jmp 0xbd6 ; 0xbd6 <__fp_zero> - 8f8: 0e f4 brtc .+2 ; 0x8fc <__addsf3x+0x20> - 8fa: e0 95 com r30 - 8fc: 0b 2e mov r0, r27 - 8fe: ba 2f mov r27, r26 - 900: a0 2d mov r26, r0 - 902: 0b 01 movw r0, r22 - 904: b9 01 movw r22, r18 - 906: 90 01 movw r18, r0 - 908: 0c 01 movw r0, r24 - 90a: ca 01 movw r24, r20 - 90c: a0 01 movw r20, r0 - 90e: 11 24 eor r1, r1 - 910: ff 27 eor r31, r31 - 912: 59 1b sub r21, r25 - 914: 99 f0 breq .+38 ; 0x93c <__stack+0x3d> - 916: 59 3f cpi r21, 0xF9 ; 249 - 918: 50 f4 brcc .+20 ; 0x92e <__stack+0x2f> - 91a: 50 3e cpi r21, 0xE0 ; 224 - 91c: 68 f1 brcs .+90 ; 0x978 <__stack+0x79> - 91e: 1a 16 cp r1, r26 - 920: f0 40 sbci r31, 0x00 ; 0 - 922: a2 2f mov r26, r18 - 924: 23 2f mov r18, r19 - 926: 34 2f mov r19, r20 - 928: 44 27 eor r20, r20 - 92a: 58 5f subi r21, 0xF8 ; 248 - 92c: f3 cf rjmp .-26 ; 0x914 <__stack+0x15> - 92e: 46 95 lsr r20 - 930: 37 95 ror r19 - 932: 27 95 ror r18 - 934: a7 95 ror r26 - 936: f0 40 sbci r31, 0x00 ; 0 - 938: 53 95 inc r21 - 93a: c9 f7 brne .-14 ; 0x92e <__stack+0x2f> - 93c: 7e f4 brtc .+30 ; 0x95c <__stack+0x5d> - 93e: 1f 16 cp r1, r31 - 940: ba 0b sbc r27, r26 - 942: 62 0b sbc r22, r18 - 944: 73 0b sbc r23, r19 - 946: 84 0b sbc r24, r20 - 948: ba f0 brmi .+46 ; 0x978 <__stack+0x79> - 94a: 91 50 subi r25, 0x01 ; 1 - 94c: a1 f0 breq .+40 ; 0x976 <__stack+0x77> - 94e: ff 0f add r31, r31 - 950: bb 1f adc r27, r27 - 952: 66 1f adc r22, r22 - 954: 77 1f adc r23, r23 - 956: 88 1f adc r24, r24 - 958: c2 f7 brpl .-16 ; 0x94a <__stack+0x4b> - 95a: 0e c0 rjmp .+28 ; 0x978 <__stack+0x79> - 95c: ba 0f add r27, r26 - 95e: 62 1f adc r22, r18 - 960: 73 1f adc r23, r19 - 962: 84 1f adc r24, r20 - 964: 48 f4 brcc .+18 ; 0x978 <__stack+0x79> - 966: 87 95 ror r24 - 968: 77 95 ror r23 - 96a: 67 95 ror r22 - 96c: b7 95 ror r27 - 96e: f7 95 ror r31 - 970: 9e 3f cpi r25, 0xFE ; 254 - 972: 08 f0 brcs .+2 ; 0x976 <__stack+0x77> - 974: b0 cf rjmp .-160 ; 0x8d6 <__addsf3+0x28> - 976: 93 95 inc r25 - 978: 88 0f add r24, r24 - 97a: 08 f0 brcs .+2 ; 0x97e <__stack+0x7f> - 97c: 99 27 eor r25, r25 - 97e: ee 0f add r30, r30 - 980: 97 95 ror r25 - 982: 87 95 ror r24 - 984: 08 95 ret - -00000986 <__divsf3>: - 986: 0e 94 d7 04 call 0x9ae ; 0x9ae <__divsf3x> - 98a: 0c 94 b8 05 jmp 0xb70 ; 0xb70 <__fp_round> - 98e: 0e 94 b1 05 call 0xb62 ; 0xb62 <__fp_pscB> - 992: 58 f0 brcs .+22 ; 0x9aa <__divsf3+0x24> - 994: 0e 94 aa 05 call 0xb54 ; 0xb54 <__fp_pscA> - 998: 40 f0 brcs .+16 ; 0x9aa <__divsf3+0x24> - 99a: 29 f4 brne .+10 ; 0x9a6 <__divsf3+0x20> - 99c: 5f 3f cpi r21, 0xFF ; 255 - 99e: 29 f0 breq .+10 ; 0x9aa <__divsf3+0x24> - 9a0: 0c 94 a1 05 jmp 0xb42 ; 0xb42 <__fp_inf> - 9a4: 51 11 cpse r21, r1 - 9a6: 0c 94 ec 05 jmp 0xbd8 ; 0xbd8 <__fp_szero> - 9aa: 0c 94 a7 05 jmp 0xb4e ; 0xb4e <__fp_nan> - -000009ae <__divsf3x>: - 9ae: 0e 94 c9 05 call 0xb92 ; 0xb92 <__fp_split3> - 9b2: 68 f3 brcs .-38 ; 0x98e <__divsf3+0x8> - -000009b4 <__divsf3_pse>: - 9b4: 99 23 and r25, r25 - 9b6: b1 f3 breq .-20 ; 0x9a4 <__divsf3+0x1e> - 9b8: 55 23 and r21, r21 - 9ba: 91 f3 breq .-28 ; 0x9a0 <__divsf3+0x1a> - 9bc: 95 1b sub r25, r21 - 9be: 55 0b sbc r21, r21 - 9c0: bb 27 eor r27, r27 - 9c2: aa 27 eor r26, r26 - 9c4: 62 17 cp r22, r18 - 9c6: 73 07 cpc r23, r19 - 9c8: 84 07 cpc r24, r20 - 9ca: 38 f0 brcs .+14 ; 0x9da <__divsf3_pse+0x26> - 9cc: 9f 5f subi r25, 0xFF ; 255 - 9ce: 5f 4f sbci r21, 0xFF ; 255 - 9d0: 22 0f add r18, r18 - 9d2: 33 1f adc r19, r19 - 9d4: 44 1f adc r20, r20 - 9d6: aa 1f adc r26, r26 - 9d8: a9 f3 breq .-22 ; 0x9c4 <__divsf3_pse+0x10> - 9da: 35 d0 rcall .+106 ; 0xa46 <__divsf3_pse+0x92> - 9dc: 0e 2e mov r0, r30 - 9de: 3a f0 brmi .+14 ; 0x9ee <__divsf3_pse+0x3a> - 9e0: e0 e8 ldi r30, 0x80 ; 128 - 9e2: 32 d0 rcall .+100 ; 0xa48 <__divsf3_pse+0x94> - 9e4: 91 50 subi r25, 0x01 ; 1 - 9e6: 50 40 sbci r21, 0x00 ; 0 - 9e8: e6 95 lsr r30 - 9ea: 00 1c adc r0, r0 - 9ec: ca f7 brpl .-14 ; 0x9e0 <__divsf3_pse+0x2c> - 9ee: 2b d0 rcall .+86 ; 0xa46 <__divsf3_pse+0x92> - 9f0: fe 2f mov r31, r30 - 9f2: 29 d0 rcall .+82 ; 0xa46 <__divsf3_pse+0x92> - 9f4: 66 0f add r22, r22 - 9f6: 77 1f adc r23, r23 - 9f8: 88 1f adc r24, r24 - 9fa: bb 1f adc r27, r27 - 9fc: 26 17 cp r18, r22 - 9fe: 37 07 cpc r19, r23 - a00: 48 07 cpc r20, r24 - a02: ab 07 cpc r26, r27 - a04: b0 e8 ldi r27, 0x80 ; 128 - a06: 09 f0 breq .+2 ; 0xa0a <__divsf3_pse+0x56> - a08: bb 0b sbc r27, r27 - a0a: 80 2d mov r24, r0 - a0c: bf 01 movw r22, r30 - a0e: ff 27 eor r31, r31 - a10: 93 58 subi r25, 0x83 ; 131 - a12: 5f 4f sbci r21, 0xFF ; 255 - a14: 3a f0 brmi .+14 ; 0xa24 <__divsf3_pse+0x70> - a16: 9e 3f cpi r25, 0xFE ; 254 - a18: 51 05 cpc r21, r1 - a1a: 78 f0 brcs .+30 ; 0xa3a <__divsf3_pse+0x86> - a1c: 0c 94 a1 05 jmp 0xb42 ; 0xb42 <__fp_inf> - a20: 0c 94 ec 05 jmp 0xbd8 ; 0xbd8 <__fp_szero> - a24: 5f 3f cpi r21, 0xFF ; 255 - a26: e4 f3 brlt .-8 ; 0xa20 <__divsf3_pse+0x6c> - a28: 98 3e cpi r25, 0xE8 ; 232 - a2a: d4 f3 brlt .-12 ; 0xa20 <__divsf3_pse+0x6c> - a2c: 86 95 lsr r24 - a2e: 77 95 ror r23 - a30: 67 95 ror r22 - a32: b7 95 ror r27 - a34: f7 95 ror r31 - a36: 9f 5f subi r25, 0xFF ; 255 - a38: c9 f7 brne .-14 ; 0xa2c <__divsf3_pse+0x78> - a3a: 88 0f add r24, r24 - a3c: 91 1d adc r25, r1 - a3e: 96 95 lsr r25 - a40: 87 95 ror r24 - a42: 97 f9 bld r25, 7 - a44: 08 95 ret - a46: e1 e0 ldi r30, 0x01 ; 1 - a48: 66 0f add r22, r22 - a4a: 77 1f adc r23, r23 - a4c: 88 1f adc r24, r24 - a4e: bb 1f adc r27, r27 - a50: 62 17 cp r22, r18 - a52: 73 07 cpc r23, r19 - a54: 84 07 cpc r24, r20 - a56: ba 07 cpc r27, r26 - a58: 20 f0 brcs .+8 ; 0xa62 <__divsf3_pse+0xae> - a5a: 62 1b sub r22, r18 - a5c: 73 0b sbc r23, r19 - a5e: 84 0b sbc r24, r20 - a60: ba 0b sbc r27, r26 - a62: ee 1f adc r30, r30 - a64: 88 f7 brcc .-30 ; 0xa48 <__divsf3_pse+0x94> - a66: e0 95 com r30 - a68: 08 95 ret - -00000a6a <__fixunssfsi>: - a6a: 0e 94 d1 05 call 0xba2 ; 0xba2 <__fp_splitA> - a6e: 88 f0 brcs .+34 ; 0xa92 <__fixunssfsi+0x28> - a70: 9f 57 subi r25, 0x7F ; 127 - a72: 98 f0 brcs .+38 ; 0xa9a <__fixunssfsi+0x30> - a74: b9 2f mov r27, r25 - a76: 99 27 eor r25, r25 - a78: b7 51 subi r27, 0x17 ; 23 - a7a: b0 f0 brcs .+44 ; 0xaa8 <__fixunssfsi+0x3e> - a7c: e1 f0 breq .+56 ; 0xab6 <__fixunssfsi+0x4c> - a7e: 66 0f add r22, r22 - a80: 77 1f adc r23, r23 - a82: 88 1f adc r24, r24 - a84: 99 1f adc r25, r25 - a86: 1a f0 brmi .+6 ; 0xa8e <__fixunssfsi+0x24> - a88: ba 95 dec r27 - a8a: c9 f7 brne .-14 ; 0xa7e <__fixunssfsi+0x14> - a8c: 14 c0 rjmp .+40 ; 0xab6 <__fixunssfsi+0x4c> - a8e: b1 30 cpi r27, 0x01 ; 1 - a90: 91 f0 breq .+36 ; 0xab6 <__fixunssfsi+0x4c> - a92: 0e 94 eb 05 call 0xbd6 ; 0xbd6 <__fp_zero> - a96: b1 e0 ldi r27, 0x01 ; 1 - a98: 08 95 ret - a9a: 0c 94 eb 05 jmp 0xbd6 ; 0xbd6 <__fp_zero> - a9e: 67 2f mov r22, r23 - aa0: 78 2f mov r23, r24 - aa2: 88 27 eor r24, r24 - aa4: b8 5f subi r27, 0xF8 ; 248 - aa6: 39 f0 breq .+14 ; 0xab6 <__fixunssfsi+0x4c> - aa8: b9 3f cpi r27, 0xF9 ; 249 - aaa: cc f3 brlt .-14 ; 0xa9e <__fixunssfsi+0x34> - aac: 86 95 lsr r24 - aae: 77 95 ror r23 - ab0: 67 95 ror r22 - ab2: b3 95 inc r27 - ab4: d9 f7 brne .-10 ; 0xaac <__fixunssfsi+0x42> - ab6: 3e f4 brtc .+14 ; 0xac6 <__fixunssfsi+0x5c> - ab8: 90 95 com r25 - aba: 80 95 com r24 - abc: 70 95 com r23 - abe: 61 95 neg r22 - ac0: 7f 4f sbci r23, 0xFF ; 255 - ac2: 8f 4f sbci r24, 0xFF ; 255 - ac4: 9f 4f sbci r25, 0xFF ; 255 - ac6: 08 95 ret - -00000ac8 <__floatunsisf>: - ac8: e8 94 clt - aca: 09 c0 rjmp .+18 ; 0xade <__floatsisf+0x12> - -00000acc <__floatsisf>: - acc: 97 fb bst r25, 7 - ace: 3e f4 brtc .+14 ; 0xade <__floatsisf+0x12> - ad0: 90 95 com r25 - ad2: 80 95 com r24 - ad4: 70 95 com r23 - ad6: 61 95 neg r22 - ad8: 7f 4f sbci r23, 0xFF ; 255 - ada: 8f 4f sbci r24, 0xFF ; 255 - adc: 9f 4f sbci r25, 0xFF ; 255 - ade: 99 23 and r25, r25 - ae0: a9 f0 breq .+42 ; 0xb0c <__floatsisf+0x40> - ae2: f9 2f mov r31, r25 - ae4: 96 e9 ldi r25, 0x96 ; 150 - ae6: bb 27 eor r27, r27 - ae8: 93 95 inc r25 - aea: f6 95 lsr r31 - aec: 87 95 ror r24 - aee: 77 95 ror r23 - af0: 67 95 ror r22 - af2: b7 95 ror r27 - af4: f1 11 cpse r31, r1 - af6: f8 cf rjmp .-16 ; 0xae8 <__floatsisf+0x1c> - af8: fa f4 brpl .+62 ; 0xb38 <__floatsisf+0x6c> - afa: bb 0f add r27, r27 - afc: 11 f4 brne .+4 ; 0xb02 <__floatsisf+0x36> - afe: 60 ff sbrs r22, 0 - b00: 1b c0 rjmp .+54 ; 0xb38 <__floatsisf+0x6c> - b02: 6f 5f subi r22, 0xFF ; 255 - b04: 7f 4f sbci r23, 0xFF ; 255 - b06: 8f 4f sbci r24, 0xFF ; 255 - b08: 9f 4f sbci r25, 0xFF ; 255 - b0a: 16 c0 rjmp .+44 ; 0xb38 <__floatsisf+0x6c> - b0c: 88 23 and r24, r24 - b0e: 11 f0 breq .+4 ; 0xb14 <__floatsisf+0x48> - b10: 96 e9 ldi r25, 0x96 ; 150 - b12: 11 c0 rjmp .+34 ; 0xb36 <__floatsisf+0x6a> - b14: 77 23 and r23, r23 - b16: 21 f0 breq .+8 ; 0xb20 <__floatsisf+0x54> - b18: 9e e8 ldi r25, 0x8E ; 142 - b1a: 87 2f mov r24, r23 - b1c: 76 2f mov r23, r22 - b1e: 05 c0 rjmp .+10 ; 0xb2a <__floatsisf+0x5e> - b20: 66 23 and r22, r22 - b22: 71 f0 breq .+28 ; 0xb40 <__floatsisf+0x74> - b24: 96 e8 ldi r25, 0x86 ; 134 - b26: 86 2f mov r24, r22 - b28: 70 e0 ldi r23, 0x00 ; 0 - b2a: 60 e0 ldi r22, 0x00 ; 0 - b2c: 2a f0 brmi .+10 ; 0xb38 <__floatsisf+0x6c> - b2e: 9a 95 dec r25 - b30: 66 0f add r22, r22 - b32: 77 1f adc r23, r23 - b34: 88 1f adc r24, r24 - b36: da f7 brpl .-10 ; 0xb2e <__floatsisf+0x62> - b38: 88 0f add r24, r24 - b3a: 96 95 lsr r25 - b3c: 87 95 ror r24 - b3e: 97 f9 bld r25, 7 - b40: 08 95 ret - -00000b42 <__fp_inf>: - b42: 97 f9 bld r25, 7 - b44: 9f 67 ori r25, 0x7F ; 127 - b46: 80 e8 ldi r24, 0x80 ; 128 - b48: 70 e0 ldi r23, 0x00 ; 0 - b4a: 60 e0 ldi r22, 0x00 ; 0 - b4c: 08 95 ret - -00000b4e <__fp_nan>: - b4e: 9f ef ldi r25, 0xFF ; 255 - b50: 80 ec ldi r24, 0xC0 ; 192 - b52: 08 95 ret - -00000b54 <__fp_pscA>: - b54: 00 24 eor r0, r0 - b56: 0a 94 dec r0 - b58: 16 16 cp r1, r22 - b5a: 17 06 cpc r1, r23 - b5c: 18 06 cpc r1, r24 - b5e: 09 06 cpc r0, r25 - b60: 08 95 ret - -00000b62 <__fp_pscB>: - b62: 00 24 eor r0, r0 - b64: 0a 94 dec r0 - b66: 12 16 cp r1, r18 - b68: 13 06 cpc r1, r19 - b6a: 14 06 cpc r1, r20 - b6c: 05 06 cpc r0, r21 - b6e: 08 95 ret - -00000b70 <__fp_round>: - b70: 09 2e mov r0, r25 - b72: 03 94 inc r0 - b74: 00 0c add r0, r0 - b76: 11 f4 brne .+4 ; 0xb7c <__fp_round+0xc> - b78: 88 23 and r24, r24 - b7a: 52 f0 brmi .+20 ; 0xb90 <__fp_round+0x20> - b7c: bb 0f add r27, r27 - b7e: 40 f4 brcc .+16 ; 0xb90 <__fp_round+0x20> - b80: bf 2b or r27, r31 - b82: 11 f4 brne .+4 ; 0xb88 <__fp_round+0x18> - b84: 60 ff sbrs r22, 0 - b86: 04 c0 rjmp .+8 ; 0xb90 <__fp_round+0x20> - b88: 6f 5f subi r22, 0xFF ; 255 - b8a: 7f 4f sbci r23, 0xFF ; 255 - b8c: 8f 4f sbci r24, 0xFF ; 255 - b8e: 9f 4f sbci r25, 0xFF ; 255 - b90: 08 95 ret - -00000b92 <__fp_split3>: - b92: 57 fd sbrc r21, 7 - b94: 90 58 subi r25, 0x80 ; 128 - b96: 44 0f add r20, r20 - b98: 55 1f adc r21, r21 - b9a: 59 f0 breq .+22 ; 0xbb2 <__fp_splitA+0x10> - b9c: 5f 3f cpi r21, 0xFF ; 255 - b9e: 71 f0 breq .+28 ; 0xbbc <__fp_splitA+0x1a> - ba0: 47 95 ror r20 - -00000ba2 <__fp_splitA>: - ba2: 88 0f add r24, r24 - ba4: 97 fb bst r25, 7 - ba6: 99 1f adc r25, r25 - ba8: 61 f0 breq .+24 ; 0xbc2 <__fp_splitA+0x20> - baa: 9f 3f cpi r25, 0xFF ; 255 - bac: 79 f0 breq .+30 ; 0xbcc <__fp_splitA+0x2a> - bae: 87 95 ror r24 - bb0: 08 95 ret - bb2: 12 16 cp r1, r18 - bb4: 13 06 cpc r1, r19 - bb6: 14 06 cpc r1, r20 - bb8: 55 1f adc r21, r21 - bba: f2 cf rjmp .-28 ; 0xba0 <__fp_split3+0xe> - bbc: 46 95 lsr r20 - bbe: f1 df rcall .-30 ; 0xba2 <__fp_splitA> - bc0: 08 c0 rjmp .+16 ; 0xbd2 <__fp_splitA+0x30> - bc2: 16 16 cp r1, r22 - bc4: 17 06 cpc r1, r23 - bc6: 18 06 cpc r1, r24 - bc8: 99 1f adc r25, r25 - bca: f1 cf rjmp .-30 ; 0xbae <__fp_splitA+0xc> - bcc: 86 95 lsr r24 - bce: 71 05 cpc r23, r1 - bd0: 61 05 cpc r22, r1 - bd2: 08 94 sec - bd4: 08 95 ret - -00000bd6 <__fp_zero>: - bd6: e8 94 clt - -00000bd8 <__fp_szero>: - bd8: bb 27 eor r27, r27 - bda: 66 27 eor r22, r22 - bdc: 77 27 eor r23, r23 - bde: cb 01 movw r24, r22 - be0: 97 f9 bld r25, 7 - be2: 08 95 ret - -00000be4 <__mulsf3>: - be4: 0e 94 05 06 call 0xc0a ; 0xc0a <__mulsf3x> - be8: 0c 94 b8 05 jmp 0xb70 ; 0xb70 <__fp_round> - bec: 0e 94 aa 05 call 0xb54 ; 0xb54 <__fp_pscA> - bf0: 38 f0 brcs .+14 ; 0xc00 <__mulsf3+0x1c> - bf2: 0e 94 b1 05 call 0xb62 ; 0xb62 <__fp_pscB> - bf6: 20 f0 brcs .+8 ; 0xc00 <__mulsf3+0x1c> - bf8: 95 23 and r25, r21 - bfa: 11 f0 breq .+4 ; 0xc00 <__mulsf3+0x1c> - bfc: 0c 94 a1 05 jmp 0xb42 ; 0xb42 <__fp_inf> - c00: 0c 94 a7 05 jmp 0xb4e ; 0xb4e <__fp_nan> - c04: 11 24 eor r1, r1 - c06: 0c 94 ec 05 jmp 0xbd8 ; 0xbd8 <__fp_szero> - -00000c0a <__mulsf3x>: - c0a: 0e 94 c9 05 call 0xb92 ; 0xb92 <__fp_split3> - c0e: 70 f3 brcs .-36 ; 0xbec <__mulsf3+0x8> - -00000c10 <__mulsf3_pse>: - c10: 95 9f mul r25, r21 - c12: c1 f3 breq .-16 ; 0xc04 <__mulsf3+0x20> - c14: 95 0f add r25, r21 - c16: 50 e0 ldi r21, 0x00 ; 0 - c18: 55 1f adc r21, r21 - c1a: 62 9f mul r22, r18 - c1c: f0 01 movw r30, r0 - c1e: 72 9f mul r23, r18 - c20: bb 27 eor r27, r27 - c22: f0 0d add r31, r0 - c24: b1 1d adc r27, r1 - c26: 63 9f mul r22, r19 - c28: aa 27 eor r26, r26 - c2a: f0 0d add r31, r0 - c2c: b1 1d adc r27, r1 - c2e: aa 1f adc r26, r26 - c30: 64 9f mul r22, r20 - c32: 66 27 eor r22, r22 - c34: b0 0d add r27, r0 - c36: a1 1d adc r26, r1 - c38: 66 1f adc r22, r22 - c3a: 82 9f mul r24, r18 - c3c: 22 27 eor r18, r18 - c3e: b0 0d add r27, r0 - c40: a1 1d adc r26, r1 - c42: 62 1f adc r22, r18 - c44: 73 9f mul r23, r19 - c46: b0 0d add r27, r0 - c48: a1 1d adc r26, r1 - c4a: 62 1f adc r22, r18 - c4c: 83 9f mul r24, r19 - c4e: a0 0d add r26, r0 - c50: 61 1d adc r22, r1 - c52: 22 1f adc r18, r18 - c54: 74 9f mul r23, r20 - c56: 33 27 eor r19, r19 - c58: a0 0d add r26, r0 - c5a: 61 1d adc r22, r1 - c5c: 23 1f adc r18, r19 - c5e: 84 9f mul r24, r20 - c60: 60 0d add r22, r0 - c62: 21 1d adc r18, r1 - c64: 82 2f mov r24, r18 - c66: 76 2f mov r23, r22 - c68: 6a 2f mov r22, r26 - c6a: 11 24 eor r1, r1 - c6c: 9f 57 subi r25, 0x7F ; 127 - c6e: 50 40 sbci r21, 0x00 ; 0 - c70: 9a f0 brmi .+38 ; 0xc98 <__mulsf3_pse+0x88> - c72: f1 f0 breq .+60 ; 0xcb0 <__mulsf3_pse+0xa0> - c74: 88 23 and r24, r24 - c76: 4a f0 brmi .+18 ; 0xc8a <__mulsf3_pse+0x7a> - c78: ee 0f add r30, r30 - c7a: ff 1f adc r31, r31 - c7c: bb 1f adc r27, r27 - c7e: 66 1f adc r22, r22 - c80: 77 1f adc r23, r23 - c82: 88 1f adc r24, r24 - c84: 91 50 subi r25, 0x01 ; 1 - c86: 50 40 sbci r21, 0x00 ; 0 - c88: a9 f7 brne .-22 ; 0xc74 <__mulsf3_pse+0x64> - c8a: 9e 3f cpi r25, 0xFE ; 254 - c8c: 51 05 cpc r21, r1 - c8e: 80 f0 brcs .+32 ; 0xcb0 <__mulsf3_pse+0xa0> - c90: 0c 94 a1 05 jmp 0xb42 ; 0xb42 <__fp_inf> - c94: 0c 94 ec 05 jmp 0xbd8 ; 0xbd8 <__fp_szero> - c98: 5f 3f cpi r21, 0xFF ; 255 - c9a: e4 f3 brlt .-8 ; 0xc94 <__mulsf3_pse+0x84> - c9c: 98 3e cpi r25, 0xE8 ; 232 - c9e: d4 f3 brlt .-12 ; 0xc94 <__mulsf3_pse+0x84> - ca0: 86 95 lsr r24 - ca2: 77 95 ror r23 - ca4: 67 95 ror r22 - ca6: b7 95 ror r27 - ca8: f7 95 ror r31 - caa: e7 95 ror r30 - cac: 9f 5f subi r25, 0xFF ; 255 - cae: c1 f7 brne .-16 ; 0xca0 <__mulsf3_pse+0x90> - cb0: fe 2b or r31, r30 - cb2: 88 0f add r24, r24 - cb4: 91 1d adc r25, r1 - cb6: 96 95 lsr r25 - cb8: 87 95 ror r24 - cba: 97 f9 bld r25, 7 - cbc: 08 95 ret - -00000cbe <__divmodhi4>: - cbe: 97 fb bst r25, 7 - cc0: 07 2e mov r0, r23 - cc2: 16 f4 brtc .+4 ; 0xcc8 <__divmodhi4+0xa> - cc4: 00 94 com r0 - cc6: 07 d0 rcall .+14 ; 0xcd6 <__divmodhi4_neg1> - cc8: 77 fd sbrc r23, 7 - cca: 09 d0 rcall .+18 ; 0xcde <__divmodhi4_neg2> - ccc: 0e 94 79 06 call 0xcf2 ; 0xcf2 <__udivmodhi4> - cd0: 07 fc sbrc r0, 7 - cd2: 05 d0 rcall .+10 ; 0xcde <__divmodhi4_neg2> - cd4: 3e f4 brtc .+14 ; 0xce4 <__divmodhi4_exit> - -00000cd6 <__divmodhi4_neg1>: - cd6: 90 95 com r25 - cd8: 81 95 neg r24 - cda: 9f 4f sbci r25, 0xFF ; 255 - cdc: 08 95 ret - -00000cde <__divmodhi4_neg2>: - cde: 70 95 com r23 - ce0: 61 95 neg r22 - ce2: 7f 4f sbci r23, 0xFF ; 255 - -00000ce4 <__divmodhi4_exit>: - ce4: 08 95 ret - -00000ce6 <__tablejump2__>: - ce6: ee 0f add r30, r30 - ce8: ff 1f adc r31, r31 - cea: 05 90 lpm r0, Z+ - cec: f4 91 lpm r31, Z - cee: e0 2d mov r30, r0 - cf0: 09 94 ijmp - -00000cf2 <__udivmodhi4>: - cf2: aa 1b sub r26, r26 - cf4: bb 1b sub r27, r27 - cf6: 51 e1 ldi r21, 0x11 ; 17 - cf8: 07 c0 rjmp .+14 ; 0xd08 <__udivmodhi4_ep> - -00000cfa <__udivmodhi4_loop>: - cfa: aa 1f adc r26, r26 - cfc: bb 1f adc r27, r27 - cfe: a6 17 cp r26, r22 - d00: b7 07 cpc r27, r23 - d02: 10 f0 brcs .+4 ; 0xd08 <__udivmodhi4_ep> - d04: a6 1b sub r26, r22 - d06: b7 0b sbc r27, r23 - -00000d08 <__udivmodhi4_ep>: - d08: 88 1f adc r24, r24 - d0a: 99 1f adc r25, r25 - d0c: 5a 95 dec r21 - d0e: a9 f7 brne .-22 ; 0xcfa <__udivmodhi4_loop> - d10: 80 95 com r24 - d12: 90 95 com r25 - d14: bc 01 movw r22, r24 - d16: cd 01 movw r24, r26 - d18: 08 95 ret - -00000d1a <_exit>: - d1a: f8 94 cli - -00000d1c <__stop_program>: - d1c: ff cf rjmp .-2 ; 0xd1c <__stop_program> diff --git a/sketches/pendulum/pendulum.lst b/sketches/pendulum/pendulum.lst deleted file mode 100644 index 17f6d92..0000000 --- a/sketches/pendulum/pendulum.lst +++ /dev/null @@ -1,1078 +0,0 @@ - 1 .file "pendulum.c" - 2 __SP_H__ = 0x3e - 3 __SP_L__ = 0x3d - 4 __SREG__ = 0x3f - 5 __tmp_reg__ = 0 - 6 __zero_reg__ = 1 - 9 .text - 10 .Ltext0: - 113 .global __vector_2 - 115 __vector_2: - 116 .stabd 46,0,0 - 1:pendulum.c **** #define F_CPU 20000000UL - 2:pendulum.c **** #include - 3:pendulum.c **** #include - 4:pendulum.c **** #include - 5:pendulum.c **** - 6:pendulum.c **** #include - 7:pendulum.c **** #include - 8:pendulum.c **** #include - 9:pendulum.c **** - 10:pendulum.c **** #include "color_hsv.h" - 11:pendulum.c **** #define HUE_MAX 610 - 12:pendulum.c **** #define HUE_MIN 350 - 13:pendulum.c **** #define HUE_MID ((HUE_MAX + HUE_MIN) / 2) - 14:pendulum.c **** #define HUE_DIF (HUE_MAX - HUE_MIN) - 15:pendulum.c **** #define HUE_SAT 100 // 0 = white, 100 = color - 16:pendulum.c **** #define HUE_VAL 20 // 0 = black, 100 = color - 17:pendulum.c **** #define HUE_STEP 8 // 8 - 18:pendulum.c **** const uint32_t colorSteps = HUE_DIF / HUE_STEP; - 19:pendulum.c **** //~ const uint32_t colorSteps = 5; - 20:pendulum.c **** - 21:pendulum.c **** #define LEDS 30 - 22:pendulum.c **** - 23:pendulum.c **** // Prototypes: - 24:pendulum.c **** void writeZero(void); - 25:pendulum.c **** void writeOne(void); - 26:pendulum.c **** void writeRGB(uint8_t red, uint8_t green, uint8_t blue); - 27:pendulum.c **** - 28:pendulum.c **** // Interrupt variables: - 29:pendulum.c **** int8_t volatile status = 1; - 30:pendulum.c **** uint16_t volatile min = HUE_MID; - 31:pendulum.c **** uint16_t volatile max = HUE_MID; - 32:pendulum.c **** uint32_t volatile time = 0; - 33:pendulum.c **** uint32_t volatile T_half = 0; - 34:pendulum.c **** uint32_t volatile oldTime = 0; - 35:pendulum.c **** uint32_t volatile cooldown = 0; - 36:pendulum.c **** //~ uint32_t volatile delay = 0; - 37:pendulum.c **** - 38:pendulum.c **** // On External Interrupt: - 39:pendulum.c **** ISR(INT1_vect) { - 118 .LM0: - 119 .LFBB1: - 120 0000 1F92 push r1 - 121 0002 0F92 push r0 - 122 0004 0FB6 in r0,__SREG__ - 123 0006 0F92 push r0 - 124 0008 1124 clr __zero_reg__ - 125 000a 2F93 push r18 - 126 000c 3F93 push r19 - 127 000e 8F93 push r24 - 128 0010 9F93 push r25 - 129 0012 AF93 push r26 - 130 0014 BF93 push r27 - 131 0016 EF93 push r30 - 132 0018 FF93 push r31 - 133 /* prologue: Signal */ - 134 /* frame size = 0 */ - 135 /* stack size = 11 */ - 136 .L__stack_usage = 11 - 40:pendulum.c **** EIMSK &= 0xfd; // Disable INT1 - 138 .LM1: - 139 001a E998 cbi 0x1d,1 - 41:pendulum.c **** T_half = time + TCNT1; - 141 .LM2: - 142 001c 8091 0000 lds r24,time - 143 0020 9091 0000 lds r25,time+1 - 144 0024 A091 0000 lds r26,time+2 - 145 0028 B091 0000 lds r27,time+3 - 146 002c E4E8 ldi r30,lo8(-124) - 147 002e F0E0 ldi r31,0 - 148 0030 2081 ld r18,Z - 149 0032 3181 ldd r19,Z+1 - 150 0034 820F add r24,r18 - 151 0036 931F adc r25,r19 - 152 0038 A11D adc r26,__zero_reg__ - 153 003a B11D adc r27,__zero_reg__ - 154 003c 8093 0000 sts T_half,r24 - 155 0040 9093 0000 sts T_half+1,r25 - 156 0044 A093 0000 sts T_half+2,r26 - 157 0048 B093 0000 sts T_half+3,r27 - 42:pendulum.c **** //~ delay = T_half / 16; - 43:pendulum.c **** cooldown = T_half / 2; - 159 .LM3: - 160 004c 8091 0000 lds r24,T_half - 161 0050 9091 0000 lds r25,T_half+1 - 162 0054 A091 0000 lds r26,T_half+2 - 163 0058 B091 0000 lds r27,T_half+3 - 164 005c B695 lsr r27 - 165 005e A795 ror r26 - 166 0060 9795 ror r25 - 167 0062 8795 ror r24 - 168 0064 8093 0000 sts cooldown,r24 - 169 0068 9093 0000 sts cooldown+1,r25 - 170 006c A093 0000 sts cooldown+2,r26 - 171 0070 B093 0000 sts cooldown+3,r27 - 44:pendulum.c **** TCNT1 = 0; // Reset Timer/Counter1 - 173 .LM4: - 174 0074 1182 std Z+1,__zero_reg__ - 175 0076 1082 st Z,__zero_reg__ - 45:pendulum.c **** time = 0; - 177 .LM5: - 178 0078 1092 0000 sts time,__zero_reg__ - 179 007c 1092 0000 sts time+1,__zero_reg__ - 180 0080 1092 0000 sts time+2,__zero_reg__ - 181 0084 1092 0000 sts time+3,__zero_reg__ - 46:pendulum.c **** oldTime = 0; - 183 .LM6: - 184 0088 1092 0000 sts oldTime,__zero_reg__ - 185 008c 1092 0000 sts oldTime+1,__zero_reg__ - 186 0090 1092 0000 sts oldTime+2,__zero_reg__ - 187 0094 1092 0000 sts oldTime+3,__zero_reg__ - 47:pendulum.c **** PORTC ^= 0x02; - 189 .LM7: - 190 0098 98B1 in r25,0x8 - 191 009a 82E0 ldi r24,lo8(2) - 192 009c 8927 eor r24,r25 - 193 009e 88B9 out 0x8,r24 - 194 /* epilogue start */ - 48:pendulum.c **** //~ min = HUE_MID; - 49:pendulum.c **** //~ max = HUE_MID; - 50:pendulum.c **** //~ status = (status == 1 ? -1 : 1); - 51:pendulum.c **** } - 196 .LM8: - 197 00a0 FF91 pop r31 - 198 00a2 EF91 pop r30 - 199 00a4 BF91 pop r27 - 200 00a6 AF91 pop r26 - 201 00a8 9F91 pop r25 - 202 00aa 8F91 pop r24 - 203 00ac 3F91 pop r19 - 204 00ae 2F91 pop r18 - 205 00b0 0F90 pop r0 - 206 00b2 0FBE out __SREG__,r0 - 207 00b4 0F90 pop r0 - 208 00b6 1F90 pop r1 - 209 00b8 1895 reti - 211 .Lscope1: - 213 .stabd 78,0,0 - 215 .global __vector_13 - 217 __vector_13: - 218 .stabd 46,0,0 - 52:pendulum.c **** - 53:pendulum.c **** // On Timer Overflow Interrupt: - 54:pendulum.c **** ISR(TIMER1_OVF_vect) { - 220 .LM9: - 221 .LFBB2: - 222 00ba 1F92 push r1 - 223 00bc 0F92 push r0 - 224 00be 0FB6 in r0,__SREG__ - 225 00c0 0F92 push r0 - 226 00c2 1124 clr __zero_reg__ - 227 00c4 8F93 push r24 - 228 00c6 9F93 push r25 - 229 00c8 AF93 push r26 - 230 00ca BF93 push r27 - 231 /* prologue: Signal */ - 232 /* frame size = 0 */ - 233 /* stack size = 7 */ - 234 .L__stack_usage = 7 - 55:pendulum.c **** time += 0x00010000; - 236 .LM10: - 237 00cc 8091 0000 lds r24,time - 238 00d0 9091 0000 lds r25,time+1 - 239 00d4 A091 0000 lds r26,time+2 - 240 00d8 B091 0000 lds r27,time+3 - 241 00dc 1196 adiw r26,1 - 242 00de 8093 0000 sts time,r24 - 243 00e2 9093 0000 sts time+1,r25 - 244 00e6 A093 0000 sts time+2,r26 - 245 00ea B093 0000 sts time+3,r27 - 246 /* epilogue start */ - 56:pendulum.c **** } - 248 .LM11: - 249 00ee BF91 pop r27 - 250 00f0 AF91 pop r26 - 251 00f2 9F91 pop r25 - 252 00f4 8F91 pop r24 - 253 00f6 0F90 pop r0 - 254 00f8 0FBE out __SREG__,r0 - 255 00fa 0F90 pop r0 - 256 00fc 1F90 pop r1 - 257 00fe 1895 reti - 259 .Lscope2: - 261 .stabd 78,0,0 - 263 .global writeZero - 265 writeZero: - 266 .stabd 46,0,0 - 57:pendulum.c **** - 58:pendulum.c **** int main(void) { - 59:pendulum.c **** - 60:pendulum.c **** EIMSK |= 0x02; // External Interrupt Mask Register - 61:pendulum.c **** // Enable INT1 (PIN5) for interrupt - 62:pendulum.c **** EICRA |= 0x0c; // External Interrupt Control Register - 63:pendulum.c **** // INT1 on rising edge - 64:pendulum.c **** - 65:pendulum.c **** TIMSK1 |= 0x01; // Timer/Counter1 Interrupt Mask Register - 66:pendulum.c **** // Enable overflow interrupt - 67:pendulum.c **** TCCR1B |= 0x01; // Timer/Counter1 Control Register B - 68:pendulum.c **** // Prescale Factor 1 - 69:pendulum.c **** - 70:pendulum.c **** SREG |= 0x80; // Status Register - 71:pendulum.c **** // Enable global interrupts - 72:pendulum.c **** - 73:pendulum.c **** DDRC = 0x3f; // Digital Direction PORTC[5:0] = output - 74:pendulum.c **** PORTC = 0x00; - 75:pendulum.c **** - 76:pendulum.c **** // Init color - 77:pendulum.c **** hsv_t colorsHSV[LEDS]; - 78:pendulum.c **** rgb_t colorsRGB[LEDS]; - 79:pendulum.c **** interpolate( - 80:pendulum.c **** init_hsv_t(min, HUE_SAT, HUE_VAL), // from color - 81:pendulum.c **** init_hsv_t(max, HUE_SAT, HUE_VAL), // to color - 82:pendulum.c **** LEDS, - 83:pendulum.c **** colorsHSV - 84:pendulum.c **** ); - 85:pendulum.c **** hsv2rgbList(colorsHSV, colorsRGB, LEDS); - 86:pendulum.c **** // Assign color - 87:pendulum.c **** for(int i = 0; i < LEDS; i++) { - 88:pendulum.c **** writeRGB( colorsRGB[i].r, colorsRGB[i].g, colorsRGB[i].b); - 89:pendulum.c **** } - 90:pendulum.c **** - 91:pendulum.c **** // Next color - 92:pendulum.c **** int8_t sign = 1; - 93:pendulum.c **** min += sign * HUE_STEP; - 94:pendulum.c **** max -= sign * HUE_STEP; - 95:pendulum.c **** interpolate( - 96:pendulum.c **** init_hsv_t(min, HUE_SAT, HUE_VAL),// from color - 97:pendulum.c **** init_hsv_t(max, HUE_SAT, HUE_VAL), // to color - 98:pendulum.c **** LEDS, - 99:pendulum.c **** colorsHSV - 100:pendulum.c **** ); - 101:pendulum.c **** hsv2rgbList(colorsHSV, colorsRGB, LEDS); - 102:pendulum.c **** - 103:pendulum.c **** while(1) { - 104:pendulum.c **** uint32_t now = time + TCNT1; - 105:pendulum.c **** //~ if(now > delay) { - 106:pendulum.c **** //~ PORTC |= 0x08; // PORTC3 = HIGH - 107:pendulum.c **** //~ } - 108:pendulum.c **** //~ if(now > delay * 2) { - 109:pendulum.c **** //~ PORTC &= 0xf7; // PORTC3 = LOW - 110:pendulum.c **** //~ } - 111:pendulum.c **** - 112:pendulum.c **** if(now > cooldown) { - 113:pendulum.c **** EIMSK |= 0x02; // Enable INT1 - 114:pendulum.c **** } - 115:pendulum.c **** - 116:pendulum.c **** uint32_t T_step = T_half / colorSteps; - 117:pendulum.c **** - 118:pendulum.c **** // Check if it is time for next color - 119:pendulum.c **** if(now > oldTime + T_step) { - 120:pendulum.c **** oldTime += T_step; - 121:pendulum.c **** PORTC ^= 0x04; - 122:pendulum.c **** // Assign color - 123:pendulum.c **** cli(); - 124:pendulum.c **** for(int i = 0; i < LEDS; i++) { - 125:pendulum.c **** writeRGB( colorsRGB[i].r, colorsRGB[i].g, colorsRGB[i].b); - 126:pendulum.c **** } - 127:pendulum.c **** sei(); - 128:pendulum.c **** //~ _delay_us(51); - 129:pendulum.c **** - 130:pendulum.c **** // Next color - 131:pendulum.c **** min += sign * HUE_STEP; - 132:pendulum.c **** max -= sign * HUE_STEP; - 133:pendulum.c **** interpolate( - 134:pendulum.c **** init_hsv_t(min, HUE_SAT, HUE_VAL), // from color - 135:pendulum.c **** init_hsv_t(max, HUE_SAT, HUE_VAL), // to color - 136:pendulum.c **** LEDS, - 137:pendulum.c **** colorsHSV - 138:pendulum.c **** ); - 139:pendulum.c **** hsv2rgbList(colorsHSV, colorsRGB, LEDS); - 140:pendulum.c **** // Check if reached amplitude - 141:pendulum.c **** if(sign == 1 && (min >= HUE_MAX || max <= HUE_MIN)) { - 142:pendulum.c **** sign = -1; - 143:pendulum.c **** } else if(sign == -1 && (min <= HUE_MIN || max >= HUE_MAX)) { - 144:pendulum.c **** sign = 1; - 145:pendulum.c **** } - 146:pendulum.c **** //~ if(status == 1 && sign == 1 && (min >= HUE_MAX || max <= HUE_MIN)) { - 147:pendulum.c **** //~ sign = -1; - 148:pendulum.c **** //~ } else if(status == 1 && sign == -1 && (min <= HUE_MIN || max >= HUE_MAX)) { - 149:pendulum.c **** //~ sign = 1; - 150:pendulum.c **** //~ } else if(status == -1 && sign == 1 && (min <= HUE_MIN || max >= HUE_MAX)) { - 151:pendulum.c **** //~ sign = -1; - 152:pendulum.c **** //~ } else if(status == -1 && sign == -1 && (min >= HUE_MAX || max <= HUE_MIN)) { - 153:pendulum.c **** //~ sign = 1; - 154:pendulum.c **** //~ } - 155:pendulum.c **** } - 156:pendulum.c **** } - 157:pendulum.c **** } - 158:pendulum.c **** - 159:pendulum.c **** /*********************************************************************** - 160:pendulum.c **** * - 161:pendulum.c **** * TIMING - 162:pendulum.c **** * - 163:pendulum.c **** ************************************************************************ - 164:pendulum.c **** * f=20MHz -> T=0,05 µs = 50 ns - 165:pendulum.c **** * - 166:pendulum.c **** * 0,05 µs * 6 == 0.3 µs ~ 0.4 µs (+- 150ns) == [0.25, 0.55] µs - 167:pendulum.c **** * 0,05 µs * 14 == 0.7 µs ~ 0.8 µs (+- 150ns) == [0.65, 0.95] µs - 168:pendulum.c **** * 0,05 µs * 15 == 0.75 µs ~ 0.85 µs (+- 150ns) == [0.70, 1.00] µs - 169:pendulum.c **** * 0,05 µs * 8 == 0.35 µs ~ 0.45 µs (+- 150ns) == [0.30, 0.60] µs - 170:pendulum.c **** * 51 µs > 50 µs - 171:pendulum.c **** ************************************************************************/ - 172:pendulum.c **** // AVR-GCC optimizes multiple "nop"s on every optimization level - 173:pendulum.c **** // So we use timing from: - 174:pendulum.c **** // https://github.com/cpldcpu/light_ws2812/blob/master/light_ws2812_AVR/Light_WS2812/light_ws2812.c - 175:pendulum.c **** #define w_nop1 __asm__("nop \n\t") - 176:pendulum.c **** #define w_nop2 __asm__("rjmp .+0 \n\t") - 177:pendulum.c **** #define w_nop4 w_nop2; w_nop2 - 178:pendulum.c **** #define w_nop8 w_nop4; w_nop4 - 179:pendulum.c **** #define w_nop16 w_nop8; w_nop8 // Not used - 180:pendulum.c **** - 181:pendulum.c **** #define wait6 w_nop2; w_nop4 - 182:pendulum.c **** #define wait8 w_nop8 - 183:pendulum.c **** #define wait14 wait8; wait6 - 184:pendulum.c **** #define wait15 wait14; w_nop1 - 185:pendulum.c **** - 186:pendulum.c **** // WS2812B protocol - 187:pendulum.c **** inline void writeZero() { - 268 .LM12: - 269 .LFBB3: - 270 /* prologue: function */ - 271 /* frame size = 0 */ - 272 /* stack size = 0 */ - 273 .L__stack_usage = 0 - 188:pendulum.c **** PORTC |= 0x01; // PORTC0 = 1, PORTC[5:1] = invariant - 275 .LM13: - 276 0100 409A sbi 0x8,0 - 189:pendulum.c **** wait6; - 278 .LM14: - 279 /* #APP */ - 280 ; 189 "pendulum.c" 1 - 281 0102 00C0 rjmp .+0 - 282 - 283 ; 0 "" 2 - 284 ; 189 "pendulum.c" 1 - 285 0104 00C0 rjmp .+0 - 286 - 287 ; 0 "" 2 - 288 ; 189 "pendulum.c" 1 - 289 0106 00C0 rjmp .+0 - 290 - 291 ; 0 "" 2 - 190:pendulum.c **** PORTC &= 0xfe; // PORTC0 = 0, PORTC[5:1] = invariant - 293 .LM15: - 294 /* #NOAPP */ - 295 0108 4098 cbi 0x8,0 - 191:pendulum.c **** wait15; - 297 .LM16: - 298 /* #APP */ - 299 ; 191 "pendulum.c" 1 - 300 010a 00C0 rjmp .+0 - 301 - 302 ; 0 "" 2 - 303 ; 191 "pendulum.c" 1 - 304 010c 00C0 rjmp .+0 - 305 - 306 ; 0 "" 2 - 307 ; 191 "pendulum.c" 1 - 308 010e 00C0 rjmp .+0 - 309 - 310 ; 0 "" 2 - 311 ; 191 "pendulum.c" 1 - 312 0110 00C0 rjmp .+0 - 313 - 314 ; 0 "" 2 - 315 ; 191 "pendulum.c" 1 - 316 0112 00C0 rjmp .+0 - 317 - 318 ; 0 "" 2 - 319 ; 191 "pendulum.c" 1 - 320 0114 00C0 rjmp .+0 - 321 - 322 ; 0 "" 2 - 323 ; 191 "pendulum.c" 1 - 324 0116 00C0 rjmp .+0 - 325 - 326 ; 0 "" 2 - 327 ; 191 "pendulum.c" 1 - 328 0118 0000 nop - 329 - 330 ; 0 "" 2 - 331 /* #NOAPP */ - 332 011a 0895 ret - 334 .Lscope3: - 336 .stabd 78,0,0 - 338 .global writeOne - 340 writeOne: - 341 .stabd 46,0,0 - 192:pendulum.c **** } - 193:pendulum.c **** - 194:pendulum.c **** // WS2812B protocol - 195:pendulum.c **** inline void writeOne() { - 343 .LM17: - 344 .LFBB4: - 345 /* prologue: function */ - 346 /* frame size = 0 */ - 347 /* stack size = 0 */ - 348 .L__stack_usage = 0 - 196:pendulum.c **** PORTC |= 0x01; // PORTC0 = 1, PORTC[5:1] = invariant - 350 .LM18: - 351 011c 409A sbi 0x8,0 - 197:pendulum.c **** wait14; - 353 .LM19: - 354 /* #APP */ - 355 ; 197 "pendulum.c" 1 - 356 011e 00C0 rjmp .+0 - 357 - 358 ; 0 "" 2 - 359 ; 197 "pendulum.c" 1 - 360 0120 00C0 rjmp .+0 - 361 - 362 ; 0 "" 2 - 363 ; 197 "pendulum.c" 1 - 364 0122 00C0 rjmp .+0 - 365 - 366 ; 0 "" 2 - 367 ; 197 "pendulum.c" 1 - 368 0124 00C0 rjmp .+0 - 369 - 370 ; 0 "" 2 - 371 ; 197 "pendulum.c" 1 - 372 0126 00C0 rjmp .+0 - 373 - 374 ; 0 "" 2 - 375 ; 197 "pendulum.c" 1 - 376 0128 00C0 rjmp .+0 - 377 - 378 ; 0 "" 2 - 379 ; 197 "pendulum.c" 1 - 380 012a 00C0 rjmp .+0 - 381 - 382 ; 0 "" 2 - 198:pendulum.c **** PORTC &= 0xfe; // PORTC0 = 0, PORTC[5:1] = invariant - 384 .LM20: - 385 /* #NOAPP */ - 386 012c 4098 cbi 0x8,0 - 199:pendulum.c **** wait8; - 388 .LM21: - 389 /* #APP */ - 390 ; 199 "pendulum.c" 1 - 391 012e 00C0 rjmp .+0 - 392 - 393 ; 0 "" 2 - 394 ; 199 "pendulum.c" 1 - 395 0130 00C0 rjmp .+0 - 396 - 397 ; 0 "" 2 - 398 ; 199 "pendulum.c" 1 - 399 0132 00C0 rjmp .+0 - 400 - 401 ; 0 "" 2 - 402 ; 199 "pendulum.c" 1 - 403 0134 00C0 rjmp .+0 - 404 - 405 ; 0 "" 2 - 406 /* #NOAPP */ - 407 0136 0895 ret - 409 .Lscope4: - 411 .stabd 78,0,0 - 416 .global writeRGB - 418 writeRGB: - 419 .stabd 46,0,0 - 200:pendulum.c **** } - 201:pendulum.c **** - 202:pendulum.c **** inline void writeRGB(uint8_t red, uint8_t green, uint8_t blue) { - 421 .LM22: - 422 .LFBB5: - 423 0138 AF92 push r10 - 424 013a BF92 push r11 - 425 013c CF92 push r12 - 426 013e DF92 push r13 - 427 0140 EF92 push r14 - 428 0142 FF92 push r15 - 429 0144 0F93 push r16 - 430 0146 1F93 push r17 - 431 0148 CF93 push r28 - 432 014a DF93 push r29 - 433 /* prologue: function */ - 434 /* frame size = 0 */ - 435 /* stack size = 10 */ - 436 .L__stack_usage = 10 - 437 014c C82E mov r12,r24 - 438 014e E42E mov r14,r20 - 440 .LM23: - 441 0150 C8E0 ldi r28,lo8(8) - 442 0152 D0E0 ldi r29,0 - 203:pendulum.c **** int i; - 204:pendulum.c **** - 205:pendulum.c **** for( i = 128; i > 0; i >>= 1 ) { - 444 .LM24: - 445 0154 00E8 ldi r16,lo8(-128) - 446 0156 10E0 ldi r17,0 - 206:pendulum.c **** if( green & i ){ - 448 .LM25: - 449 0158 A62E mov r10,r22 - 450 015a B12C mov r11,__zero_reg__ - 451 .L8: - 452 015c C801 movw r24,r16 - 453 015e 8A21 and r24,r10 - 454 0160 9B21 and r25,r11 - 455 0162 892B or r24,r25 - 456 0164 01F0 breq .L6 - 207:pendulum.c **** writeOne(); - 458 .LM26: - 459 0166 0E94 0000 call writeOne - 460 016a 00C0 rjmp .L7 - 461 .L6: - 208:pendulum.c **** } else { - 209:pendulum.c **** writeZero(); - 463 .LM27: - 464 016c 0E94 0000 call writeZero - 465 .L7: - 205:pendulum.c **** if( green & i ){ - 467 .LM28: - 468 0170 1595 asr r17 - 469 0172 0795 ror r16 - 470 0174 2197 sbiw r28,1 - 471 0176 01F4 brne .L8 - 472 0178 C8E0 ldi r28,lo8(8) - 473 017a D0E0 ldi r29,0 - 474 017c 00E8 ldi r16,lo8(-128) - 475 017e 10E0 ldi r17,0 - 210:pendulum.c **** } - 211:pendulum.c **** } - 212:pendulum.c **** - 213:pendulum.c **** for( i = 128; i > 0; i >>= 1 ) { - 214:pendulum.c **** if( red & i ){ - 477 .LM29: - 478 0180 D12C mov r13,__zero_reg__ - 479 .L11: - 480 0182 C801 movw r24,r16 - 481 0184 8C21 and r24,r12 - 482 0186 9D21 and r25,r13 - 483 0188 892B or r24,r25 - 484 018a 01F0 breq .L9 - 215:pendulum.c **** writeOne(); - 486 .LM30: - 487 018c 0E94 0000 call writeOne - 488 0190 00C0 rjmp .L10 - 489 .L9: - 216:pendulum.c **** } else { - 217:pendulum.c **** writeZero(); - 491 .LM31: - 492 0192 0E94 0000 call writeZero - 493 .L10: - 213:pendulum.c **** if( red & i ){ - 495 .LM32: - 496 0196 1595 asr r17 - 497 0198 0795 ror r16 - 498 019a 2197 sbiw r28,1 - 499 019c 01F4 brne .L11 - 500 019e C8E0 ldi r28,lo8(8) - 501 01a0 D0E0 ldi r29,0 - 502 01a2 00E8 ldi r16,lo8(-128) - 503 01a4 10E0 ldi r17,0 - 218:pendulum.c **** } - 219:pendulum.c **** } - 220:pendulum.c **** - 221:pendulum.c **** for( i = 128; i > 0; i >>= 1 ) { - 222:pendulum.c **** if( blue & i ){ - 505 .LM33: - 506 01a6 F12C mov r15,__zero_reg__ - 507 .L14: - 508 01a8 C801 movw r24,r16 - 509 01aa 8E21 and r24,r14 - 510 01ac 9F21 and r25,r15 - 511 01ae 892B or r24,r25 - 512 01b0 01F0 breq .L12 - 223:pendulum.c **** writeOne(); - 514 .LM34: - 515 01b2 0E94 0000 call writeOne - 516 01b6 00C0 rjmp .L13 - 517 .L12: - 224:pendulum.c **** } else { - 225:pendulum.c **** writeZero(); - 519 .LM35: - 520 01b8 0E94 0000 call writeZero - 521 .L13: - 221:pendulum.c **** if( blue & i ){ - 523 .LM36: - 524 01bc 1595 asr r17 - 525 01be 0795 ror r16 - 526 01c0 2197 sbiw r28,1 - 527 01c2 01F4 brne .L14 - 528 /* epilogue start */ - 226:pendulum.c **** } - 227:pendulum.c **** } - 228:pendulum.c **** } - 530 .LM37: - 531 01c4 DF91 pop r29 - 532 01c6 CF91 pop r28 - 533 01c8 1F91 pop r17 - 534 01ca 0F91 pop r16 - 535 01cc FF90 pop r15 - 536 01ce EF90 pop r14 - 537 01d0 DF90 pop r13 - 538 01d2 CF90 pop r12 - 539 01d4 BF90 pop r11 - 540 01d6 AF90 pop r10 - 541 01d8 0895 ret - 543 .Lscope5: - 545 .stabd 78,0,0 - 546 .section .text.startup,"ax",@progbits - 548 .global main - 550 main: - 551 .stabd 46,0,0 - 58:pendulum.c **** - 553 .LM38: - 554 .LFBB6: - 555 0000 CF93 push r28 - 556 0002 DF93 push r29 - 557 0004 CDB7 in r28,__SP_L__ - 558 0006 DEB7 in r29,__SP_H__ - 559 0008 C25D subi r28,-46 - 560 000a D109 sbc r29,__zero_reg__ - 561 000c 0FB6 in __tmp_reg__,__SREG__ - 562 000e F894 cli - 563 0010 DEBF out __SP_H__,r29 - 564 0012 0FBE out __SREG__,__tmp_reg__ - 565 0014 CDBF out __SP_L__,r28 - 566 /* prologue: function */ - 567 /* frame size = 210 */ - 568 /* stack size = 212 */ - 569 .L__stack_usage = 212 - 60:pendulum.c **** // Enable INT1 (PIN5) for interrupt - 571 .LM39: - 572 0016 E99A sbi 0x1d,1 - 62:pendulum.c **** // INT1 on rising edge - 574 .LM40: - 575 0018 8091 6900 lds r24,105 - 576 001c 8C60 ori r24,lo8(12) - 577 001e 8093 6900 sts 105,r24 - 65:pendulum.c **** // Enable overflow interrupt - 579 .LM41: - 580 0022 8091 6F00 lds r24,111 - 581 0026 8160 ori r24,lo8(1) - 582 0028 8093 6F00 sts 111,r24 - 67:pendulum.c **** // Prescale Factor 1 - 584 .LM42: - 585 002c 8091 8100 lds r24,129 - 586 0030 8160 ori r24,lo8(1) - 587 0032 8093 8100 sts 129,r24 - 70:pendulum.c **** // Enable global interrupts - 589 .LM43: - 590 0036 8FB7 in r24,__SREG__ - 591 0038 8068 ori r24,lo8(-128) - 592 003a 8FBF out __SREG__,r24 - 73:pendulum.c **** PORTC = 0x00; - 594 .LM44: - 595 003c 8FE3 ldi r24,lo8(63) - 596 003e 87B9 out 0x7,r24 - 74:pendulum.c **** - 598 .LM45: - 599 0040 18B8 out 0x8,__zero_reg__ - 79:pendulum.c **** init_hsv_t(min, HUE_SAT, HUE_VAL), // from color - 601 .LM46: - 602 0042 8091 0000 lds r24,max - 603 0046 9091 0000 lds r25,max+1 - 604 004a 44E1 ldi r20,lo8(20) - 605 004c 64E6 ldi r22,lo8(100) - 606 004e 0E94 0000 call init_hsv_t - 607 0052 4B01 movw r8,r22 - 608 0054 5C01 movw r10,r24 - 609 0056 8091 0000 lds r24,min - 610 005a 9091 0000 lds r25,min+1 - 611 005e 44E1 ldi r20,lo8(20) - 612 0060 64E6 ldi r22,lo8(100) - 613 0062 0E94 0000 call init_hsv_t - 614 0066 9E01 movw r18,r28 - 615 0068 2F5F subi r18,-1 - 616 006a 3F4F sbci r19,-1 - 617 006c 7901 movw r14,r18 - 618 006e 0EE1 ldi r16,lo8(30) - 619 0070 10E0 ldi r17,0 - 620 0072 A501 movw r20,r10 - 621 0074 9401 movw r18,r8 - 622 0076 0E94 0000 call interpolate - 85:pendulum.c **** // Assign color - 624 .LM47: - 625 007a 4EE1 ldi r20,lo8(30) - 626 007c 50E0 ldi r21,0 - 627 007e BE01 movw r22,r28 - 628 0080 6758 subi r22,-121 - 629 0082 7F4F sbci r23,-1 - 630 0084 C701 movw r24,r14 - 631 0086 0E94 0000 call hsv2rgbList - 632 008a 49E7 ldi r20,lo8(121) - 633 008c A42E mov r10,r20 - 634 008e B12C mov r11,__zero_reg__ - 635 0090 AC0E add r10,r28 - 636 0092 BD1E adc r11,r29 - 637 0094 32E0 ldi r19,2 - 638 0096 A30E add r10,r19 - 639 0098 B11C adc r11,__zero_reg__ - 640 009a 4E01 movw r8,r28 - 641 009c 85ED ldi r24,-43 - 642 009e 880E add r8,r24 - 643 00a0 911C adc r9,__zero_reg__ - 644 00a2 8501 movw r16,r10 - 645 .L20: - 646 00a4 D801 movw r26,r16 - 647 00a6 1197 sbiw r26,1 - 648 00a8 C801 movw r24,r16 - 649 00aa 0297 sbiw r24,2 - 650 .LBB2: - 88:pendulum.c **** } - 652 .LM48: - 653 00ac F801 movw r30,r16 - 654 00ae 4081 ld r20,Z - 655 00b0 6C91 ld r22,X - 656 00b2 FC01 movw r30,r24 - 657 00b4 8081 ld r24,Z - 658 00b6 0E94 0000 call writeRGB - 659 00ba 0D5F subi r16,-3 - 660 00bc 1F4F sbci r17,-1 - 87:pendulum.c **** writeRGB( colorsRGB[i].r, colorsRGB[i].g, colorsRGB[i].b); - 662 .LM49: - 663 00be 0815 cp r16,r8 - 664 00c0 1905 cpc r17,r9 - 665 00c2 01F4 brne .L20 - 666 .LBE2: - 93:pendulum.c **** max -= sign * HUE_STEP; - 668 .LM50: - 669 00c4 8091 0000 lds r24,min - 670 00c8 9091 0000 lds r25,min+1 - 671 00cc 0896 adiw r24,8 - 672 00ce 9093 0000 sts min+1,r25 - 673 00d2 8093 0000 sts min,r24 - 94:pendulum.c **** interpolate( - 675 .LM51: - 676 00d6 8091 0000 lds r24,max - 677 00da 9091 0000 lds r25,max+1 - 678 00de 0897 sbiw r24,8 - 679 00e0 9093 0000 sts max+1,r25 - 680 00e4 8093 0000 sts max,r24 - 95:pendulum.c **** init_hsv_t(min, HUE_SAT, HUE_VAL),// from color - 682 .LM52: - 683 00e8 8091 0000 lds r24,max - 684 00ec 9091 0000 lds r25,max+1 - 685 00f0 44E1 ldi r20,lo8(20) - 686 00f2 64E6 ldi r22,lo8(100) - 687 00f4 0E94 0000 call init_hsv_t - 688 00f8 2B01 movw r4,r22 - 689 00fa 3C01 movw r6,r24 - 690 00fc 8091 0000 lds r24,min - 691 0100 9091 0000 lds r25,min+1 - 692 0104 44E1 ldi r20,lo8(20) - 693 0106 64E6 ldi r22,lo8(100) - 694 0108 0E94 0000 call init_hsv_t - 695 010c 9E01 movw r18,r28 - 696 010e 2F5F subi r18,-1 - 697 0110 3F4F sbci r19,-1 - 698 0112 7901 movw r14,r18 - 699 0114 0EE1 ldi r16,lo8(30) - 700 0116 10E0 ldi r17,0 - 701 0118 A301 movw r20,r6 - 702 011a 9201 movw r18,r4 - 703 011c 0E94 0000 call interpolate - 101:pendulum.c **** - 705 .LM53: - 706 0120 4EE1 ldi r20,lo8(30) - 707 0122 50E0 ldi r21,0 - 708 0124 BE01 movw r22,r28 - 709 0126 6758 subi r22,-121 - 710 0128 7F4F sbci r23,-1 - 711 012a C701 movw r24,r14 - 712 012c 0E94 0000 call hsv2rgbList - 92:pendulum.c **** min += sign * HUE_STEP; - 714 .LM54: - 715 0130 DD24 clr r13 - 716 0132 D394 inc r13 - 717 .LBB3: - 121:pendulum.c **** // Assign color - 719 .LM55: - 720 0134 34E0 ldi r19,lo8(4) - 721 0136 C32E mov r12,r19 - 722 .L23: - 104:pendulum.c **** //~ if(now > delay) { - 724 .LM56: - 725 0138 4091 0000 lds r20,time - 726 013c 5091 0000 lds r21,time+1 - 727 0140 6091 0000 lds r22,time+2 - 728 0144 7091 0000 lds r23,time+3 - 729 0148 8091 8400 lds r24,132 - 730 014c 9091 8500 lds r25,132+1 - 731 0150 480F add r20,r24 - 732 0152 591F adc r21,r25 - 733 0154 611D adc r22,__zero_reg__ - 734 0156 711D adc r23,__zero_reg__ - 112:pendulum.c **** EIMSK |= 0x02; // Enable INT1 - 736 .LM57: - 737 0158 8091 0000 lds r24,cooldown - 738 015c 9091 0000 lds r25,cooldown+1 - 739 0160 A091 0000 lds r26,cooldown+2 - 740 0164 B091 0000 lds r27,cooldown+3 - 741 0168 8417 cp r24,r20 - 742 016a 9507 cpc r25,r21 - 743 016c A607 cpc r26,r22 - 744 016e B707 cpc r27,r23 - 745 0170 00F4 brsh .L22 - 113:pendulum.c **** } - 747 .LM58: - 748 0172 E99A sbi 0x1d,1 - 749 .L22: - 116:pendulum.c **** - 751 .LM59: - 752 0174 8091 0000 lds r24,T_half - 753 0178 9091 0000 lds r25,T_half+1 - 754 017c A091 0000 lds r26,T_half+2 - 755 0180 B091 0000 lds r27,T_half+3 - 756 0184 25E0 ldi r18,5 - 757 1: - 758 0186 B695 lsr r27 - 759 0188 A795 ror r26 - 760 018a 9795 ror r25 - 761 018c 8795 ror r24 - 762 018e 2A95 dec r18 - 763 0190 01F4 brne 1b - 119:pendulum.c **** oldTime += T_step; - 765 .LM60: - 766 0192 0091 0000 lds r16,oldTime - 767 0196 1091 0000 lds r17,oldTime+1 - 768 019a 2091 0000 lds r18,oldTime+2 - 769 019e 3091 0000 lds r19,oldTime+3 - 770 01a2 080F add r16,r24 - 771 01a4 191F adc r17,r25 - 772 01a6 2A1F adc r18,r26 - 773 01a8 3B1F adc r19,r27 - 774 01aa 0417 cp r16,r20 - 775 01ac 1507 cpc r17,r21 - 776 01ae 2607 cpc r18,r22 - 777 01b0 3707 cpc r19,r23 - 778 01b2 00F4 brsh .L23 - 120:pendulum.c **** PORTC ^= 0x04; - 780 .LM61: - 781 01b4 4091 0000 lds r20,oldTime - 782 01b8 5091 0000 lds r21,oldTime+1 - 783 01bc 6091 0000 lds r22,oldTime+2 - 784 01c0 7091 0000 lds r23,oldTime+3 - 785 01c4 840F add r24,r20 - 786 01c6 951F adc r25,r21 - 787 01c8 A61F adc r26,r22 - 788 01ca B71F adc r27,r23 - 789 01cc 8093 0000 sts oldTime,r24 - 790 01d0 9093 0000 sts oldTime+1,r25 - 791 01d4 A093 0000 sts oldTime+2,r26 - 792 01d8 B093 0000 sts oldTime+3,r27 - 121:pendulum.c **** // Assign color - 794 .LM62: - 795 01dc 88B1 in r24,0x8 - 796 01de 8C25 eor r24,r12 - 797 01e0 88B9 out 0x8,r24 - 123:pendulum.c **** for(int i = 0; i < LEDS; i++) { - 799 .LM63: - 800 /* #APP */ - 801 ; 123 "pendulum.c" 1 - 802 01e2 F894 cli - 803 ; 0 "" 2 - 804 /* #NOAPP */ - 805 01e4 8501 movw r16,r10 - 806 .L24: - 807 01e6 D801 movw r26,r16 - 808 01e8 1197 sbiw r26,1 - 809 01ea C801 movw r24,r16 - 810 01ec 0297 sbiw r24,2 - 811 .LBB4: - 125:pendulum.c **** } - 813 .LM64: - 814 01ee F801 movw r30,r16 - 815 01f0 4081 ld r20,Z - 816 01f2 6C91 ld r22,X - 817 01f4 FC01 movw r30,r24 - 818 01f6 8081 ld r24,Z - 819 01f8 0E94 0000 call writeRGB - 820 01fc 0D5F subi r16,-3 - 821 01fe 1F4F sbci r17,-1 - 124:pendulum.c **** writeRGB( colorsRGB[i].r, colorsRGB[i].g, colorsRGB[i].b); - 823 .LM65: - 824 0200 0815 cp r16,r8 - 825 0202 1905 cpc r17,r9 - 826 0204 01F4 brne .L24 - 827 .LBE4: - 127:pendulum.c **** //~ _delay_us(51); - 829 .LM66: - 830 /* #APP */ - 831 ; 127 "pendulum.c" 1 - 832 0206 7894 sei - 833 ; 0 "" 2 - 131:pendulum.c **** max -= sign * HUE_STEP; - 835 .LM67: - 836 /* #NOAPP */ - 837 0208 8091 0000 lds r24,min - 838 020c 9091 0000 lds r25,min+1 - 839 0210 FD2D mov r31,r13 - 840 0212 28E0 ldi r18,lo8(8) - 841 0214 F202 muls r31,r18 - 842 0216 800D add r24,r0 - 843 0218 911D adc r25,r1 - 844 021a 1124 clr __zero_reg__ - 845 021c 9093 0000 sts min+1,r25 - 846 0220 8093 0000 sts min,r24 - 132:pendulum.c **** interpolate( - 848 .LM68: - 849 0224 8091 0000 lds r24,max - 850 0228 9091 0000 lds r25,max+1 - 851 022c 38E0 ldi r19,lo8(8) - 852 022e F302 muls r31,r19 - 853 0230 8019 sub r24,r0 - 854 0232 9109 sbc r25,r1 - 855 0234 1124 clr __zero_reg__ - 856 0236 9093 0000 sts max+1,r25 - 857 023a 8093 0000 sts max,r24 - 133:pendulum.c **** init_hsv_t(min, HUE_SAT, HUE_VAL), // from color - 859 .LM69: - 860 023e 8091 0000 lds r24,max - 861 0242 9091 0000 lds r25,max+1 - 862 0246 44E1 ldi r20,lo8(20) - 863 0248 64E6 ldi r22,lo8(100) - 864 024a 0E94 0000 call init_hsv_t - 865 024e 2B01 movw r4,r22 - 866 0250 3C01 movw r6,r24 - 867 0252 8091 0000 lds r24,min - 868 0256 9091 0000 lds r25,min+1 - 869 025a 44E1 ldi r20,lo8(20) - 870 025c 64E6 ldi r22,lo8(100) - 871 025e 0E94 0000 call init_hsv_t - 872 0262 FE01 movw r30,r28 - 873 0264 3196 adiw r30,1 - 874 0266 7F01 movw r14,r30 - 875 0268 0EE1 ldi r16,lo8(30) - 876 026a 10E0 ldi r17,0 - 877 026c A301 movw r20,r6 - 878 026e 9201 movw r18,r4 - 879 0270 0E94 0000 call interpolate - 139:pendulum.c **** // Check if reached amplitude - 881 .LM70: - 882 0274 4EE1 ldi r20,lo8(30) - 883 0276 50E0 ldi r21,0 - 884 0278 BE01 movw r22,r28 - 885 027a 6758 subi r22,-121 - 886 027c 7F4F sbci r23,-1 - 887 027e C701 movw r24,r14 - 888 0280 0E94 0000 call hsv2rgbList - 141:pendulum.c **** sign = -1; - 890 .LM71: - 891 0284 F1E0 ldi r31,lo8(1) - 892 0286 DF12 cpse r13,r31 - 893 0288 00C0 rjmp .L25 - 141:pendulum.c **** sign = -1; - 895 .LM72: - 896 028a 8091 0000 lds r24,min - 897 028e 9091 0000 lds r25,min+1 - 898 0292 8236 cpi r24,98 - 899 0294 9240 sbci r25,2 - 900 0296 00F0 brlo .L34 - 901 .L28: - 142:pendulum.c **** } else if(sign == -1 && (min <= HUE_MIN || max >= HUE_MAX)) { - 903 .LM73: - 904 0298 DD24 clr r13 - 905 029a DA94 dec r13 - 906 029c 00C0 rjmp .L23 - 907 .L34: - 141:pendulum.c **** sign = -1; - 909 .LM74: - 910 029e 8091 0000 lds r24,max - 911 02a2 9091 0000 lds r25,max+1 - 912 02a6 8F35 cpi r24,95 - 913 02a8 9140 sbci r25,1 - 914 02aa 00F0 brlo .L28 - 915 02ac 00C0 rjmp .L23 - 916 .L25: - 143:pendulum.c **** sign = 1; - 918 .LM75: - 919 02ae 8FEF ldi r24,lo8(-1) - 920 02b0 D816 cp r13,r24 - 921 02b2 01F0 breq .L35 - 922 02b4 D12C mov r13,__zero_reg__ - 923 02b6 00C0 rjmp .L23 - 924 .L35: - 143:pendulum.c **** sign = 1; - 926 .LM76: - 927 02b8 8091 0000 lds r24,min - 928 02bc 9091 0000 lds r25,min+1 - 929 02c0 8F35 cpi r24,95 - 930 02c2 9140 sbci r25,1 - 931 02c4 00F4 brsh .L36 - 932 .L30: - 144:pendulum.c **** } - 934 .LM77: - 935 02c6 DD24 clr r13 - 936 02c8 D394 inc r13 - 937 02ca 00C0 rjmp .L23 - 938 .L36: - 143:pendulum.c **** sign = 1; - 940 .LM78: - 941 02cc 8091 0000 lds r24,max - 942 02d0 9091 0000 lds r25,max+1 - 943 02d4 8236 cpi r24,98 - 944 02d6 9240 sbci r25,2 - 945 02d8 00F4 brsh .+2 - 946 02da 00C0 rjmp .L23 - 947 02dc 00C0 rjmp .L30 - 948 .LBE3: - 959 .Lscope6: - 961 .stabd 78,0,0 - 962 .global cooldown - 963 .section .bss - 966 cooldown: - 967 0000 0000 0000 .zero 4 - 968 .global oldTime - 971 oldTime: - 972 0004 0000 0000 .zero 4 - 973 .global T_half - 976 T_half: - 977 0008 0000 0000 .zero 4 - 978 .global time - 981 time: - 982 000c 0000 0000 .zero 4 - 983 .global max - 984 .data - 987 max: - 988 0000 E001 .word 480 - 989 .global min - 992 min: - 993 0002 E001 .word 480 - 994 .global status - 997 status: - 998 0004 01 .byte 1 - 999 .global colorSteps - 1000 .section .rodata - 1003 colorSteps: - 1004 0000 20 .byte 32 - 1005 0001 00 .byte 0 - 1006 0002 00 .byte 0 - 1007 0003 00 .byte 0 - 1016 .text - 1018 .Letext0: - 1019 .ident "GCC: (GNU) 4.9.2" - 1020 .global __do_copy_data - 1021 .global __do_clear_bss -DEFINED SYMBOLS - *ABS*:0000000000000000 pendulum.c - /tmp/ccgxWf0J.s:2 *ABS*:000000000000003e __SP_H__ - /tmp/ccgxWf0J.s:3 *ABS*:000000000000003d __SP_L__ - /tmp/ccgxWf0J.s:4 *ABS*:000000000000003f __SREG__ - /tmp/ccgxWf0J.s:5 *ABS*:0000000000000000 __tmp_reg__ - /tmp/ccgxWf0J.s:6 *ABS*:0000000000000001 __zero_reg__ - /tmp/ccgxWf0J.s:115 .text:0000000000000000 __vector_2 - /tmp/ccgxWf0J.s:981 .bss:000000000000000c time - /tmp/ccgxWf0J.s:976 .bss:0000000000000008 T_half - /tmp/ccgxWf0J.s:966 .bss:0000000000000000 cooldown - /tmp/ccgxWf0J.s:971 .bss:0000000000000004 oldTime - /tmp/ccgxWf0J.s:217 .text:00000000000000ba __vector_13 - /tmp/ccgxWf0J.s:265 .text:0000000000000100 writeZero - /tmp/ccgxWf0J.s:340 .text:000000000000011c writeOne - /tmp/ccgxWf0J.s:418 .text:0000000000000138 writeRGB - /tmp/ccgxWf0J.s:550 .text.startup:0000000000000000 main - /tmp/ccgxWf0J.s:987 .data:0000000000000000 max - /tmp/ccgxWf0J.s:992 .data:0000000000000002 min - /tmp/ccgxWf0J.s:997 .data:0000000000000004 status - /tmp/ccgxWf0J.s:1003 .rodata:0000000000000000 colorSteps - -UNDEFINED SYMBOLS -init_hsv_t -interpolate -hsv2rgbList -__do_copy_data -__do_clear_bss diff --git a/sketches/pendulum/pendulum.map b/sketches/pendulum/pendulum.map deleted file mode 100644 index 053f362..0000000 --- a/sketches/pendulum/pendulum.map +++ /dev/null @@ -1,772 +0,0 @@ -Archive member included to satisfy reference by file (symbol) - -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o) - color_hsv.o (__subsf3) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o) (__addsf3x) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o) - color_hsv.o (__divsf3) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o) (__divsf3x) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o) - color_hsv.o (__fixunssfsi) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o) - color_hsv.o (__floatunsisf) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_inf.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_inf) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_nan.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_nan) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscA.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_pscA) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscB.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_pscB) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_round.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o) (__fp_round) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_split3) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) (__fp_zero) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o) - color_hsv.o (__mulsf3) -/usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o) (__mulsf3x) -/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) - color_hsv.o (__divmodhi4) -/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o (exit) -/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o) - color_hsv.o (__tablejump2__) -/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - pendulum.o (__do_copy_data) -/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - pendulum.o (__do_clear_bss) -/usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) - /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) (__udivmodhi4) - -↵ -Speichereinrichtung -↵ - -Name Ursprung Länge Eigenschaften -text 0x0000000000000000 0x0000000000020000 xr -data 0x0000000000800060 0x000000000000ffa0 rw !x -eeprom 0x0000000000810000 0x0000000000010000 rw !x -fuse 0x0000000000820000 0x0000000000000400 rw !x -lock 0x0000000000830000 0x0000000000000400 rw !x -signature 0x0000000000840000 0x0000000000000400 rw !x -user_signatures 0x0000000000850000 0x0000000000000400 rw !x -*default* 0x0000000000000000 0xffffffffffffffff - -Linker script and memory map - -Address of section .data set to 0x800100 -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -LOAD pendulum.o -LOAD color_hsv.o -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a -START GROUP -LOAD /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libc.a -LOAD /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libatmega328p.a -END GROUP - -.hash - *(.hash) - -.dynsym - *(.dynsym) - -.dynstr - *(.dynstr) - -.gnu.version - *(.gnu.version) - -.gnu.version_d - *(.gnu.version_d) - -.gnu.version_r - *(.gnu.version_r) - -.rel.init - *(.rel.init) - -.rela.init - *(.rela.init) - -.rel.text - *(.rel.text) - *(.rel.text.*) - *(.rel.gnu.linkonce.t*) - -.rela.text - *(.rela.text) - *(.rela.text.*) - *(.rela.gnu.linkonce.t*) - -.rel.fini - *(.rel.fini) - -.rela.fini - *(.rela.fini) - -.rel.rodata - *(.rel.rodata) - *(.rel.rodata.*) - *(.rel.gnu.linkonce.r*) - -.rela.rodata - *(.rela.rodata) - *(.rela.rodata.*) - *(.rela.gnu.linkonce.r*) - -.rel.data - *(.rel.data) - *(.rel.data.*) - *(.rel.gnu.linkonce.d*) - -.rela.data - *(.rela.data) - *(.rela.data.*) - *(.rela.gnu.linkonce.d*) - -.rel.ctors - *(.rel.ctors) - -.rela.ctors - *(.rela.ctors) - -.rel.dtors - *(.rel.dtors) - -.rela.dtors - *(.rela.dtors) - -.rel.got - *(.rel.got) - -.rela.got - *(.rela.got) - -.rel.bss - *(.rel.bss) - -.rela.bss - *(.rela.bss) - -.rel.plt - *(.rel.plt) - -.rela.plt - *(.rela.plt) - -.text 0x0000000000000000 0xd60 - *(.vectors) - .vectors 0x0000000000000000 0x68 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o - 0x0000000000000000 __vectors - 0x0000000000000000 __vector_default - *(.vectors) - *(.progmem.gcc*) - .progmem.gcc_sw_table - 0x0000000000000068 0xe color_hsv.o - 0x0000000000000076 . = ALIGN (0x2) - 0x0000000000000076 __trampolines_start = . - *(.trampolines) - .trampolines 0x0000000000000076 0x0 linker stubs - *(.trampolines*) - 0x0000000000000076 __trampolines_end = . - *(.progmem*) - 0x0000000000000076 . = ALIGN (0x2) - *(.jumptables) - *(.jumptables*) - *(.lowtext) - *(.lowtext*) - 0x0000000000000076 __ctors_start = . - *(.ctors) - 0x0000000000000076 __ctors_end = . - 0x0000000000000076 __dtors_start = . - *(.dtors) - 0x0000000000000076 __dtors_end = . - SORT(*)(.ctors) - SORT(*)(.dtors) - *(.init0) - .init0 0x0000000000000076 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o - 0x0000000000000076 __init - *(.init0) - *(.init1) - *(.init1) - *(.init2) - .init2 0x0000000000000076 0xc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o - *(.init2) - *(.init3) - *(.init3) - *(.init4) - .init4 0x0000000000000082 0x16 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - 0x0000000000000082 __do_copy_data - .init4 0x0000000000000098 0x10 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - 0x0000000000000098 __do_clear_bss - *(.init4) - *(.init5) - *(.init5) - *(.init6) - *(.init6) - *(.init7) - *(.init7) - *(.init8) - *(.init8) - *(.init9) - .init9 0x00000000000000a8 0x8 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o - *(.init9) - *(.text) - .text 0x00000000000000b0 0x4 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o - 0x00000000000000b0 __vector_22 - 0x00000000000000b0 __vector_1 - 0x00000000000000b0 __vector_24 - 0x00000000000000b0 __vector_12 - 0x00000000000000b0 __bad_interrupt - 0x00000000000000b0 __vector_6 - 0x00000000000000b0 __vector_3 - 0x00000000000000b0 __vector_23 - 0x00000000000000b0 __vector_25 - 0x00000000000000b0 __vector_11 - 0x00000000000000b0 __vector_17 - 0x00000000000000b0 __vector_19 - 0x00000000000000b0 __vector_7 - 0x00000000000000b0 __vector_5 - 0x00000000000000b0 __vector_4 - 0x00000000000000b0 __vector_9 - 0x00000000000000b0 __vector_21 - 0x00000000000000b0 __vector_15 - 0x00000000000000b0 __vector_8 - 0x00000000000000b0 __vector_14 - 0x00000000000000b0 __vector_10 - 0x00000000000000b0 __vector_16 - 0x00000000000000b0 __vector_18 - 0x00000000000000b0 __vector_20 - .text 0x00000000000000b4 0x1da pendulum.o - 0x00000000000000b4 __vector_2 - 0x000000000000016e __vector_13 - 0x00000000000001b4 writeZero - 0x00000000000001d0 writeOne - 0x00000000000001ec writeRGB - .text 0x000000000000028e 0x382 color_hsv.o - 0x000000000000028e interpolate - 0x00000000000003c4 hsv2rgb - 0x00000000000005ba hsv2rgbList - 0x0000000000000604 init_hsv_t - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_inf.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_nan.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscA.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscB.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_round.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - .text 0x0000000000000610 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) - 0x0000000000000610 . = ALIGN (0x2) - *(.text.*) - .text.startup 0x0000000000000610 0x2de pendulum.o - 0x0000000000000610 main - .text.avr-libc.fplib - 0x00000000000008ee 0xe /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o) - 0x00000000000008ee __subsf3 - 0x00000000000008f0 __addsf3 - .text.avr-libc.fplib - 0x00000000000008fc 0xcc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) - 0x000000000000091e __addsf3x - .text.avr-libc.fplib - 0x00000000000009c8 0x8 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o) - 0x00000000000009c8 __divsf3 - .text.avr-libc.fplib - 0x00000000000009d0 0xdc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o) - 0x00000000000009f0 __divsf3x - 0x00000000000009f6 __divsf3_pse - .text.avr-libc.fplib - 0x0000000000000aac 0x5e /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o) - 0x0000000000000aac __fixunssfsi - .text.avr-libc.fplib - 0x0000000000000b0a 0x7a /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o) - 0x0000000000000b0a __floatunsisf - 0x0000000000000b0e __floatsisf - .text.avr-libc.fplib - 0x0000000000000b84 0xc /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_inf.o) - 0x0000000000000b84 __fp_inf - .text.avr-libc.fplib - 0x0000000000000b90 0x6 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_nan.o) - 0x0000000000000b90 __fp_nan - .text.avr-libc.fplib - 0x0000000000000b96 0xe /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscA.o) - 0x0000000000000b96 __fp_pscA - .text.avr-libc.fplib - 0x0000000000000ba4 0xe /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscB.o) - 0x0000000000000ba4 __fp_pscB - .text.avr-libc.fplib - 0x0000000000000bb2 0x22 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_round.o) - 0x0000000000000bb2 __fp_round - .text.avr-libc.fplib - 0x0000000000000bd4 0x44 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o) - 0x0000000000000bd4 __fp_split3 - 0x0000000000000be4 __fp_splitA - .text.avr-libc.fplib - 0x0000000000000c18 0xe /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o) - 0x0000000000000c18 __fp_zero - 0x0000000000000c1a __fp_szero - .text.avr-libc.fplib - 0x0000000000000c26 0x8 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o) - 0x0000000000000c26 __mulsf3 - .text.avr-libc.fplib - 0x0000000000000c2e 0xd2 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o) - 0x0000000000000c4c __mulsf3x - 0x0000000000000c52 __mulsf3_pse - .text.libgcc.mul - 0x0000000000000d00 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) - .text.libgcc.div - 0x0000000000000d00 0x28 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) - 0x0000000000000d00 __divmodhi4 - 0x0000000000000d00 _div - .text.libgcc 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) - .text.libgcc.prologue - 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) - .text.libgcc.builtins - 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) - .text.libgcc.fmul - 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) - .text.libgcc.fixed - 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) - .text.libgcc.mul - 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - .text.libgcc.div - 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - .text.libgcc 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - .text.libgcc.prologue - 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - .text.libgcc.builtins - 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - .text.libgcc.fmul - 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - .text.libgcc.fixed - 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - .text.libgcc.mul - 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o) - .text.libgcc.div - 0x0000000000000d28 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o) - .text.libgcc 0x0000000000000d28 0xc /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o) - 0x0000000000000d28 __tablejump2__ - .text.libgcc.prologue - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o) - .text.libgcc.builtins - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o) - .text.libgcc.fmul - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o) - .text.libgcc.fixed - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o) - .text.libgcc.mul - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - .text.libgcc.div - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - .text.libgcc 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - .text.libgcc.prologue - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - .text.libgcc.builtins - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - .text.libgcc.fmul - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - .text.libgcc.fixed - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - .text.libgcc.mul - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - .text.libgcc.div - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - .text.libgcc 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - .text.libgcc.prologue - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - .text.libgcc.builtins - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - .text.libgcc.fmul - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - .text.libgcc.fixed - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - .text.libgcc.mul - 0x0000000000000d34 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) - .text.libgcc.div - 0x0000000000000d34 0x28 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) - 0x0000000000000d34 __udivmodhi4 - .text.libgcc 0x0000000000000d5c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) - .text.libgcc.prologue - 0x0000000000000d5c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) - .text.libgcc.builtins - 0x0000000000000d5c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) - .text.libgcc.fmul - 0x0000000000000d5c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) - .text.libgcc.fixed - 0x0000000000000d5c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) - 0x0000000000000d5c . = ALIGN (0x2) - *(.fini9) - .fini9 0x0000000000000d5c 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - 0x0000000000000d5c exit - 0x0000000000000d5c _exit - *(.fini9) - *(.fini8) - *(.fini8) - *(.fini7) - *(.fini7) - *(.fini6) - *(.fini6) - *(.fini5) - *(.fini5) - *(.fini4) - *(.fini4) - *(.fini3) - *(.fini3) - *(.fini2) - *(.fini2) - *(.fini1) - *(.fini1) - *(.fini0) - .fini0 0x0000000000000d5c 0x4 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - *(.fini0) - 0x0000000000000d60 _etext = . - -.data 0x0000000000800100 0xa load address 0x0000000000000d60 - 0x0000000000800100 PROVIDE (__data_start, .) - *(.data) - .data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o - .data 0x0000000000800100 0x5 pendulum.o - 0x0000000000800100 max - 0x0000000000800102 min - 0x0000000000800104 status - .data 0x0000000000800105 0x0 color_hsv.o - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_inf.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_nan.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscA.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscB.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_round.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - .data 0x0000000000800105 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) - *(.data*) - *(.rodata) - .rodata 0x0000000000800105 0x4 pendulum.o - 0x0000000000800105 colorSteps - *(.rodata*) - *(.gnu.linkonce.d*) - 0x000000000080010a . = ALIGN (0x2) - *fill* 0x0000000000800109 0x1 - 0x000000000080010a _edata = . - 0x000000000080010a PROVIDE (__data_end, .) - -.bss 0x000000000080010a 0x10 - 0x000000000080010a PROVIDE (__bss_start, .) - *(.bss) - .bss 0x000000000080010a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o - .bss 0x000000000080010a 0x10 pendulum.o - 0x000000000080010a cooldown - 0x000000000080010e oldTime - 0x0000000000800112 T_half - 0x0000000000800116 time - .bss 0x000000000080011a 0x0 color_hsv.o - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_inf.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_nan.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscA.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscB.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_round.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - .bss 0x000000000080011a 0x0 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) - *(.bss*) - *(COMMON) - 0x000000000080011a PROVIDE (__bss_end, .) - 0x0000000000000d60 __data_load_start = LOADADDR (.data) - 0x0000000000000d6a __data_load_end = (__data_load_start + SIZEOF (.data)) - -.noinit 0x000000000080011a 0x0 - 0x000000000080011a PROVIDE (__noinit_start, .) - *(.noinit*) - 0x000000000080011a PROVIDE (__noinit_end, .) - 0x000000000080011a _end = . - 0x000000000080011a PROVIDE (__heap_start, .) - -.eeprom 0x0000000000810000 0x0 - *(.eeprom*) - 0x0000000000810000 __eeprom_end = . - -.fuse - *(.fuse) - *(.lfuse) - *(.hfuse) - *(.efuse) - -.lock - *(.lock*) - -.signature - *(.signature*) - -.user_signatures - *(.user_signatures*) - -.stab 0x0000000000000000 0x1110 - *(.stab) - .stab 0x0000000000000000 0xab0 pendulum.o - .stab 0x0000000000000ab0 0x660 color_hsv.o - 0x834 (size before relaxing) - -.stabstr 0x0000000000000000 0xf67 - *(.stabstr) - .stabstr 0x0000000000000000 0xf67 pendulum.o - -.stab.excl - *(.stab.excl) - -.stab.exclstr - *(.stab.exclstr) - -.stab.index - *(.stab.index) - -.stab.indexstr - *(.stab.indexstr) - -.comment 0x0000000000000000 0x11 - *(.comment) - .comment 0x0000000000000000 0x11 pendulum.o - 0x12 (size before relaxing) - .comment 0x0000000000000011 0x12 color_hsv.o - -.note.gnu.avr.deviceinfo - 0x0000000000000000 0x40 - .note.gnu.avr.deviceinfo - 0x0000000000000000 0x40 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o - -.note.gnu.build-id - *(.note.gnu.build-id) - -.debug - *(.debug) - -.line - *(.line) - -.debug_srcinfo - *(.debug_srcinfo) - -.debug_sfnames - *(.debug_sfnames) - -.debug_aranges - *(.debug_aranges) - -.debug_pubnames - *(.debug_pubnames) - -.debug_info - *(.debug_info .gnu.linkonce.wi.*) - -.debug_abbrev - *(.debug_abbrev) - -.debug_line - *(.debug_line .debug_line.* .debug_line_end) - -.debug_frame - *(.debug_frame) - -.debug_str - *(.debug_str) - -.debug_loc - *(.debug_loc) - -.debug_macinfo - *(.debug_macinfo) - -.debug_weaknames - *(.debug_weaknames) - -.debug_funcnames - *(.debug_funcnames) - -.debug_typenames - *(.debug_typenames) - -.debug_varnames - *(.debug_varnames) - -.debug_pubtypes - *(.debug_pubtypes) - -.debug_ranges - *(.debug_ranges) - -.debug_macro - *(.debug_macro) -OUTPUT(pendulum.elf elf32-avr) -LOAD linker stubs - -Kreuzreferenz-Tabelle - -Symbol Datei -T_half pendulum.o -__addsf3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o) -__addsf3x /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o) -__bad_interrupt /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__bss_end /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) -__bss_start /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) -__data_end /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) -__data_load_start /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) -__data_start /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) -__divmodhi4 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) - color_hsv.o -__divsf3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o) - color_hsv.o -__divsf3_pse /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o) -__divsf3x /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o) -__do_clear_bss /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_clear_bss.o) - pendulum.o -__do_copy_data /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_copy_data.o) - pendulum.o -__fixunssfsi /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o) - color_hsv.o -__floatsisf /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o) - color_hsv.o -__floatunsisf /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(floatsisf.o) - color_hsv.o -__fp_inf /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_inf.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) -__fp_nan /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_nan.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) -__fp_pscA /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscA.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) -__fp_pscB /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_pscB.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) -__fp_round /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_round.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o) -__fp_split3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) -__fp_splitA /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_split3.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o) -__fp_szero /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(divsf3x.o) -__fp_zero /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fp_zero.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(fixunssfsi.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3x.o) -__heap_end /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__init /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__mulsf3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o) - color_hsv.o -__mulsf3_pse /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o) -__mulsf3x /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3x.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(mulsf3.o) -__stack /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__subsf3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/libm.a(addsf3.o) - color_hsv.o -__tablejump2__ /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_tablejump2.o) - color_hsv.o -__udivmodhi4 /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_udivmodhi4.o) - /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) -__vector_1 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_10 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_11 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_12 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_13 pendulum.o - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_14 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_15 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_16 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_17 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_18 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_19 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_2 pendulum.o - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_20 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_21 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_22 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_23 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_24 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_25 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_3 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_4 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_5 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_6 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_7 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_8 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_9 /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vector_default /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -__vectors /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -_div /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_divmodhi4.o) -_exit /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) -colorSteps pendulum.o -cooldown pendulum.o -exit /usr/lib/gcc/avr/4.9.2/avr5/libgcc.a(_exit.o) - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -hsv2rgb color_hsv.o -hsv2rgbList color_hsv.o - pendulum.o -init_hsv_t color_hsv.o - pendulum.o -interpolate color_hsv.o - pendulum.o -main pendulum.o - /usr/lib/gcc/avr/4.9.2/../../../avr/lib/avr5/crtatmega328p.o -max pendulum.o -min pendulum.o -oldTime pendulum.o -status pendulum.o -time pendulum.o -writeOne pendulum.o -writeRGB pendulum.o -writeZero pendulum.o diff --git a/sketches/pendulum/pendulum.o b/sketches/pendulum/pendulum.o deleted file mode 100644 index 800da2d3148223e73641d43e1e02b4a1baa0a30e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11412 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