Rev 151 | Blame | Last modification | View Log | Download
AVRcam.elf: file format elf32-avrSections:Idx Name Size VMA LMA File off Algn0 .noinit 00000030 00800300 00800300 00001182 2**0ALLOC1 .bss 00000274 00800070 00800070 00001182 2**0ALLOC2 .data 00000010 00800060 000010be 00001172 2**0CONTENTS, ALLOC, LOAD, DATA3 .text 000010be 00000000 00000000 000000b4 2**1CONTENTS, ALLOC, LOAD, READONLY, CODE4 .eeprom 00000000 00810000 00810000 00001182 2**0CONTENTS5 .stab 00003ed0 00000000 00000000 00001184 2**2CONTENTS, READONLY, DEBUGGING6 .stabstr 000017c9 00000000 00000000 00005054 2**0CONTENTS, READONLY, DEBUGGINGDisassembly of section .text:00000000 <__vectors>:0: 63 c0 rjmp .+198 ; 0xc8 <__init>2: 05 c8 rjmp .-4086 ; 0xfffff00e <__eeprom_end+0xff7ef00e>4: 05 c8 rjmp .-4086 ; 0xfffff010 <__eeprom_end+0xff7ef010>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: 00 c8 rjmp .-4096 ; 0xfffff012 <__eeprom_end+0xff7ef012>12: 74 c0 rjmp .+232 ; 0xfc <__bad_interrupt>14: 73 c0 rjmp .+230 ; 0xfc <__bad_interrupt>16: aa c5 rjmp .+2900 ; 0xb6c <__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: 0f c6 rjmp .+3102 ; 0xc42 <__vector_17>24: 6b c0 rjmp .+214 ; 0xfc <__bad_interrupt>00000026 <__ctors_end>:26: 29 c6 rjmp .+3154 ; 0xc7a <__vector_17+0x38>28: bf c6 rjmp .+3454 ; 0xda8 <__vector_17+0x166>2a: be c6 rjmp .+3452 ; 0xda8 <__vector_17+0x166>2c: bd c6 rjmp .+3450 ; 0xda8 <__vector_17+0x166>2e: bc c6 rjmp .+3448 ; 0xda8 <__vector_17+0x166>30: bb c6 rjmp .+3446 ; 0xda8 <__vector_17+0x166>32: ba c6 rjmp .+3444 ; 0xda8 <__vector_17+0x166>34: b9 c6 rjmp .+3442 ; 0xda8 <__vector_17+0x166>36: 21 c6 rjmp .+3138 ; 0xc7a <__vector_17+0x38>38: b7 c6 rjmp .+3438 ; 0xda8 <__vector_17+0x166>3a: b6 c6 rjmp .+3436 ; 0xda8 <__vector_17+0x166>3c: b5 c6 rjmp .+3434 ; 0xda8 <__vector_17+0x166>3e: b4 c6 rjmp .+3432 ; 0xda8 <__vector_17+0x166>40: b3 c6 rjmp .+3430 ; 0xda8 <__vector_17+0x166>42: b2 c6 rjmp .+3428 ; 0xda8 <__vector_17+0x166>44: b1 c6 rjmp .+3426 ; 0xda8 <__vector_17+0x166>46: 31 c6 rjmp .+3170 ; 0xcaa <__vector_17+0x68>48: af c6 rjmp .+3422 ; 0xda8 <__vector_17+0x166>4a: ae c6 rjmp .+3420 ; 0xda8 <__vector_17+0x166>4c: ad c6 rjmp .+3418 ; 0xda8 <__vector_17+0x166>4e: ac c6 rjmp .+3416 ; 0xda8 <__vector_17+0x166>50: ab c6 rjmp .+3414 ; 0xda8 <__vector_17+0x166>52: aa c6 rjmp .+3412 ; 0xda8 <__vector_17+0x166>54: a9 c6 rjmp .+3410 ; 0xda8 <__vector_17+0x166>56: 3a c6 rjmp .+3188 ; 0xccc <__vector_17+0x8a>58: a7 c6 rjmp .+3406 ; 0xda8 <__vector_17+0x166>5a: a6 c6 rjmp .+3404 ; 0xda8 <__vector_17+0x166>5c: a5 c6 rjmp .+3402 ; 0xda8 <__vector_17+0x166>5e: a4 c6 rjmp .+3400 ; 0xda8 <__vector_17+0x166>60: a3 c6 rjmp .+3398 ; 0xda8 <__vector_17+0x166>62: a2 c6 rjmp .+3396 ; 0xda8 <__vector_17+0x166>64: a1 c6 rjmp .+3394 ; 0xda8 <__vector_17+0x166>66: 3b c6 rjmp .+3190 ; 0xcde <__vector_17+0x9c>68: 9f c6 rjmp .+3390 ; 0xda8 <__vector_17+0x166>6a: 9e c6 rjmp .+3388 ; 0xda8 <__vector_17+0x166>6c: 9d c6 rjmp .+3386 ; 0xda8 <__vector_17+0x166>6e: 9c c6 rjmp .+3384 ; 0xda8 <__vector_17+0x166>70: 9b c6 rjmp .+3382 ; 0xda8 <__vector_17+0x166>72: 9a c6 rjmp .+3380 ; 0xda8 <__vector_17+0x166>74: 99 c6 rjmp .+3378 ; 0xda8 <__vector_17+0x166>76: 54 c6 rjmp .+3240 ; 0xd20 <__vector_17+0xde>78: 97 c6 rjmp .+3374 ; 0xda8 <__vector_17+0x166>7a: 96 c6 rjmp .+3372 ; 0xda8 <__vector_17+0x166>7c: 95 c6 rjmp .+3370 ; 0xda8 <__vector_17+0x166>7e: 94 c6 rjmp .+3368 ; 0xda8 <__vector_17+0x166>80: 93 c6 rjmp .+3366 ; 0xda8 <__vector_17+0x166>82: 92 c6 rjmp .+3364 ; 0xda8 <__vector_17+0x166>84: 91 c6 rjmp .+3362 ; 0xda8 <__vector_17+0x166>86: 90 c6 rjmp .+3360 ; 0xda8 <__vector_17+0x166>88: 8f c6 rjmp .+3358 ; 0xda8 <__vector_17+0x166>8a: 8e c6 rjmp .+3356 ; 0xda8 <__vector_17+0x166>8c: 8d c6 rjmp .+3354 ; 0xda8 <__vector_17+0x166>8e: 8c c6 rjmp .+3352 ; 0xda8 <__vector_17+0x166>90: 8b c6 rjmp .+3350 ; 0xda8 <__vector_17+0x166>92: 8a c6 rjmp .+3348 ; 0xda8 <__vector_17+0x166>94: 89 c6 rjmp .+3346 ; 0xda8 <__vector_17+0x166>96: 4d c6 rjmp .+3226 ; 0xd32 <__vector_17+0xf0>98: 87 c6 rjmp .+3342 ; 0xda8 <__vector_17+0x166>9a: 86 c6 rjmp .+3340 ; 0xda8 <__vector_17+0x166>9c: 85 c6 rjmp .+3338 ; 0xda8 <__vector_17+0x166>9e: 84 c6 rjmp .+3336 ; 0xda8 <__vector_17+0x166>a0: 83 c6 rjmp .+3334 ; 0xda8 <__vector_17+0x166>a2: 82 c6 rjmp .+3332 ; 0xda8 <__vector_17+0x166>a4: 81 c6 rjmp .+3330 ; 0xda8 <__vector_17+0x166>a6: 12 c6 rjmp .+3108 ; 0xccc <__vector_17+0x8a>a8: 7f c6 rjmp .+3326 ; 0xda8 <__vector_17+0x166>aa: 7e c6 rjmp .+3324 ; 0xda8 <__vector_17+0x166>ac: 7d c6 rjmp .+3322 ; 0xda8 <__vector_17+0x166>ae: 7c c6 rjmp .+3320 ; 0xda8 <__vector_17+0x166>b0: 7b c6 rjmp .+3318 ; 0xda8 <__vector_17+0x166>b2: 7a c6 rjmp .+3316 ; 0xda8 <__vector_17+0x166>b4: 79 c6 rjmp .+3314 ; 0xda8 <__vector_17+0x166>b6: 4e c6 rjmp .+3228 ; 0xd54 <__vector_17+0x112>b8: 77 c6 rjmp .+3310 ; 0xda8 <__vector_17+0x166>ba: 76 c6 rjmp .+3308 ; 0xda8 <__vector_17+0x166>bc: 75 c6 rjmp .+3306 ; 0xda8 <__vector_17+0x166>be: 74 c6 rjmp .+3304 ; 0xda8 <__vector_17+0x166>c0: 73 c6 rjmp .+3302 ; 0xda8 <__vector_17+0x166>c2: 72 c6 rjmp .+3300 ; 0xda8 <__vector_17+0x166>c4: 71 c6 rjmp .+3298 ; 0xda8 <__vector_17+0x166>c6: 62 c6 rjmp .+3268 ; 0xd8c <__vector_17+0x14a>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: ee eb ldi r30, 0xBE ; 190dc: 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: 91 c7 rjmp .+3874 ; 0x1020 <__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: a0 d7 rcall .+3904 ; 0x109a <__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: cf d6 rcall .+3486 ; 0xf04 <DebugInt_init>UartInt_init();166: f4 d4 rcall .+2536 ; 0xb50 <UartInt_init>I2CInt_init();168: 2b d5 rcall .+2646 ; 0xbc0 <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: 7e d6 rcall .+3324 ; 0xe6c <CamConfig_init>UIMgr_init();170: 8a d3 rcall .+1812 ; 0x886 <UIMgr_init>FrameMgr_init();172: 37 d2 rcall .+1134 ; 0x5e2 <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: 8a d6 rcall .+3348 ; 0xe8e <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: 9d c7 rjmp .+3898 ; 0x10bc <_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: 80 91 72 00 lds r24, 0x00721a2: 88 23 and r24, r241a4: 99 f0 breq .+38 ; 0x1cc <Exec_run+0x2e>1a6: 80 ff sbrs r24, 01a8: 07 c0 rjmp .+14 ; 0x1b8 <Exec_run+0x1a>1aa: f8 94 cli1ac: 8e 7f andi r24, 0xFE ; 2541ae: 80 93 72 00 sts 0x0072, r241b2: 78 94 sei1b4: b6 d0 rcall .+364 ; 0x322 <FrameMgr_processLine>1b6: ff d2 rcall .+1534 ; 0x7b6 <UIMgr_transmitPendingData>1b8: 80 91 72 00 lds r24, 0x00721bc: 81 ff sbrs r24, 11be: 06 c0 rjmp .+12 ; 0x1cc <Exec_run+0x2e>1c0: f8 94 cli1c2: 8d 7f andi r24, 0xFD ; 2531c4: 80 93 72 00 sts 0x0072, r241c8: 78 94 sei1ca: 12 d2 rcall .+1060 ; 0x5f0 <FrameMgr_acquireLine>1cc: 20 91 71 00 lds r18, 0x00711d0: 80 91 70 00 lds r24, 0x00701d4: 82 17 cp r24, r181d6: 19 f3 breq .-58 ; 0x19e <Exec_run>1d8: f8 94 cli1da: e2 2f mov r30, r181dc: ff 27 eor r31, r311de: e4 59 subi r30, 0x94 ; 1481e0: fd 4f sbci r31, 0xFD ; 2531e2: 90 81 ld r25, Z1e4: 82 2f mov r24, r181e6: 8f 5f subi r24, 0xFF ; 2551e8: 87 70 andi r24, 0x07 ; 71ea: 80 93 71 00 sts 0x0071, r241ee: 78 94 sei1f0: 89 2f mov r24, r251f2: 99 27 eor r25, r251f4: 80 31 cpi r24, 0x10 ; 161f6: 31 f1 breq .+76 ; 0x244 <Exec_run+0xa6>1f8: 81 31 cpi r24, 0x11 ; 171fa: 68 f4 brcc .+26 ; 0x216 <Exec_run+0x78>1fc: 82 30 cpi r24, 0x02 ; 21fe: c9 f0 breq .+50 ; 0x232 <Exec_run+0x94>200: 83 30 cpi r24, 0x03 ; 3202: 18 f4 brcc .+6 ; 0x20a <Exec_run+0x6c>204: 81 30 cpi r24, 0x01 ; 1206: 59 f6 brne .-106 ; 0x19e <Exec_run>208: 2b c0 rjmp .+86 ; 0x260 <Exec_run+0xc2>20a: 84 30 cpi r24, 0x04 ; 420c: 31 f1 breq .+76 ; 0x25a <Exec_run+0xbc>20e: 88 30 cpi r24, 0x08 ; 8210: 09 f0 breq .+2 ; 0x214 <Exec_run+0x76>212: c5 cf rjmp .-118 ; 0x19e <Exec_run>214: 1f c0 rjmp .+62 ; 0x254 <Exec_run+0xb6>216: 80 38 cpi r24, 0x80 ; 128218: 79 f0 breq .+30 ; 0x238 <Exec_run+0x9a>21a: 81 38 cpi r24, 0x81 ; 12921c: 20 f4 brcc .+8 ; 0x226 <Exec_run+0x88>21e: 80 32 cpi r24, 0x20 ; 32220: 09 f0 breq .+2 ; 0x224 <Exec_run+0x86>222: bd cf rjmp .-134 ; 0x19e <Exec_run>224: 14 c0 rjmp .+40 ; 0x24e <Exec_run+0xb0>226: 81 38 cpi r24, 0x81 ; 129228: 51 f0 breq .+20 ; 0x23e <Exec_run+0xa0>22a: 80 39 cpi r24, 0x90 ; 14422c: 09 f0 breq .+2 ; 0x230 <Exec_run+0x92>22e: b7 cf rjmp .-146 ; 0x19e <Exec_run>230: 1c c0 rjmp .+56 ; 0x26a <Exec_run+0xcc>232: 82 e0 ldi r24, 0x02 ; 2234: 2e d2 rcall .+1116 ; 0x692 <FrameMgr_dispatchEvent>236: b3 cf rjmp .-154 ; 0x19e <Exec_run>238: 80 e8 ldi r24, 0x80 ; 12823a: 2b d2 rcall .+1110 ; 0x692 <FrameMgr_dispatchEvent>23c: b0 cf rjmp .-160 ; 0x19e <Exec_run>23e: 81 e8 ldi r24, 0x81 ; 129240: 28 d2 rcall .+1104 ; 0x692 <FrameMgr_dispatchEvent>242: ad cf rjmp .-166 ; 0x19e <Exec_run>244: 80 e1 ldi r24, 0x10 ; 16246: 25 d2 rcall .+1098 ; 0x692 <FrameMgr_dispatchEvent>248: 80 e1 ldi r24, 0x10 ; 1624a: 75 d4 rcall .+2282 ; 0xb36 <UIMgr_dispatchEvent>24c: a8 cf rjmp .-176 ; 0x19e <Exec_run>24e: 80 e2 ldi r24, 0x20 ; 32250: 20 d2 rcall .+1088 ; 0x692 <FrameMgr_dispatchEvent>252: a5 cf rjmp .-182 ; 0x19e <Exec_run>254: 88 e0 ldi r24, 0x08 ; 8256: 1d d2 rcall .+1082 ; 0x692 <FrameMgr_dispatchEvent>258: a2 cf rjmp .-188 ; 0x19e <Exec_run>25a: 84 e0 ldi r24, 0x04 ; 425c: 1a d2 rcall .+1076 ; 0x692 <FrameMgr_dispatchEvent>25e: 9f cf rjmp .-194 ; 0x19e <Exec_run>260: 81 e0 ldi r24, 0x01 ; 1262: 69 d4 rcall .+2258 ; 0xb36 <UIMgr_dispatchEvent>264: 81 e0 ldi r24, 0x01 ; 1266: 15 d2 rcall .+1066 ; 0x692 <FrameMgr_dispatchEvent>268: 9a cf rjmp .-204 ; 0x19e <Exec_run>26a: 80 e9 ldi r24, 0x90 ; 14426c: 64 d4 rcall .+2248 ; 0xb36 <UIMgr_dispatchEvent>26e: 97 cf rjmp .-210 ; 0x19e <Exec_run>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: 5c d2 rcall .+1208 ; 0x74e <UIMgr_writeTxFifo>296: 80 91 73 00 lds r24, 0x007329a: 59 d2 rcall .+1202 ; 0x74e <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: 30 d2 rcall .+1120 ; 0x74e <UIMgr_writeTxFifo>2ee: 81 2f mov r24, r172f0: 2e d2 rcall .+1116 ; 0x74e <UIMgr_writeTxFifo>2f2: 80 2f mov r24, r162f4: 2c d2 rcall .+1112 ; 0x74e <UIMgr_writeTxFifo>2f6: 8f 2d mov r24, r152f8: 2a d2 rcall .+1108 ; 0x74e <UIMgr_writeTxFifo>2fa: 8e 2d mov r24, r142fc: 28 d2 rcall .+1104 ; 0x74e <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: 20 d2 rcall .+1088 ; 0x74e <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: af 92 push r10334: bf 92 push r11336: cf 92 push r12338: df 92 push r1333a: ef 92 push r1433c: ff 92 push r1533e: 0f 93 push r16340: 1f 93 push r17342: cf 93 push r28344: df 93 push r29346: cd b7 in r28, 0x3d ; 61348: de b7 in r29, 0x3e ; 6234a: 21 97 sbiw r28, 0x01 ; 134c: 0f b6 in r0, 0x3f ; 6334e: f8 94 cli350: de bf out 0x3e, r29 ; 62352: 0f be out 0x3f, r0 ; 63354: cd bf out 0x3d, r28 ; 61356: 00 91 60 00 lds r16, 0x006035a: 10 91 61 00 lds r17, 0x006135e: 80 91 74 00 lds r24, 0x0074362: 82 30 cpi r24, 0x02 ; 2364: 09 f0 breq .+2 ; 0x368 <FrameMgr_processLine+0x46>366: 6a c0 rjmp .+212 ; 0x43c <FrameMgr_processLine+0x11a>368: 8b e0 ldi r24, 0x0B ; 1136a: fc d3 rcall .+2040 ; 0xb64 <UartInt_txByte>36c: 80 91 75 00 lds r24, 0x0075370: f9 d3 rcall .+2034 ; 0xb64 <UartInt_txByte>372: 0f 2e mov r0, r31374: fc eb ldi r31, 0xBC ; 188376: cf 2e mov r12, r31378: f1 e0 ldi r31, 0x01 ; 137a: df 2e mov r13, r3137c: f0 2d mov r31, r037e: 00 e0 ldi r16, 0x00 ; 0380: 10 e0 ldi r17, 0x00 ; 0382: 0f 2e mov r0, r31384: fc e0 ldi r31, 0x0C ; 12386: ef 2e mov r14, r31388: f1 e0 ldi r31, 0x01 ; 138a: ff 2e mov r15, r3138c: f0 2d mov r31, r038e: f6 01 movw r30, r12390: 80 81 ld r24, Z392: 89 83 std Y+1, r24 ; 0x01394: 89 81 ldd r24, Y+1 ; 0x01396: 8f 70 andi r24, 0x0F ; 15398: 89 83 std Y+1, r24 ; 0x0139a: 89 81 ldd r24, Y+1 ; 0x0139c: 82 95 swap r2439e: 80 7f andi r24, 0xF0 ; 2403a0: 89 83 std Y+1, r24 ; 0x013a2: 99 81 ldd r25, Y+1 ; 0x013a4: f7 01 movw r30, r143a6: 80 81 ld r24, Z3a8: 8f 70 andi r24, 0x0F ; 153aa: 89 2b or r24, r253ac: 89 83 std Y+1, r24 ; 0x013ae: 89 81 ldd r24, Y+1 ; 0x013b0: d9 d3 rcall .+1970 ; 0xb64 <UartInt_txByte>3b2: d8 01 movw r26, r163b4: 11 96 adiw r26, 0x01 ; 13b6: fd 01 movw r30, r263b8: e4 5f subi r30, 0xF4 ; 2443ba: fe 4f sbci r31, 0xFE ; 2543bc: 80 81 ld r24, Z3be: 89 83 std Y+1, r24 ; 0x013c0: 89 81 ldd r24, Y+1 ; 0x013c2: 8f 70 andi r24, 0x0F ; 153c4: 89 83 std Y+1, r24 ; 0x013c6: 89 81 ldd r24, Y+1 ; 0x013c8: 82 95 swap r243ca: 80 7f andi r24, 0xF0 ; 2403cc: 89 83 std Y+1, r24 ; 0x013ce: 99 81 ldd r25, Y+1 ; 0x013d0: a4 54 subi r26, 0x44 ; 683d2: be 4f sbci r27, 0xFE ; 2543d4: 8c 91 ld r24, X3d6: 8f 70 andi r24, 0x0F ; 153d8: 89 2b or r24, r253da: 89 83 std Y+1, r24 ; 0x013dc: 89 81 ldd r24, Y+1 ; 0x013de: c2 d3 rcall .+1924 ; 0xb64 <UartInt_txByte>3e0: 82 e0 ldi r24, 0x02 ; 23e2: 90 e0 ldi r25, 0x00 ; 03e4: c8 0e add r12, r243e6: d9 1e adc r13, r253e8: 0e 5f subi r16, 0xFE ; 2543ea: 1f 4f sbci r17, 0xFF ; 2553ec: e8 0e add r14, r243ee: f9 1e adc r15, r253f0: 00 3b cpi r16, 0xB0 ; 1763f2: 11 05 cpc r17, r13f4: 61 f6 brne .-104 ; 0x38e <FrameMgr_processLine+0x6c>3f6: 8f e0 ldi r24, 0x0F ; 153f8: b5 d3 rcall .+1898 ; 0xb64 <UartInt_txByte>3fa: 80 91 75 00 lds r24, 0x00753fe: 8f 5f subi r24, 0xFF ; 255400: 80 93 75 00 sts 0x0075, r24404: 88 34 cpi r24, 0x48 ; 72406: 60 f0 brcs .+24 ; 0x420 <FrameMgr_processLine+0xfe>408: 10 92 75 00 sts 0x0075, r140c: 10 92 74 00 sts 0x0074, r1410: 89 b7 in r24, 0x39 ; 57412: 8b 7f andi r24, 0xFB ; 251414: 89 bf out 0x39, r24 ; 57416: 60 e0 ldi r22, 0x00 ; 0418: 81 e1 ldi r24, 0x11 ; 1741a: e9 d4 rcall .+2514 ; 0xdee <CamConfig_setCamReg>41c: ed d4 rcall .+2522 ; 0xdf8 <CamConfig_sendFifoCmds>41e: c8 c0 rjmp .+400 ; 0x5b0 <__stack+0x151>420: 80 91 72 00 lds r24, 0x0072424: 82 60 ori r24, 0x02 ; 2426: 80 93 72 00 sts 0x0072, r2442a: c2 c0 rjmp .+388 ; 0x5b0 <__stack+0x151>42c: 80 e2 ldi r24, 0x20 ; 3242e: a9 de rcall .-686 ; 0x182 <Exec_writeEventFifo>430: 89 b7 in r24, 0x39 ; 57432: 8b 7f andi r24, 0xFB ; 251434: 89 bf out 0x39, r24 ; 57436: 10 92 76 00 sts 0x0076, r143a: ba c0 rjmp .+372 ; 0x5b0 <__stack+0x151>43c: 81 30 cpi r24, 0x01 ; 143e: 09 f0 breq .+2 ; 0x442 <FrameMgr_processLine+0x120>440: b7 c0 rjmp .+366 ; 0x5b0 <__stack+0x151>442: f0 90 76 00 lds r15, 0x0076446: cf 2c mov r12, r15448: dd 24 eor r13, r1344a: 36 01 movw r6, r1244c: 08 94 sec44e: 61 08 sbc r6, r1450: 71 08 sbc r7, r1452: 70 91 73 00 lds r23, 0x0073456: 0f 2e mov r0, r31458: fc eb ldi r31, 0xBC ; 18845a: 2f 2e mov r2, r3145c: f1 e0 ldi r31, 0x01 ; 145e: 3f 2e mov r3, r31460: f0 2d mov r31, r0462: 50 e0 ldi r21, 0x00 ; 0464: 40 e0 ldi r20, 0x00 ; 0466: 61 e0 ldi r22, 0x01 ; 1468: ef 2c mov r14, r1546a: e3 94 inc r1446c: f1 01 movw r30, r246e: 30 81 ld r19, Z470: 56 0f add r21, r22472: 61 81 ldd r22, Z+1 ; 0x01474: 82 e0 ldi r24, 0x02 ; 2476: 90 e0 ldi r25, 0x00 ; 0478: 28 0e add r2, r2447a: 39 1e adc r3, r2547c: 46 0f add r20, r2247e: 33 23 and r19, r19480: 09 f4 brne .+2 ; 0x484 <__stack+0x25>482: 5c c0 rjmp .+184 ; 0x53c <__stack+0xdd>484: 64 30 cpi r22, 0x04 ; 4486: 08 f4 brcc .+2 ; 0x48a <__stack+0x2b>488: 59 c0 rjmp .+178 ; 0x53c <__stack+0xdd>48a: d8 01 movw r26, r1648c: 20 e0 ldi r18, 0x00 ; 048e: 8c 91 ld r24, X490: 38 17 cp r19, r24492: c9 f5 brne .+114 ; 0x506 <__stack+0xa7>494: fd 01 movw r30, r26496: 87 81 ldd r24, Z+7 ; 0x07498: 81 30 cpi r24, 0x01 ; 149a: a9 f5 brne .+106 ; 0x506 <__stack+0xa7>49c: 0f 2e mov r0, r3149e: f6 e0 ldi r31, 0x06 ; 64a0: af 2e mov r10, r314a2: bb 24 eor r11, r114a4: f0 2d mov r31, r04a6: aa 0e add r10, r264a8: bb 1e adc r11, r274aa: 86 81 ldd r24, Z+6 ; 0x064ac: 99 27 eor r25, r254ae: 86 15 cp r24, r64b0: 97 05 cpc r25, r74b2: 49 f5 brne .+82 ; 0x506 <__stack+0xa7>4b4: 2d 01 movw r4, r264b6: 08 94 sec4b8: 41 1c adc r4, r14ba: 51 1c adc r5, r14bc: 81 81 ldd r24, Z+1 ; 0x014be: 88 24 eor r8, r84c0: 99 24 eor r9, r94c2: 68 94 set4c4: 81 f8 bld r8, 14c6: 8a 0e add r8, r264c8: 9b 1e adc r9, r274ca: 92 81 ldd r25, Z+2 ; 0x024cc: 58 17 cp r21, r244ce: 10 f0 brcs .+4 ; 0x4d4 <__stack+0x75>4d0: 95 17 cp r25, r214d2: 40 f4 brcc .+16 ; 0x4e4 <__stack+0x85>4d4: 48 17 cp r20, r244d6: 10 f0 brcs .+4 ; 0x4dc <__stack+0x7d>4d8: 94 17 cp r25, r204da: 20 f4 brcc .+8 ; 0x4e4 <__stack+0x85>4dc: 85 17 cp r24, r214de: 98 f0 brcs .+38 ; 0x506 <__stack+0xa7>4e0: 49 17 cp r20, r254e2: 88 f0 brcs .+34 ; 0x506 <__stack+0xa7>4e4: f2 01 movw r30, r44e6: 50 83 st Z, r214e8: f4 01 movw r30, r84ea: 40 83 st Z, r204ec: fd 01 movw r30, r264ee: 83 81 ldd r24, Z+3 ; 0x034f0: 58 17 cp r21, r244f2: 08 f4 brcc .+2 ; 0x4f6 <__stack+0x97>4f4: 53 83 std Z+3, r21 ; 0x034f6: fd 01 movw r30, r264f8: 85 81 ldd r24, Z+5 ; 0x054fa: 84 17 cp r24, r204fc: 08 f4 brcc .+2 ; 0x500 <__stack+0xa1>4fe: 45 83 std Z+5, r20 ; 0x05500: f5 01 movw r30, r10502: f0 82 st Z, r15504: 1b c0 rjmp .+54 ; 0x53c <__stack+0xdd>506: 2f 5f subi r18, 0xFF ; 255508: 28 30 cpi r18, 0x08 ; 850a: 09 f4 brne .+2 ; 0x50e <__stack+0xaf>50c: 4d c0 rjmp .+154 ; 0x5a8 <__stack+0x149>50e: 18 96 adiw r26, 0x08 ; 8510: be cf rjmp .-132 ; 0x48e <__stack+0x2f>512: d8 01 movw r26, r16514: 90 e0 ldi r25, 0x00 ; 0516: fd 01 movw r30, r26518: 87 81 ldd r24, Z+7 ; 0x0751a: 88 23 and r24, r2451c: 21 f0 breq .+8 ; 0x526 <__stack+0xc7>51e: 18 96 adiw r26, 0x08 ; 8520: 9f 5f subi r25, 0xFF ; 255522: 98 30 cpi r25, 0x08 ; 8524: c1 f7 brne .-16 ; 0x516 <__stack+0xb7>526: 3c 93 st X, r19528: fd 01 movw r30, r2652a: 51 83 std Z+1, r21 ; 0x0152c: 42 83 std Z+2, r20 ; 0x0252e: 53 83 std Z+3, r21 ; 0x03530: f4 82 std Z+4, r15 ; 0x04532: 45 83 std Z+5, r20 ; 0x05534: f6 82 std Z+6, r15 ; 0x06536: 81 e0 ldi r24, 0x01 ; 1538: 87 83 std Z+7, r24 ; 0x0753a: 7f 5f subi r23, 0xFF ; 25553c: 40 3b cpi r20, 0xB0 ; 17653e: 08 f4 brcc .+2 ; 0x542 <__stack+0xe3>540: 95 cf rjmp .-214 ; 0x46c <__stack+0xd>542: 70 93 73 00 sts 0x0073, r23546: c6 01 movw r24, r12548: 87 70 andi r24, 0x07 ; 754a: 90 70 andi r25, 0x00 ; 054c: 07 97 sbiw r24, 0x07 ; 754e: 01 f5 brne .+64 ; 0x590 <__stack+0x131>550: d8 01 movw r26, r16552: 17 96 adiw r26, 0x07 ; 7554: 40 e0 ldi r20, 0x00 ; 0556: 8c 91 ld r24, X558: 81 30 cpi r24, 0x01 ; 155a: a1 f4 brne .+40 ; 0x584 <__stack+0x125>55c: fd 01 movw r30, r2655e: 31 97 sbiw r30, 0x01 ; 1560: 90 81 ld r25, Z562: fd 01 movw r30, r26564: 33 97 sbiw r30, 0x03 ; 3566: 80 81 ld r24, Z568: 29 2f mov r18, r2556a: 33 27 eor r19, r1956c: f9 01 movw r30, r1856e: e8 1b sub r30, r24570: f1 09 sbc r31, r1572: 33 97 sbiw r30, 0x03 ; 3574: 3c f4 brge .+14 ; 0x584 <__stack+0x125>576: c6 01 movw r24, r12578: 82 1b sub r24, r1857a: 93 0b sbc r25, r1957c: 03 97 sbiw r24, 0x03 ; 357e: 14 f0 brlt .+4 ; 0x584 <__stack+0x125>580: 1c 92 st X, r1582: 71 50 subi r23, 0x01 ; 1584: 4f 5f subi r20, 0xFF ; 255586: 18 96 adiw r26, 0x08 ; 8588: 48 30 cpi r20, 0x08 ; 858a: 29 f7 brne .-54 ; 0x556 <__stack+0xf7>58c: 70 93 73 00 sts 0x0073, r23590: e0 92 76 00 sts 0x0076, r14594: f0 e9 ldi r31, 0x90 ; 144596: ef 16 cp r14, r31598: 09 f4 brne .+2 ; 0x59c <__stack+0x13d>59a: 48 cf rjmp .-368 ; 0x42c <FrameMgr_processLine+0x10a>59c: 80 91 72 00 lds r24, 0x00725a0: 82 60 ori r24, 0x02 ; 25a2: 80 93 72 00 sts 0x0072, r245a6: 04 c0 rjmp .+8 ; 0x5b0 <__stack+0x151>5a8: 78 30 cpi r23, 0x08 ; 85aa: 08 f4 brcc .+2 ; 0x5ae <__stack+0x14f>5ac: b2 cf rjmp .-156 ; 0x512 <__stack+0xb3>5ae: c6 cf rjmp .-116 ; 0x53c <__stack+0xdd>5b0: 21 96 adiw r28, 0x01 ; 15b2: 0f b6 in r0, 0x3f ; 635b4: f8 94 cli5b6: de bf out 0x3e, r29 ; 625b8: 0f be out 0x3f, r0 ; 635ba: cd bf out 0x3d, r28 ; 615bc: df 91 pop r295be: cf 91 pop r285c0: 1f 91 pop r175c2: 0f 91 pop r165c4: ff 90 pop r155c6: ef 90 pop r145c8: df 90 pop r135ca: cf 90 pop r125cc: bf 90 pop r115ce: af 90 pop r105d0: 9f 90 pop r95d2: 8f 90 pop r85d4: 7f 90 pop r75d6: 6f 90 pop r65d8: 5f 90 pop r55da: 4f 90 pop r45dc: 3f 90 pop r35de: 2f 90 pop r25e0: 08 95 ret000005e2 <FrameMgr_init>:5e2: 80 e4 ldi r24, 0x40 ; 645e4: e8 e7 ldi r30, 0x78 ; 1205e6: f0 e0 ldi r31, 0x00 ; 05e8: 11 92 st Z+, r15ea: 8a 95 dec r245ec: e9 f7 brne .-6 ; 0x5e8 <FrameMgr_init+0x6>5ee: 08 95 ret000005f0 <FrameMgr_acquireLine>:5f0: 80 91 74 00 lds r24, 0x00745f4: 82 30 cpi r24, 0x02 ; 25f6: 49 f5 brne .+82 ; 0x64a <FrameMgr_acquireLine+0x5a>5f8: 80 91 75 00 lds r24, 0x00755fc: 28 2f mov r18, r245fe: 22 0f add r18, r18600: 80 eb ldi r24, 0xB0 ; 176602: ec eb ldi r30, 0xBC ; 188604: f1 e0 ldi r31, 0x01 ; 1606: 98 2f mov r25, r24608: 11 92 st Z+, r160a: 9a 95 dec r2560c: e9 f7 brne .-6 ; 0x608 <FrameMgr_acquireLine+0x18>60e: ec e0 ldi r30, 0x0C ; 12610: f1 e0 ldi r31, 0x01 ; 1612: 11 92 st Z+, r1614: 8a 95 dec r24616: e9 f7 brne .-6 ; 0x612 <FrameMgr_acquireLine+0x22>618: 82 9b sbis 0x10, 2 ; 1661a: fe cf rjmp .-4 ; 0x618 <FrameMgr_acquireLine+0x28>61c: 82 9b sbis 0x10, 2 ; 1661e: 07 c0 rjmp .+14 ; 0x62e <FrameMgr_acquireLine+0x3e>620: fd cf rjmp .-6 ; 0x61c <FrameMgr_acquireLine+0x2c>622: 90 e0 ldi r25, 0x00 ; 0624: 84 9b sbis 0x10, 4 ; 16626: fe cf rjmp .-4 ; 0x624 <FrameMgr_acquireLine+0x34>628: 84 9b sbis 0x10, 4 ; 1662a: 04 c0 rjmp .+8 ; 0x634 <FrameMgr_acquireLine+0x44>62c: fd cf rjmp .-6 ; 0x628 <FrameMgr_acquireLine+0x38>62e: 22 23 and r18, r18630: c1 f7 brne .-16 ; 0x622 <FrameMgr_acquireLine+0x32>632: 05 c0 rjmp .+10 ; 0x63e <FrameMgr_acquireLine+0x4e>634: 91 50 subi r25, 0x01 ; 1636: 82 2f mov r24, r18638: 81 95 neg r2463a: 98 17 cp r25, r2463c: 99 f7 brne .-26 ; 0x624 <FrameMgr_acquireLine+0x34>63e: 6c e0 ldi r22, 0x0C ; 12640: 71 e0 ldi r23, 0x01 ; 1642: 8c eb ldi r24, 0xBC ; 188644: 91 e0 ldi r25, 0x01 ; 1646: c3 d4 rcall .+2438 ; 0xfce <CamIntAsm_acquireDumpLine>648: 08 95 ret64a: 81 30 cpi r24, 0x01 ; 164c: 39 f4 brne .+14 ; 0x65c <FrameMgr_acquireLine+0x6c>64e: 84 99 sbic 0x10, 4 ; 16650: fe cf rjmp .-4 ; 0x64e <FrameMgr_acquireLine+0x5e>652: 60 e0 ldi r22, 0x00 ; 0654: 73 e0 ldi r23, 0x03 ; 3656: 8c eb ldi r24, 0xBC ; 188658: 91 e0 ldi r25, 0x01 ; 165a: 72 d4 rcall .+2276 ; 0xf40 <CamIntAsm_acquireTrackingLine>65c: 08 95 ret0000065e <FrameMgr_acquireFrame>:65e: 80 91 74 00 lds r24, 0x0074662: 81 30 cpi r24, 0x01 ; 1664: a9 f4 brne .+42 ; 0x690 <FrameMgr_acquireFrame+0x32>666: 10 92 76 00 sts 0x0076, r166a: 80 91 73 00 lds r24, 0x007366e: 80 93 77 00 sts 0x0077, r24672: 10 92 73 00 sts 0x0073, r1676: 80 e4 ldi r24, 0x40 ; 64678: e8 e7 ldi r30, 0x78 ; 12067a: f0 e0 ldi r31, 0x00 ; 067c: 11 92 st Z+, r167e: 8a 95 dec r24680: e9 f7 brne .-6 ; 0x67c <FrameMgr_acquireFrame+0x1e>682: 82 9b sbis 0x10, 2 ; 16684: fe cf rjmp .-4 ; 0x682 <FrameMgr_acquireFrame+0x24>686: 60 e0 ldi r22, 0x00 ; 0688: 73 e0 ldi r23, 0x03 ; 368a: 8c eb ldi r24, 0xBC ; 18868c: 91 e0 ldi r25, 0x01 ; 168e: 58 d4 rcall .+2224 ; 0xf40 <CamIntAsm_acquireTrackingLine>690: 08 95 ret00000692 <FrameMgr_dispatchEvent>:692: 84 30 cpi r24, 0x04 ; 4694: 19 f1 breq .+70 ; 0x6dc <FrameMgr_dispatchEvent+0x4a>696: 85 30 cpi r24, 0x05 ; 5698: 28 f4 brcc .+10 ; 0x6a4 <FrameMgr_dispatchEvent+0x12>69a: 81 30 cpi r24, 0x01 ; 169c: 09 f1 breq .+66 ; 0x6e0 <FrameMgr_dispatchEvent+0x4e>69e: 82 30 cpi r24, 0x02 ; 26a0: 41 f5 brne .+80 ; 0x6f2 <FrameMgr_dispatchEvent+0x60>6a2: 07 c0 rjmp .+14 ; 0x6b2 <FrameMgr_dispatchEvent+0x20>6a4: 80 38 cpi r24, 0x80 ; 1286a6: 99 f0 breq .+38 ; 0x6ce <FrameMgr_dispatchEvent+0x3c>6a8: 81 38 cpi r24, 0x81 ; 1296aa: 09 f1 breq .+66 ; 0x6ee <FrameMgr_dispatchEvent+0x5c>6ac: 80 32 cpi r24, 0x20 ; 326ae: 09 f5 brne .+66 ; 0x6f2 <FrameMgr_dispatchEvent+0x60>6b0: 13 c0 rjmp .+38 ; 0x6d8 <FrameMgr_dispatchEvent+0x46>6b2: 61 e0 ldi r22, 0x01 ; 16b4: 81 e1 ldi r24, 0x11 ; 176b6: 9b d3 rcall .+1846 ; 0xdee <CamConfig_setCamReg>6b8: 9f d3 rcall .+1854 ; 0xdf8 <CamConfig_sendFifoCmds>6ba: 88 ee ldi r24, 0xE8 ; 2326bc: 93 e0 ldi r25, 0x03 ; 36be: e7 d3 rcall .+1998 ; 0xe8e <Utility_delay>6c0: 10 92 75 00 sts 0x0075, r16c4: 82 e0 ldi r24, 0x02 ; 26c6: 80 93 74 00 sts 0x0074, r246ca: 92 df rcall .-220 ; 0x5f0 <FrameMgr_acquireLine>6cc: 08 95 ret6ce: 81 e0 ldi r24, 0x01 ; 16d0: 80 93 74 00 sts 0x0074, r246d4: c4 df rcall .-120 ; 0x65e <FrameMgr_acquireFrame>6d6: 08 95 ret6d8: cb dd rcall .-1130 ; 0x270 <FrameMgr_processFrame>6da: 08 95 ret6dc: c0 df rcall .-128 ; 0x65e <FrameMgr_acquireFrame>6de: 08 95 ret6e0: 80 91 74 00 lds r24, 0x00746e4: 88 23 and r24, r246e6: 29 f0 breq .+10 ; 0x6f2 <FrameMgr_dispatchEvent+0x60>6e8: 84 e0 ldi r24, 0x04 ; 46ea: 4b dd rcall .-1386 ; 0x182 <Exec_writeEventFifo>6ec: 08 95 ret6ee: 10 92 74 00 sts 0x0074, r16f2: 08 95 ret000006f4 <UIMgr_writeBufferToTxFifo>:6f4: dc 01 movw r26, r246f6: 86 2f mov r24, r226f8: 66 23 and r22, r226fa: c9 f0 breq .+50 ; 0x72e <UIMgr_writeBufferToTxFifo+0x3a>6fc: f8 94 cli6fe: 61 50 subi r22, 0x01 ; 1700: 6f 3f cpi r22, 0xFF ; 255702: a1 f0 breq .+40 ; 0x72c <UIMgr_writeBufferToTxFifo+0x38>704: 26 2f mov r18, r22706: 44 e9 ldi r20, 0x94 ; 148708: 52 e0 ldi r21, 0x02 ; 270a: 86 1b sub r24, r2270c: 68 2f mov r22, r2470e: 62 50 subi r22, 0x02 ; 2710: 80 91 ba 00 lds r24, 0x00BA714: fa 01 movw r30, r20716: e8 0f add r30, r24718: f1 1d adc r31, r171a: 9d 91 ld r25, X+71c: 90 83 st Z, r2571e: 8f 5f subi r24, 0xFF ; 255720: 8f 73 andi r24, 0x3F ; 63722: 80 93 ba 00 sts 0x00BA, r24726: 21 50 subi r18, 0x01 ; 1728: 62 17 cp r22, r1872a: 91 f7 brne .-28 ; 0x710 <UIMgr_writeBufferToTxFifo+0x1c>72c: 78 94 sei72e: 08 95 ret00000730 <UIMgr_readTxFifo>:730: f8 94 cli732: 90 91 bb 00 lds r25, 0x00BB736: e4 e9 ldi r30, 0x94 ; 148738: f2 e0 ldi r31, 0x02 ; 273a: e9 0f add r30, r2573c: f1 1d adc r31, r173e: 80 81 ld r24, Z740: 9f 5f subi r25, 0xFF ; 255742: 9f 73 andi r25, 0x3F ; 63744: 90 93 bb 00 sts 0x00BB, r25748: 78 94 sei74a: 99 27 eor r25, r2574c: 08 95 ret0000074e <UIMgr_writeTxFifo>:74e: f8 94 cli750: 90 91 ba 00 lds r25, 0x00BA754: e4 e9 ldi r30, 0x94 ; 148756: f2 e0 ldi r31, 0x02 ; 2758: e9 0f add r30, r2575a: f1 1d adc r31, r175c: 80 83 st Z, r2475e: 9f 5f subi r25, 0xFF ; 255760: 9f 73 andi r25, 0x3F ; 63762: 90 93 ba 00 sts 0x00BA, r25766: 78 94 sei768: 08 95 ret0000076a <UIMgr_flushTxBuffer>:76a: 90 91 ba 00 lds r25, 0x00BA76e: 80 91 bb 00 lds r24, 0x00BB772: 98 17 cp r25, r24774: 41 f0 breq .+16 ; 0x786 <UIMgr_flushTxBuffer+0x1c>776: dc df rcall .-72 ; 0x730 <UIMgr_readTxFifo>778: f5 d1 rcall .+1002 ; 0xb64 <UartInt_txByte>77a: 90 91 ba 00 lds r25, 0x00BA77e: 80 91 bb 00 lds r24, 0x00BB782: 98 17 cp r25, r24784: c1 f7 brne .-16 ; 0x776 <UIMgr_flushTxBuffer+0xc>786: 08 95 ret00000788 <UIMgr_txBuffer>:788: 0f 93 push r1678a: 1f 93 push r1778c: cf 93 push r2878e: df 93 push r29790: ec 01 movw r28, r24792: 86 2f mov r24, r22794: 61 50 subi r22, 0x01 ; 1796: 6f 3f cpi r22, 0xFF ; 255798: 49 f0 breq .+18 ; 0x7ac <UIMgr_txBuffer+0x24>79a: 16 2f mov r17, r2279c: 86 1b sub r24, r2279e: 08 2f mov r16, r247a0: 02 50 subi r16, 0x02 ; 27a2: 89 91 ld r24, Y+7a4: df d1 rcall .+958 ; 0xb64 <UartInt_txByte>7a6: 11 50 subi r17, 0x01 ; 17a8: 01 17 cp r16, r177aa: d9 f7 brne .-10 ; 0x7a2 <UIMgr_txBuffer+0x1a>7ac: df 91 pop r297ae: cf 91 pop r287b0: 1f 91 pop r177b2: 0f 91 pop r167b4: 08 95 ret000007b6 <UIMgr_transmitPendingData>:7b6: 90 91 ba 00 lds r25, 0x00BA7ba: 80 91 bb 00 lds r24, 0x00BB7be: 98 17 cp r25, r247c0: 11 f0 breq .+4 ; 0x7c6 <UIMgr_transmitPendingData+0x10>7c2: b6 df rcall .-148 ; 0x730 <UIMgr_readTxFifo>7c4: cf d1 rcall .+926 ; 0xb64 <UartInt_txByte>7c6: 08 95 ret000007c8 <UIMgr_convertTokenToCmd>:7c8: 90 91 bf 00 lds r25, 0x00BF7cc: 90 35 cpi r25, 0x50 ; 807ce: 41 f4 brne .+16 ; 0x7e0 <UIMgr_convertTokenToCmd+0x18>7d0: 80 91 c0 00 lds r24, 0x00C07d4: 87 34 cpi r24, 0x47 ; 717d6: 09 f5 brne .+66 ; 0x81a <UIMgr_convertTokenToCmd+0x52>7d8: 81 e0 ldi r24, 0x01 ; 17da: 80 93 62 00 sts 0x0062, r247de: 48 c0 rjmp .+144 ; 0x870 <UIMgr_convertTokenToCmd+0xa8>7e0: 97 34 cpi r25, 0x47 ; 717e2: 39 f4 brne .+14 ; 0x7f2 <UIMgr_convertTokenToCmd+0x2a>7e4: 80 91 c0 00 lds r24, 0x00C07e8: 86 35 cpi r24, 0x56 ; 867ea: 09 f5 brne .+66 ; 0x82e <UIMgr_convertTokenToCmd+0x66>7ec: 10 92 62 00 sts 0x0062, r17f0: 3f c0 rjmp .+126 ; 0x870 <UIMgr_convertTokenToCmd+0xa8>7f2: 94 34 cpi r25, 0x44 ; 687f4: 41 f4 brne .+16 ; 0x806 <UIMgr_convertTokenToCmd+0x3e>7f6: 80 91 c0 00 lds r24, 0x00C07fa: 86 34 cpi r24, 0x46 ; 707fc: 11 f5 brne .+68 ; 0x842 <UIMgr_convertTokenToCmd+0x7a>7fe: 83 e0 ldi r24, 0x03 ; 3800: 80 93 62 00 sts 0x0062, r24804: 35 c0 rjmp .+106 ; 0x870 <UIMgr_convertTokenToCmd+0xa8>806: 93 34 cpi r25, 0x43 ; 67808: 41 f4 brne .+16 ; 0x81a <UIMgr_convertTokenToCmd+0x52>80a: 80 91 c0 00 lds r24, 0x00C080e: 82 35 cpi r24, 0x52 ; 82810: 11 f5 brne .+68 ; 0x856 <UIMgr_convertTokenToCmd+0x8e>812: 82 e0 ldi r24, 0x02 ; 2814: 80 93 62 00 sts 0x0062, r24818: 2b c0 rjmp .+86 ; 0x870 <UIMgr_convertTokenToCmd+0xa8>81a: 95 34 cpi r25, 0x45 ; 6981c: 41 f4 brne .+16 ; 0x82e <UIMgr_convertTokenToCmd+0x66>81e: 80 91 c0 00 lds r24, 0x00C0822: 84 35 cpi r24, 0x54 ; 84824: 11 f5 brne .+68 ; 0x86a <UIMgr_convertTokenToCmd+0xa2>826: 84 e0 ldi r24, 0x04 ; 4828: 80 93 62 00 sts 0x0062, r2482c: 21 c0 rjmp .+66 ; 0x870 <UIMgr_convertTokenToCmd+0xa8>82e: 93 35 cpi r25, 0x53 ; 83830: 41 f4 brne .+16 ; 0x842 <UIMgr_convertTokenToCmd+0x7a>832: 80 91 c0 00 lds r24, 0x00C0836: 8d 34 cpi r24, 0x4D ; 77838: c1 f4 brne .+48 ; 0x86a <UIMgr_convertTokenToCmd+0xa2>83a: 86 e0 ldi r24, 0x06 ; 683c: 80 93 62 00 sts 0x0062, r24840: 17 c0 rjmp .+46 ; 0x870 <UIMgr_convertTokenToCmd+0xa8>842: 94 34 cpi r25, 0x44 ; 68844: 41 f4 brne .+16 ; 0x856 <UIMgr_convertTokenToCmd+0x8e>846: 80 91 c0 00 lds r24, 0x00C084a: 84 35 cpi r24, 0x54 ; 8484c: 71 f4 brne .+28 ; 0x86a <UIMgr_convertTokenToCmd+0xa2>84e: 85 e0 ldi r24, 0x05 ; 5850: 80 93 62 00 sts 0x0062, r24854: 0d c0 rjmp .+26 ; 0x870 <UIMgr_convertTokenToCmd+0xa8>856: 92 35 cpi r25, 0x52 ; 82858: 41 f4 brne .+16 ; 0x86a <UIMgr_convertTokenToCmd+0xa2>85a: 80 91 c0 00 lds r24, 0x00C085e: 83 35 cpi r24, 0x53 ; 83860: 21 f4 brne .+8 ; 0x86a <UIMgr_convertTokenToCmd+0xa2>862: 87 e0 ldi r24, 0x07 ; 7864: 80 93 62 00 sts 0x0062, r24868: 03 c0 rjmp .+6 ; 0x870 <UIMgr_convertTokenToCmd+0xa8>86a: 89 e0 ldi r24, 0x09 ; 986c: 80 93 62 00 sts 0x0062, r24870: 83 e0 ldi r24, 0x03 ; 3872: ef eb ldi r30, 0xBF ; 191874: f0 e0 ldi r31, 0x00 ; 0876: 11 92 st Z+, r1878: 8a 95 dec r2487a: e9 f7 brne .-6 ; 0x876 <UIMgr_convertTokenToCmd+0xae>87c: 10 92 be 00 sts 0x00BE, r1880: 10 92 bd 00 sts 0x00BD, r1884: 08 95 ret00000886 <UIMgr_init>:886: 10 92 bf 00 sts 0x00BF, r188a: 10 92 c0 00 sts 0x00C0, r188e: 10 92 c1 00 sts 0x00C1, r1892: 10 92 c2 00 sts 0x00C2, r1896: 80 e4 ldi r24, 0x40 ; 64898: e3 ec ldi r30, 0xC3 ; 19589a: f0 e0 ldi r31, 0x00 ; 089c: 98 2f mov r25, r2489e: 11 92 st Z+, r18a0: 9a 95 dec r258a2: e9 f7 brne .-6 ; 0x89e <UIMgr_init+0x18>8a4: e4 e9 ldi r30, 0x94 ; 1488a6: f2 e0 ldi r31, 0x02 ; 28a8: 11 92 st Z+, r18aa: 8a 95 dec r248ac: e9 f7 brne .-6 ; 0x8a8 <UIMgr_init+0x22>8ae: 80 e2 ldi r24, 0x20 ; 328b0: e4 e7 ldi r30, 0x74 ; 1168b2: f2 e0 ldi r31, 0x02 ; 28b4: 11 92 st Z+, r18b6: 8a 95 dec r248b8: e9 f7 brne .-6 ; 0x8b4 <UIMgr_init+0x2e>8ba: 08 95 ret000008bc <UIMgr_convertTokenToValue>:8bc: 8f eb ldi r24, 0xBF ; 1918be: 90 e0 ldi r25, 0x00 ; 08c0: b0 d3 rcall .+1888 ; 0x1022 <atoi>8c2: 9c 01 movw r18, r248c4: 8f 3f cpi r24, 0xFF ; 2558c6: 91 05 cpc r25, r18c8: 69 f0 breq .+26 ; 0x8e4 <UIMgr_convertTokenToValue+0x28>8ca: 60 f0 brcs .+24 ; 0x8e4 <UIMgr_convertTokenToValue+0x28>8cc: 89 e0 ldi r24, 0x09 ; 98ce: 80 93 62 00 sts 0x0062, r248d2: 80 91 bc 00 lds r24, 0x00BC8d6: e3 ec ldi r30, 0xC3 ; 1958d8: f0 e0 ldi r31, 0x00 ; 08da: e8 0f add r30, r248dc: f1 1d adc r31, r18de: 8f ef ldi r24, 0xFF ; 2558e0: 80 83 st Z, r248e2: 07 c0 rjmp .+14 ; 0x8f2 <UIMgr_convertTokenToValue+0x36>8e4: 80 91 bc 00 lds r24, 0x00BC8e8: e3 ec ldi r30, 0xC3 ; 1958ea: f0 e0 ldi r31, 0x00 ; 08ec: e8 0f add r30, r248ee: f1 1d adc r31, r18f0: 20 83 st Z, r188f2: 83 e0 ldi r24, 0x03 ; 38f4: ef eb ldi r30, 0xBF ; 1918f6: f0 e0 ldi r31, 0x00 ; 08f8: 11 92 st Z+, r18fa: 8a 95 dec r248fc: e9 f7 brne .-6 ; 0x8f8 <UIMgr_convertTokenToValue+0x3c>8fe: 10 92 be 00 sts 0x00BE, r1902: 10 92 bd 00 sts 0x00BD, r1906: 08 95 ret00000908 <UIMgr_processReceivedData>:908: ff 92 push r1590a: 0f 93 push r1690c: 1f 93 push r1790e: cf 93 push r28910: df 93 push r29912: 0f 2e mov r0, r31914: f9 e0 ldi r31, 0x09 ; 9916: ff 2e mov r15, r31918: f0 2d mov r31, r091a: ff c0 rjmp .+510 ; 0xb1a <UIMgr_processReceivedData+0x212>91c: f8 94 cli91e: e2 2f mov r30, r18920: ff 27 eor r31, r31922: ec 58 subi r30, 0x8C ; 140924: fd 4f sbci r31, 0xFD ; 253926: 90 81 ld r25, Z928: 82 2f mov r24, r1892a: 8f 5f subi r24, 0xFF ; 25592c: 8f 71 andi r24, 0x1F ; 3192e: 80 93 b9 00 sts 0x00B9, r24932: 78 94 sei934: 9d 30 cpi r25, 0x0D ; 13936: 09 f0 breq .+2 ; 0x93a <UIMgr_processReceivedData+0x32>938: b1 c0 rjmp .+354 ; 0xa9c <UIMgr_processReceivedData+0x194>93a: 80 91 bc 00 lds r24, 0x00BC93e: 88 23 and r24, r24940: 11 f4 brne .+4 ; 0x946 <UIMgr_processReceivedData+0x3e>942: 42 df rcall .-380 ; 0x7c8 <UIMgr_convertTokenToCmd>944: 06 c0 rjmp .+12 ; 0x952 <UIMgr_processReceivedData+0x4a>946: ba df rcall .-140 ; 0x8bc <UIMgr_convertTokenToValue>948: 80 91 bc 00 lds r24, 0x00BC94c: 8f 5f subi r24, 0xFF ; 25594e: 80 93 bc 00 sts 0x00BC, r24952: 84 e6 ldi r24, 0x64 ; 100954: 90 e0 ldi r25, 0x00 ; 0956: 9b d2 rcall .+1334 ; 0xe8e <Utility_delay>958: 80 91 62 00 lds r24, 0x006295c: 88 50 subi r24, 0x08 ; 895e: 82 30 cpi r24, 0x02 ; 2960: 58 f4 brcc .+22 ; 0x978 <UIMgr_processReceivedData+0x70>962: 8e e4 ldi r24, 0x4E ; 78964: f4 de rcall .-536 ; 0x74e <UIMgr_writeTxFifo>966: 83 e4 ldi r24, 0x43 ; 67968: f2 de rcall .-540 ; 0x74e <UIMgr_writeTxFifo>96a: 8b e4 ldi r24, 0x4B ; 7596c: f0 de rcall .-544 ; 0x74e <UIMgr_writeTxFifo>96e: 8d e0 ldi r24, 0x0D ; 13970: ee de rcall .-548 ; 0x74e <UIMgr_writeTxFifo>972: 80 e9 ldi r24, 0x90 ; 144974: 06 dc rcall .-2036 ; 0x182 <Exec_writeEventFifo>976: 89 c0 rjmp .+274 ; 0xa8a <UIMgr_processReceivedData+0x182>978: 81 e4 ldi r24, 0x41 ; 6597a: e9 de rcall .-558 ; 0x74e <UIMgr_writeTxFifo>97c: 83 e4 ldi r24, 0x43 ; 6797e: e7 de rcall .-562 ; 0x74e <UIMgr_writeTxFifo>980: 8b e4 ldi r24, 0x4B ; 75982: e5 de rcall .-566 ; 0x74e <UIMgr_writeTxFifo>984: 8d e0 ldi r24, 0x0D ; 13986: e3 de rcall .-570 ; 0x74e <UIMgr_writeTxFifo>988: 80 e9 ldi r24, 0x90 ; 14498a: fb db rcall .-2058 ; 0x182 <Exec_writeEventFifo>98c: 80 91 62 00 lds r24, 0x0062990: 81 30 cpi r24, 0x01 ; 1992: 09 f4 brne .+2 ; 0x996 <UIMgr_processReceivedData+0x8e>994: 7a c0 rjmp .+244 ; 0xa8a <UIMgr_processReceivedData+0x182>996: 88 23 and r24, r24998: 71 f4 brne .+28 ; 0x9b6 <UIMgr_processReceivedData+0xae>99a: 80 91 63 00 lds r24, 0x006399e: 88 23 and r24, r249a0: 09 f4 brne .+2 ; 0x9a4 <UIMgr_processReceivedData+0x9c>9a2: 73 c0 rjmp .+230 ; 0xa8a <UIMgr_processReceivedData+0x182>9a4: c3 e6 ldi r28, 0x63 ; 999a6: d0 e0 ldi r29, 0x00 ; 09a8: 21 96 adiw r28, 0x01 ; 19aa: d1 de rcall .-606 ; 0x74e <UIMgr_writeTxFifo>9ac: 88 81 ld r24, Y9ae: 88 23 and r24, r249b0: 09 f4 brne .+2 ; 0x9b4 <UIMgr_processReceivedData+0xac>9b2: 6b c0 rjmp .+214 ; 0xa8a <UIMgr_processReceivedData+0x182>9b4: f9 cf rjmp .-14 ; 0x9a8 <UIMgr_processReceivedData+0xa0>9b6: 87 30 cpi r24, 0x07 ; 79b8: 11 f4 brne .+4 ; 0x9be <UIMgr_processReceivedData+0xb6>9ba: a1 db rcall .-2238 ; 0xfe <CamInt_resetCam>9bc: 66 c0 rjmp .+204 ; 0xa8a <UIMgr_processReceivedData+0x182>9be: 83 30 cpi r24, 0x03 ; 39c0: 31 f4 brne .+12 ; 0x9ce <UIMgr_processReceivedData+0xc6>9c2: 84 e6 ldi r24, 0x64 ; 1009c4: 90 e0 ldi r25, 0x00 ; 09c6: 63 d2 rcall .+1222 ; 0xe8e <Utility_delay>9c8: 82 e0 ldi r24, 0x02 ; 29ca: db db rcall .-2122 ; 0x182 <Exec_writeEventFifo>9cc: 5e c0 rjmp .+188 ; 0xa8a <UIMgr_processReceivedData+0x182>9ce: 82 30 cpi r24, 0x02 ; 29d0: 99 f4 brne .+38 ; 0x9f8 <UIMgr_processReceivedData+0xf0>9d2: 80 91 bc 00 lds r24, 0x00BC9d6: 82 30 cpi r24, 0x02 ; 29d8: 68 f0 brcs .+26 ; 0x9f4 <UIMgr_processReceivedData+0xec>9da: 11 e0 ldi r17, 0x01 ; 19dc: e1 2f mov r30, r179de: ff 27 eor r31, r319e0: ed 53 subi r30, 0x3D ; 619e2: ff 4f sbci r31, 0xFF ; 2559e4: 61 81 ldd r22, Z+1 ; 0x019e6: 80 81 ld r24, Z9e8: 02 d2 rcall .+1028 ; 0xdee <CamConfig_setCamReg>9ea: 1e 5f subi r17, 0xFE ; 2549ec: 80 91 bc 00 lds r24, 0x00BC9f0: 18 17 cp r17, r249f2: a0 f3 brcs .-24 ; 0x9dc <UIMgr_processReceivedData+0xd4>9f4: 01 d2 rcall .+1026 ; 0xdf8 <CamConfig_sendFifoCmds>9f6: 49 c0 rjmp .+146 ; 0xa8a <UIMgr_processReceivedData+0x182>9f8: 84 30 cpi r24, 0x04 ; 49fa: 31 f4 brne .+12 ; 0xa08 <UIMgr_processReceivedData+0x100>9fc: 84 e6 ldi r24, 0x64 ; 1009fe: 90 e0 ldi r25, 0x00 ; 0a00: 46 d2 rcall .+1164 ; 0xe8e <Utility_delay>a02: 80 e8 ldi r24, 0x80 ; 128a04: be db rcall .-2180 ; 0x182 <Exec_writeEventFifo>a06: 41 c0 rjmp .+130 ; 0xa8a <UIMgr_processReceivedData+0x182>a08: 85 30 cpi r24, 0x05 ; 5a0a: 19 f4 brne .+6 ; 0xa12 <UIMgr_processReceivedData+0x10a>a0c: 81 e8 ldi r24, 0x81 ; 129a0e: b9 db rcall .-2190 ; 0x182 <Exec_writeEventFifo>a10: 3c c0 rjmp .+120 ; 0xa8a <UIMgr_processReceivedData+0x182>a12: 86 30 cpi r24, 0x06 ; 6a14: 09 f0 breq .+2 ; 0xa18 <UIMgr_processReceivedData+0x110>a16: 39 c0 rjmp .+114 ; 0xa8a <UIMgr_processReceivedData+0x182>a18: 80 91 bc 00 lds r24, 0x00BCa1c: 88 23 and r24, r24a1e: 09 f4 brne .+2 ; 0xa22 <UIMgr_processReceivedData+0x11a>a20: 34 c0 rjmp .+104 ; 0xa8a <UIMgr_processReceivedData+0x182>a22: 40 e0 ldi r20, 0x00 ; 0a24: 03 ec ldi r16, 0xC3 ; 195a26: 10 e0 ldi r17, 0x00 ; 0a28: 60 e0 ldi r22, 0x00 ; 0a2a: 73 e0 ldi r23, 0x03 ; 3a2c: 84 2f mov r24, r20a2e: 99 27 eor r25, r25a30: 9c 01 movw r18, r24a32: 2f 5f subi r18, 0xFF ; 255a34: 3f 4f sbci r19, 0xFF ; 255a36: f9 01 movw r30, r18a38: e0 0f add r30, r16a3a: f1 1f adc r31, r17a3c: e0 81 ld r30, Za3e: ec 01 movw r28, r24a40: c6 0f add r28, r22a42: d7 1f adc r29, r23a44: e8 83 st Y, r30uint8_teeprom_read_byte (const uint8_t *addr){uint8_t result;asm volatilea46: d9 01 movw r26, r18a48: 20 d3 rcall .+1600 ; 0x108a <__eeprom_read_byte_1C1D1E>a4a: 80 2d mov r24, r0static 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])a4c: e8 17 cp r30, r24a4e: c1 f0 breq .+48 ; 0xa80 <UIMgr_processReceivedData+0x178>voideeprom_write_byte (uint8_t *addr,uint8_t value){asm volatile (a50: d9 01 movw r26, r18a52: 0e 2e mov r0, r30a54: 27 d3 rcall .+1614 ; 0x10a4 <__eeprom_write_byte_1C1D1E>a56: d9 01 movw r26, r18a58: 18 d3 rcall .+1584 ; 0x108a <__eeprom_read_byte_1C1D1E>a5a: 80 2d mov r24, r0{/* 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])a5c: 98 81 ld r25, Ya5e: 98 17 cp r25, r24a60: 79 f0 breq .+30 ; 0xa80 <UIMgr_processReceivedData+0x178>voideeprom_write_byte (uint8_t *addr,uint8_t value){asm volatile (a62: d9 01 movw r26, r18a64: 09 2e mov r0, r25a66: 1e d3 rcall .+1596 ; 0x10a4 <__eeprom_write_byte_1C1D1E>a68: d9 01 movw r26, r18a6a: 0f d3 rcall .+1566 ; 0x108a <__eeprom_read_byte_1C1D1E>a6c: 80 2d mov r24, r0a6e: 98 81 ld r25, Ya70: 98 17 cp r25, r24a72: 31 f0 breq .+12 ; 0xa80 <UIMgr_processReceivedData+0x178>voideeprom_write_byte (uint8_t *addr,uint8_t value){asm volatile (a74: d9 01 movw r26, r18a76: 09 2e mov r0, r25a78: 15 d3 rcall .+1578 ; 0x10a4 <__eeprom_write_byte_1C1D1E>a7a: d9 01 movw r26, r18a7c: 06 d3 rcall .+1548 ; 0x108a <__eeprom_read_byte_1C1D1E>a7e: 80 2d mov r24, r0a80: 4f 5f subi r20, 0xFF ; 255a82: 80 91 bc 00 lds r24, 0x00BCa86: 48 17 cp r20, r24a88: 88 f2 brcs .-94 ; 0xa2c <UIMgr_processReceivedData+0x124>a8a: 10 92 bc 00 sts 0x00BC, r1a8e: 80 e4 ldi r24, 0x40 ; 64a90: e3 ec ldi r30, 0xC3 ; 195a92: f0 e0 ldi r31, 0x00 ; 0a94: 11 92 st Z+, r1a96: 8a 95 dec r24a98: e9 f7 brne .-6 ; 0xa94 <UIMgr_processReceivedData+0x18c>a9a: 3f c0 rjmp .+126 ; 0xb1a <UIMgr_processReceivedData+0x212>a9c: 90 32 cpi r25, 0x20 ; 32a9e: f1 f4 brne .+60 ; 0xadc <UIMgr_processReceivedData+0x1d4>aa0: 80 91 bc 00 lds r24, 0x00BCaa4: 88 23 and r24, r24aa6: 39 f4 brne .+14 ; 0xab6 <UIMgr_processReceivedData+0x1ae>aa8: 8f de rcall .-738 ; 0x7c8 <UIMgr_convertTokenToCmd>aaa: 80 91 bc 00 lds r24, 0x00BCaae: 8f 5f subi r24, 0xFF ; 255ab0: 80 93 bc 00 sts 0x00BC, r24ab4: 32 c0 rjmp .+100 ; 0xb1a <UIMgr_processReceivedData+0x212>ab6: 99 27 eor r25, r25ab8: cf 97 sbiw r24, 0x3f ; 63aba: 4c f0 brlt .+18 ; 0xace <UIMgr_processReceivedData+0x1c6>abc: 10 92 bd 00 sts 0x00BD, r1ac0: 10 92 be 00 sts 0x00BE, r1ac4: 10 92 bc 00 sts 0x00BC, r1ac8: f0 92 62 00 sts 0x0062, r15acc: 26 c0 rjmp .+76 ; 0xb1a <UIMgr_processReceivedData+0x212>ace: f6 de rcall .-532 ; 0x8bc <UIMgr_convertTokenToValue>ad0: 80 91 bc 00 lds r24, 0x00BCad4: 8f 5f subi r24, 0xFF ; 255ad6: 80 93 bc 00 sts 0x00BC, r24ada: 1f c0 rjmp .+62 ; 0xb1a <UIMgr_processReceivedData+0x212>adc: 89 2f mov r24, r25ade: 81 54 subi r24, 0x41 ; 65ae0: 8a 31 cpi r24, 0x1A ; 26ae2: 18 f0 brcs .+6 ; 0xaea <UIMgr_processReceivedData+0x1e2>ae4: 8f 5e subi r24, 0xEF ; 239ae6: 8a 30 cpi r24, 0x0A ; 10ae8: b0 f4 brcc .+44 ; 0xb16 <UIMgr_processReceivedData+0x20e>aea: 80 91 be 00 lds r24, 0x00BEaee: e8 2f mov r30, r24af0: ff 27 eor r31, r31af2: e1 54 subi r30, 0x41 ; 65af4: ff 4f sbci r31, 0xFF ; 255af6: 90 83 st Z, r25af8: 90 91 bd 00 lds r25, 0x00BDafc: 9f 5f subi r25, 0xFF ; 255afe: 90 93 bd 00 sts 0x00BD, r25b02: 8f 5f subi r24, 0xFF ; 255b04: 80 93 be 00 sts 0x00BE, r24b08: 94 30 cpi r25, 0x04 ; 4b0a: 38 f0 brcs .+14 ; 0xb1a <UIMgr_processReceivedData+0x212>b0c: f0 92 62 00 sts 0x0062, r15b10: 10 92 be 00 sts 0x00BE, r1b14: 02 c0 rjmp .+4 ; 0xb1a <UIMgr_processReceivedData+0x212>b16: f0 92 62 00 sts 0x0062, r15b1a: 20 91 b9 00 lds r18, 0x00B9b1e: 80 91 b8 00 lds r24, 0x00B8b22: 82 17 cp r24, r18b24: 09 f0 breq .+2 ; 0xb28 <UIMgr_processReceivedData+0x220>b26: fa ce rjmp .-524 ; 0x91c <UIMgr_processReceivedData+0x14>b28: e8 94 cltb2a: df 91 pop r29b2c: cf 91 pop r28b2e: 1f 91 pop r17b30: 0f 91 pop r16b32: ff 90 pop r15b34: 08 95 ret00000b36 <UIMgr_dispatchEvent>:b36: 80 31 cpi r24, 0x10 ; 16b38: 29 f0 breq .+10 ; 0xb44 <UIMgr_dispatchEvent+0xe>b3a: 80 39 cpi r24, 0x90 ; 144b3c: 39 f0 breq .+14 ; 0xb4c <UIMgr_dispatchEvent+0x16>b3e: 81 30 cpi r24, 0x01 ; 1b40: 31 f4 brne .+12 ; 0xb4e <UIMgr_dispatchEvent+0x18>b42: 02 c0 rjmp .+4 ; 0xb48 <UIMgr_dispatchEvent+0x12>b44: 38 de rcall .-912 ; 0x7b6 <UIMgr_transmitPendingData>b46: 08 95 retb48: df de rcall .-578 ; 0x908 <UIMgr_processReceivedData>b4a: 08 95 retb4c: 0e de rcall .-996 ; 0x76a <UIMgr_flushTxBuffer>b4e: 08 95 ret00000b50 <UartInt_init>:b50: 10 bc out 0x20, r1 ; 32b52: 82 e1 ldi r24, 0x12 ; 18b54: 89 b9 out 0x09, r24 ; 9b56: 88 e9 ldi r24, 0x98 ; 152b58: 8a b9 out 0x0a, r24 ; 10b5a: 86 e8 ldi r24, 0x86 ; 134b5c: 80 bd out 0x20, r24 ; 32b5e: 82 e0 ldi r24, 0x02 ; 2b60: 8b b9 out 0x0b, r24 ; 11b62: 08 95 ret00000b64 <UartInt_txByte>:b64: 5d 9b sbis 0x0b, 5 ; 11b66: fe cf rjmp .-4 ; 0xb64 <UartInt_txByte>b68: 8c b9 out 0x0c, r24 ; 12b6a: 08 95 ret00000b6c <__vector_11>:b6c: 1f 92 push r1b6e: 0f 92 push r0b70: 0f b6 in r0, 0x3f ; 63b72: 0f 92 push r0b74: 11 24 eor r1, r1b76: 8f 93 push r24b78: 9f 93 push r25b7a: ef 93 push r30b7c: ff 93 push r31b7e: 80 91 b8 00 lds r24, 0x00B8b82: 9c b1 in r25, 0x0c ; 12b84: e4 e7 ldi r30, 0x74 ; 116b86: f2 e0 ldi r31, 0x02 ; 2b88: e8 0f add r30, r24b8a: f1 1d adc r31, r1b8c: 90 83 st Z, r25b8e: 8f 5f subi r24, 0xFF ; 255b90: 8f 71 andi r24, 0x1F ; 31b92: 80 93 b8 00 sts 0x00B8, r24b96: 80 91 70 00 lds r24, 0x0070b9a: ec e6 ldi r30, 0x6C ; 108b9c: f2 e0 ldi r31, 0x02 ; 2b9e: e8 0f add r30, r24ba0: f1 1d adc r31, r1ba2: 91 e0 ldi r25, 0x01 ; 1ba4: 90 83 st Z, r25ba6: 8f 5f subi r24, 0xFF ; 255ba8: 87 70 andi r24, 0x07 ; 7baa: 80 93 70 00 sts 0x0070, r24bae: ff 91 pop r31bb0: ef 91 pop r30bb2: 9f 91 pop r25bb4: 8f 91 pop r24bb6: 0f 90 pop r0bb8: 0f be out 0x3f, r0 ; 63bba: 0f 90 pop r0bbc: 1f 90 pop r1bbe: 18 95 reti00000bc0 <I2CInt_init>:bc0: 11 b8 out 0x01, r1 ; 1bc2: 88 e4 ldi r24, 0x48 ; 72bc4: 80 b9 out 0x00, r24 ; 0bc6: 08 95 ret00000bc8 <I2CInt_writeData>:bc8: 98 2f mov r25, r24bca: 80 91 08 01 lds r24, 0x0108bce: 88 23 and r24, r24bd0: e4 f3 brlt .-8 ; 0xbca <I2CInt_writeData+0x2>bd2: 06 b6 in r0, 0x36 ; 54bd4: 04 fc sbrc r0, 4bd6: fd cf rjmp .-6 ; 0xbd2 <I2CInt_writeData+0xa>bd8: 90 93 03 01 sts 0x0103, r25bdc: 70 93 05 01 sts 0x0105, r23be0: 60 93 04 01 sts 0x0104, r22be4: 40 93 07 01 sts 0x0107, r20be8: 10 92 06 01 sts 0x0106, r1bec: 10 92 09 01 sts 0x0109, r1bf0: 85 ea ldi r24, 0xA5 ; 165bf2: 86 bf out 0x36, r24 ; 54bf4: 80 91 08 01 lds r24, 0x0108bf8: 80 68 ori r24, 0x80 ; 128bfa: 80 93 08 01 sts 0x0108, r24bfe: 08 95 ret00000c00 <I2CInt_readData>:c00: 98 2f mov r25, r24c02: 80 91 08 01 lds r24, 0x0108c06: 88 23 and r24, r24c08: e4 f3 brlt .-8 ; 0xc02 <I2CInt_readData+0x2>c0a: 90 93 03 01 sts 0x0103, r25c0e: 70 93 05 01 sts 0x0105, r23c12: 60 93 04 01 sts 0x0104, r22c16: 40 93 07 01 sts 0x0107, r20c1a: 81 e0 ldi r24, 0x01 ; 1c1c: 80 93 06 01 sts 0x0106, r24c20: 10 92 09 01 sts 0x0109, r1c24: 85 ea ldi r24, 0xA5 ; 165c26: 86 bf out 0x36, r24 ; 54c28: 80 91 08 01 lds r24, 0x0108c2c: 80 68 ori r24, 0x80 ; 128c2e: 80 93 08 01 sts 0x0108, r24c32: 08 95 ret00000c34 <I2CInt_isI2cBusy>:c34: 80 91 08 01 lds r24, 0x0108c38: 88 1f adc r24, r24c3a: 88 27 eor r24, r24c3c: 88 1f adc r24, r24c3e: 99 27 eor r25, r25c40: 08 95 ret00000c42 <__vector_17>:c42: 1f 92 push r1c44: 0f 92 push r0c46: 0f b6 in r0, 0x3f ; 63c48: 0f 92 push r0c4a: 11 24 eor r1, r1c4c: 8f 93 push r24c4e: 9f 93 push r25c50: af 93 push r26c52: bf 93 push r27c54: ef 93 push r30c56: ff 93 push r31c58: 81 b1 in r24, 0x01 ; 1c5a: 99 27 eor r25, r25c5c: aa 27 eor r26, r26c5e: bb 27 eor r27, r27c60: 88 7f andi r24, 0xF8 ; 248c62: 90 70 andi r25, 0x00 ; 0c64: a0 70 andi r26, 0x00 ; 0c66: b0 70 andi r27, 0x00 ; 0c68: fc 01 movw r30, r24c6a: 38 97 sbiw r30, 0x08 ; 8c6c: e1 35 cpi r30, 0x51 ; 81c6e: f1 05 cpc r31, r1c70: 08 f0 brcs .+2 ; 0xc74 <__vector_17+0x32>c72: 9a c0 rjmp .+308 ; 0xda8 <__vector_17+0x166>c74: ed 5e subi r30, 0xED ; 237c76: ff 4f sbci r31, 0xFF ; 255c78: 09 94 ijmpc7a: 80 91 09 01 lds r24, 0x0109c7e: 83 30 cpi r24, 0x03 ; 3c80: 48 f0 brcs .+18 ; 0xc94 <__vector_17+0x52>c82: 86 b7 in r24, 0x36 ; 54c84: 80 69 ori r24, 0x90 ; 144c86: 86 bf out 0x36, r24 ; 54c88: 80 91 08 01 lds r24, 0x0108c8c: 8f 77 andi r24, 0x7F ; 127c8e: 80 93 08 01 sts 0x0108, r24c92: 8a c0 rjmp .+276 ; 0xda8 <__vector_17+0x166>c94: 80 91 03 01 lds r24, 0x0103c98: 90 91 06 01 lds r25, 0x0106c9c: 88 0f add r24, r24c9e: 89 0f add r24, r25ca0: 83 b9 out 0x03, r24 ; 3ca2: 86 b7 in r24, 0x36 ; 54ca4: 8f 7d andi r24, 0xDF ; 223ca6: 86 bf out 0x36, r24 ; 54ca8: 7f c0 rjmp .+254 ; 0xda8 <__vector_17+0x166>caa: 10 92 09 01 sts 0x0109, r1cae: e0 91 04 01 lds r30, 0x0104cb2: f0 91 05 01 lds r31, 0x0105cb6: 80 81 ld r24, Zcb8: 83 b9 out 0x03, r24 ; 3cba: 31 96 adiw r30, 0x01 ; 1cbc: f0 93 05 01 sts 0x0105, r31cc0: e0 93 04 01 sts 0x0104, r30cc4: 86 b7 in r24, 0x36 ; 54cc6: 80 68 ori r24, 0x80 ; 128cc8: 86 bf out 0x36, r24 ; 54cca: 6e c0 rjmp .+220 ; 0xda8 <__vector_17+0x166>ccc: 80 91 09 01 lds r24, 0x0109cd0: 8f 5f subi r24, 0xFF ; 255cd2: 80 93 09 01 sts 0x0109, r24cd6: 86 b7 in r24, 0x36 ; 54cd8: 80 6b ori r24, 0xB0 ; 176cda: 86 bf out 0x36, r24 ; 54cdc: 65 c0 rjmp .+202 ; 0xda8 <__vector_17+0x166>cde: 80 91 07 01 lds r24, 0x0107ce2: 81 50 subi r24, 0x01 ; 1ce4: 80 93 07 01 sts 0x0107, r24ce8: 80 91 07 01 lds r24, 0x0107cec: 88 23 and r24, r24cee: 79 f0 breq .+30 ; 0xd0e <__vector_17+0xcc>cf0: e0 91 04 01 lds r30, 0x0104cf4: f0 91 05 01 lds r31, 0x0105cf8: 80 81 ld r24, Zcfa: 83 b9 out 0x03, r24 ; 3cfc: 31 96 adiw r30, 0x01 ; 1cfe: f0 93 05 01 sts 0x0105, r31d02: e0 93 04 01 sts 0x0104, r30d06: 86 b7 in r24, 0x36 ; 54d08: 80 68 ori r24, 0x80 ; 128d0a: 86 bf out 0x36, r24 ; 54d0c: 4d c0 rjmp .+154 ; 0xda8 <__vector_17+0x166>d0e: 86 b7 in r24, 0x36 ; 54d10: 80 69 ori r24, 0x90 ; 144d12: 86 bf out 0x36, r24 ; 54d14: 80 91 08 01 lds r24, 0x0108d18: 8f 77 andi r24, 0x7F ; 127d1a: 80 93 08 01 sts 0x0108, r24d1e: 44 c0 rjmp .+136 ; 0xda8 <__vector_17+0x166>d20: 86 b7 in r24, 0x36 ; 54d22: 80 69 ori r24, 0x90 ; 144d24: 86 bf out 0x36, r24 ; 54d26: 80 91 08 01 lds r24, 0x0108d2a: 8f 77 andi r24, 0x7F ; 127d2c: 80 93 08 01 sts 0x0108, r24d30: 3b c0 rjmp .+118 ; 0xda8 <__vector_17+0x166>d32: 80 91 07 01 lds r24, 0x0107d36: 81 50 subi r24, 0x01 ; 1d38: 80 93 07 01 sts 0x0107, r24d3c: 80 91 07 01 lds r24, 0x0107d40: 88 23 and r24, r24d42: 21 f0 breq .+8 ; 0xd4c <__vector_17+0x10a>d44: 86 b7 in r24, 0x36 ; 54d46: 80 6c ori r24, 0xC0 ; 192d48: 86 bf out 0x36, r24 ; 54d4a: 2e c0 rjmp .+92 ; 0xda8 <__vector_17+0x166>d4c: 86 b7 in r24, 0x36 ; 54d4e: 80 68 ori r24, 0x80 ; 128d50: 86 bf out 0x36, r24 ; 54d52: 2a c0 rjmp .+84 ; 0xda8 <__vector_17+0x166>d54: e0 91 04 01 lds r30, 0x0104d58: f0 91 05 01 lds r31, 0x0105d5c: 83 b1 in r24, 0x03 ; 3d5e: 80 83 st Z, r24d60: 31 96 adiw r30, 0x01 ; 1d62: f0 93 05 01 sts 0x0105, r31d66: e0 93 04 01 sts 0x0104, r30d6a: 80 91 07 01 lds r24, 0x0107d6e: 81 50 subi r24, 0x01 ; 1d70: 80 93 07 01 sts 0x0107, r24d74: 80 91 07 01 lds r24, 0x0107d78: 88 23 and r24, r24d7a: 21 f0 breq .+8 ; 0xd84 <__vector_17+0x142>d7c: 86 b7 in r24, 0x36 ; 54d7e: 80 6c ori r24, 0xC0 ; 192d80: 86 bf out 0x36, r24 ; 54d82: 12 c0 rjmp .+36 ; 0xda8 <__vector_17+0x166>d84: 86 b7 in r24, 0x36 ; 54d86: 8f 7b andi r24, 0xBF ; 191d88: 86 bf out 0x36, r24 ; 54d8a: 0e c0 rjmp .+28 ; 0xda8 <__vector_17+0x166>d8c: e0 91 04 01 lds r30, 0x0104d90: f0 91 05 01 lds r31, 0x0105d94: 83 b1 in r24, 0x03 ; 3d96: 80 83 st Z, r24d98: 86 b7 in r24, 0x36 ; 54d9a: 80 69 ori r24, 0x90 ; 144d9c: 86 bf out 0x36, r24 ; 54d9e: 80 91 08 01 lds r24, 0x0108da2: 8f 77 andi r24, 0x7F ; 127da4: 80 93 08 01 sts 0x0108, r24da8: ff 91 pop r31daa: ef 91 pop r30dac: bf 91 pop r27dae: af 91 pop r26db0: 9f 91 pop r25db2: 8f 91 pop r24db4: 0f 90 pop r0db6: 0f be out 0x3f, r0 ; 63db8: 0f 90 pop r0dba: 1f 90 pop r1dbc: 18 95 reti00000dbe <CamConfig_writeTxFifo>:dbe: 20 91 0a 01 lds r18, 0x010Adc2: e2 2f mov r30, r18dc4: ff 27 eor r31, r31dc6: ee 0f add r30, r30dc8: ff 1f adc r31, r31dca: ec 52 subi r30, 0x2C ; 44dcc: fd 4f sbci r31, 0xFD ; 253dce: 91 83 std Z+1, r25 ; 0x01dd0: 80 83 st Z, r24dd2: 2f 5f subi r18, 0xFF ; 255dd4: 27 70 andi r18, 0x07 ; 7dd6: 20 93 0a 01 sts 0x010A, r18dda: 90 e0 ldi r25, 0x00 ; 0ddc: 80 91 0b 01 lds r24, 0x010Bde0: 28 17 cp r18, r24de2: 09 f4 brne .+2 ; 0xde6 <CamConfig_writeTxFifo+0x28>de4: 91 e0 ldi r25, 0x01 ; 1de6: 81 e0 ldi r24, 0x01 ; 1de8: 89 27 eor r24, r25dea: 99 27 eor r25, r25dec: 08 95 ret00000dee <CamConfig_setCamReg>:dee: 28 2f mov r18, r24df0: 36 2f mov r19, r22df2: c9 01 movw r24, r18df4: e4 df rcall .-56 ; 0xdbe <CamConfig_writeTxFifo>df6: 08 95 ret00000df8 <CamConfig_sendFifoCmds>:df8: 0f 93 push r16dfa: 1f 93 push r17dfc: cf 93 push r28dfe: df 93 push r29e00: cd b7 in r28, 0x3d ; 61e02: de b7 in r29, 0x3e ; 62e04: 22 97 sbiw r28, 0x02 ; 2e06: 0f b6 in r0, 0x3f ; 63e08: f8 94 clie0a: de bf out 0x3e, r29 ; 62e0c: 0f be out 0x3f, r0 ; 63e0e: cd bf out 0x3d, r28 ; 61e10: 8e 01 movw r16, r28e12: 0f 5f subi r16, 0xFF ; 255e14: 1f 4f sbci r17, 0xFF ; 255e16: 19 c0 rjmp .+50 ; 0xe4a <CamConfig_sendFifoCmds+0x52>e18: e3 2f mov r30, r19e1a: ff 27 eor r31, r31e1c: ee 0f add r30, r30e1e: ff 1f adc r31, r31e20: ec 52 subi r30, 0x2C ; 44e22: fd 4f sbci r31, 0xFD ; 253e24: 91 81 ldd r25, Z+1 ; 0x01e26: 20 81 ld r18, Ze28: 83 2f mov r24, r19e2a: 8f 5f subi r24, 0xFF ; 255e2c: 87 70 andi r24, 0x07 ; 7e2e: 80 93 0b 01 sts 0x010B, r24e32: 9a 83 std Y+2, r25 ; 0x02e34: 29 83 std Y+1, r18 ; 0x01e36: 42 e0 ldi r20, 0x02 ; 2e38: b8 01 movw r22, r16e3a: 80 e6 ldi r24, 0x60 ; 96e3c: c5 de rcall .-630 ; 0xbc8 <I2CInt_writeData>e3e: 84 e6 ldi r24, 0x64 ; 100e40: 90 e0 ldi r25, 0x00 ; 0e42: 25 d0 rcall .+74 ; 0xe8e <Utility_delay>e44: f7 de rcall .-530 ; 0xc34 <I2CInt_isI2cBusy>e46: 81 30 cpi r24, 0x01 ; 1e48: e9 f3 breq .-6 ; 0xe44 <CamConfig_sendFifoCmds+0x4c>e4a: 30 91 0b 01 lds r19, 0x010Be4e: 80 91 0a 01 lds r24, 0x010Ae52: 83 17 cp r24, r19e54: 09 f7 brne .-62 ; 0xe18 <CamConfig_sendFifoCmds+0x20>e56: 22 96 adiw r28, 0x02 ; 2e58: 0f b6 in r0, 0x3f ; 63e5a: f8 94 clie5c: de bf out 0x3e, r29 ; 62e5e: 0f be out 0x3f, r0 ; 63e60: cd bf out 0x3d, r28 ; 61e62: df 91 pop r29e64: cf 91 pop r28e66: 1f 91 pop r17e68: 0f 91 pop r16e6a: 08 95 ret00000e6c <CamConfig_init>:e6c: 60 e2 ldi r22, 0x20 ; 32e6e: 84 e1 ldi r24, 0x14 ; 20e70: be df rcall .-132 ; 0xdee <CamConfig_setCamReg>e72: 60 e4 ldi r22, 0x40 ; 64e74: 89 e3 ldi r24, 0x39 ; 57e76: bb df rcall .-138 ; 0xdee <CamConfig_setCamReg>e78: 68 e2 ldi r22, 0x28 ; 40e7a: 82 e1 ldi r24, 0x12 ; 18e7c: b8 df rcall .-144 ; 0xdee <CamConfig_setCamReg>e7e: 65 e0 ldi r22, 0x05 ; 5e80: 88 e2 ldi r24, 0x28 ; 40e82: b5 df rcall .-150 ; 0xdee <CamConfig_setCamReg>e84: 61 e0 ldi r22, 0x01 ; 1e86: 83 e1 ldi r24, 0x13 ; 19e88: b2 df rcall .-156 ; 0xdee <CamConfig_setCamReg>e8a: b6 df rcall .-148 ; 0xdf8 <CamConfig_sendFifoCmds>e8c: 08 95 ret00000e8e <Utility_delay>:e8e: cf 93 push r28e90: df 93 push r29e92: cd b7 in r28, 0x3d ; 61e94: de b7 in r29, 0x3e ; 62e96: 24 97 sbiw r28, 0x04 ; 4e98: 0f b6 in r0, 0x3f ; 63e9a: f8 94 clie9c: de bf out 0x3e, r29 ; 62e9e: 0f be out 0x3f, r0 ; 63ea0: cd bf out 0x3d, r28 ; 61ea2: 9c 01 movw r18, r24ea4: 1a 82 std Y+2, r1 ; 0x02ea6: 19 82 std Y+1, r1 ; 0x01ea8: 1c 82 std Y+4, r1 ; 0x04eaa: 1b 82 std Y+3, r1 ; 0x03eac: 1a 82 std Y+2, r1 ; 0x02eae: 19 82 std Y+1, r1 ; 0x01eb0: 89 81 ldd r24, Y+1 ; 0x01eb2: 9a 81 ldd r25, Y+2 ; 0x02eb4: 82 17 cp r24, r18eb6: 93 07 cpc r25, r19eb8: e0 f4 brcc .+56 ; 0xef2 <Utility_delay+0x64>eba: 1c 82 std Y+4, r1 ; 0x04ebc: 1b 82 std Y+3, r1 ; 0x03ebe: 8b 81 ldd r24, Y+3 ; 0x03ec0: 9c 81 ldd r25, Y+4 ; 0x04ec2: 88 5e subi r24, 0xE8 ; 232ec4: 93 40 sbci r25, 0x03 ; 3ec6: 58 f4 brcc .+22 ; 0xede <Utility_delay+0x50>ec8: 00 00 nopeca: 8b 81 ldd r24, Y+3 ; 0x03ecc: 9c 81 ldd r25, Y+4 ; 0x04ece: 01 96 adiw r24, 0x01 ; 1ed0: 9c 83 std Y+4, r25 ; 0x04ed2: 8b 83 std Y+3, r24 ; 0x03ed4: 8b 81 ldd r24, Y+3 ; 0x03ed6: 9c 81 ldd r25, Y+4 ; 0x04ed8: 88 5e subi r24, 0xE8 ; 232eda: 93 40 sbci r25, 0x03 ; 3edc: a8 f3 brcs .-22 ; 0xec8 <Utility_delay+0x3a>ede: 89 81 ldd r24, Y+1 ; 0x01ee0: 9a 81 ldd r25, Y+2 ; 0x02ee2: 01 96 adiw r24, 0x01 ; 1ee4: 9a 83 std Y+2, r25 ; 0x02ee6: 89 83 std Y+1, r24 ; 0x01ee8: 89 81 ldd r24, Y+1 ; 0x01eea: 9a 81 ldd r25, Y+2 ; 0x02eec: 82 17 cp r24, r18eee: 93 07 cpc r25, r19ef0: 20 f3 brcs .-56 ; 0xeba <Utility_delay+0x2c>ef2: 24 96 adiw r28, 0x04 ; 4ef4: 0f b6 in r0, 0x3f ; 63ef6: f8 94 clief8: de bf out 0x3e, r29 ; 62efa: 0f be out 0x3f, r0 ; 63efc: cd bf out 0x3d, r28 ; 61efe: df 91 pop r29f00: cf 91 pop r28f02: 08 95 ret00000f04 <DebugInt_init>:f04: 8e 9a sbi 0x11, 6 ; 17f06: 96 9a sbi 0x12, 6 ; 18f08: 84 ef ldi r24, 0xF4 ; 244f0a: 91 e0 ldi r25, 0x01 ; 1f0c: c0 df rcall .-128 ; 0xe8e <Utility_delay>f0e: 96 98 cbi 0x12, 6 ; 18f10: 84 ef ldi r24, 0xF4 ; 244f12: 91 e0 ldi r25, 0x01 ; 1f14: bc df rcall .-136 ; 0xe8e <Utility_delay>f16: 96 9a sbi 0x12, 6 ; 18f18: 84 ef ldi r24, 0xF4 ; 244f1a: 91 e0 ldi r25, 0x01 ; 1f1c: b8 df rcall .-144 ; 0xe8e <Utility_delay>f1e: 96 98 cbi 0x12, 6 ; 18f20: 84 ef ldi r24, 0xF4 ; 244f22: 91 e0 ldi r25, 0x01 ; 1f24: b4 df rcall .-152 ; 0xe8e <Utility_delay>f26: 96 9a sbi 0x12, 6 ; 18f28: 84 ef ldi r24, 0xF4 ; 244f2a: 91 e0 ldi r25, 0x01 ; 1f2c: b0 df rcall .-160 ; 0xe8e <Utility_delay>f2e: 96 98 cbi 0x12, 6 ; 18f30: 84 ef ldi r24, 0xF4 ; 244f32: 91 e0 ldi r25, 0x01 ; 1f34: ac df rcall .-168 ; 0xe8e <Utility_delay>f36: 96 9a sbi 0x12, 6 ; 18f38: 08 95 ret00000f3a <CamIntAsm_waitForNewTrackingFrame>:; set, and the function will return.;*****************************************************************CamIntAsm_waitForNewTrackingFrame:sbi _SFR_IO_ADDR(PORTD),PD6 ; For testing...f3a: 96 9a sbi 0x12, 6 ; 18cbi _SFR_IO_ADDR(PORTD),PD6f3c: 96 98 cbi 0x12, 6 ; 18sleepf3e: 88 95 sleep00000f40 <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 _cleanUpf40: e6 f1 brts .+120 ; 0xfba <_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 actuallyf42: 3e b5 in r19, 0x2e ; 46ori tmp1, 0x07 ; feed Timer1f44: 37 60 ori r19, 0x07 ; 7out _SFR_IO_ADDR(TCCR1B),tmp1f46: 3e bd out 0x2e, r19 ; 46; The line is about to start...ldi pixelCount,0 ; Initialize the RLE stats...f48: 00 e0 ldi r16, 0x00 ; 0ldi pixelRunStart,PIXEL_RUN_START_INITIAL ; Remember, we always calculatef4a: 10 e5 ldi r17, 0x50 ; 80; the pixel run length as; TCNT1L - pixelRunStartldi lastColor,0x00 ; clear out the last color before we startf4c: 20 e0 ldi r18, 0x00 ; 0mov XH,currLineBuffHigh ; Load the pointer to the current linef4e: b9 2f mov r27, r25mov XL,currLineBuffLow ; buffer into the X pointer regsf50: a8 2f mov r26, r24mov ZH,colorMapHigh ; Load the pointers to the membershipf52: f7 2f mov r31, r23mov ZL,colorMapLow ; lookup tables (ZL and YL will be overwrittenf54: e6 2f mov r30, r22mov YH,colorMapHigh ; as soon as we start reading data) to Z and Yf56: d7 2f mov r29, r23in tmp1, _SFR_IO_ADDR(TIMSK) ; enable TIMER1 to start countingf58: 39 b7 in r19, 0x39 ; 57ori tmp1, ENABLE_PCLK_TIMER1_OVERFLOW_BITMASK ; external PCLK pulses and interrupt onf5a: 34 60 ori r19, 0x04 ; 4out _SFR_IO_ADDR(TIMSK),tmp1 ; overflowf5c: 39 bf out 0x39, r19 ; 57ldi tmp1,PIXEL_RUN_START_INITIAL ; set up the TCNT1 to overflow (andf5e: 30 e5 ldi r19, 0x50 ; 80ldi tmp2,0xFF ; interrupts) after 176 pixelsf60: 4f ef ldi r20, 0xFF ; 255out _SFR_IO_ADDR(TCNT1H),tmp2f62: 4d bd out 0x2d, r20 ; 45out _SFR_IO_ADDR(TCNT1L),tmp1f64: 3c bd out 0x2c, r19 ; 44mov YL,colorMapLowf66: c6 2f mov r28, r22in tmp1, _SFR_IO_ADDR(GICR) ; enable the HREF interrupt...remember, wef68: 3b b7 in r19, 0x3b ; 59; only use this interrupt to synchronize; the beginning of the lineori tmp1, HREF_INTERRUPT_ENABLE_MASKf6a: 30 68 ori r19, 0x80 ; 128out _SFR_IO_ADDR(GICR), tmp1f6c: 3b bf out 0x3b, r19 ; 5900000f6e <_trackFrame>:;*******************************************************************************************; Track Frame handler;*******************************************************************************************_trackFrame:sbi _SFR_IO_ADDR(PORTD),PD6f6e: 96 9a sbi 0x12, 6 ; 18sleep ; ...And we wait...f70: 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),PD6f72: 96 98 cbi 0x12, 6 ; 18in tmp1, _SFR_IO_ADDR(GICR)f74: 3b b7 in r19, 0x3b ; 59andi tmp1, HREF_INTERRUPT_DISABLE_MASKf76: 3f 77 andi r19, 0x7F ; 127out _SFR_IO_ADDR(GICR), tmp1f78: 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.nopf7a: 00 00 nop...00000f7e <_acquirePixelBlock>:nop_acquirePixelBlock: ; Clock Cycle Countin ZL,RB_PORT ; sample the red value (PINB) (1)f7e: e6 b3 in r30, 0x16 ; 22in YL,G_PORT ; sample the green value (PINC) (1)f80: c3 b3 in r28, 0x13 ; 19andi YL,0x0F ; clear the high nibble (1)f82: cf 70 andi r28, 0x0F ; 15ldd color,Z+RED_MEM_OFFSET ; lookup the red membership (2)f84: 30 81 ld r19, Zin ZL,RB_PORT ; sample the blue value (PINB) (1)f86: e6 b3 in r30, 0x16 ; 22ldd greenData,Y+GREEN_MEM_OFFSET; lookup the green membership (2)f88: 48 89 ldd r20, Y+16 ; 0x10ldd blueData,Z+BLUE_MEM_OFFSET ; lookup the blue membership (2)f8a: 50 a1 ldd r21, Z+32 ; 0x20and color,greenData ; mask memberships together (1)f8c: 34 23 and r19, r20and color,blueData ; to produce the final color (1)f8e: 35 23 and r19, r21brts _cleanUpTrackingLine ; if some interrupt routine has (1...not set)f90: 76 f0 brts .+28 ; 0xfae <_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)f92: 32 17 cp r19, r18breq _acquirePixelBlock ; (2...equal)f94: a1 f3 breq .-24 ; 0xf7e <_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),PD6f96: 96 9a sbi 0x12, 6 ; 18nopf98: 00 00 nopcbi _SFR_IO_ADDR(PORTD),PD6f9a: 96 98 cbi 0x12, 6 ; 18mov tmp2,pixelRunStart ; get the count value of thef9c: 41 2f mov r20, r17; current pixel runin pixelCount,_SFR_IO_ADDR(TCNT1L) ; get the current TCNT1 valuef9e: 0c b5 in r16, 0x2c ; 44mov pixelRunStart,pixelCount ; reload pixelRunStart for thefa0: 10 2f mov r17, r16; next runsub pixelCount,tmp2 ; pixelCount = TCNT1L - pixelRunStartfa2: 04 1b sub r16, r20st X+,lastColor ; record the color run in the current line bufferfa4: 2d 93 st X+, r18st X+,pixelCount ; with its lengthfa6: 0d 93 st X+, r16mov lastColor,color ; set lastColor so we can figure out when it changesfa8: 23 2f mov r18, r19nop ; waste one more cycle for a total of 16faa: 00 00 noprjmp _acquirePixelBlockfac: e8 cf rjmp .-48 ; 0xf7e <_acquirePixelBlock>00000fae <_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 lastfae: 0f ef ldi r16, 0xFF ; 255sub pixelCount,pixelRunStart ; pixelRunStartfb0: 01 1b sub r16, r17inc pixelCount ; increment pixelCount since we actually need to accountfb2: 03 95 inc r16; for the overflow of TCNT1st X+,color ; record the color run in the current line bufferfb4: 3d 93 st X+, r19st X,pixelCountfb6: 0c 93 st X, r16rjmp _cleanUpfb8: 00 c0 rjmp .+0 ; 0xfba <_cleanUp>00000fba <_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)fba: 3e b5 in r19, 0x2e ; 46andi tmp1, 0xF8fbc: 38 7f andi r19, 0xF8 ; 248out _SFR_IO_ADDR(TCCR1B),tmp1fbe: 3e bd out 0x2e, r19 ; 46; Toggle the debug line to indicate the line is completesbi _SFR_IO_ADDR(PORTD),PD6fc0: 96 9a sbi 0x12, 6 ; 18cbi _SFR_IO_ADDR(PORTD),PD6fc2: 96 98 cbi 0x12, 6 ; 18clt ; clear out the T bit since we have detectedfc4: e8 94 clt00000fc6 <_exit>:; the interruption and are exiting to handle it_exit:retfc6: 08 95 ret00000fc8 <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...fc8: 96 9a sbi 0x12, 6 ; 18cbi _SFR_IO_ADDR(PORTD),PD6fca: 96 98 cbi 0x12, 6 ; 18sleepfcc: 88 95 sleep00000fce <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 _cleanUpfce: ae f3 brts .-22 ; 0xfba <_cleanUp>;sbi _SFR_IO_ADDR(PORTD),PD6 ; For testing...;cbi _SFR_IO_ADDR(PORTD),PD6mov XH,currLineBuffHigh ; Load the pointer to the current linefd0: b9 2f mov r27, r25mov XL,currLineBuffLow ; buffer into the X pointer regsfd2: a8 2f mov r26, r24mov YH,prevLineBuffHigh ; Load the pointer to the previous linefd4: d7 2f mov r29, r23mov YL,prevLineBuffLow ; buffer into the Y pointer regsfd6: c6 2f mov r28, r22ldi tmp1,PIXEL_RUN_START_INITIAL ; set up the TCNT1 to overflow (andfd8: 30 e5 ldi r19, 0x50 ; 80ldi tmp2,0xFF ; interrupts) after 176 pixelsfda: 4f ef ldi r20, 0xFF ; 255out _SFR_IO_ADDR(TCNT1H),tmp2fdc: 4d bd out 0x2d, r20 ; 45out _SFR_IO_ADDR(TCNT1L),tmp1fde: 3c bd out 0x2c, r19 ; 44in tmp1, _SFR_IO_ADDR(TCCR1B) ; Enable the PCLK line to actuallyfe0: 3e b5 in r19, 0x2e ; 46ori tmp1, 0x07 ; feed Timer1fe2: 37 60 ori r19, 0x07 ; 7out _SFR_IO_ADDR(TCCR1B),tmp1fe4: 3e bd out 0x2e, r19 ; 46nopfe6: 00 00 nopin tmp1, _SFR_IO_ADDR(TIMSK) ; enable TIMER1 to start countingfe8: 39 b7 in r19, 0x39 ; 57ori tmp1, ENABLE_PCLK_TIMER1_OVERFLOW_BITMASK ; external PCLK pulses and interrupt onfea: 34 60 ori r19, 0x04 ; 4out _SFR_IO_ADDR(TIMSK),tmp1 ; overflowfec: 39 bf out 0x39, r19 ; 57in tmp1, _SFR_IO_ADDR(GICR) ; enable the HREF interrupt...remember, wefee: 3b b7 in r19, 0x3b ; 59; only use this interrupt to synchronize; the beginning of the lineori tmp1, HREF_INTERRUPT_ENABLE_MASKff0: 30 68 ori r19, 0x80 ; 128out _SFR_IO_ADDR(GICR), tmp1ff2: 3b bf out 0x3b, r19 ; 5900000ff4 <_dumpFrame>:;*******************************************************************************************; Dump Frame handler;*******************************************************************************************_dumpFrame:sbi _SFR_IO_ADDR(PORTD),PD6ff4: 96 9a sbi 0x12, 6 ; 18sleep ; ...And we wait...ff6: 88 95 sleepcbi _SFR_IO_ADDR(PORTD),PD6ff8: 96 98 cbi 0x12, 6 ; 18in tmp1, _SFR_IO_ADDR(GICR) ; disable the HREF interruptffa: 3b b7 in r19, 0x3b ; 59andi tmp1, HREF_INTERRUPT_DISABLE_MASK ; so we don't get interruptedffc: 3f 77 andi r19, 0x7F ; 127out _SFR_IO_ADDR(GICR), tmp1 ; while dumping the lineffe: 3b bf out 0x3b, r19 ; 59...00001002 <_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)1002: 33 b3 in r19, 0x13 ; 19in tmp2,RB_PORT ; sample the R/B value (1)1004: 46 b3 in r20, 0x16 ; 22st X+,tmp1 ; store to the currLineBuff and inc ptrs(2)1006: 3d 93 st X+, r19st Y+,tmp2 ; store to the prevLineBuff and inc ptrs(2)1008: 49 93 st Y+, r20brtc _sampleDumpPixel ; loop back unless flag is set (2...if not set)100a: de f7 brtc .-10 ; 0x1002 <_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 _cleanUpDumpLine100c: d6 cf rjmp .-84 ; 0xfba <_cleanUp>0000100e <__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 returnreti100e: 18 95 reti00001010 <__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 returnreti1010: 18 95 reti00001012 <__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 indicating1012: 30 91 72 00 lds r19, 0x0072ori tmp1,FEV_ACQUIRE_LINE_COMPLETE ; a line is complete1016: 31 60 ori r19, 0x01 ; 1sts fastEventBitmask,tmp11018: 30 93 72 00 sts 0x0072, r19set ; set the T bit in SREG101c: 68 94 set;sbi _SFR_IO_ADDR(PORTD),PD6 ; For testing...;cbi _SFR_IO_ADDR(PORTD),PD6 ; For testing...reti101e: 18 95 reti00001020 <__vector_default>:; This is the default handler for all interrupts that don't; have handler routines specified for them..global __vector_default__vector_default:reti1020: 18 95 reti00001022 <atoi>:1022: fc 01 movw r30, r241024: 88 27 eor r24, r241026: 99 27 eor r25, r251028: e8 94 clt102a: 21 91 ld r18, Z+102c: 22 23 and r18, r18102e: e9 f0 breq .+58 ; 0x106a <atoi+0x48>1030: 20 32 cpi r18, 0x20 ; 321032: d9 f3 breq .-10 ; 0x102a <atoi+0x8>1034: 29 30 cpi r18, 0x09 ; 91036: c9 f3 breq .-14 ; 0x102a <atoi+0x8>1038: 2a 30 cpi r18, 0x0A ; 10103a: b9 f3 breq .-18 ; 0x102a <atoi+0x8>103c: 2c 30 cpi r18, 0x0C ; 12103e: a9 f3 breq .-22 ; 0x102a <atoi+0x8>1040: 2d 30 cpi r18, 0x0D ; 131042: 99 f3 breq .-26 ; 0x102a <atoi+0x8>1044: 26 37 cpi r18, 0x76 ; 1181046: 89 f3 breq .-30 ; 0x102a <atoi+0x8>1048: 2b 32 cpi r18, 0x2B ; 43104a: 19 f0 breq .+6 ; 0x1052 <atoi+0x30>104c: 2d 32 cpi r18, 0x2D ; 45104e: 21 f4 brne .+8 ; 0x1058 <atoi+0x36>1050: 68 94 set1052: 21 91 ld r18, Z+1054: 22 23 and r18, r181056: 49 f0 breq .+18 ; 0x106a <atoi+0x48>1058: 20 33 cpi r18, 0x30 ; 48105a: 3c f0 brlt .+14 ; 0x106a <atoi+0x48>105c: 2a 33 cpi r18, 0x3A ; 58105e: 2c f4 brge .+10 ; 0x106a <atoi+0x48>1060: 20 53 subi r18, 0x30 ; 481062: 0b d0 rcall .+22 ; 0x107a <__mulhi_const_10>1064: 82 0f add r24, r181066: 91 1d adc r25, r11068: f4 cf rjmp .-24 ; 0x1052 <atoi+0x30>106a: 81 15 cp r24, r1106c: 91 05 cpc r25, r1106e: 21 f0 breq .+8 ; 0x1078 <atoi+0x56>1070: 1e f4 brtc .+6 ; 0x1078 <atoi+0x56>1072: 80 95 com r241074: 90 95 com r251076: 01 96 adiw r24, 0x01 ; 11078: 08 95 ret0000107a <__mulhi_const_10>:107a: 7a e0 ldi r23, 0x0A ; 10107c: 97 9f mul r25, r23107e: 90 2d mov r25, r01080: 87 9f mul r24, r231082: 80 2d mov r24, r01084: 91 0d add r25, r11086: 11 24 eor r1, r11088: 08 95 ret0000108a <__eeprom_read_byte_1C1D1E>:108a: e1 99 sbic 0x1c, 1 ; 28108c: fe cf rjmp .-4 ; 0x108a <__eeprom_read_byte_1C1D1E>108e: bf bb out 0x1f, r27 ; 311090: ae bb out 0x1e, r26 ; 301092: e0 9a sbi 0x1c, 0 ; 281094: 11 96 adiw r26, 0x01 ; 11096: 0d b2 in r0, 0x1d ; 291098: 08 95 ret0000109a <__eeprom_read_block_1C1D1E>:109a: f7 df rcall .-18 ; 0x108a <__eeprom_read_byte_1C1D1E>109c: 01 92 st Z+, r0109e: 1a 94 dec r110a0: e1 f7 brne .-8 ; 0x109a <__eeprom_read_block_1C1D1E>10a2: 08 95 ret000010a4 <__eeprom_write_byte_1C1D1E>:10a4: e1 99 sbic 0x1c, 1 ; 2810a6: fe cf rjmp .-4 ; 0x10a4 <__eeprom_write_byte_1C1D1E>10a8: bf bb out 0x1f, r27 ; 3110aa: ae bb out 0x1e, r26 ; 3010ac: 0d ba out 0x1d, r0 ; 2910ae: 11 96 adiw r26, 0x01 ; 110b0: 0f b6 in r0, 0x3f ; 6310b2: f8 94 cli10b4: e2 9a sbi 0x1c, 2 ; 2810b6: e1 9a sbi 0x1c, 1 ; 2810b8: 0f be out 0x3f, r0 ; 6310ba: 08 95 ret000010bc <_exit>:10bc: ff cf rjmp .-2 ; 0x10bc <_exit>