Rev 410 | Blame | Compare with Previous | Last modification | View Log | Download
AVRcam.elf: file format elf32-avrSections:Idx Name Size VMA LMA File off Algn0 .noinit 00000030 00800300 00800300 0000119a 2**0ALLOC1 .bss 00000274 00800070 00800070 0000119a 2**0ALLOC2 .data 00000010 00800060 000010d6 0000118a 2**0CONTENTS, ALLOC, LOAD, DATA3 .text 000010d6 00000000 00000000 000000b4 2**1CONTENTS, ALLOC, LOAD, READONLY, CODE4 .stab 00003f9c 00000000 00000000 0000119c 2**2CONTENTS, READONLY, DEBUGGING5 .stabstr 000017b7 00000000 00000000 00005138 2**0CONTENTS, READONLY, DEBUGGINGDisassembly of section .text:00000000 <__vectors>:0: 63 c0 rjmp .+198 ; 0xc8 <__init>2: 11 c8 rjmp .-4062 ; 0xfffff026 <__eeprom_end+0xff7ef026>4: 11 c8 rjmp .-4062 ; 0xfffff028 <__eeprom_end+0xff7ef028>6: 7a c0 rjmp .+244 ; 0xfc <__bad_interrupt>8: 79 c0 rjmp .+242 ; 0xfc <__bad_interrupt>a: 78 c0 rjmp .+240 ; 0xfc <__bad_interrupt>c: 77 c0 rjmp .+238 ; 0xfc <__bad_interrupt>e: 76 c0 rjmp .+236 ; 0xfc <__bad_interrupt>10: 0c c8 rjmp .-4072 ; 0xfffff02a <__eeprom_end+0xff7ef02a>12: 74 c0 rjmp .+232 ; 0xfc <__bad_interrupt>14: 73 c0 rjmp .+230 ; 0xfc <__bad_interrupt>16: af c5 rjmp .+2910 ; 0xb76 <__vector_11>18: 71 c0 rjmp .+226 ; 0xfc <__bad_interrupt>1a: 70 c0 rjmp .+224 ; 0xfc <__bad_interrupt>1c: 6f c0 rjmp .+222 ; 0xfc <__bad_interrupt>1e: 6e c0 rjmp .+220 ; 0xfc <__bad_interrupt>20: 6d c0 rjmp .+218 ; 0xfc <__bad_interrupt>22: 14 c6 rjmp .+3112 ; 0xc4c <__vector_17>24: 6b c0 rjmp .+214 ; 0xfc <__bad_interrupt>00000026 <__ctors_end>:26: 2e c6 rjmp .+3164 ; 0xc84 <__vector_17+0x38>28: c1 c6 rjmp .+3458 ; 0xdac <__vector_17+0x160>2a: c0 c6 rjmp .+3456 ; 0xdac <__vector_17+0x160>2c: bf c6 rjmp .+3454 ; 0xdac <__vector_17+0x160>2e: be c6 rjmp .+3452 ; 0xdac <__vector_17+0x160>30: bd c6 rjmp .+3450 ; 0xdac <__vector_17+0x160>32: bc c6 rjmp .+3448 ; 0xdac <__vector_17+0x160>34: bb c6 rjmp .+3446 ; 0xdac <__vector_17+0x160>36: 26 c6 rjmp .+3148 ; 0xc84 <__vector_17+0x38>38: b9 c6 rjmp .+3442 ; 0xdac <__vector_17+0x160>3a: b8 c6 rjmp .+3440 ; 0xdac <__vector_17+0x160>3c: b7 c6 rjmp .+3438 ; 0xdac <__vector_17+0x160>3e: b6 c6 rjmp .+3436 ; 0xdac <__vector_17+0x160>40: b5 c6 rjmp .+3434 ; 0xdac <__vector_17+0x160>42: b4 c6 rjmp .+3432 ; 0xdac <__vector_17+0x160>44: b3 c6 rjmp .+3430 ; 0xdac <__vector_17+0x160>46: 36 c6 rjmp .+3180 ; 0xcb4 <__vector_17+0x68>48: b1 c6 rjmp .+3426 ; 0xdac <__vector_17+0x160>4a: b0 c6 rjmp .+3424 ; 0xdac <__vector_17+0x160>4c: af c6 rjmp .+3422 ; 0xdac <__vector_17+0x160>4e: ae c6 rjmp .+3420 ; 0xdac <__vector_17+0x160>50: ad c6 rjmp .+3418 ; 0xdac <__vector_17+0x160>52: ac c6 rjmp .+3416 ; 0xdac <__vector_17+0x160>54: ab c6 rjmp .+3414 ; 0xdac <__vector_17+0x160>56: 3e c6 rjmp .+3196 ; 0xcd4 <__vector_17+0x88>58: a9 c6 rjmp .+3410 ; 0xdac <__vector_17+0x160>5a: a8 c6 rjmp .+3408 ; 0xdac <__vector_17+0x160>5c: a7 c6 rjmp .+3406 ; 0xdac <__vector_17+0x160>5e: a6 c6 rjmp .+3404 ; 0xdac <__vector_17+0x160>60: a5 c6 rjmp .+3402 ; 0xdac <__vector_17+0x160>62: a4 c6 rjmp .+3400 ; 0xdac <__vector_17+0x160>64: a3 c6 rjmp .+3398 ; 0xdac <__vector_17+0x160>66: 3f c6 rjmp .+3198 ; 0xce6 <__vector_17+0x9a>68: a1 c6 rjmp .+3394 ; 0xdac <__vector_17+0x160>6a: a0 c6 rjmp .+3392 ; 0xdac <__vector_17+0x160>6c: 9f c6 rjmp .+3390 ; 0xdac <__vector_17+0x160>6e: 9e c6 rjmp .+3388 ; 0xdac <__vector_17+0x160>70: 9d c6 rjmp .+3386 ; 0xdac <__vector_17+0x160>72: 9c c6 rjmp .+3384 ; 0xdac <__vector_17+0x160>74: 9b c6 rjmp .+3382 ; 0xdac <__vector_17+0x160>76: 57 c6 rjmp .+3246 ; 0xd26 <__vector_17+0xda>78: 99 c6 rjmp .+3378 ; 0xdac <__vector_17+0x160>7a: 98 c6 rjmp .+3376 ; 0xdac <__vector_17+0x160>7c: 97 c6 rjmp .+3374 ; 0xdac <__vector_17+0x160>7e: 96 c6 rjmp .+3372 ; 0xdac <__vector_17+0x160>80: 95 c6 rjmp .+3370 ; 0xdac <__vector_17+0x160>82: 94 c6 rjmp .+3368 ; 0xdac <__vector_17+0x160>84: 93 c6 rjmp .+3366 ; 0xdac <__vector_17+0x160>86: 92 c6 rjmp .+3364 ; 0xdac <__vector_17+0x160>88: 91 c6 rjmp .+3362 ; 0xdac <__vector_17+0x160>8a: 90 c6 rjmp .+3360 ; 0xdac <__vector_17+0x160>8c: 8f c6 rjmp .+3358 ; 0xdac <__vector_17+0x160>8e: 8e c6 rjmp .+3356 ; 0xdac <__vector_17+0x160>90: 8d c6 rjmp .+3354 ; 0xdac <__vector_17+0x160>92: 8c c6 rjmp .+3352 ; 0xdac <__vector_17+0x160>94: 8b c6 rjmp .+3350 ; 0xdac <__vector_17+0x160>96: 50 c6 rjmp .+3232 ; 0xd38 <__vector_17+0xec>98: 89 c6 rjmp .+3346 ; 0xdac <__vector_17+0x160>9a: 88 c6 rjmp .+3344 ; 0xdac <__vector_17+0x160>9c: 87 c6 rjmp .+3342 ; 0xdac <__vector_17+0x160>9e: 86 c6 rjmp .+3340 ; 0xdac <__vector_17+0x160>a0: 85 c6 rjmp .+3338 ; 0xdac <__vector_17+0x160>a2: 84 c6 rjmp .+3336 ; 0xdac <__vector_17+0x160>a4: 83 c6 rjmp .+3334 ; 0xdac <__vector_17+0x160>a6: 16 c6 rjmp .+3116 ; 0xcd4 <__vector_17+0x88>a8: 81 c6 rjmp .+3330 ; 0xdac <__vector_17+0x160>aa: 80 c6 rjmp .+3328 ; 0xdac <__vector_17+0x160>ac: 7f c6 rjmp .+3326 ; 0xdac <__vector_17+0x160>ae: 7e c6 rjmp .+3324 ; 0xdac <__vector_17+0x160>b0: 7d c6 rjmp .+3322 ; 0xdac <__vector_17+0x160>b2: 7c c6 rjmp .+3320 ; 0xdac <__vector_17+0x160>b4: 7b c6 rjmp .+3318 ; 0xdac <__vector_17+0x160>b6: 51 c6 rjmp .+3234 ; 0xd5a <__vector_17+0x10e>b8: 79 c6 rjmp .+3314 ; 0xdac <__vector_17+0x160>ba: 78 c6 rjmp .+3312 ; 0xdac <__vector_17+0x160>bc: 77 c6 rjmp .+3310 ; 0xdac <__vector_17+0x160>be: 76 c6 rjmp .+3308 ; 0xdac <__vector_17+0x160>c0: 75 c6 rjmp .+3306 ; 0xdac <__vector_17+0x160>c2: 74 c6 rjmp .+3304 ; 0xdac <__vector_17+0x160>c4: 73 c6 rjmp .+3302 ; 0xdac <__vector_17+0x160>c6: 64 c6 rjmp .+3272 ; 0xd90 <__vector_17+0x144>000000c8 <__init>:c8: 11 24 eor r1, r1ca: 1f be out 0x3f, r1 ; 63cc: cf e5 ldi r28, 0x5F ; 95ce: d4 e0 ldi r29, 0x04 ; 4d0: de bf out 0x3e, r29 ; 62d2: cd bf out 0x3d, r28 ; 61000000d4 <__do_copy_data>:d4: 10 e0 ldi r17, 0x00 ; 0d6: a0 e6 ldi r26, 0x60 ; 96d8: b0 e0 ldi r27, 0x00 ; 0da: e6 ed ldi r30, 0xD6 ; 214dc: f0 e1 ldi r31, 0x10 ; 16de: 02 c0 rjmp .+4 ; 0xe4 <.do_copy_data_start>000000e0 <.do_copy_data_loop>:e0: 05 90 lpm r0, Z+e2: 0d 92 st X+, r0000000e4 <.do_copy_data_start>:e4: a0 37 cpi r26, 0x70 ; 112e6: b1 07 cpc r27, r17e8: d9 f7 brne .-10 ; 0xe0 <.do_copy_data_loop>000000ea <__do_clear_bss>:ea: 12 e0 ldi r17, 0x02 ; 2ec: a0 e7 ldi r26, 0x70 ; 112ee: b0 e0 ldi r27, 0x00 ; 0f0: 01 c0 rjmp .+2 ; 0xf4 <.do_clear_bss_start>000000f2 <.do_clear_bss_loop>:f2: 1d 92 st X+, r1000000f4 <.do_clear_bss_start>:f4: a4 3e cpi r26, 0xE4 ; 228f6: b1 07 cpc r27, r17f8: e1 f7 brne .-8 ; 0xf2 <.do_clear_bss_loop>fa: 30 c0 rjmp .+96 ; 0x15c <main>000000fc <__bad_interrupt>:fc: 9d c7 rjmp .+3898 ; 0x1038 <__vector_default>000000fe <CamInt_resetCam>:output the clock signal. Thus, if we reset the cam, theAVR has no clock, and thus doesn't run...***********************************************************/void CamInt_resetCam(void){fe: 08 95 ret00000100 <CamInt_init>:100: 8f 9a sbi 0x11, 7 ; 17102: 8f 9a sbi 0x11, 7 ; 17104: 8a 98 cbi 0x11, 2 ; 17106: 97 98 cbi 0x12, 7 ; 18108: 87 b3 in r24, 0x17 ; 2310a: 80 7f andi r24, 0xF0 ; 24010c: 87 bb out 0x17, r24 ; 2310e: 87 b3 in r24, 0x17 ; 23110: 80 6f ori r24, 0xF0 ; 240112: 87 bb out 0x17, r24 ; 23114: 84 b3 in r24, 0x14 ; 20116: 80 7f andi r24, 0xF0 ; 240118: 84 bb out 0x14, r24 ; 2011a: 8e b5 in r24, 0x2e ; 4611c: 88 7f andi r24, 0xF8 ; 24811e: 8e bd out 0x2e, r24 ; 46120: 85 b7 in r24, 0x35 ; 53122: 8c 60 ori r24, 0x0C ; 12124: 85 bf out 0x35, r24 ; 53126: 85 b7 in r24, 0x35 ; 53128: 83 60 ori r24, 0x03 ; 312a: 85 bf out 0x35, r24 ; 5312c: 8b b7 in r24, 0x3b ; 5912e: 80 64 ori r24, 0x40 ; 64130: 8b bf out 0x3b, r24 ; 59132: 86 e0 ldi r24, 0x06 ; 6134: 83 bf out 0x33, r24 ; 51136: 85 b7 in r24, 0x35 ; 53138: 8f 78 andi r24, 0x8F ; 14313a: 85 bf out 0x35, r24 ; 5313c: 85 b7 in r24, 0x35 ; 5313e: 80 68 ori r24, 0x80 ; 128140: 85 bf out 0x35, r24 ; 53142: e0 e0 ldi r30, 0x00 ; 0144: f3 e0 ldi r31, 0x03 ; 3146: 80 e3 ldi r24, 0x30 ; 48148: df 01 movw r26, r3014a: 98 2f mov r25, r2414c: 1d 92 st X+, r114e: 9a 95 dec r25150: e9 f7 brne .-6 ; 0x14c <CamInt_init+0x4c>/* Needed in order to truncate to 8 bit. */uint8_t len;len = (uint8_t) n;__asm__ __volatile__ (152: a1 e0 ldi r26, 0x01 ; 1154: b0 e0 ldi r27, 0x00 ; 0156: 18 2e mov r1, r24158: ac d7 rcall .+3928 ; 0x10b2 <__eeprom_read_block_1C1D1E>15a: 08 95 ret0000015c <main>:Inputs: noneOutputs: int***********************************************************/int main(void){15c: cf e5 ldi r28, 0x5F ; 9515e: d4 e0 ldi r29, 0x04 ; 4160: de bf out 0x3e, r29 ; 62162: cd bf out 0x3d, r28 ; 61/* initialize all of the interface modules */DebugInt_init();164: db d6 rcall .+3510 ; 0xf1c <DebugInt_init>UartInt_init();166: f9 d4 rcall .+2546 ; 0xb5a <UartInt_init>I2CInt_init();168: 30 d5 rcall .+2656 ; 0xbca <I2CInt_init>CamInt_init();16a: ca df rcall .-108 ; 0x100 <CamInt_init>/* initialize the remaining modules that will processdata...interrupts need to be on for these */ENABLE_INTS();16c: 78 94 seiCamConfig_init();16e: 8a d6 rcall .+3348 ; 0xe84 <CamConfig_init>UIMgr_init();170: 6a d3 rcall .+1748 ; 0x846 <UIMgr_init>FrameMgr_init();172: 25 d2 rcall .+1098 ; 0x5be <FrameMgr_init>/* provide a short delay for the camera to stabilize beforewe let the executive start up */Utility_delay(1000);174: 88 ee ldi r24, 0xE8 ; 232176: 93 e0 ldi r25, 0x03 ; 3178: 96 d6 rcall .+3372 ; 0xea6 <Utility_delay>/* the rest of the application will be under thecontrol of the Executive. */Exec_run();17a: 11 d0 rcall .+34 ; 0x19e <Exec_run>/* this should never be reached */return(0);}17c: 80 e0 ldi r24, 0x00 ; 017e: 90 e0 ldi r25, 0x00 ; 0180: a9 c7 rjmp .+3922 ; 0x10d4 <_exit>00000182 <Exec_writeEventFifo>:182: f8 94 cli184: 90 91 70 00 lds r25, 0x0070188: ec e6 ldi r30, 0x6C ; 10818a: f2 e0 ldi r31, 0x02 ; 218c: e9 0f add r30, r2518e: f1 1d adc r31, r1190: 80 83 st Z, r24192: 9f 5f subi r25, 0xFF ; 255194: 97 70 andi r25, 0x07 ; 7196: 90 93 70 00 sts 0x0070, r2519a: 78 94 sei19c: 08 95 ret0000019e <Exec_run>:19e: cf 93 push r281a0: df 93 push r291a2: cc e6 ldi r28, 0x6C ; 1081a4: d2 e0 ldi r29, 0x02 ; 21a6: 80 91 72 00 lds r24, 0x00721aa: 88 23 and r24, r241ac: 99 f0 breq .+38 ; 0x1d4 <Exec_run+0x36>1ae: 80 ff sbrs r24, 01b0: 07 c0 rjmp .+14 ; 0x1c0 <Exec_run+0x22>1b2: f8 94 cli1b4: 8e 7f andi r24, 0xFE ; 2541b6: 80 93 72 00 sts 0x0072, r241ba: 78 94 sei1bc: b2 d0 rcall .+356 ; 0x322 <FrameMgr_processLine>1be: db d2 rcall .+1462 ; 0x776 <UIMgr_transmitPendingData>1c0: 80 91 72 00 lds r24, 0x00721c4: 81 ff sbrs r24, 11c6: 06 c0 rjmp .+12 ; 0x1d4 <Exec_run+0x36>1c8: f8 94 cli1ca: 8d 7f andi r24, 0xFD ; 2531cc: 80 93 72 00 sts 0x0072, r241d0: 78 94 sei1d2: fc d1 rcall .+1016 ; 0x5cc <FrameMgr_acquireLine>1d4: 90 91 71 00 lds r25, 0x00711d8: 80 91 70 00 lds r24, 0x00701dc: 89 17 cp r24, r251de: 19 f3 breq .-58 ; 0x1a6 <Exec_run+0x8>1e0: f8 94 cli1e2: fe 01 movw r30, r281e4: e9 0f add r30, r251e6: f1 1d adc r31, r11e8: e0 81 ld r30, Z1ea: 89 2f mov r24, r251ec: 8f 5f subi r24, 0xFF ; 2551ee: 87 70 andi r24, 0x07 ; 71f0: 80 93 71 00 sts 0x0071, r241f4: 78 94 sei1f6: e0 31 cpi r30, 0x10 ; 161f8: 29 f1 breq .+74 ; 0x244 <Exec_run+0xa6>1fa: e1 31 cpi r30, 0x11 ; 171fc: 60 f4 brcc .+24 ; 0x216 <Exec_run+0x78>1fe: e2 30 cpi r30, 0x02 ; 2200: c1 f0 breq .+48 ; 0x232 <Exec_run+0x94>202: e3 30 cpi r30, 0x03 ; 3204: 18 f4 brcc .+6 ; 0x20c <Exec_run+0x6e>206: e1 30 cpi r30, 0x01 ; 1208: 71 f6 brne .-100 ; 0x1a6 <Exec_run+0x8>20a: 2a c0 rjmp .+84 ; 0x260 <Exec_run+0xc2>20c: e4 30 cpi r30, 0x04 ; 420e: 29 f1 breq .+74 ; 0x25a <Exec_run+0xbc>210: e8 30 cpi r30, 0x08 ; 8212: 49 f6 brne .-110 ; 0x1a6 <Exec_run+0x8>214: 1f c0 rjmp .+62 ; 0x254 <Exec_run+0xb6>216: e0 38 cpi r30, 0x80 ; 128218: 79 f0 breq .+30 ; 0x238 <Exec_run+0x9a>21a: e1 38 cpi r30, 0x81 ; 12921c: 20 f4 brcc .+8 ; 0x226 <Exec_run+0x88>21e: e0 32 cpi r30, 0x20 ; 32220: 09 f0 breq .+2 ; 0x224 <Exec_run+0x86>222: c1 cf rjmp .-126 ; 0x1a6 <Exec_run+0x8>224: 14 c0 rjmp .+40 ; 0x24e <Exec_run+0xb0>226: e1 38 cpi r30, 0x81 ; 129228: 51 f0 breq .+20 ; 0x23e <Exec_run+0xa0>22a: e0 39 cpi r30, 0x90 ; 14422c: 09 f0 breq .+2 ; 0x230 <Exec_run+0x92>22e: bb cf rjmp .-138 ; 0x1a6 <Exec_run+0x8>230: 1c c0 rjmp .+56 ; 0x26a <Exec_run+0xcc>232: 82 e0 ldi r24, 0x02 ; 2234: 19 d2 rcall .+1074 ; 0x668 <FrameMgr_dispatchEvent>236: b7 cf rjmp .-146 ; 0x1a6 <Exec_run+0x8>238: 80 e8 ldi r24, 0x80 ; 12823a: 16 d2 rcall .+1068 ; 0x668 <FrameMgr_dispatchEvent>23c: b4 cf rjmp .-152 ; 0x1a6 <Exec_run+0x8>23e: 81 e8 ldi r24, 0x81 ; 129240: 13 d2 rcall .+1062 ; 0x668 <FrameMgr_dispatchEvent>242: b1 cf rjmp .-158 ; 0x1a6 <Exec_run+0x8>244: 80 e1 ldi r24, 0x10 ; 16246: 10 d2 rcall .+1056 ; 0x668 <FrameMgr_dispatchEvent>248: 80 e1 ldi r24, 0x10 ; 1624a: 7a d4 rcall .+2292 ; 0xb40 <UIMgr_dispatchEvent>24c: ac cf rjmp .-168 ; 0x1a6 <Exec_run+0x8>24e: 80 e2 ldi r24, 0x20 ; 32250: 0b d2 rcall .+1046 ; 0x668 <FrameMgr_dispatchEvent>252: a9 cf rjmp .-174 ; 0x1a6 <Exec_run+0x8>254: 88 e0 ldi r24, 0x08 ; 8256: 08 d2 rcall .+1040 ; 0x668 <FrameMgr_dispatchEvent>258: a6 cf rjmp .-180 ; 0x1a6 <Exec_run+0x8>25a: 84 e0 ldi r24, 0x04 ; 425c: 05 d2 rcall .+1034 ; 0x668 <FrameMgr_dispatchEvent>25e: a3 cf rjmp .-186 ; 0x1a6 <Exec_run+0x8>260: 81 e0 ldi r24, 0x01 ; 1262: 6e d4 rcall .+2268 ; 0xb40 <UIMgr_dispatchEvent>264: 81 e0 ldi r24, 0x01 ; 1266: 00 d2 rcall .+1024 ; 0x668 <FrameMgr_dispatchEvent>268: 9e cf rjmp .-196 ; 0x1a6 <Exec_run+0x8>26a: 80 e9 ldi r24, 0x90 ; 14426c: 69 d4 rcall .+2258 ; 0xb40 <UIMgr_dispatchEvent>26e: 9b cf rjmp .-202 ; 0x1a6 <Exec_run+0x8>00000270 <FrameMgr_processFrame>:270: df 92 push r13272: ef 92 push r14274: ff 92 push r15276: 0f 93 push r16278: 1f 93 push r1727a: cf 93 push r2827c: df 93 push r2927e: 20 91 60 00 lds r18, 0x0060282: 30 91 61 00 lds r19, 0x0061286: 80 91 73 00 lds r24, 0x007328a: 88 23 and r24, r2428c: 09 f4 brne .+2 ; 0x290 <FrameMgr_processFrame+0x20>28e: 3f c0 rjmp .+126 ; 0x30e <FrameMgr_processFrame+0x9e>290: e9 01 movw r28, r18292: 8a e0 ldi r24, 0x0A ; 10294: 43 d2 rcall .+1158 ; 0x71c <UIMgr_writeTxFifo>296: 80 91 73 00 lds r24, 0x007329a: 40 d2 rcall .+1152 ; 0x71c <UIMgr_writeTxFifo>29c: dd 24 eor r13, r1329e: 8f 81 ldd r24, Y+7 ; 0x072a0: 81 30 cpi r24, 0x01 ; 12a2: 69 f5 brne .+90 ; 0x2fe <FrameMgr_processFrame+0x8e>2a4: 88 81 ld r24, Y2a6: 80 38 cpi r24, 0x80 ; 1282a8: e1 f0 breq .+56 ; 0x2e2 <FrameMgr_processFrame+0x72>2aa: 80 34 cpi r24, 0x40 ; 642ac: 11 f4 brne .+4 ; 0x2b2 <FrameMgr_processFrame+0x42>2ae: 81 e0 ldi r24, 0x01 ; 12b0: 19 c0 rjmp .+50 ; 0x2e4 <FrameMgr_processFrame+0x74>2b2: 80 32 cpi r24, 0x20 ; 322b4: 11 f4 brne .+4 ; 0x2ba <FrameMgr_processFrame+0x4a>2b6: 82 e0 ldi r24, 0x02 ; 22b8: 15 c0 rjmp .+42 ; 0x2e4 <FrameMgr_processFrame+0x74>2ba: 80 31 cpi r24, 0x10 ; 162bc: 11 f4 brne .+4 ; 0x2c2 <FrameMgr_processFrame+0x52>2be: 83 e0 ldi r24, 0x03 ; 32c0: 11 c0 rjmp .+34 ; 0x2e4 <FrameMgr_processFrame+0x74>2c2: 88 30 cpi r24, 0x08 ; 82c4: 11 f4 brne .+4 ; 0x2ca <FrameMgr_processFrame+0x5a>2c6: 84 e0 ldi r24, 0x04 ; 42c8: 0d c0 rjmp .+26 ; 0x2e4 <FrameMgr_processFrame+0x74>2ca: 84 30 cpi r24, 0x04 ; 42cc: 11 f4 brne .+4 ; 0x2d2 <FrameMgr_processFrame+0x62>2ce: 85 e0 ldi r24, 0x05 ; 52d0: 09 c0 rjmp .+18 ; 0x2e4 <FrameMgr_processFrame+0x74>2d2: 82 30 cpi r24, 0x02 ; 22d4: 11 f4 brne .+4 ; 0x2da <FrameMgr_processFrame+0x6a>2d6: 86 e0 ldi r24, 0x06 ; 62d8: 05 c0 rjmp .+10 ; 0x2e4 <FrameMgr_processFrame+0x74>2da: 81 30 cpi r24, 0x01 ; 12dc: 11 f4 brne .+4 ; 0x2e2 <FrameMgr_processFrame+0x72>2de: 87 e0 ldi r24, 0x07 ; 72e0: 01 c0 rjmp .+2 ; 0x2e4 <FrameMgr_processFrame+0x74>2e2: 80 e0 ldi r24, 0x00 ; 02e4: 1b 81 ldd r17, Y+3 ; 0x032e6: 0c 81 ldd r16, Y+4 ; 0x042e8: fd 80 ldd r15, Y+5 ; 0x052ea: ee 80 ldd r14, Y+6 ; 0x062ec: 17 d2 rcall .+1070 ; 0x71c <UIMgr_writeTxFifo>2ee: 81 2f mov r24, r172f0: 15 d2 rcall .+1066 ; 0x71c <UIMgr_writeTxFifo>2f2: 80 2f mov r24, r162f4: 13 d2 rcall .+1062 ; 0x71c <UIMgr_writeTxFifo>2f6: 8f 2d mov r24, r152f8: 11 d2 rcall .+1058 ; 0x71c <UIMgr_writeTxFifo>2fa: 8e 2d mov r24, r142fc: 0f d2 rcall .+1054 ; 0x71c <UIMgr_writeTxFifo>2fe: d3 94 inc r13300: 88 e0 ldi r24, 0x08 ; 8302: d8 16 cp r13, r24304: 11 f0 breq .+4 ; 0x30a <FrameMgr_processFrame+0x9a>306: 28 96 adiw r28, 0x08 ; 8308: ca cf rjmp .-108 ; 0x29e <FrameMgr_processFrame+0x2e>30a: 8f ef ldi r24, 0xFF ; 25530c: 07 d2 rcall .+1038 ; 0x71c <UIMgr_writeTxFifo>30e: 84 e0 ldi r24, 0x04 ; 4310: 38 df rcall .-400 ; 0x182 <Exec_writeEventFifo>312: df 91 pop r29314: cf 91 pop r28316: 1f 91 pop r17318: 0f 91 pop r1631a: ff 90 pop r1531c: ef 90 pop r1431e: df 90 pop r13320: 08 95 ret00000322 <FrameMgr_processLine>:322: 2f 92 push r2324: 3f 92 push r3326: 4f 92 push r4328: 5f 92 push r532a: 6f 92 push r632c: 7f 92 push r732e: 8f 92 push r8330: 9f 92 push r9332: bf 92 push r11334: cf 92 push r12336: df 92 push r13338: ef 92 push r1433a: ff 92 push r1533c: 0f 93 push r1633e: 1f 93 push r17340: cf 93 push r28342: df 93 push r29344: cd b7 in r28, 0x3d ; 61346: de b7 in r29, 0x3e ; 62348: 21 97 sbiw r28, 0x01 ; 134a: 0f b6 in r0, 0x3f ; 6334c: f8 94 cli34e: de bf out 0x3e, r29 ; 62350: 0f be out 0x3f, r0 ; 63352: cd bf out 0x3d, r28 ; 61354: 40 91 60 00 lds r20, 0x0060358: 50 91 61 00 lds r21, 0x006135c: 80 91 74 00 lds r24, 0x0074360: 82 30 cpi r24, 0x02 ; 2362: 09 f0 breq .+2 ; 0x366 <FrameMgr_processLine+0x44>364: 5b c0 rjmp .+182 ; 0x41c <FrameMgr_processLine+0xfa>366: 8b e0 ldi r24, 0x0B ; 11368: 02 d4 rcall .+2052 ; 0xb6e <UartInt_txByte>36a: 80 91 75 00 lds r24, 0x007536e: ff d3 rcall .+2046 ; 0xb6e <UartInt_txByte>370: 0c eb ldi r16, 0xBC ; 188372: 11 e0 ldi r17, 0x01 ; 1374: 0f 2e mov r0, r31376: fc e0 ldi r31, 0x0C ; 12378: ef 2e mov r14, r3137a: f1 e0 ldi r31, 0x01 ; 137c: ff 2e mov r15, r3137e: f0 2d mov r31, r0380: 0f 2e mov r0, r31382: fc e6 ldi r31, 0x6C ; 108384: cf 2e mov r12, r31386: f2 e0 ldi r31, 0x02 ; 2388: df 2e mov r13, r3138a: f0 2d mov r31, r038c: d8 01 movw r26, r1638e: 8c 91 ld r24, X390: 89 83 std Y+1, r24 ; 0x01392: 89 81 ldd r24, Y+1 ; 0x01394: 8f 70 andi r24, 0x0F ; 15396: 89 83 std Y+1, r24 ; 0x01398: 89 81 ldd r24, Y+1 ; 0x0139a: 82 95 swap r2439c: 80 7f andi r24, 0xF0 ; 24039e: 89 83 std Y+1, r24 ; 0x013a0: 99 81 ldd r25, Y+1 ; 0x013a2: f7 01 movw r30, r143a4: 80 81 ld r24, Z3a6: 8f 70 andi r24, 0x0F ; 153a8: 89 2b or r24, r253aa: 89 83 std Y+1, r24 ; 0x013ac: 89 81 ldd r24, Y+1 ; 0x013ae: df d3 rcall .+1982 ; 0xb6e <UartInt_txByte>3b0: f7 01 movw r30, r143b2: 81 81 ldd r24, Z+1 ; 0x013b4: 89 83 std Y+1, r24 ; 0x013b6: 89 81 ldd r24, Y+1 ; 0x013b8: 8f 70 andi r24, 0x0F ; 153ba: 89 83 std Y+1, r24 ; 0x013bc: 89 81 ldd r24, Y+1 ; 0x013be: 82 95 swap r243c0: 80 7f andi r24, 0xF0 ; 2403c2: 89 83 std Y+1, r24 ; 0x013c4: 99 81 ldd r25, Y+1 ; 0x013c6: f8 01 movw r30, r163c8: 81 81 ldd r24, Z+1 ; 0x013ca: 8f 70 andi r24, 0x0F ; 153cc: 89 2b or r24, r253ce: 89 83 std Y+1, r24 ; 0x013d0: 89 81 ldd r24, Y+1 ; 0x013d2: cd d3 rcall .+1946 ; 0xb6e <UartInt_txByte>3d4: 0e 5f subi r16, 0xFE ; 2543d6: 1f 4f sbci r17, 0xFF ; 2553d8: 82 e0 ldi r24, 0x02 ; 23da: 90 e0 ldi r25, 0x00 ; 03dc: e8 0e add r14, r243de: f9 1e adc r15, r253e0: 0c 15 cp r16, r123e2: 1d 05 cpc r17, r133e4: 99 f6 brne .-90 ; 0x38c <FrameMgr_processLine+0x6a>3e6: 8f e0 ldi r24, 0x0F ; 153e8: c2 d3 rcall .+1924 ; 0xb6e <UartInt_txByte>3ea: 80 91 75 00 lds r24, 0x00753ee: 8f 5f subi r24, 0xFF ; 2553f0: 80 93 75 00 sts 0x0075, r243f4: 88 34 cpi r24, 0x48 ; 723f6: 60 f0 brcs .+24 ; 0x410 <FrameMgr_processLine+0xee>3f8: 10 92 75 00 sts 0x0075, r13fc: 10 92 74 00 sts 0x0074, r1400: 89 b7 in r24, 0x39 ; 57402: 8b 7f andi r24, 0xFB ; 251404: 89 bf out 0x39, r24 ; 57406: 60 e0 ldi r22, 0x00 ; 0408: 81 e1 ldi r24, 0x11 ; 1740a: f3 d4 rcall .+2534 ; 0xdf2 <CamConfig_setCamReg>40c: f7 d4 rcall .+2542 ; 0xdfc <CamConfig_sendFifoCmds>40e: bf c0 rjmp .+382 ; 0x58e <__stack+0x12f>410: 80 91 72 00 lds r24, 0x0072414: 82 60 ori r24, 0x02 ; 2416: 80 93 72 00 sts 0x0072, r2441a: b9 c0 rjmp .+370 ; 0x58e <__stack+0x12f>41c: 81 30 cpi r24, 0x01 ; 141e: 09 f0 breq .+2 ; 0x422 <FrameMgr_processLine+0x100>420: b6 c0 rjmp .+364 ; 0x58e <__stack+0x12f>422: b0 90 76 00 lds r11, 0x0076426: eb 2c mov r14, r11428: ff 24 eor r15, r1542a: 37 01 movw r6, r1442c: 08 94 sec42e: 61 08 sbc r6, r1430: 71 08 sbc r7, r1432: 00 91 73 00 lds r16, 0x0073436: 10 e0 ldi r17, 0x00 ; 0438: 60 e0 ldi r22, 0x00 ; 043a: 71 e0 ldi r23, 0x01 ; 143c: 0f 2e mov r0, r3143e: fc eb ldi r31, 0xBC ; 188440: 2f 2e mov r2, r31442: f1 e0 ldi r31, 0x01 ; 1444: 3f 2e mov r3, r31446: f0 2d mov r31, r0448: d1 01 movw r26, r244a: 3c 91 ld r19, X44c: 17 0f add r17, r2344e: f1 01 movw r30, r2450: 71 81 ldd r23, Z+1 ; 0x01452: 82 e0 ldi r24, 0x02 ; 2454: 90 e0 ldi r25, 0x00 ; 0456: 28 0e add r2, r24458: 39 1e adc r3, r2545a: 67 0f add r22, r2345c: 33 23 and r19, r1945e: 09 f4 brne .+2 ; 0x462 <__stack+0x3>460: 57 c0 rjmp .+174 ; 0x510 <__stack+0xb1>462: 74 30 cpi r23, 0x04 ; 4464: 08 f4 brcc .+2 ; 0x468 <__stack+0x9>466: 54 c0 rjmp .+168 ; 0x510 <__stack+0xb1>468: fa 01 movw r30, r2046a: 20 e0 ldi r18, 0x00 ; 046c: 80 81 ld r24, Z46e: 83 17 cp r24, r19470: b1 f5 brne .+108 ; 0x4de <__stack+0x7f>472: 87 81 ldd r24, Z+7 ; 0x07474: 81 30 cpi r24, 0x01 ; 1476: 99 f5 brne .+102 ; 0x4de <__stack+0x7f>478: 0f 2e mov r0, r3147a: f6 e0 ldi r31, 0x06 ; 647c: cf 2e mov r12, r3147e: dd 24 eor r13, r13480: f0 2d mov r31, r0482: ce 0e add r12, r30484: df 1e adc r13, r31486: 86 81 ldd r24, Z+6 ; 0x06488: 99 27 eor r25, r2548a: 86 15 cp r24, r648c: 97 05 cpc r25, r748e: 39 f5 brne .+78 ; 0x4de <__stack+0x7f>490: 2f 01 movw r4, r30492: 08 94 sec494: 41 1c adc r4, r1496: 51 1c adc r5, r1498: 81 81 ldd r24, Z+1 ; 0x0149a: 88 24 eor r8, r849c: 99 24 eor r9, r949e: 68 94 set4a0: 81 f8 bld r8, 14a2: 8e 0e add r8, r304a4: 9f 1e adc r9, r314a6: 92 81 ldd r25, Z+2 ; 0x024a8: 18 17 cp r17, r244aa: 10 f0 brcs .+4 ; 0x4b0 <__stack+0x51>4ac: 91 17 cp r25, r174ae: 40 f4 brcc .+16 ; 0x4c0 <__stack+0x61>4b0: 68 17 cp r22, r244b2: 10 f0 brcs .+4 ; 0x4b8 <__stack+0x59>4b4: 96 17 cp r25, r224b6: 20 f4 brcc .+8 ; 0x4c0 <__stack+0x61>4b8: 81 17 cp r24, r174ba: 88 f0 brcs .+34 ; 0x4de <__stack+0x7f>4bc: 69 17 cp r22, r254be: 78 f0 brcs .+30 ; 0x4de <__stack+0x7f>4c0: d2 01 movw r26, r44c2: 1c 93 st X, r174c4: d4 01 movw r26, r84c6: 6c 93 st X, r224c8: 83 81 ldd r24, Z+3 ; 0x034ca: 18 17 cp r17, r244cc: 08 f4 brcc .+2 ; 0x4d0 <__stack+0x71>4ce: 13 83 std Z+3, r17 ; 0x034d0: 85 81 ldd r24, Z+5 ; 0x054d2: 86 17 cp r24, r224d4: 08 f4 brcc .+2 ; 0x4d8 <__stack+0x79>4d6: 65 83 std Z+5, r22 ; 0x054d8: f6 01 movw r30, r124da: b0 82 st Z, r114dc: 19 c0 rjmp .+50 ; 0x510 <__stack+0xb1>4de: 2f 5f subi r18, 0xFF ; 2554e0: 28 30 cpi r18, 0x08 ; 84e2: 09 f4 brne .+2 ; 0x4e6 <__stack+0x87>4e4: 50 c0 rjmp .+160 ; 0x586 <__stack+0x127>4e6: 38 96 adiw r30, 0x08 ; 84e8: c1 cf rjmp .-126 ; 0x46c <__stack+0xd>4ea: fa 01 movw r30, r204ec: 90 e0 ldi r25, 0x00 ; 04ee: 87 81 ldd r24, Z+7 ; 0x074f0: 88 23 and r24, r244f2: 21 f0 breq .+8 ; 0x4fc <__stack+0x9d>4f4: 38 96 adiw r30, 0x08 ; 84f6: 9f 5f subi r25, 0xFF ; 2554f8: 98 30 cpi r25, 0x08 ; 84fa: c9 f7 brne .-14 ; 0x4ee <__stack+0x8f>4fc: 30 83 st Z, r194fe: 11 83 std Z+1, r17 ; 0x01500: 62 83 std Z+2, r22 ; 0x02502: 13 83 std Z+3, r17 ; 0x03504: b4 82 std Z+4, r11 ; 0x04506: 65 83 std Z+5, r22 ; 0x05508: b6 82 std Z+6, r11 ; 0x0650a: 81 e0 ldi r24, 0x01 ; 150c: 87 83 std Z+7, r24 ; 0x0750e: 0f 5f subi r16, 0xFF ; 255510: 60 3b cpi r22, 0xB0 ; 176512: 08 f4 brcc .+2 ; 0x516 <__stack+0xb7>514: 99 cf rjmp .-206 ; 0x448 <FrameMgr_processLine+0x126>516: 00 93 73 00 sts 0x0073, r1651a: c7 01 movw r24, r1451c: 87 70 andi r24, 0x07 ; 751e: 90 70 andi r25, 0x00 ; 0520: 07 97 sbiw r24, 0x07 ; 7522: e9 f4 brne .+58 ; 0x55e <__stack+0xff>524: 60 e0 ldi r22, 0x00 ; 0526: fa 01 movw r30, r20528: 87 81 ldd r24, Z+7 ; 0x0752a: 81 30 cpi r24, 0x01 ; 152c: 81 f4 brne .+32 ; 0x54e <__stack+0xef>52e: 86 81 ldd r24, Z+6 ; 0x06530: 28 2f mov r18, r24532: 33 27 eor r19, r19534: 84 81 ldd r24, Z+4 ; 0x04536: d9 01 movw r26, r18538: a8 1b sub r26, r2453a: b1 09 sbc r27, r153c: 13 97 sbiw r26, 0x03 ; 353e: 3c f4 brge .+14 ; 0x54e <__stack+0xef>540: c7 01 movw r24, r14542: 82 1b sub r24, r18544: 93 0b sbc r25, r19546: 03 97 sbiw r24, 0x03 ; 3548: 14 f0 brlt .+4 ; 0x54e <__stack+0xef>54a: 17 82 std Z+7, r1 ; 0x0754c: 01 50 subi r16, 0x01 ; 154e: 6f 5f subi r22, 0xFF ; 255550: 68 30 cpi r22, 0x08 ; 8552: 19 f0 breq .+6 ; 0x55a <__stack+0xfb>554: 48 5f subi r20, 0xF8 ; 248556: 5f 4f sbci r21, 0xFF ; 255558: e6 cf rjmp .-52 ; 0x526 <__stack+0xc7>55a: 00 93 73 00 sts 0x0073, r1655e: 8b 2d mov r24, r11560: 8f 5f subi r24, 0xFF ; 255562: 80 93 76 00 sts 0x0076, r24566: 80 39 cpi r24, 0x90 ; 144568: 41 f4 brne .+16 ; 0x57a <__stack+0x11b>56a: 80 e2 ldi r24, 0x20 ; 3256c: 0a de rcall .-1004 ; 0x182 <Exec_writeEventFifo>56e: 89 b7 in r24, 0x39 ; 57570: 8b 7f andi r24, 0xFB ; 251572: 89 bf out 0x39, r24 ; 57574: 10 92 76 00 sts 0x0076, r1578: 0a c0 rjmp .+20 ; 0x58e <__stack+0x12f>57a: 80 91 72 00 lds r24, 0x007257e: 82 60 ori r24, 0x02 ; 2580: 80 93 72 00 sts 0x0072, r24584: 04 c0 rjmp .+8 ; 0x58e <__stack+0x12f>586: 08 30 cpi r16, 0x08 ; 8588: 08 f4 brcc .+2 ; 0x58c <__stack+0x12d>58a: af cf rjmp .-162 ; 0x4ea <__stack+0x8b>58c: c1 cf rjmp .-126 ; 0x510 <__stack+0xb1>58e: 21 96 adiw r28, 0x01 ; 1590: 0f b6 in r0, 0x3f ; 63592: f8 94 cli594: de bf out 0x3e, r29 ; 62596: 0f be out 0x3f, r0 ; 63598: cd bf out 0x3d, r28 ; 6159a: df 91 pop r2959c: cf 91 pop r2859e: 1f 91 pop r175a0: 0f 91 pop r165a2: ff 90 pop r155a4: ef 90 pop r145a6: df 90 pop r135a8: cf 90 pop r125aa: bf 90 pop r115ac: 9f 90 pop r95ae: 8f 90 pop r85b0: 7f 90 pop r75b2: 6f 90 pop r65b4: 5f 90 pop r55b6: 4f 90 pop r45b8: 3f 90 pop r35ba: 2f 90 pop r25bc: 08 95 ret000005be <FrameMgr_init>:5be: 80 e4 ldi r24, 0x40 ; 645c0: e8 e7 ldi r30, 0x78 ; 1205c2: f0 e0 ldi r31, 0x00 ; 05c4: 11 92 st Z+, r15c6: 8a 95 dec r245c8: e9 f7 brne .-6 ; 0x5c4 <FrameMgr_init+0x6>5ca: 08 95 ret000005cc <FrameMgr_acquireLine>:5cc: 80 91 74 00 lds r24, 0x00745d0: 82 30 cpi r24, 0x02 ; 25d2: 31 f5 brne .+76 ; 0x620 <FrameMgr_acquireLine+0x54>5d4: 80 91 75 00 lds r24, 0x00755d8: 98 2f mov r25, r245da: 99 0f add r25, r255dc: 80 eb ldi r24, 0xB0 ; 1765de: ec eb ldi r30, 0xBC ; 1885e0: f1 e0 ldi r31, 0x01 ; 15e2: 28 2f mov r18, r245e4: 11 92 st Z+, r15e6: 2a 95 dec r185e8: e9 f7 brne .-6 ; 0x5e4 <FrameMgr_acquireLine+0x18>5ea: ec e0 ldi r30, 0x0C ; 125ec: f1 e0 ldi r31, 0x01 ; 15ee: 11 92 st Z+, r15f0: 8a 95 dec r245f2: e9 f7 brne .-6 ; 0x5ee <FrameMgr_acquireLine+0x22>5f4: 82 9b sbis 0x10, 2 ; 165f6: fe cf rjmp .-4 ; 0x5f4 <FrameMgr_acquireLine+0x28>5f8: 82 9b sbis 0x10, 2 ; 165fa: 07 c0 rjmp .+14 ; 0x60a <FrameMgr_acquireLine+0x3e>5fc: fd cf rjmp .-6 ; 0x5f8 <FrameMgr_acquireLine+0x2c>5fe: 84 9b sbis 0x10, 4 ; 16600: fe cf rjmp .-4 ; 0x5fe <FrameMgr_acquireLine+0x32>602: 91 50 subi r25, 0x01 ; 1604: 84 9b sbis 0x10, 4 ; 16606: 04 c0 rjmp .+8 ; 0x610 <FrameMgr_acquireLine+0x44>608: fd cf rjmp .-6 ; 0x604 <FrameMgr_acquireLine+0x38>60a: 99 23 and r25, r2560c: c1 f7 brne .-16 ; 0x5fe <FrameMgr_acquireLine+0x32>60e: 02 c0 rjmp .+4 ; 0x614 <FrameMgr_acquireLine+0x48>610: 99 23 and r25, r25612: a9 f7 brne .-22 ; 0x5fe <FrameMgr_acquireLine+0x32>614: 6c e0 ldi r22, 0x0C ; 12616: 71 e0 ldi r23, 0x01 ; 1618: 8c eb ldi r24, 0xBC ; 18861a: 91 e0 ldi r25, 0x01 ; 161c: e4 d4 rcall .+2504 ; 0xfe6 <CamIntAsm_acquireDumpLine>61e: 08 95 ret620: 81 30 cpi r24, 0x01 ; 1622: 39 f4 brne .+14 ; 0x632 <FrameMgr_acquireLine+0x66>624: 84 99 sbic 0x10, 4 ; 16626: fe cf rjmp .-4 ; 0x624 <FrameMgr_acquireLine+0x58>628: 60 e0 ldi r22, 0x00 ; 062a: 73 e0 ldi r23, 0x03 ; 362c: 8c eb ldi r24, 0xBC ; 18862e: 91 e0 ldi r25, 0x01 ; 1630: 93 d4 rcall .+2342 ; 0xf58 <CamIntAsm_acquireTrackingLine>632: 08 95 ret00000634 <FrameMgr_acquireFrame>:634: 80 91 74 00 lds r24, 0x0074638: 81 30 cpi r24, 0x01 ; 163a: a9 f4 brne .+42 ; 0x666 <FrameMgr_acquireFrame+0x32>63c: 10 92 76 00 sts 0x0076, r1640: 80 91 73 00 lds r24, 0x0073644: 80 93 77 00 sts 0x0077, r24648: 10 92 73 00 sts 0x0073, r164c: 80 e4 ldi r24, 0x40 ; 6464e: e8 e7 ldi r30, 0x78 ; 120650: f0 e0 ldi r31, 0x00 ; 0652: 11 92 st Z+, r1654: 8a 95 dec r24656: e9 f7 brne .-6 ; 0x652 <FrameMgr_acquireFrame+0x1e>658: 82 9b sbis 0x10, 2 ; 1665a: fe cf rjmp .-4 ; 0x658 <FrameMgr_acquireFrame+0x24>65c: 60 e0 ldi r22, 0x00 ; 065e: 73 e0 ldi r23, 0x03 ; 3660: 8c eb ldi r24, 0xBC ; 188662: 91 e0 ldi r25, 0x01 ; 1664: 79 d4 rcall .+2290 ; 0xf58 <CamIntAsm_acquireTrackingLine>666: 08 95 ret00000668 <FrameMgr_dispatchEvent>:668: 84 30 cpi r24, 0x04 ; 466a: 19 f1 breq .+70 ; 0x6b2 <FrameMgr_dispatchEvent+0x4a>66c: 85 30 cpi r24, 0x05 ; 566e: 28 f4 brcc .+10 ; 0x67a <FrameMgr_dispatchEvent+0x12>670: 81 30 cpi r24, 0x01 ; 1672: 09 f1 breq .+66 ; 0x6b6 <FrameMgr_dispatchEvent+0x4e>674: 82 30 cpi r24, 0x02 ; 2676: 41 f5 brne .+80 ; 0x6c8 <FrameMgr_dispatchEvent+0x60>678: 07 c0 rjmp .+14 ; 0x688 <FrameMgr_dispatchEvent+0x20>67a: 80 38 cpi r24, 0x80 ; 12867c: 99 f0 breq .+38 ; 0x6a4 <FrameMgr_dispatchEvent+0x3c>67e: 81 38 cpi r24, 0x81 ; 129680: 09 f1 breq .+66 ; 0x6c4 <FrameMgr_dispatchEvent+0x5c>682: 80 32 cpi r24, 0x20 ; 32684: 09 f5 brne .+66 ; 0x6c8 <FrameMgr_dispatchEvent+0x60>686: 13 c0 rjmp .+38 ; 0x6ae <FrameMgr_dispatchEvent+0x46>688: 61 e0 ldi r22, 0x01 ; 168a: 81 e1 ldi r24, 0x11 ; 1768c: b2 d3 rcall .+1892 ; 0xdf2 <CamConfig_setCamReg>68e: b6 d3 rcall .+1900 ; 0xdfc <CamConfig_sendFifoCmds>690: 88 ee ldi r24, 0xE8 ; 232692: 93 e0 ldi r25, 0x03 ; 3694: 08 d4 rcall .+2064 ; 0xea6 <Utility_delay>696: 10 92 75 00 sts 0x0075, r169a: 82 e0 ldi r24, 0x02 ; 269c: 80 93 74 00 sts 0x0074, r246a0: 95 df rcall .-214 ; 0x5cc <FrameMgr_acquireLine>6a2: 08 95 ret6a4: 81 e0 ldi r24, 0x01 ; 16a6: 80 93 74 00 sts 0x0074, r246aa: c4 df rcall .-120 ; 0x634 <FrameMgr_acquireFrame>6ac: 08 95 ret6ae: e0 dd rcall .-1088 ; 0x270 <FrameMgr_processFrame>6b0: 08 95 ret6b2: c0 df rcall .-128 ; 0x634 <FrameMgr_acquireFrame>6b4: 08 95 ret6b6: 80 91 74 00 lds r24, 0x00746ba: 88 23 and r24, r246bc: 29 f0 breq .+10 ; 0x6c8 <FrameMgr_dispatchEvent+0x60>6be: 84 e0 ldi r24, 0x04 ; 46c0: 60 dd rcall .-1344 ; 0x182 <Exec_writeEventFifo>6c2: 08 95 ret6c4: 10 92 74 00 sts 0x0074, r16c8: 08 95 ret000006ca <UIMgr_writeBufferToTxFifo>:static unsigned char tokenCount = 0;static unsigned char tokenBuffer[MAX_TOKEN_COUNT];static UIMgr_Cmd_t receivedCmd = noCmd;static unsigned char AVRcamVersion[] = "AVRcam v1.4\r";/* Local Function Declaration */static unsigned char UIMgr_readRxFifo(void);static unsigned char UIMgr_readTxFifo(void);static unsigned char UIMgr_readRxFifo(void);static void UIMgr_sendNck(void);static void UIMgr_sendAck(void);static void UIMgr_convertTokenToCmd(void);static void UIMgr_convertTokenToValue(void);static void UIMgr_executeCmd(void);/* Extern Variables */unsigned char UIMgr_rxFifo[UI_MGR_RX_FIFO_SIZE];unsigned char UIMgr_rxFifoHead=0;unsigned char UIMgr_rxFifoTail=0;unsigned char UIMgr_txFifo[UI_MGR_TX_FIFO_SIZE];unsigned char UIMgr_txFifoHead=0;unsigned char UIMgr_txFifoTail=0;/* Definitions */#define IS_DATA_IN_TX_FIFO() (!(UIMgr_txFifoHead == UIMgr_txFifoTail))#define IS_DATA_IN_RX_FIFO() (!(UIMgr_rxFifoHead == UIMgr_rxFifoTail))/* MAX_EEPROM_WRITE_ATTEMPTS limits the number of writes that can bedone to a particular EEPROM cell, so that it can't possible justwrite to the same cell over and over */#define MAX_EEPROM_WRITE_ATTEMPTS 3/***********************************************************Function Name: UIMgr_initFunction Description: This function is responsible forinitializing the UIMgr module. It sets up the fifoused to hold incoming data, etc.Inputs: noneOutputs: none***********************************************************/void UIMgr_init(void){memset(asciiTokenBuffer,0x00,MAX_TOKEN_LENGTH+1);memset(tokenBuffer,0x00,MAX_TOKEN_COUNT);memset(UIMgr_txFifo,0x00,UI_MGR_TX_FIFO_SIZE);memset(UIMgr_rxFifo,0x00,UI_MGR_RX_FIFO_SIZE);}/***********************************************************Function Name: UIMgr_dispatchEventFunction Description: This function is responsible forprocessing events that pertain to the UIMgr.Inputs: event - the generated eventOutputs: none***********************************************************/void UIMgr_dispatchEvent(unsigned char event){switch(event){case EV_ACQUIRE_LINE_COMPLETE:UIMgr_transmitPendingData();break;case EV_SERIAL_DATA_RECEIVED:UIMgr_processReceivedData();break;case EV_SERIAL_DATA_PENDING_TX:UIMgr_flushTxBuffer();break;}}/***********************************************************Function Name: UIMgr_transmitPendingDataFunction Description: This function is responsible fortransmitting a single byte of data if data is waitingto be sent. Otherwise, if nothing is waiting, thefunction just returns.Inputs: noneOutputs: none***********************************************************/void UIMgr_transmitPendingData(void){if (IS_DATA_IN_TX_FIFO() == TRUE){/* data is waiting...send a single byte */UartInt_txByte( UIMgr_readTxFifo() );}}/***********************************************************Function Name: UIMgr_processReceivedDataFunction Description: This function is responsible forparsing any serial data waiting in the rx fifoInputs: noneOutputs: none***********************************************************/void UIMgr_processReceivedData(void){unsigned char tmpData = 0;/* still need to add a mechanism to handle token countsthat are excessive!!! FIX ME!!! */while(IS_DATA_IN_RX_FIFO() == TRUE){tmpData = UIMgr_readRxFifo();if (tmpData == '\r'){/* we have reached a token separator */if (tokenCount == 0){/* convert the command */UIMgr_convertTokenToCmd();}else{/* convert a value */UIMgr_convertTokenToValue();tokenCount++;}/* either way, it is time to try to process the receivedtoken list since we have reached the end of the cmd. */Utility_delay(100);if (receivedCmd == invalidCmd ||receivedCmd == noCmd ){UIMgr_sendNck();PUBLISH_EVENT(EV_SERIAL_DATA_PENDING_TX);}else{UIMgr_sendAck();/* publish the serial data pending event, so itwill push the ACK out before we execute the cmd */PUBLISH_EVENT(EV_SERIAL_DATA_PENDING_TX);UIMgr_executeCmd();}/* reset any necessary data */tokenCount = 0;memset(tokenBuffer,0x00,MAX_TOKEN_COUNT);}else if (tmpData == ' ') /* space char */{/* the end of a token has been reached */if (tokenCount == 0){UIMgr_convertTokenToCmd();tokenCount++; /* check this...why is this being incremented here??? Thismeans we have received a token, with tokenCount == 0, which means it is acommand...why is this contributing to tokenCount?This might cause the set color map command to include too much data, sinceit sets the color map based on tokenCount...CHECK*/}else{/* check to see if this token is going to pushus over the limit...if so, abort the transaction */if (tokenCount+1 >= MAX_TOKEN_COUNT){/* we received too many tokens, andneed to NCK this request, since its toolarge...reset everything...*/charCount=0;charIndex=0;tokenCount=0;receivedCmd = invalidCmd;}else{/* tokenCount is still in range...*/UIMgr_convertTokenToValue();tokenCount++;}}}else if ( (tmpData >= 'A' && tmpData <= 'Z') ||(tmpData >= '0' && tmpData <= '9') ){/* a valid range of token was received */asciiTokenBuffer[charIndex] = tmpData;charCount++;charIndex++;if (charCount > MAX_TOKEN_LENGTH){/* we have received a token that cannot be handled...set the received cmd to an invalid cmd, and waitfor the \r to process it */receivedCmd = invalidCmd;charIndex = 0; /* ...so we won't overwrite memory */}}else{/* an invalid character was received */receivedCmd = invalidCmd;}} /* end while */asm volatile("clt"::); /* clear out the T flag in case it wasn'tcleared already */}/***********************************************************Function Name: UIMgr_executeCmdFunction Description: This function is responsible forexecuting whatever cmd is stored in the receivedCmdobject.Inputs: noneOutputs: none***********************************************************/static void UIMgr_executeCmd(void){unsigned char i,eepromData, num_writes=0;unsigned char *pData;unsigned char eeprom_write_succeeded = FALSE;#if DEBUG_COLOR_MAPunsigned char asciiBuffer[5];#endifif (receivedCmd == pingCmd){}else if (receivedCmd == getVersionCmd){pData = AVRcamVersion;while(*pData != 0){UIMgr_writeTxFifo(*pData++);}}else if (receivedCmd == resetCameraCmd){CamInt_resetCam();}else if (receivedCmd == dumpFrameCmd){/* publish the event that will indicate thata request has come to dump a frame...this willbe received by the FrameMgr, which will begindumping the frame...a short delay is neededhere to keep the Java demo app happy (sometimesit wouldn't be able to receive the serial dataas quickly as AVRcam can provide it). */Utility_delay(100);PUBLISH_EVENT(EV_DUMP_FRAME);}else if (receivedCmd == setCameraRegsCmd){/* we need to gather the tokens andbuild config cmds to be sent to the camera */for (i=1; i<tokenCount; i+=2) /* starts at 1 since first tokenis the CR cmd */{CamConfig_setCamReg(tokenBuffer[i],tokenBuffer[i+1]);}CamConfig_sendFifoCmds();}else if (receivedCmd == enableTrackingCmd){/* publish the event...again with a short delay */Utility_delay(100);PUBLISH_EVENT(EV_ENABLE_TRACKING);}else if (receivedCmd == disableTrackingCmd){PUBLISH_EVENT(EV_DISABLE_TRACKING);}else if (receivedCmd == setColorMapCmd){/* copy the received tokens into the color map */for (i=0; i<tokenCount; i++){colorMap[i] = tokenBuffer[i+1];/* write each colorMap byte to EEPROM, but only thosethat changed...this will help reduce wear on the EEPROM */eepromData = eeprom_read_byte( (unsigned char*)(i+1));if (eepromData != colorMap[i]){/* need to actually perform the write because thedata in eeprom is different than the current colorMap */eeprom_write_succeeded = FALSE;while(eeprom_write_succeeded == FALSE && num_writes < MAX_EEPROM_WRITE_ATTEMPTS){eeprom_write_byte((unsigned char*)(i+1),colorMap[i]);num_writes++;eepromData = eeprom_read_byte( (unsigned char*)(i+1));if (eepromData == colorMap[i]){eeprom_write_succeeded = TRUE;}}num_writes = 0;}}#if DEBUG_COLOR_MAP/* for debugging...send out the entire color map */UIMgr_txBuffer("\r\n",2);for (i=0; i<NUM_ELEMENTS_IN_COLOR_MAP; i++){memset(asciiBuffer,0x00,5);itoa(colorMap[i],asciiBuffer,10);UIMgr_txBuffer(asciiBuffer,3);UIMgr_txBuffer(" ",1);if (i==15 || i == 31){/* break up the output */UIMgr_txBuffer("\r\n",2);}}#endif}}/***********************************************************Function Name: UIMgr_convertTokenToValueFunction Description: This function is responsible forconverting a received token to a hex value It willaccess the asciiTokenBuffer directly, and store theresult in the appropriate token buffer.Inputs: noneOutputs: none***********************************************************/static void UIMgr_convertTokenToValue(void){unsigned int newValue;newValue = atoi(asciiTokenBuffer);if (newValue > 255){/* the value is too large */receivedCmd = invalidCmd;tokenBuffer[tokenCount] = 0xFF; /* to indicate an error */}else{/* copy the value into the tokenBuffer */tokenBuffer[tokenCount] = newValue;}memset(asciiTokenBuffer,0x00,MAX_TOKEN_LENGTH);charIndex = 0;charCount = 0;}/***********************************************************Function Name: UIMgr_convertTokenToCmdFunction Description: This function is responsible forparsing a received 2-character command. It willaccess the asciiTokenBuffer directly.Inputs: noneOutputs: none***********************************************************/static void UIMgr_convertTokenToCmd(void){if ( (asciiTokenBuffer[0] == 'P') &&(asciiTokenBuffer[1] == 'G') ){/* we got a "ping" command...but we still need to seeif we are going to get the \r */receivedCmd = pingCmd;}else if ( (asciiTokenBuffer[0] == 'G') &&(asciiTokenBuffer[1] == 'V') ){/* we got the "get version" command */receivedCmd = getVersionCmd;}else if ( (asciiTokenBuffer[0] == 'D') &&(asciiTokenBuffer[1] == 'F') ){/* we should go into frame dump mode */receivedCmd = dumpFrameCmd;}else if ( (asciiTokenBuffer[0] == 'C') &&(asciiTokenBuffer[1] == 'R') ){/* the user wants to set registers in the OV6620 */receivedCmd = setCameraRegsCmd;}else if ( (asciiTokenBuffer[0] == 'E') &&(asciiTokenBuffer[1] == 'T') ){/* the user wants to enable tracking */receivedCmd = enableTrackingCmd;}else if ( (asciiTokenBuffer[0] == 'S') &&(asciiTokenBuffer[1] == 'M') ){/* the user wants to set the color map */receivedCmd = setColorMapCmd;}else if ( (asciiTokenBuffer[0] == 'D') &&(asciiTokenBuffer[1] == 'T') ){receivedCmd = disableTrackingCmd;}else if ( (asciiTokenBuffer[0] == 'R') &&(asciiTokenBuffer[1] == 'S') ){receivedCmd = resetCameraCmd;}else{/* don't recognize the cmd */receivedCmd = invalidCmd;}memset(asciiTokenBuffer,0x00,MAX_TOKEN_LENGTH);charIndex = 0;charCount = 0;}/***********************************************************Function Name: UIMgr_sendAckFunction Description: This function is responsible forqueuing up an ACK to be sent to the user.Inputs: noneOutputs: none***********************************************************/static void UIMgr_sendAck(void){UIMgr_writeTxFifo('A');UIMgr_writeTxFifo('C');UIMgr_writeTxFifo('K');UIMgr_writeTxFifo('\r');}/***********************************************************Function Name: UIMgr_sendNckFunction Description: This function is responsible forqueueing up an NCK to be sent to the user.Inputs: noneOutputs: none***********************************************************/static void UIMgr_sendNck(void){UIMgr_writeTxFifo('N');UIMgr_writeTxFifo('C');UIMgr_writeTxFifo('K');UIMgr_writeTxFifo('\r');}/***********************************************************Function Name: UIMgr_writeBufferToTxFifoFunction Description: This function is responsible forplacing "length" bytes into the tx FIFO.Inputs: pData - a pointer to the data to sendlength - the number of bytes to sendOutputs: none***********************************************************/void UIMgr_writeBufferToTxFifo(unsigned char *pData, unsigned char length){6ca: dc 01 movw r26, r24unsigned char tmpHead;if (length == 0)6cc: 66 23 and r22, r226ce: b1 f0 breq .+44 ; 0x6fc <UIMgr_writeBufferToTxFifo+0x32>{return;}DISABLE_INTS();6d0: f8 94 cliwhile(length-- != 0)6d2: 61 50 subi r22, 0x01 ; 16d4: 6f 3f cpi r22, 0xFF ; 2556d6: 89 f0 breq .+34 ; 0x6fa <UIMgr_writeBufferToTxFifo+0x30>6d8: 90 91 ba 00 lds r25, 0x00BA{UIMgr_txFifo[UIMgr_txFifoHead] = *pData++;6dc: 24 e9 ldi r18, 0x94 ; 1486de: 32 e0 ldi r19, 0x02 ; 26e0: f9 01 movw r30, r186e2: e9 0f add r30, r256e4: f1 1d adc r31, r16e6: 8d 91 ld r24, X+6e8: 80 83 st Z, r24/* now move the head up */tmpHead = (UIMgr_txFifoHead + 1) & (UI_MGR_TX_FIFO_MASK);6ea: 89 2f mov r24, r256ec: 8f 5f subi r24, 0xFF ; 2556ee: 98 2f mov r25, r246f0: 9f 73 andi r25, 0x3F ; 636f2: 61 50 subi r22, 0x01 ; 16f4: a8 f7 brcc .-22 ; 0x6e0 <UIMgr_writeBufferToTxFifo+0x16>6f6: 90 93 ba 00 sts 0x00BA, r25UIMgr_txFifoHead = tmpHead;}ENABLE_INTS();6fa: 78 94 sei6fc: 08 95 ret000006fe <UIMgr_readTxFifo>:}/***********************************************************Function Name: UIMgr_txBufferFunction Description: This function is responsible forsending 'length' bytes out using the UartInterfacemodule.Inputs: pData - a pointer to the data to sendlength - the number of bytes to sendOutputs: none***********************************************************/void UIMgr_txBuffer(unsigned char *pData, unsigned char length){while(length-- != 0){UartInt_txByte(*pData++);}}/***********************************************************Function Name: UIMgr_flushTxBufferFunction Description: This function is responsible forsending all data currently in the serial tx bufferto the user.Inputs: noneOutputs: none***********************************************************/void UIMgr_flushTxBuffer(void){while(IS_DATA_IN_TX_FIFO() == TRUE){UartInt_txByte(UIMgr_readTxFifo() );}}/***********************************************************Function Name: UIMgr_readRxFifoFunction Description: This function is responsible forreading a single byte of data from the rx fifo, andupdating the appropriate pointers.Inputs: noneOutputs: unsigned char-the data read***********************************************************/static unsigned char UIMgr_readRxFifo(void){unsigned char dataByte, tmpTail;/* just return the current tail from the rx fifo */DISABLE_INTS();dataByte = UIMgr_rxFifo[UIMgr_rxFifoTail];tmpTail = (UIMgr_rxFifoTail+1) & (UI_MGR_RX_FIFO_MASK);UIMgr_rxFifoTail = tmpTail;ENABLE_INTS();return(dataByte);}/***********************************************************Function Name: UIMgr_readTxFifoFunction Description: This function is responsible forreading a single byte of data from the tx fifo, andupdating the appropriate pointers.Inputs: noneOutputs: unsigned char-the data read***********************************************************/static unsigned char UIMgr_readTxFifo(void){unsigned char dataByte, tmpTail;/* just return the current tail from the tx fifo */DISABLE_INTS();6fe: f8 94 clidataByte = UIMgr_txFifo[UIMgr_txFifoTail];700: 90 91 bb 00 lds r25, 0x00BB704: e4 e9 ldi r30, 0x94 ; 148706: f2 e0 ldi r31, 0x02 ; 2708: e9 0f add r30, r2570a: f1 1d adc r31, r170c: 80 81 ld r24, ZtmpTail = (UIMgr_txFifoTail+1) & (UI_MGR_TX_FIFO_MASK);UIMgr_txFifoTail = tmpTail;70e: 9f 5f subi r25, 0xFF ; 255710: 9f 73 andi r25, 0x3F ; 63712: 90 93 bb 00 sts 0x00BB, r25ENABLE_INTS();716: 78 94 seireturn(dataByte);}718: 99 27 eor r25, r2571a: 08 95 ret0000071c <UIMgr_writeTxFifo>:/***********************************************************Function Name: UIMgr_writeTxFifoFunction Description: This function is responsible forwriting a single byte to the TxFifo andupdating the appropriate pointers.Inputs: data - the byte to write to the FifoOutputs: none***********************************************************/void UIMgr_writeTxFifo(unsigned char data){unsigned char tmpHead;DISABLE_INTS();71c: f8 94 cliUIMgr_txFifo[UIMgr_txFifoHead] = data;71e: 90 91 ba 00 lds r25, 0x00BA722: e4 e9 ldi r30, 0x94 ; 148724: f2 e0 ldi r31, 0x02 ; 2726: e9 0f add r30, r25728: f1 1d adc r31, r172a: 80 83 st Z, r24/* now move the head up */tmpHead = (UIMgr_txFifoHead + 1) & (UI_MGR_TX_FIFO_MASK);UIMgr_txFifoHead = tmpHead;72c: 9f 5f subi r25, 0xFF ; 25572e: 9f 73 andi r25, 0x3F ; 63730: 90 93 ba 00 sts 0x00BA, r25ENABLE_INTS();734: 78 94 sei736: 08 95 ret00000738 <UIMgr_flushTxBuffer>:738: 90 91 ba 00 lds r25, 0x00BA73c: 80 91 bb 00 lds r24, 0x00BB740: 98 17 cp r25, r24742: 41 f0 breq .+16 ; 0x754 <UIMgr_flushTxBuffer+0x1c>744: dc df rcall .-72 ; 0x6fe <UIMgr_readTxFifo>746: 13 d2 rcall .+1062 ; 0xb6e <UartInt_txByte>748: 90 91 ba 00 lds r25, 0x00BA74c: 80 91 bb 00 lds r24, 0x00BB750: 98 17 cp r25, r24752: c1 f7 brne .-16 ; 0x744 <UIMgr_flushTxBuffer+0xc>754: 08 95 ret00000756 <UIMgr_txBuffer>:756: 1f 93 push r17758: cf 93 push r2875a: df 93 push r2975c: ec 01 movw r28, r2475e: 16 2f mov r17, r22760: 11 50 subi r17, 0x01 ; 1762: 1f 3f cpi r17, 0xFF ; 255764: 21 f0 breq .+8 ; 0x76e <UIMgr_txBuffer+0x18>766: 89 91 ld r24, Y+768: 02 d2 rcall .+1028 ; 0xb6e <UartInt_txByte>76a: 11 50 subi r17, 0x01 ; 176c: e0 f7 brcc .-8 ; 0x766 <UIMgr_txBuffer+0x10>76e: df 91 pop r29770: cf 91 pop r28772: 1f 91 pop r17774: 08 95 ret00000776 <UIMgr_transmitPendingData>:776: 90 91 ba 00 lds r25, 0x00BA77a: 80 91 bb 00 lds r24, 0x00BB77e: 98 17 cp r25, r24780: 11 f0 breq .+4 ; 0x786 <UIMgr_transmitPendingData+0x10>782: bd df rcall .-134 ; 0x6fe <UIMgr_readTxFifo>784: f4 d1 rcall .+1000 ; 0xb6e <UartInt_txByte>786: 08 95 ret00000788 <UIMgr_convertTokenToCmd>:788: 90 91 bf 00 lds r25, 0x00BF78c: 90 35 cpi r25, 0x50 ; 8078e: 41 f4 brne .+16 ; 0x7a0 <UIMgr_convertTokenToCmd+0x18>790: 80 91 c0 00 lds r24, 0x00C0794: 87 34 cpi r24, 0x47 ; 71796: 09 f5 brne .+66 ; 0x7da <UIMgr_convertTokenToCmd+0x52>798: 81 e0 ldi r24, 0x01 ; 179a: 80 93 62 00 sts 0x0062, r2479e: 48 c0 rjmp .+144 ; 0x830 <UIMgr_convertTokenToCmd+0xa8>7a0: 97 34 cpi r25, 0x47 ; 717a2: 39 f4 brne .+14 ; 0x7b2 <UIMgr_convertTokenToCmd+0x2a>7a4: 80 91 c0 00 lds r24, 0x00C07a8: 86 35 cpi r24, 0x56 ; 867aa: 09 f5 brne .+66 ; 0x7ee <UIMgr_convertTokenToCmd+0x66>7ac: 10 92 62 00 sts 0x0062, r17b0: 3f c0 rjmp .+126 ; 0x830 <UIMgr_convertTokenToCmd+0xa8>7b2: 94 34 cpi r25, 0x44 ; 687b4: 41 f4 brne .+16 ; 0x7c6 <UIMgr_convertTokenToCmd+0x3e>7b6: 80 91 c0 00 lds r24, 0x00C07ba: 86 34 cpi r24, 0x46 ; 707bc: 11 f5 brne .+68 ; 0x802 <UIMgr_convertTokenToCmd+0x7a>7be: 83 e0 ldi r24, 0x03 ; 37c0: 80 93 62 00 sts 0x0062, r247c4: 35 c0 rjmp .+106 ; 0x830 <UIMgr_convertTokenToCmd+0xa8>7c6: 93 34 cpi r25, 0x43 ; 677c8: 41 f4 brne .+16 ; 0x7da <UIMgr_convertTokenToCmd+0x52>7ca: 80 91 c0 00 lds r24, 0x00C07ce: 82 35 cpi r24, 0x52 ; 827d0: 11 f5 brne .+68 ; 0x816 <UIMgr_convertTokenToCmd+0x8e>7d2: 82 e0 ldi r24, 0x02 ; 27d4: 80 93 62 00 sts 0x0062, r247d8: 2b c0 rjmp .+86 ; 0x830 <UIMgr_convertTokenToCmd+0xa8>7da: 95 34 cpi r25, 0x45 ; 697dc: 41 f4 brne .+16 ; 0x7ee <UIMgr_convertTokenToCmd+0x66>7de: 80 91 c0 00 lds r24, 0x00C07e2: 84 35 cpi r24, 0x54 ; 847e4: 11 f5 brne .+68 ; 0x82a <UIMgr_convertTokenToCmd+0xa2>7e6: 84 e0 ldi r24, 0x04 ; 47e8: 80 93 62 00 sts 0x0062, r247ec: 21 c0 rjmp .+66 ; 0x830 <UIMgr_convertTokenToCmd+0xa8>7ee: 93 35 cpi r25, 0x53 ; 837f0: 41 f4 brne .+16 ; 0x802 <UIMgr_convertTokenToCmd+0x7a>7f2: 80 91 c0 00 lds r24, 0x00C07f6: 8d 34 cpi r24, 0x4D ; 777f8: c1 f4 brne .+48 ; 0x82a <UIMgr_convertTokenToCmd+0xa2>7fa: 86 e0 ldi r24, 0x06 ; 67fc: 80 93 62 00 sts 0x0062, r24800: 17 c0 rjmp .+46 ; 0x830 <UIMgr_convertTokenToCmd+0xa8>802: 94 34 cpi r25, 0x44 ; 68804: 41 f4 brne .+16 ; 0x816 <UIMgr_convertTokenToCmd+0x8e>806: 80 91 c0 00 lds r24, 0x00C080a: 84 35 cpi r24, 0x54 ; 8480c: 71 f4 brne .+28 ; 0x82a <UIMgr_convertTokenToCmd+0xa2>80e: 85 e0 ldi r24, 0x05 ; 5810: 80 93 62 00 sts 0x0062, r24814: 0d c0 rjmp .+26 ; 0x830 <UIMgr_convertTokenToCmd+0xa8>816: 92 35 cpi r25, 0x52 ; 82818: 41 f4 brne .+16 ; 0x82a <UIMgr_convertTokenToCmd+0xa2>81a: 80 91 c0 00 lds r24, 0x00C081e: 83 35 cpi r24, 0x53 ; 83820: 21 f4 brne .+8 ; 0x82a <UIMgr_convertTokenToCmd+0xa2>822: 87 e0 ldi r24, 0x07 ; 7824: 80 93 62 00 sts 0x0062, r24828: 03 c0 rjmp .+6 ; 0x830 <UIMgr_convertTokenToCmd+0xa8>82a: 89 e0 ldi r24, 0x09 ; 982c: 80 93 62 00 sts 0x0062, r24830: 83 e0 ldi r24, 0x03 ; 3832: ef eb ldi r30, 0xBF ; 191834: f0 e0 ldi r31, 0x00 ; 0836: 11 92 st Z+, r1838: 8a 95 dec r2483a: e9 f7 brne .-6 ; 0x836 <UIMgr_convertTokenToCmd+0xae>83c: 10 92 be 00 sts 0x00BE, r1840: 10 92 bd 00 sts 0x00BD, r1844: 08 95 ret00000846 <UIMgr_init>:846: 10 92 bf 00 sts 0x00BF, r184a: 10 92 c0 00 sts 0x00C0, r184e: 10 92 c1 00 sts 0x00C1, r1852: 10 92 c2 00 sts 0x00C2, r1856: 80 e4 ldi r24, 0x40 ; 64858: e3 ec ldi r30, 0xC3 ; 19585a: f0 e0 ldi r31, 0x00 ; 085c: 98 2f mov r25, r2485e: 11 92 st Z+, r1860: 9a 95 dec r25862: e9 f7 brne .-6 ; 0x85e <UIMgr_init+0x18>864: e4 e9 ldi r30, 0x94 ; 148866: f2 e0 ldi r31, 0x02 ; 2868: 11 92 st Z+, r186a: 8a 95 dec r2486c: e9 f7 brne .-6 ; 0x868 <UIMgr_init+0x22>86e: 80 e2 ldi r24, 0x20 ; 32870: e4 e7 ldi r30, 0x74 ; 116872: f2 e0 ldi r31, 0x02 ; 2874: 11 92 st Z+, r1876: 8a 95 dec r24878: e9 f7 brne .-6 ; 0x874 <UIMgr_init+0x2e>87a: 08 95 ret0000087c <UIMgr_convertTokenToValue>:87c: 8f eb ldi r24, 0xBF ; 19187e: 90 e0 ldi r25, 0x00 ; 0880: dc d3 rcall .+1976 ; 0x103a <atoi>882: 9c 01 movw r18, r24884: 8f 3f cpi r24, 0xFF ; 255886: 91 05 cpc r25, r1888: 69 f0 breq .+26 ; 0x8a4 <UIMgr_convertTokenToValue+0x28>88a: 60 f0 brcs .+24 ; 0x8a4 <UIMgr_convertTokenToValue+0x28>88c: 89 e0 ldi r24, 0x09 ; 988e: 80 93 62 00 sts 0x0062, r24892: 80 91 bc 00 lds r24, 0x00BC896: e3 ec ldi r30, 0xC3 ; 195898: f0 e0 ldi r31, 0x00 ; 089a: e8 0f add r30, r2489c: f1 1d adc r31, r189e: 8f ef ldi r24, 0xFF ; 2558a0: 80 83 st Z, r248a2: 07 c0 rjmp .+14 ; 0x8b2 <UIMgr_convertTokenToValue+0x36>8a4: 80 91 bc 00 lds r24, 0x00BC8a8: e3 ec ldi r30, 0xC3 ; 1958aa: f0 e0 ldi r31, 0x00 ; 08ac: e8 0f add r30, r248ae: f1 1d adc r31, r18b0: 20 83 st Z, r188b2: 83 e0 ldi r24, 0x03 ; 38b4: ef eb ldi r30, 0xBF ; 1918b6: f0 e0 ldi r31, 0x00 ; 08b8: 11 92 st Z+, r18ba: 8a 95 dec r248bc: e9 f7 brne .-6 ; 0x8b8 <UIMgr_convertTokenToValue+0x3c>8be: 10 92 be 00 sts 0x00BE, r18c2: 10 92 bd 00 sts 0x00BD, r18c6: 08 95 ret000008c8 <UIMgr_processReceivedData>:8c8: 6f 92 push r68ca: 7f 92 push r78cc: 8f 92 push r88ce: 9f 92 push r98d0: af 92 push r108d2: bf 92 push r118d4: cf 92 push r128d6: df 92 push r138d8: ef 92 push r148da: ff 92 push r158dc: 1f 93 push r178de: cf 93 push r288e0: df 93 push r298e2: 0f 2e mov r0, r318e4: f4 e7 ldi r31, 0x74 ; 1168e6: cf 2e mov r12, r318e8: f2 e0 ldi r31, 0x02 ; 28ea: df 2e mov r13, r318ec: f0 2d mov r31, r08ee: 0f 2e mov r0, r318f0: ff eb ldi r31, 0xBF ; 1918f2: af 2e mov r10, r318f4: f0 e0 ldi r31, 0x00 ; 08f6: bf 2e mov r11, r318f8: f0 2d mov r31, r08fa: 0f 2e mov r0, r318fc: f3 ec ldi r31, 0xC3 ; 1958fe: ef 2e mov r14, r31900: f0 e0 ldi r31, 0x00 ; 0902: ff 2e mov r15, r31904: f0 2d mov r31, r0906: 0f 2e mov r0, r31908: f0 e0 ldi r31, 0x00 ; 090a: 8f 2e mov r8, r3190c: f3 e0 ldi r31, 0x03 ; 390e: 9f 2e mov r9, r31910: f0 2d mov r31, r0912: 0f 2e mov r0, r31914: f3 e6 ldi r31, 0x63 ; 99916: 6f 2e mov r6, r31918: f0 e0 ldi r31, 0x00 ; 091a: 7f 2e mov r7, r3191c: f0 2d mov r31, r091e: fa c0 rjmp .+500 ; 0xb14 <UIMgr_processReceivedData+0x24c>920: f8 94 cli922: f6 01 movw r30, r12924: e9 0f add r30, r25926: f1 1d adc r31, r1928: 20 81 ld r18, Z92a: 89 2f mov r24, r2592c: 8f 5f subi r24, 0xFF ; 25592e: 8f 71 andi r24, 0x1F ; 31930: 80 93 b9 00 sts 0x00B9, r24934: 78 94 sei936: 2d 30 cpi r18, 0x0D ; 13938: 09 f0 breq .+2 ; 0x93c <UIMgr_processReceivedData+0x74>93a: a9 c0 rjmp .+338 ; 0xa8e <UIMgr_processReceivedData+0x1c6>93c: 80 91 bc 00 lds r24, 0x00BC940: 88 23 and r24, r24942: 11 f4 brne .+4 ; 0x948 <UIMgr_processReceivedData+0x80>944: 21 df rcall .-446 ; 0x788 <UIMgr_convertTokenToCmd>946: 06 c0 rjmp .+12 ; 0x954 <UIMgr_processReceivedData+0x8c>948: 99 df rcall .-206 ; 0x87c <UIMgr_convertTokenToValue>94a: 80 91 bc 00 lds r24, 0x00BC94e: 8f 5f subi r24, 0xFF ; 255950: 80 93 bc 00 sts 0x00BC, r24954: 84 e6 ldi r24, 0x64 ; 100956: 90 e0 ldi r25, 0x00 ; 0958: a6 d2 rcall .+1356 ; 0xea6 <Utility_delay>95a: 80 91 62 00 lds r24, 0x006295e: 88 50 subi r24, 0x08 ; 8960: 82 30 cpi r24, 0x02 ; 2962: 58 f4 brcc .+22 ; 0x97a <UIMgr_processReceivedData+0xb2>964: 8e e4 ldi r24, 0x4E ; 78966: da de rcall .-588 ; 0x71c <UIMgr_writeTxFifo>968: 83 e4 ldi r24, 0x43 ; 6796a: d8 de rcall .-592 ; 0x71c <UIMgr_writeTxFifo>96c: 8b e4 ldi r24, 0x4B ; 7596e: d6 de rcall .-596 ; 0x71c <UIMgr_writeTxFifo>970: 8d e0 ldi r24, 0x0D ; 13972: d4 de rcall .-600 ; 0x71c <UIMgr_writeTxFifo>974: 80 e9 ldi r24, 0x90 ; 144976: 05 dc rcall .-2038 ; 0x182 <Exec_writeEventFifo>978: 82 c0 rjmp .+260 ; 0xa7e <UIMgr_processReceivedData+0x1b6>97a: 81 e4 ldi r24, 0x41 ; 6597c: cf de rcall .-610 ; 0x71c <UIMgr_writeTxFifo>97e: 83 e4 ldi r24, 0x43 ; 67980: cd de rcall .-614 ; 0x71c <UIMgr_writeTxFifo>982: 8b e4 ldi r24, 0x4B ; 75984: cb de rcall .-618 ; 0x71c <UIMgr_writeTxFifo>986: 8d e0 ldi r24, 0x0D ; 13988: c9 de rcall .-622 ; 0x71c <UIMgr_writeTxFifo>98a: 80 e9 ldi r24, 0x90 ; 14498c: fa db rcall .-2060 ; 0x182 <Exec_writeEventFifo>98e: 80 91 62 00 lds r24, 0x0062992: 81 30 cpi r24, 0x01 ; 1994: 09 f4 brne .+2 ; 0x998 <UIMgr_processReceivedData+0xd0>996: 73 c0 rjmp .+230 ; 0xa7e <UIMgr_processReceivedData+0x1b6>998: 88 23 and r24, r2499a: 69 f4 brne .+26 ; 0x9b6 <UIMgr_processReceivedData+0xee>99c: 80 91 63 00 lds r24, 0x00639a0: 88 23 and r24, r249a2: 09 f4 brne .+2 ; 0x9a6 <UIMgr_processReceivedData+0xde>9a4: 6c c0 rjmp .+216 ; 0xa7e <UIMgr_processReceivedData+0x1b6>9a6: e3 01 movw r28, r69a8: 21 96 adiw r28, 0x01 ; 19aa: b8 de rcall .-656 ; 0x71c <UIMgr_writeTxFifo>9ac: 88 81 ld r24, Y9ae: 88 23 and r24, r249b0: 09 f4 brne .+2 ; 0x9b4 <UIMgr_processReceivedData+0xec>9b2: 65 c0 rjmp .+202 ; 0xa7e <UIMgr_processReceivedData+0x1b6>9b4: f9 cf rjmp .-14 ; 0x9a8 <UIMgr_processReceivedData+0xe0>9b6: 87 30 cpi r24, 0x07 ; 79b8: 11 f4 brne .+4 ; 0x9be <UIMgr_processReceivedData+0xf6>9ba: a1 db rcall .-2238 ; 0xfe <CamInt_resetCam>9bc: 60 c0 rjmp .+192 ; 0xa7e <UIMgr_processReceivedData+0x1b6>9be: 83 30 cpi r24, 0x03 ; 39c0: 31 f4 brne .+12 ; 0x9ce <UIMgr_processReceivedData+0x106>9c2: 84 e6 ldi r24, 0x64 ; 1009c4: 90 e0 ldi r25, 0x00 ; 09c6: 6f d2 rcall .+1246 ; 0xea6 <Utility_delay>9c8: 82 e0 ldi r24, 0x02 ; 29ca: db db rcall .-2122 ; 0x182 <Exec_writeEventFifo>9cc: 58 c0 rjmp .+176 ; 0xa7e <UIMgr_processReceivedData+0x1b6>9ce: 82 30 cpi r24, 0x02 ; 29d0: 91 f4 brne .+36 ; 0x9f6 <UIMgr_processReceivedData+0x12e>9d2: 80 91 bc 00 lds r24, 0x00BC9d6: 82 30 cpi r24, 0x02 ; 29d8: 60 f0 brcs .+24 ; 0x9f2 <UIMgr_processReceivedData+0x12a>9da: 11 e0 ldi r17, 0x01 ; 19dc: f7 01 movw r30, r149de: e1 0f add r30, r179e0: f1 1d adc r31, r19e2: 61 81 ldd r22, Z+1 ; 0x019e4: 80 81 ld r24, Z9e6: 05 d2 rcall .+1034 ; 0xdf2 <CamConfig_setCamReg>9e8: 1e 5f subi r17, 0xFE ; 2549ea: 80 91 bc 00 lds r24, 0x00BC9ee: 18 17 cp r17, r249f0: a8 f3 brcs .-22 ; 0x9dc <UIMgr_processReceivedData+0x114>9f2: 04 d2 rcall .+1032 ; 0xdfc <CamConfig_sendFifoCmds>9f4: 44 c0 rjmp .+136 ; 0xa7e <UIMgr_processReceivedData+0x1b6>9f6: 84 30 cpi r24, 0x04 ; 49f8: 31 f4 brne .+12 ; 0xa06 <UIMgr_processReceivedData+0x13e>9fa: 84 e6 ldi r24, 0x64 ; 1009fc: 90 e0 ldi r25, 0x00 ; 09fe: 53 d2 rcall .+1190 ; 0xea6 <Utility_delay>a00: 80 e8 ldi r24, 0x80 ; 128a02: bf db rcall .-2178 ; 0x182 <Exec_writeEventFifo>a04: 3c c0 rjmp .+120 ; 0xa7e <UIMgr_processReceivedData+0x1b6>a06: 85 30 cpi r24, 0x05 ; 5a08: 19 f4 brne .+6 ; 0xa10 <UIMgr_processReceivedData+0x148>a0a: 81 e8 ldi r24, 0x81 ; 129a0c: ba db rcall .-2188 ; 0x182 <Exec_writeEventFifo>a0e: 37 c0 rjmp .+110 ; 0xa7e <UIMgr_processReceivedData+0x1b6>a10: 86 30 cpi r24, 0x06 ; 6a12: 09 f0 breq .+2 ; 0xa16 <UIMgr_processReceivedData+0x14e>a14: 34 c0 rjmp .+104 ; 0xa7e <UIMgr_processReceivedData+0x1b6>a16: 80 91 bc 00 lds r24, 0x00BCa1a: 88 23 and r24, r24a1c: 81 f1 breq .+96 ; 0xa7e <UIMgr_processReceivedData+0x1b6>a1e: 40 e0 ldi r20, 0x00 ; 0a20: 84 2f mov r24, r20a22: 99 27 eor r25, r25a24: 9c 01 movw r18, r24a26: 2f 5f subi r18, 0xFF ; 255a28: 3f 4f sbci r19, 0xFF ; 255a2a: f9 01 movw r30, r18a2c: ee 0d add r30, r14a2e: ff 1d adc r31, r15a30: e0 81 ld r30, Za32: ec 01 movw r28, r24a34: c8 0d add r28, r8a36: d9 1d adc r29, r9a38: e8 83 st Y, r30uint8_teeprom_read_byte (const uint8_t *addr){uint8_t result;__asm__ __volatile__a3a: d9 01 movw r26, r18a3c: 32 d3 rcall .+1636 ; 0x10a2 <__eeprom_read_byte_1C1D1E>a3e: 80 2d mov r24, r0a40: e8 17 cp r30, r24a42: c1 f0 breq .+48 ; 0xa74 <UIMgr_processReceivedData+0x1ac>voideeprom_write_byte (uint8_t *addr,uint8_t value){__asm__ __volatile__ (a44: d9 01 movw r26, r18a46: 0e 2e mov r0, r30a48: 39 d3 rcall .+1650 ; 0x10bc <__eeprom_write_byte_1C1D1E>a4a: d9 01 movw r26, r18a4c: 2a d3 rcall .+1620 ; 0x10a2 <__eeprom_read_byte_1C1D1E>a4e: 80 2d mov r24, r0a50: 98 81 ld r25, Ya52: 89 17 cp r24, r25a54: 79 f0 breq .+30 ; 0xa74 <UIMgr_processReceivedData+0x1ac>voideeprom_write_byte (uint8_t *addr,uint8_t value){__asm__ __volatile__ (a56: d9 01 movw r26, r18a58: 09 2e mov r0, r25a5a: 30 d3 rcall .+1632 ; 0x10bc <__eeprom_write_byte_1C1D1E>a5c: d9 01 movw r26, r18a5e: 21 d3 rcall .+1602 ; 0x10a2 <__eeprom_read_byte_1C1D1E>a60: 80 2d mov r24, r0a62: 98 81 ld r25, Ya64: 89 17 cp r24, r25a66: 31 f0 breq .+12 ; 0xa74 <UIMgr_processReceivedData+0x1ac>voideeprom_write_byte (uint8_t *addr,uint8_t value){__asm__ __volatile__ (a68: d9 01 movw r26, r18a6a: 09 2e mov r0, r25a6c: 27 d3 rcall .+1614 ; 0x10bc <__eeprom_write_byte_1C1D1E>a6e: d9 01 movw r26, r18a70: 18 d3 rcall .+1584 ; 0x10a2 <__eeprom_read_byte_1C1D1E>a72: 80 2d mov r24, r0a74: 4f 5f subi r20, 0xFF ; 255a76: 80 91 bc 00 lds r24, 0x00BCa7a: 48 17 cp r20, r24a7c: 88 f2 brcs .-94 ; 0xa20 <UIMgr_processReceivedData+0x158>a7e: 10 92 bc 00 sts 0x00BC, r1a82: 80 e4 ldi r24, 0x40 ; 64a84: f7 01 movw r30, r14a86: 11 92 st Z+, r1a88: 8a 95 dec r24a8a: e9 f7 brne .-6 ; 0xa86 <UIMgr_processReceivedData+0x1be>a8c: 43 c0 rjmp .+134 ; 0xb14 <UIMgr_processReceivedData+0x24c>a8e: 20 32 cpi r18, 0x20 ; 32a90: 09 f5 brne .+66 ; 0xad4 <UIMgr_processReceivedData+0x20c>a92: 80 91 bc 00 lds r24, 0x00BCa96: 88 23 and r24, r24a98: 39 f4 brne .+14 ; 0xaa8 <UIMgr_processReceivedData+0x1e0>a9a: 76 de rcall .-788 ; 0x788 <UIMgr_convertTokenToCmd>a9c: 80 91 bc 00 lds r24, 0x00BCaa0: 8f 5f subi r24, 0xFF ; 255aa2: 80 93 bc 00 sts 0x00BC, r24aa6: 36 c0 rjmp .+108 ; 0xb14 <UIMgr_processReceivedData+0x24c>aa8: 99 27 eor r25, r25aaa: 01 96 adiw r24, 0x01 ; 1aac: 80 34 cpi r24, 0x40 ; 64aae: 91 05 cpc r25, r1ab0: 54 f0 brlt .+20 ; 0xac6 <UIMgr_processReceivedData+0x1fe>ab2: 10 92 bd 00 sts 0x00BD, r1ab6: 10 92 be 00 sts 0x00BE, r1aba: 10 92 bc 00 sts 0x00BC, r1abe: 89 e0 ldi r24, 0x09 ; 9ac0: 80 93 62 00 sts 0x0062, r24ac4: 27 c0 rjmp .+78 ; 0xb14 <UIMgr_processReceivedData+0x24c>ac6: da de rcall .-588 ; 0x87c <UIMgr_convertTokenToValue>ac8: 80 91 bc 00 lds r24, 0x00BCacc: 8f 5f subi r24, 0xFF ; 255ace: 80 93 bc 00 sts 0x00BC, r24ad2: 20 c0 rjmp .+64 ; 0xb14 <UIMgr_processReceivedData+0x24c>ad4: 82 2f mov r24, r18ad6: 81 54 subi r24, 0x41 ; 65ad8: 8a 31 cpi r24, 0x1A ; 26ada: 18 f0 brcs .+6 ; 0xae2 <UIMgr_processReceivedData+0x21a>adc: 8f 5e subi r24, 0xEF ; 239ade: 8a 30 cpi r24, 0x0A ; 10ae0: b0 f4 brcc .+44 ; 0xb0e <UIMgr_processReceivedData+0x246>ae2: 80 91 be 00 lds r24, 0x00BEae6: f5 01 movw r30, r10ae8: e8 0f add r30, r24aea: f1 1d adc r31, r1aec: 20 83 st Z, r18aee: 90 91 bd 00 lds r25, 0x00BDaf2: 9f 5f subi r25, 0xFF ; 255af4: 90 93 bd 00 sts 0x00BD, r25af8: 8f 5f subi r24, 0xFF ; 255afa: 80 93 be 00 sts 0x00BE, r24afe: 94 30 cpi r25, 0x04 ; 4b00: 48 f0 brcs .+18 ; 0xb14 <UIMgr_processReceivedData+0x24c>b02: 89 e0 ldi r24, 0x09 ; 9b04: 80 93 62 00 sts 0x0062, r24b08: 10 92 be 00 sts 0x00BE, r1b0c: 03 c0 rjmp .+6 ; 0xb14 <UIMgr_processReceivedData+0x24c>b0e: 89 e0 ldi r24, 0x09 ; 9b10: 80 93 62 00 sts 0x0062, r24b14: 90 91 b9 00 lds r25, 0x00B9b18: 80 91 b8 00 lds r24, 0x00B8b1c: 89 17 cp r24, r25b1e: 09 f0 breq .+2 ; 0xb22 <UIMgr_processReceivedData+0x25a>b20: ff ce rjmp .-514 ; 0x920 <UIMgr_processReceivedData+0x58>b22: e8 94 cltb24: df 91 pop r29b26: cf 91 pop r28b28: 1f 91 pop r17b2a: ff 90 pop r15b2c: ef 90 pop r14b2e: df 90 pop r13b30: cf 90 pop r12b32: bf 90 pop r11b34: af 90 pop r10b36: 9f 90 pop r9b38: 8f 90 pop r8b3a: 7f 90 pop r7b3c: 6f 90 pop r6b3e: 08 95 ret00000b40 <UIMgr_dispatchEvent>:b40: 80 31 cpi r24, 0x10 ; 16b42: 29 f0 breq .+10 ; 0xb4e <UIMgr_dispatchEvent+0xe>b44: 80 39 cpi r24, 0x90 ; 144b46: 39 f0 breq .+14 ; 0xb56 <UIMgr_dispatchEvent+0x16>b48: 81 30 cpi r24, 0x01 ; 1b4a: 31 f4 brne .+12 ; 0xb58 <UIMgr_dispatchEvent+0x18>b4c: 02 c0 rjmp .+4 ; 0xb52 <UIMgr_dispatchEvent+0x12>b4e: 13 de rcall .-986 ; 0x776 <UIMgr_transmitPendingData>b50: 08 95 retb52: ba de rcall .-652 ; 0x8c8 <UIMgr_processReceivedData>b54: 08 95 retb56: f0 dd rcall .-1056 ; 0x738 <UIMgr_flushTxBuffer>b58: 08 95 ret00000b5a <UartInt_init>:b5a: 10 bc out 0x20, r1 ; 32b5c: 82 e1 ldi r24, 0x12 ; 18b5e: 89 b9 out 0x09, r24 ; 9b60: 88 e9 ldi r24, 0x98 ; 152b62: 8a b9 out 0x0a, r24 ; 10b64: 86 e8 ldi r24, 0x86 ; 134b66: 80 bd out 0x20, r24 ; 32b68: 82 e0 ldi r24, 0x02 ; 2b6a: 8b b9 out 0x0b, r24 ; 11b6c: 08 95 ret00000b6e <UartInt_txByte>:b6e: 5d 9b sbis 0x0b, 5 ; 11b70: fe cf rjmp .-4 ; 0xb6e <UartInt_txByte>b72: 8c b9 out 0x0c, r24 ; 12b74: 08 95 ret00000b76 <__vector_11>:b76: 1f 92 push r1b78: 0f 92 push r0b7a: 0f b6 in r0, 0x3f ; 63b7c: 0f 92 push r0b7e: 11 24 eor r1, r1b80: 8f 93 push r24b82: 9f 93 push r25b84: ef 93 push r30b86: ff 93 push r31b88: 80 91 b8 00 lds r24, 0x00B8b8c: 9c b1 in r25, 0x0c ; 12b8e: e4 e7 ldi r30, 0x74 ; 116b90: f2 e0 ldi r31, 0x02 ; 2b92: e8 0f add r30, r24b94: f1 1d adc r31, r1b96: 90 83 st Z, r25b98: 8f 5f subi r24, 0xFF ; 255b9a: 8f 71 andi r24, 0x1F ; 31b9c: 80 93 b8 00 sts 0x00B8, r24ba0: 80 91 70 00 lds r24, 0x0070ba4: ec e6 ldi r30, 0x6C ; 108ba6: f2 e0 ldi r31, 0x02 ; 2ba8: e8 0f add r30, r24baa: f1 1d adc r31, r1bac: 91 e0 ldi r25, 0x01 ; 1bae: 90 83 st Z, r25bb0: 8f 5f subi r24, 0xFF ; 255bb2: 87 70 andi r24, 0x07 ; 7bb4: 80 93 70 00 sts 0x0070, r24bb8: ff 91 pop r31bba: ef 91 pop r30bbc: 9f 91 pop r25bbe: 8f 91 pop r24bc0: 0f 90 pop r0bc2: 0f be out 0x3f, r0 ; 63bc4: 0f 90 pop r0bc6: 1f 90 pop r1bc8: 18 95 reti00000bca <I2CInt_init>:bca: 11 b8 out 0x01, r1 ; 1bcc: 88 e4 ldi r24, 0x48 ; 72bce: 80 b9 out 0x00, r24 ; 0bd0: 08 95 ret00000bd2 <I2CInt_writeData>:bd2: 98 2f mov r25, r24bd4: 80 91 08 01 lds r24, 0x0108bd8: 88 23 and r24, r24bda: e4 f3 brlt .-8 ; 0xbd4 <I2CInt_writeData+0x2>bdc: 06 b6 in r0, 0x36 ; 54bde: 04 fc sbrc r0, 4be0: fd cf rjmp .-6 ; 0xbdc <I2CInt_writeData+0xa>be2: 90 93 03 01 sts 0x0103, r25be6: 70 93 05 01 sts 0x0105, r23bea: 60 93 04 01 sts 0x0104, r22bee: 40 93 07 01 sts 0x0107, r20bf2: 10 92 06 01 sts 0x0106, r1bf6: 10 92 09 01 sts 0x0109, r1bfa: 85 ea ldi r24, 0xA5 ; 165bfc: 86 bf out 0x36, r24 ; 54bfe: 80 91 08 01 lds r24, 0x0108c02: 80 68 ori r24, 0x80 ; 128c04: 80 93 08 01 sts 0x0108, r24c08: 08 95 ret00000c0a <I2CInt_readData>:c0a: 98 2f mov r25, r24c0c: 80 91 08 01 lds r24, 0x0108c10: 88 23 and r24, r24c12: e4 f3 brlt .-8 ; 0xc0c <I2CInt_readData+0x2>c14: 90 93 03 01 sts 0x0103, r25c18: 70 93 05 01 sts 0x0105, r23c1c: 60 93 04 01 sts 0x0104, r22c20: 40 93 07 01 sts 0x0107, r20c24: 81 e0 ldi r24, 0x01 ; 1c26: 80 93 06 01 sts 0x0106, r24c2a: 10 92 09 01 sts 0x0109, r1c2e: 85 ea ldi r24, 0xA5 ; 165c30: 86 bf out 0x36, r24 ; 54c32: 80 91 08 01 lds r24, 0x0108c36: 80 68 ori r24, 0x80 ; 128c38: 80 93 08 01 sts 0x0108, r24c3c: 08 95 ret00000c3e <I2CInt_isI2cBusy>:c3e: 80 91 08 01 lds r24, 0x0108c42: 88 1f adc r24, r24c44: 88 27 eor r24, r24c46: 88 1f adc r24, r24c48: 99 27 eor r25, r25c4a: 08 95 ret00000c4c <__vector_17>:c4c: 1f 92 push r1c4e: 0f 92 push r0c50: 0f b6 in r0, 0x3f ; 63c52: 0f 92 push r0c54: 11 24 eor r1, r1c56: 8f 93 push r24c58: 9f 93 push r25c5a: af 93 push r26c5c: bf 93 push r27c5e: ef 93 push r30c60: ff 93 push r31c62: 81 b1 in r24, 0x01 ; 1c64: 99 27 eor r25, r25c66: aa 27 eor r26, r26c68: bb 27 eor r27, r27c6a: 88 7f andi r24, 0xF8 ; 248c6c: 90 70 andi r25, 0x00 ; 0c6e: a0 70 andi r26, 0x00 ; 0c70: b0 70 andi r27, 0x00 ; 0c72: fc 01 movw r30, r24c74: 38 97 sbiw r30, 0x08 ; 8c76: e1 35 cpi r30, 0x51 ; 81c78: f1 05 cpc r31, r1c7a: 08 f0 brcs .+2 ; 0xc7e <__vector_17+0x32>c7c: 97 c0 rjmp .+302 ; 0xdac <__vector_17+0x160>c7e: ed 5e subi r30, 0xED ; 237c80: ff 4f sbci r31, 0xFF ; 255c82: 09 94 ijmpc84: 80 91 09 01 lds r24, 0x0109c88: 83 30 cpi r24, 0x03 ; 3c8a: 48 f0 brcs .+18 ; 0xc9e <__vector_17+0x52>c8c: 86 b7 in r24, 0x36 ; 54c8e: 80 69 ori r24, 0x90 ; 144c90: 86 bf out 0x36, r24 ; 54c92: 80 91 08 01 lds r24, 0x0108c96: 8f 77 andi r24, 0x7F ; 127c98: 80 93 08 01 sts 0x0108, r24c9c: 87 c0 rjmp .+270 ; 0xdac <__vector_17+0x160>c9e: 80 91 03 01 lds r24, 0x0103ca2: 90 91 06 01 lds r25, 0x0106ca6: 88 0f add r24, r24ca8: 89 0f add r24, r25caa: 83 b9 out 0x03, r24 ; 3cac: 86 b7 in r24, 0x36 ; 54cae: 8f 7d andi r24, 0xDF ; 223cb0: 86 bf out 0x36, r24 ; 54cb2: 7c c0 rjmp .+248 ; 0xdac <__vector_17+0x160>cb4: 10 92 09 01 sts 0x0109, r1cb8: e0 91 04 01 lds r30, 0x0104cbc: f0 91 05 01 lds r31, 0x0105cc0: 81 91 ld r24, Z+cc2: 83 b9 out 0x03, r24 ; 3cc4: f0 93 05 01 sts 0x0105, r31cc8: e0 93 04 01 sts 0x0104, r30ccc: 86 b7 in r24, 0x36 ; 54cce: 80 68 ori r24, 0x80 ; 128cd0: 86 bf out 0x36, r24 ; 54cd2: 6c c0 rjmp .+216 ; 0xdac <__vector_17+0x160>cd4: 80 91 09 01 lds r24, 0x0109cd8: 8f 5f subi r24, 0xFF ; 255cda: 80 93 09 01 sts 0x0109, r24cde: 86 b7 in r24, 0x36 ; 54ce0: 80 6b ori r24, 0xB0 ; 176ce2: 86 bf out 0x36, r24 ; 54ce4: 63 c0 rjmp .+198 ; 0xdac <__vector_17+0x160>ce6: 80 91 07 01 lds r24, 0x0107cea: 81 50 subi r24, 0x01 ; 1cec: 80 93 07 01 sts 0x0107, r24cf0: 80 91 07 01 lds r24, 0x0107cf4: 88 23 and r24, r24cf6: 71 f0 breq .+28 ; 0xd14 <__vector_17+0xc8>cf8: e0 91 04 01 lds r30, 0x0104cfc: f0 91 05 01 lds r31, 0x0105d00: 81 91 ld r24, Z+d02: 83 b9 out 0x03, r24 ; 3d04: f0 93 05 01 sts 0x0105, r31d08: e0 93 04 01 sts 0x0104, r30d0c: 86 b7 in r24, 0x36 ; 54d0e: 80 68 ori r24, 0x80 ; 128d10: 86 bf out 0x36, r24 ; 54d12: 4c c0 rjmp .+152 ; 0xdac <__vector_17+0x160>d14: 86 b7 in r24, 0x36 ; 54d16: 80 69 ori r24, 0x90 ; 144d18: 86 bf out 0x36, r24 ; 54d1a: 80 91 08 01 lds r24, 0x0108d1e: 8f 77 andi r24, 0x7F ; 127d20: 80 93 08 01 sts 0x0108, r24d24: 43 c0 rjmp .+134 ; 0xdac <__vector_17+0x160>d26: 86 b7 in r24, 0x36 ; 54d28: 80 69 ori r24, 0x90 ; 144d2a: 86 bf out 0x36, r24 ; 54d2c: 80 91 08 01 lds r24, 0x0108d30: 8f 77 andi r24, 0x7F ; 127d32: 80 93 08 01 sts 0x0108, r24d36: 3a c0 rjmp .+116 ; 0xdac <__vector_17+0x160>d38: 80 91 07 01 lds r24, 0x0107d3c: 81 50 subi r24, 0x01 ; 1d3e: 80 93 07 01 sts 0x0107, r24d42: 80 91 07 01 lds r24, 0x0107d46: 88 23 and r24, r24d48: 21 f0 breq .+8 ; 0xd52 <__vector_17+0x106>d4a: 86 b7 in r24, 0x36 ; 54d4c: 80 6c ori r24, 0xC0 ; 192d4e: 86 bf out 0x36, r24 ; 54d50: 2d c0 rjmp .+90 ; 0xdac <__vector_17+0x160>d52: 86 b7 in r24, 0x36 ; 54d54: 80 68 ori r24, 0x80 ; 128d56: 86 bf out 0x36, r24 ; 54d58: 29 c0 rjmp .+82 ; 0xdac <__vector_17+0x160>d5a: e0 91 04 01 lds r30, 0x0104d5e: f0 91 05 01 lds r31, 0x0105d62: 83 b1 in r24, 0x03 ; 3d64: 81 93 st Z+, r24d66: f0 93 05 01 sts 0x0105, r31d6a: e0 93 04 01 sts 0x0104, r30d6e: 80 91 07 01 lds r24, 0x0107d72: 81 50 subi r24, 0x01 ; 1d74: 80 93 07 01 sts 0x0107, r24d78: 80 91 07 01 lds r24, 0x0107d7c: 88 23 and r24, r24d7e: 21 f0 breq .+8 ; 0xd88 <__vector_17+0x13c>d80: 86 b7 in r24, 0x36 ; 54d82: 80 6c ori r24, 0xC0 ; 192d84: 86 bf out 0x36, r24 ; 54d86: 12 c0 rjmp .+36 ; 0xdac <__vector_17+0x160>d88: 86 b7 in r24, 0x36 ; 54d8a: 8f 7b andi r24, 0xBF ; 191d8c: 86 bf out 0x36, r24 ; 54d8e: 0e c0 rjmp .+28 ; 0xdac <__vector_17+0x160>d90: e0 91 04 01 lds r30, 0x0104d94: f0 91 05 01 lds r31, 0x0105d98: 83 b1 in r24, 0x03 ; 3d9a: 80 83 st Z, r24d9c: 86 b7 in r24, 0x36 ; 54d9e: 80 69 ori r24, 0x90 ; 144da0: 86 bf out 0x36, r24 ; 54da2: 80 91 08 01 lds r24, 0x0108da6: 8f 77 andi r24, 0x7F ; 127da8: 80 93 08 01 sts 0x0108, r24dac: ff 91 pop r31dae: ef 91 pop r30db0: bf 91 pop r27db2: af 91 pop r26db4: 9f 91 pop r25db6: 8f 91 pop r24db8: 0f 90 pop r0dba: 0f be out 0x3f, r0 ; 63dbc: 0f 90 pop r0dbe: 1f 90 pop r1dc0: 18 95 reti00000dc2 <CamConfig_writeTxFifo>:dc2: 20 91 0a 01 lds r18, 0x010Adc6: e2 2f mov r30, r18dc8: ff 27 eor r31, r31dca: ee 0f add r30, r30dcc: ff 1f adc r31, r31dce: ec 52 subi r30, 0x2C ; 44dd0: fd 4f sbci r31, 0xFD ; 253dd2: 91 83 std Z+1, r25 ; 0x01dd4: 80 83 st Z, r24dd6: 2f 5f subi r18, 0xFF ; 255dd8: 27 70 andi r18, 0x07 ; 7dda: 20 93 0a 01 sts 0x010A, r18dde: 90 e0 ldi r25, 0x00 ; 0de0: 80 91 0b 01 lds r24, 0x010Bde4: 28 17 cp r18, r24de6: 09 f4 brne .+2 ; 0xdea <CamConfig_writeTxFifo+0x28>de8: 91 e0 ldi r25, 0x01 ; 1dea: 81 e0 ldi r24, 0x01 ; 1dec: 89 27 eor r24, r25dee: 99 27 eor r25, r25df0: 08 95 ret00000df2 <CamConfig_setCamReg>:df2: 28 2f mov r18, r24df4: 36 2f mov r19, r22df6: c9 01 movw r24, r18df8: e4 df rcall .-56 ; 0xdc2 <CamConfig_writeTxFifo>dfa: 08 95 ret00000dfc <CamConfig_sendFifoCmds>:dfc: ef 92 push r14dfe: ff 92 push r15e00: 0f 93 push r16e02: 1f 93 push r17e04: cf 93 push r28e06: df 93 push r29e08: cd b7 in r28, 0x3d ; 61e0a: de b7 in r29, 0x3e ; 62e0c: 22 97 sbiw r28, 0x02 ; 2e0e: 0f b6 in r0, 0x3f ; 63e10: f8 94 clie12: de bf out 0x3e, r29 ; 62e14: 0f be out 0x3f, r0 ; 63e16: cd bf out 0x3d, r28 ; 61e18: 0f 2e mov r0, r31e1a: f4 ed ldi r31, 0xD4 ; 212e1c: ef 2e mov r14, r31e1e: f2 e0 ldi r31, 0x02 ; 2e20: ff 2e mov r15, r31e22: f0 2d mov r31, r0e24: 8e 01 movw r16, r28e26: 0f 5f subi r16, 0xFF ; 255e28: 1f 4f sbci r17, 0xFF ; 255e2a: 19 c0 rjmp .+50 ; 0xe5e <CamConfig_sendFifoCmds+0x62>e2c: e3 2f mov r30, r19e2e: ff 27 eor r31, r31e30: ee 0f add r30, r30e32: ff 1f adc r31, r31e34: ee 0d add r30, r14e36: ff 1d adc r31, r15e38: 91 81 ldd r25, Z+1 ; 0x01e3a: 20 81 ld r18, Ze3c: 83 2f mov r24, r19e3e: 8f 5f subi r24, 0xFF ; 255e40: 87 70 andi r24, 0x07 ; 7e42: 80 93 0b 01 sts 0x010B, r24e46: 9a 83 std Y+2, r25 ; 0x02e48: 29 83 std Y+1, r18 ; 0x01e4a: 42 e0 ldi r20, 0x02 ; 2e4c: b8 01 movw r22, r16e4e: 80 e6 ldi r24, 0x60 ; 96e50: c0 de rcall .-640 ; 0xbd2 <I2CInt_writeData>e52: 84 e6 ldi r24, 0x64 ; 100e54: 90 e0 ldi r25, 0x00 ; 0e56: 27 d0 rcall .+78 ; 0xea6 <Utility_delay>e58: f2 de rcall .-540 ; 0xc3e <I2CInt_isI2cBusy>e5a: 81 30 cpi r24, 0x01 ; 1e5c: e9 f3 breq .-6 ; 0xe58 <CamConfig_sendFifoCmds+0x5c>e5e: 30 91 0b 01 lds r19, 0x010Be62: 80 91 0a 01 lds r24, 0x010Ae66: 83 17 cp r24, r19e68: 09 f7 brne .-62 ; 0xe2c <CamConfig_sendFifoCmds+0x30>e6a: 22 96 adiw r28, 0x02 ; 2e6c: 0f b6 in r0, 0x3f ; 63e6e: f8 94 clie70: de bf out 0x3e, r29 ; 62e72: 0f be out 0x3f, r0 ; 63e74: cd bf out 0x3d, r28 ; 61e76: df 91 pop r29e78: cf 91 pop r28e7a: 1f 91 pop r17e7c: 0f 91 pop r16e7e: ff 90 pop r15e80: ef 90 pop r14e82: 08 95 ret00000e84 <CamConfig_init>:e84: 60 e2 ldi r22, 0x20 ; 32e86: 84 e1 ldi r24, 0x14 ; 20e88: b4 df rcall .-152 ; 0xdf2 <CamConfig_setCamReg>e8a: 60 e4 ldi r22, 0x40 ; 64e8c: 89 e3 ldi r24, 0x39 ; 57e8e: b1 df rcall .-158 ; 0xdf2 <CamConfig_setCamReg>e90: 68 e2 ldi r22, 0x28 ; 40e92: 82 e1 ldi r24, 0x12 ; 18e94: ae df rcall .-164 ; 0xdf2 <CamConfig_setCamReg>e96: 65 e0 ldi r22, 0x05 ; 5e98: 88 e2 ldi r24, 0x28 ; 40e9a: ab df rcall .-170 ; 0xdf2 <CamConfig_setCamReg>e9c: 61 e0 ldi r22, 0x01 ; 1e9e: 83 e1 ldi r24, 0x13 ; 19ea0: a8 df rcall .-176 ; 0xdf2 <CamConfig_setCamReg>ea2: ac df rcall .-168 ; 0xdfc <CamConfig_sendFifoCmds>ea4: 08 95 ret00000ea6 <Utility_delay>:ea6: cf 93 push r28ea8: df 93 push r29eaa: cd b7 in r28, 0x3d ; 61eac: de b7 in r29, 0x3e ; 62eae: 24 97 sbiw r28, 0x04 ; 4eb0: 0f b6 in r0, 0x3f ; 63eb2: f8 94 clieb4: de bf out 0x3e, r29 ; 62eb6: 0f be out 0x3f, r0 ; 63eb8: cd bf out 0x3d, r28 ; 61eba: 9c 01 movw r18, r24ebc: 1a 82 std Y+2, r1 ; 0x02ebe: 19 82 std Y+1, r1 ; 0x01ec0: 1c 82 std Y+4, r1 ; 0x04ec2: 1b 82 std Y+3, r1 ; 0x03ec4: 1a 82 std Y+2, r1 ; 0x02ec6: 19 82 std Y+1, r1 ; 0x01ec8: 89 81 ldd r24, Y+1 ; 0x01eca: 9a 81 ldd r25, Y+2 ; 0x02ecc: 82 17 cp r24, r18ece: 93 07 cpc r25, r19ed0: e0 f4 brcc .+56 ; 0xf0a <Utility_delay+0x64>ed2: 1c 82 std Y+4, r1 ; 0x04ed4: 1b 82 std Y+3, r1 ; 0x03ed6: 8b 81 ldd r24, Y+3 ; 0x03ed8: 9c 81 ldd r25, Y+4 ; 0x04eda: 88 5e subi r24, 0xE8 ; 232edc: 93 40 sbci r25, 0x03 ; 3ede: 58 f4 brcc .+22 ; 0xef6 <Utility_delay+0x50>ee0: 00 00 nopee2: 8b 81 ldd r24, Y+3 ; 0x03ee4: 9c 81 ldd r25, Y+4 ; 0x04ee6: 01 96 adiw r24, 0x01 ; 1ee8: 9c 83 std Y+4, r25 ; 0x04eea: 8b 83 std Y+3, r24 ; 0x03eec: 8b 81 ldd r24, Y+3 ; 0x03eee: 9c 81 ldd r25, Y+4 ; 0x04ef0: 88 5e subi r24, 0xE8 ; 232ef2: 93 40 sbci r25, 0x03 ; 3ef4: a8 f3 brcs .-22 ; 0xee0 <Utility_delay+0x3a>ef6: 89 81 ldd r24, Y+1 ; 0x01ef8: 9a 81 ldd r25, Y+2 ; 0x02efa: 01 96 adiw r24, 0x01 ; 1efc: 9a 83 std Y+2, r25 ; 0x02efe: 89 83 std Y+1, r24 ; 0x01f00: 89 81 ldd r24, Y+1 ; 0x01f02: 9a 81 ldd r25, Y+2 ; 0x02f04: 82 17 cp r24, r18f06: 93 07 cpc r25, r19f08: 20 f3 brcs .-56 ; 0xed2 <Utility_delay+0x2c>f0a: 24 96 adiw r28, 0x04 ; 4f0c: 0f b6 in r0, 0x3f ; 63f0e: f8 94 clif10: de bf out 0x3e, r29 ; 62f12: 0f be out 0x3f, r0 ; 63f14: cd bf out 0x3d, r28 ; 61f16: df 91 pop r29f18: cf 91 pop r28f1a: 08 95 ret00000f1c <DebugInt_init>:***********************************************************/void DebugInt_init(void){/* set PortD pin6 for output */DDRD |= 0x40;f1c: 8e 9a sbi 0x11, 6 ; 17/* turn on LED */PORTD |= 0x40;f1e: 96 9a sbi 0x12, 6 ; 18Utility_delay(500);f20: 84 ef ldi r24, 0xF4 ; 244f22: 91 e0 ldi r25, 0x01 ; 1f24: c0 df rcall .-128 ; 0xea6 <Utility_delay>PORTD &= 0xBF;f26: 96 98 cbi 0x12, 6 ; 18Utility_delay(500);f28: 84 ef ldi r24, 0xF4 ; 244f2a: 91 e0 ldi r25, 0x01 ; 1f2c: bc df rcall .-136 ; 0xea6 <Utility_delay>PORTD |= 0x40;f2e: 96 9a sbi 0x12, 6 ; 18Utility_delay(500);f30: 84 ef ldi r24, 0xF4 ; 244f32: 91 e0 ldi r25, 0x01 ; 1f34: b8 df rcall .-144 ; 0xea6 <Utility_delay>PORTD &= 0xBF;f36: 96 98 cbi 0x12, 6 ; 18Utility_delay(500);f38: 84 ef ldi r24, 0xF4 ; 244f3a: 91 e0 ldi r25, 0x01 ; 1f3c: b4 df rcall .-152 ; 0xea6 <Utility_delay>PORTD |= 0x40;f3e: 96 9a sbi 0x12, 6 ; 18Utility_delay(500);f40: 84 ef ldi r24, 0xF4 ; 244f42: 91 e0 ldi r25, 0x01 ; 1f44: b0 df rcall .-160 ; 0xea6 <Utility_delay>PORTD &= 0xBF;f46: 96 98 cbi 0x12, 6 ; 18Utility_delay(500);f48: 84 ef ldi r24, 0xF4 ; 244f4a: 91 e0 ldi r25, 0x01 ; 1f4c: ac df rcall .-168 ; 0xea6 <Utility_delay>PORTD |= 0x40;f4e: 96 9a sbi 0x12, 6 ; 18f50: 08 95 ret00000f52 <CamIntAsm_waitForNewTrackingFrame>:; set, and the function will return.;*****************************************************************CamIntAsm_waitForNewTrackingFrame:sbi _SFR_IO_ADDR(PORTD),PD6 ; For testing...f52: 96 9a sbi 0x12, 6 ; 18cbi _SFR_IO_ADDR(PORTD),PD6f54: 96 98 cbi 0x12, 6 ; 18sleepf56: 88 95 sleep00000f58 <CamIntAsm_acquireTrackingLine>:;*****************************************************************; REMEMBER...everything from here on out is critically timed to be; synchronized with the flow of pixel data from the camera...;*****************************************************************CamIntAsm_acquireTrackingLine:brts _cleanUpf58: e6 f1 brts .+120 ; 0xfd2 <_cleanUp>;sbi _SFR_IO_ADDR(PORTD),PD6 ; For testing...;cbi _SFR_IO_ADDR(PORTD),PD6in tmp1,_SFR_IO_ADDR(TCCR1B) ; Enable the PCLK line to actuallyf5a: 3e b5 in r19, 0x2e ; 46ori tmp1, 0x07 ; feed Timer1f5c: 37 60 ori r19, 0x07 ; 7out _SFR_IO_ADDR(TCCR1B),tmp1f5e: 3e bd out 0x2e, r19 ; 46; The line is about to start...ldi pixelCount,0 ; Initialize the RLE stats...f60: 00 e0 ldi r16, 0x00 ; 0ldi pixelRunStart,PIXEL_RUN_START_INITIAL ; Remember, we always calculatef62: 10 e5 ldi r17, 0x50 ; 80; the pixel run length as; TCNT1L - pixelRunStartldi lastColor,0x00 ; clear out the last color before we startf64: 20 e0 ldi r18, 0x00 ; 0mov XH,currLineBuffHigh ; Load the pointer to the current linef66: b9 2f mov r27, r25mov XL,currLineBuffLow ; buffer into the X pointer regsf68: a8 2f mov r26, r24mov ZH,colorMapHigh ; Load the pointers to the membershipf6a: f7 2f mov r31, r23mov ZL,colorMapLow ; lookup tables (ZL and YL will be overwrittenf6c: e6 2f mov r30, r22mov YH,colorMapHigh ; as soon as we start reading data) to Z and Yf6e: d7 2f mov r29, r23in tmp1, _SFR_IO_ADDR(TIMSK) ; enable TIMER1 to start countingf70: 39 b7 in r19, 0x39 ; 57ori tmp1, ENABLE_PCLK_TIMER1_OVERFLOW_BITMASK ; external PCLK pulses and interrupt onf72: 34 60 ori r19, 0x04 ; 4out _SFR_IO_ADDR(TIMSK),tmp1 ; overflowf74: 39 bf out 0x39, r19 ; 57ldi tmp1,PIXEL_RUN_START_INITIAL ; set up the TCNT1 to overflow (andf76: 30 e5 ldi r19, 0x50 ; 80ldi tmp2,0xFF ; interrupts) after 176 pixelsf78: 4f ef ldi r20, 0xFF ; 255out _SFR_IO_ADDR(TCNT1H),tmp2f7a: 4d bd out 0x2d, r20 ; 45out _SFR_IO_ADDR(TCNT1L),tmp1f7c: 3c bd out 0x2c, r19 ; 44mov YL,colorMapLowf7e: c6 2f mov r28, r22in tmp1, _SFR_IO_ADDR(GICR) ; enable the HREF interrupt...remember, wef80: 3b b7 in r19, 0x3b ; 59; only use this interrupt to synchronize; the beginning of the lineori tmp1, HREF_INTERRUPT_ENABLE_MASKf82: 30 68 ori r19, 0x80 ; 128out _SFR_IO_ADDR(GICR), tmp1f84: 3b bf out 0x3b, r19 ; 5900000f86 <_trackFrame>:;*******************************************************************************************; Track Frame handler;*******************************************************************************************_trackFrame:sbi _SFR_IO_ADDR(PORTD),PD6f86: 96 9a sbi 0x12, 6 ; 18sleep ; ...And we wait...f88: 88 95 sleep; Returning from the interrupt/sleep wakeup will consume; 14 clock cycles (7 to wakeup from idle sleep, 3 to vector, and 4 to return); Disable the HREF interruptcbi _SFR_IO_ADDR(PORTD),PD6f8a: 96 98 cbi 0x12, 6 ; 18in tmp1, _SFR_IO_ADDR(GICR)f8c: 3b b7 in r19, 0x3b ; 59andi tmp1, HREF_INTERRUPT_DISABLE_MASKf8e: 3f 77 andi r19, 0x7F ; 127out _SFR_IO_ADDR(GICR), tmp1f90: 3b bf out 0x3b, r19 ; 59; A couple of NOPs are needed here to sync up the pixel data...the number (2); of NOPs was determined emperically by trial and error.nopf92: 00 00 nop...00000f96 <_acquirePixelBlock>:nop_acquirePixelBlock: ; Clock Cycle Countin ZL,RB_PORT ; sample the red value (PINB) (1)f96: e6 b3 in r30, 0x16 ; 22in YL,G_PORT ; sample the green value (PINC) (1)f98: c3 b3 in r28, 0x13 ; 19andi YL,0x0F ; clear the high nibble (1)f9a: cf 70 andi r28, 0x0F ; 15ldd color,Z+RED_MEM_OFFSET ; lookup the red membership (2)f9c: 30 81 ld r19, Zin ZL,RB_PORT ; sample the blue value (PINB) (1)f9e: e6 b3 in r30, 0x16 ; 22ldd greenData,Y+GREEN_MEM_OFFSET; lookup the green membership (2)fa0: 48 89 ldd r20, Y+16 ; 0x10ldd blueData,Z+BLUE_MEM_OFFSET ; lookup the blue membership (2)fa2: 50 a1 ldd r21, Z+32 ; 0x20and color,greenData ; mask memberships together (1)fa4: 34 23 and r19, r20and color,blueData ; to produce the final color (1)fa6: 35 23 and r19, r21brts _cleanUpTrackingLine ; if some interrupt routine has (1...not set)fa8: 76 f0 brts .+28 ; 0xfc6 <_cleanUpTrackingLine>; come in and set our T flag in; SREG, then we need to hop out; and blow away this frames data (common cleanup)cp color,lastColor ; check to see if the run continues (1)faa: 32 17 cp r19, r18breq _acquirePixelBlock ; (2...equal)fac: a1 f3 breq .-24 ; 0xf96 <_acquirePixelBlock>; ___________; 16 clock cycles; (16 clock cycles = 1 uS = 1 pixelBlock time); Toggle the debug line to indicate a color changesbi _SFR_IO_ADDR(PORTD),PD6fae: 96 9a sbi 0x12, 6 ; 18nopfb0: 00 00 nopcbi _SFR_IO_ADDR(PORTD),PD6fb2: 96 98 cbi 0x12, 6 ; 18mov tmp2,pixelRunStart ; get the count value of thefb4: 41 2f mov r20, r17; current pixel runin pixelCount,_SFR_IO_ADDR(TCNT1L) ; get the current TCNT1 valuefb6: 0c b5 in r16, 0x2c ; 44mov pixelRunStart,pixelCount ; reload pixelRunStart for thefb8: 10 2f mov r17, r16; next runsub pixelCount,tmp2 ; pixelCount = TCNT1L - pixelRunStartfba: 04 1b sub r16, r20st X+,lastColor ; record the color run in the current line bufferfbc: 2d 93 st X+, r18st X+,pixelCount ; with its lengthfbe: 0d 93 st X+, r16mov lastColor,color ; set lastColor so we can figure out when it changesfc0: 23 2f mov r18, r19nop ; waste one more cycle for a total of 16fc2: 00 00 noprjmp _acquirePixelBlockfc4: e8 cf rjmp .-48 ; 0xf96 <_acquirePixelBlock>00000fc6 <_cleanUpTrackingLine>:; _cleanUpTrackingLine is used to write the last run length block off to the currentLineBuffer so; that all 176 pixels in the line are accounted for._cleanUpTrackingLine:ldi pixelCount,0xFF ; the length of the last run is ALWAYS 0xFF minus the lastfc6: 0f ef ldi r16, 0xFF ; 255sub pixelCount,pixelRunStart ; pixelRunStartfc8: 01 1b sub r16, r17inc pixelCount ; increment pixelCount since we actually need to accountfca: 03 95 inc r16; for the overflow of TCNT1st X+,color ; record the color run in the current line bufferfcc: 3d 93 st X+, r19st X,pixelCountfce: 0c 93 st X, r16rjmp _cleanUpfd0: 00 c0 rjmp .+0 ; 0xfd2 <_cleanUp>00000fd2 <_cleanUp>:_cleanUpDumpLine:; NOTE: If serial data is received, to interrupt the tracking of a line, we'll; get a EV_SERIAL_DATA_RECEIVED event, and the T bit set so we will end the; line's processing...however, the PCLK will keep on ticking for the rest of; the frame/line, which will cause the TCNT to eventually overflow and; interrupt us, generating a EV_ACQUIRE_LINE_COMPLETE event. We don't want; this, so we need to actually turn off the PCLK counting each time we exit; this loop, and only turn it on when we begin acquiring lines....; NOT NEEDED FOR NOW...;in tmp1, _SFR_IO_ADDR(TIMSK) ; disable TIMER1 to stop counting;andi tmp1, DISABLE_PCLK_TIMER1_OVERFLOW_BITMASK ; external PCLK pulses;out _SFR_IO_ADDR(TIMSK),tmp1_cleanUp:; Disable the external clocking of the Timer1 counterin tmp1, _SFR_IO_ADDR(TCCR1B)fd2: 3e b5 in r19, 0x2e ; 46andi tmp1, 0xF8fd4: 38 7f andi r19, 0xF8 ; 248out _SFR_IO_ADDR(TCCR1B),tmp1fd6: 3e bd out 0x2e, r19 ; 46; Toggle the debug line to indicate the line is completesbi _SFR_IO_ADDR(PORTD),PD6fd8: 96 9a sbi 0x12, 6 ; 18cbi _SFR_IO_ADDR(PORTD),PD6fda: 96 98 cbi 0x12, 6 ; 18clt ; clear out the T bit since we have detectedfdc: e8 94 clt00000fde <_exit>:; the interruption and are exiting to handle it_exit:retfde: 08 95 ret00000fe0 <CamIntAsm_waitForNewDumpFrame>:;*****************************************************************; Function Name: CamIntAsm_waitForNewDumpFrame; Function Description: This function is responsible for; going to sleep until a new frame begins (indicated by; VSYNC transitioning from low to high. This will wake; the "VSYNC sleep" up and allow it to continue with; acquiring a line of pixel data to dump out to the UI.; Inputs: r25 - MSB of currentLineBuffer; r24 - LSB of currentLineBuffer; r23 - MSB of prevLineBuffer; r22 - LSB of prevLineBuffer; Outputs: none; NOTES: This function doesn't really return...it sorta just; floats into the acquireDumpLine function after the "VSYNC sleep"; is awoken.;*****************************************************************CamIntAsm_waitForNewDumpFrame:sbi _SFR_IO_ADDR(PORTD),PD6 ; For testing...fe0: 96 9a sbi 0x12, 6 ; 18cbi _SFR_IO_ADDR(PORTD),PD6fe2: 96 98 cbi 0x12, 6 ; 18sleepfe4: 88 95 sleep00000fe6 <CamIntAsm_acquireDumpLine>:;*****************************************************************; REMEMBER...everything from here on out is critically timed to be; synchronized with the flow of pixel data from the camera...;*****************************************************************CamIntAsm_acquireDumpLine:brts _cleanUpfe6: ae f3 brts .-22 ; 0xfd2 <_cleanUp>;sbi _SFR_IO_ADDR(PORTD),PD6 ; For testing...;cbi _SFR_IO_ADDR(PORTD),PD6mov XH,currLineBuffHigh ; Load the pointer to the current linefe8: b9 2f mov r27, r25mov XL,currLineBuffLow ; buffer into the X pointer regsfea: a8 2f mov r26, r24mov YH,prevLineBuffHigh ; Load the pointer to the previous linefec: d7 2f mov r29, r23mov YL,prevLineBuffLow ; buffer into the Y pointer regsfee: c6 2f mov r28, r22ldi tmp1,PIXEL_RUN_START_INITIAL ; set up the TCNT1 to overflow (andff0: 30 e5 ldi r19, 0x50 ; 80ldi tmp2,0xFF ; interrupts) after 176 pixelsff2: 4f ef ldi r20, 0xFF ; 255out _SFR_IO_ADDR(TCNT1H),tmp2ff4: 4d bd out 0x2d, r20 ; 45out _SFR_IO_ADDR(TCNT1L),tmp1ff6: 3c bd out 0x2c, r19 ; 44in tmp1, _SFR_IO_ADDR(TCCR1B) ; Enable the PCLK line to actuallyff8: 3e b5 in r19, 0x2e ; 46ori tmp1, 0x07 ; feed Timer1ffa: 37 60 ori r19, 0x07 ; 7out _SFR_IO_ADDR(TCCR1B),tmp1ffc: 3e bd out 0x2e, r19 ; 46nopffe: 00 00 nopin tmp1, _SFR_IO_ADDR(TIMSK) ; enable TIMER1 to start counting1000: 39 b7 in r19, 0x39 ; 57ori tmp1, ENABLE_PCLK_TIMER1_OVERFLOW_BITMASK ; external PCLK pulses and interrupt on1002: 34 60 ori r19, 0x04 ; 4out _SFR_IO_ADDR(TIMSK),tmp1 ; overflow1004: 39 bf out 0x39, r19 ; 57in tmp1, _SFR_IO_ADDR(GICR) ; enable the HREF interrupt...remember, we1006: 3b b7 in r19, 0x3b ; 59; only use this interrupt to synchronize; the beginning of the lineori tmp1, HREF_INTERRUPT_ENABLE_MASK1008: 30 68 ori r19, 0x80 ; 128out _SFR_IO_ADDR(GICR), tmp1100a: 3b bf out 0x3b, r19 ; 590000100c <_dumpFrame>:;*******************************************************************************************; Dump Frame handler;*******************************************************************************************_dumpFrame:sbi _SFR_IO_ADDR(PORTD),PD6100c: 96 9a sbi 0x12, 6 ; 18sleep ; ...And we wait...100e: 88 95 sleepcbi _SFR_IO_ADDR(PORTD),PD61010: 96 98 cbi 0x12, 6 ; 18in tmp1, _SFR_IO_ADDR(GICR) ; disable the HREF interrupt1012: 3b b7 in r19, 0x3b ; 59andi tmp1, HREF_INTERRUPT_DISABLE_MASK ; so we don't get interrupted1014: 3f 77 andi r19, 0x7F ; 127out _SFR_IO_ADDR(GICR), tmp1 ; while dumping the line1016: 3b bf out 0x3b, r19 ; 59...0000101a <_sampleDumpPixel>:nop ; Remember...if we ever remove the "cbi" instruction above,; we need to add two more NOPs to cover this; Ok...the following loop needs to run in 8 clock cycles, so we can get every; pixel in the line...this shouldn't be a problem, since the PCLK timing was; reduced by a factor of 2 whenever we go to dump a line (this is to give us; enough time to do the sampling and storing of the pixel data). In addition,; it is assumed that we will have to do some minor processing on the data right; before we send it out, like mask off the top 4-bits of each, and then pack both; low nibbles into a single byte for transmission...we just don't have time to; do that here (only 8 instruction cycles :-) )_sampleDumpPixel:in tmp1,G_PORT ; sample the G value (1)101a: 33 b3 in r19, 0x13 ; 19in tmp2,RB_PORT ; sample the R/B value (1)101c: 46 b3 in r20, 0x16 ; 22st X+,tmp1 ; store to the currLineBuff and inc ptrs(2)101e: 3d 93 st X+, r19st Y+,tmp2 ; store to the prevLineBuff and inc ptrs(2)1020: 49 93 st Y+, r20brtc _sampleDumpPixel ; loop back unless flag is set (2...if not set)1022: de f7 brtc .-10 ; 0x101a <_sampleDumpPixel>; ___________; 8 cycles normally; if we make it here, it means the T flag is set, and we must have been interrupted; so we need to exit (what if we were interrupted for serial? should we disable it?)rjmp _cleanUpDumpLine1024: d6 cf rjmp .-84 ; 0xfd2 <_cleanUp>00001026 <__vector_1>:;***********************************************************; Function Name: <interrupt handler for External Interrupt0>; Function Description: This function is responsible; for handling a rising edge on the Ext Interrupt 0. This; routine simply returns, since we just want to wake up; whenever the VSYNC transitions (meaning the start of a new; frame).; Inputs: none; Outputs: none;***********************************************************SIG_INTERRUPT0:; This will wake us up when VSYNC transitions high...we just want to returnreti1026: 18 95 reti00001028 <__vector_2>:;***********************************************************; Function Name: <interrupt handler for External Interrupt1>; Function Description: This function is responsible; for handling a falling edge on the Ext Interrupt 1. This; routine simply returns, since we just want to wake up; whenever the HREF transitions (meaning the pixels; are starting after VSYNC transitioned, and we need to; start acquiring the pixel blocks; Inputs: none; Outputs: none;***********************************************************SIG_INTERRUPT1:; This will wake us up when HREF transitions high...we just want to returnreti1028: 18 95 reti0000102a <__vector_8>:;***********************************************************; Function Name: <interrupt handler for Timer0 overflow>; Function Description: This function is responsible; for handling the Timer0 overflow (hooked up to indicate; when we have reached the number of HREFs required in a; single frame). We set the T flag in the SREG to; indicate to the _acquirePixelBlock routine that it needs; to exit, and then set the appropriate action to take in; the eventList of the Executive module.; Inputs: none; Outputs: none; Note: Originally, the HREF pulses were also going to; be counted by a hardware counter, but it didn't end up; being necessary;***********************************************************;SIG_OVERFLOW0:; set ; set the T bit in SREG; lds tmp1,eventBitmask; ori tmp1,EV_ACQUIRE_FRAME_COMPLETE; sts eventBitmask,tmp1; reti;***********************************************************; Function Name: <interrupt handler for Timer1 overflow>; Function Description: This function is responsible; for handling the Timer1 overflow (hooked up to indicate; when we have reached the end of a line of pixel data,; since PCLK is hooked up to overflow TCNT1 after 176; pixels). This routine generates an acquire line complete; event in the fastEventBitmask, which is streamlined for; efficiency reasons.;***********************************************************SIG_OVERFLOW1:lds tmp1,fastEventBitmask ; set a flag indicating102a: 30 91 72 00 lds r19, 0x0072ori tmp1,FEV_ACQUIRE_LINE_COMPLETE ; a line is complete102e: 31 60 ori r19, 0x01 ; 1sts fastEventBitmask,tmp11030: 30 93 72 00 sts 0x0072, r19set ; set the T bit in SREG1034: 68 94 set;sbi _SFR_IO_ADDR(PORTD),PD6 ; For testing...;cbi _SFR_IO_ADDR(PORTD),PD6 ; For testing...reti1036: 18 95 reti00001038 <__vector_default>:; This is the default handler for all interrupts that don't; have handler routines specified for them..global __vector_default__vector_default:reti1038: 18 95 reti0000103a <atoi>:103a: fc 01 movw r30, r24103c: 88 27 eor r24, r24103e: 99 27 eor r25, r251040: e8 94 clt1042: 21 91 ld r18, Z+1044: 22 23 and r18, r181046: e9 f0 breq .+58 ; 0x1082 <atoi+0x48>1048: 20 32 cpi r18, 0x20 ; 32104a: d9 f3 breq .-10 ; 0x1042 <atoi+0x8>104c: 29 30 cpi r18, 0x09 ; 9104e: c9 f3 breq .-14 ; 0x1042 <atoi+0x8>1050: 2a 30 cpi r18, 0x0A ; 101052: b9 f3 breq .-18 ; 0x1042 <atoi+0x8>1054: 2c 30 cpi r18, 0x0C ; 121056: a9 f3 breq .-22 ; 0x1042 <atoi+0x8>1058: 2d 30 cpi r18, 0x0D ; 13105a: 99 f3 breq .-26 ; 0x1042 <atoi+0x8>105c: 26 37 cpi r18, 0x76 ; 118105e: 89 f3 breq .-30 ; 0x1042 <atoi+0x8>1060: 2b 32 cpi r18, 0x2B ; 431062: 19 f0 breq .+6 ; 0x106a <atoi+0x30>1064: 2d 32 cpi r18, 0x2D ; 451066: 21 f4 brne .+8 ; 0x1070 <atoi+0x36>1068: 68 94 set106a: 21 91 ld r18, Z+106c: 22 23 and r18, r18106e: 49 f0 breq .+18 ; 0x1082 <atoi+0x48>1070: 20 33 cpi r18, 0x30 ; 481072: 3c f0 brlt .+14 ; 0x1082 <atoi+0x48>1074: 2a 33 cpi r18, 0x3A ; 581076: 2c f4 brge .+10 ; 0x1082 <atoi+0x48>1078: 20 53 subi r18, 0x30 ; 48107a: 0b d0 rcall .+22 ; 0x1092 <__mulhi_const_10>107c: 82 0f add r24, r18107e: 91 1d adc r25, r11080: f4 cf rjmp .-24 ; 0x106a <atoi+0x30>1082: 81 15 cp r24, r11084: 91 05 cpc r25, r11086: 21 f0 breq .+8 ; 0x1090 <atoi+0x56>1088: 1e f4 brtc .+6 ; 0x1090 <atoi+0x56>108a: 80 95 com r24108c: 90 95 com r25108e: 01 96 adiw r24, 0x01 ; 11090: 08 95 ret00001092 <__mulhi_const_10>:1092: 7a e0 ldi r23, 0x0A ; 101094: 97 9f mul r25, r231096: 90 2d mov r25, r01098: 87 9f mul r24, r23109a: 80 2d mov r24, r0109c: 91 0d add r25, r1109e: 11 24 eor r1, r110a0: 08 95 ret000010a2 <__eeprom_read_byte_1C1D1E>:10a2: e1 99 sbic 0x1c, 1 ; 2810a4: fe cf rjmp .-4 ; 0x10a2 <__eeprom_read_byte_1C1D1E>10a6: bf bb out 0x1f, r27 ; 3110a8: ae bb out 0x1e, r26 ; 3010aa: e0 9a sbi 0x1c, 0 ; 2810ac: 11 96 adiw r26, 0x01 ; 110ae: 0d b2 in r0, 0x1d ; 2910b0: 08 95 ret000010b2 <__eeprom_read_block_1C1D1E>:10b2: f7 df rcall .-18 ; 0x10a2 <__eeprom_read_byte_1C1D1E>10b4: 01 92 st Z+, r010b6: 1a 94 dec r110b8: e1 f7 brne .-8 ; 0x10b2 <__eeprom_read_block_1C1D1E>10ba: 08 95 ret000010bc <__eeprom_write_byte_1C1D1E>:10bc: e1 99 sbic 0x1c, 1 ; 2810be: fe cf rjmp .-4 ; 0x10bc <__eeprom_write_byte_1C1D1E>10c0: bf bb out 0x1f, r27 ; 3110c2: ae bb out 0x1e, r26 ; 3010c4: 0d ba out 0x1d, r0 ; 2910c6: 11 96 adiw r26, 0x01 ; 110c8: 0f b6 in r0, 0x3f ; 6310ca: f8 94 cli10cc: e2 9a sbi 0x1c, 2 ; 2810ce: e1 9a sbi 0x1c, 1 ; 2810d0: 0f be out 0x3f, r0 ; 6310d2: 08 95 ret000010d4 <_exit>:10d4: ff cf rjmp .-2 ; 0x10d4 <_exit>