1 .file "mpu9150.c" 2 __SREG__ = 0x3f 3 __SP_H__ = 0x3e 4 __SP_L__ = 0x3d 5 __CCP__ = 0x34 6 __tmp_reg__ = 0 7 __zero_reg__ = 1 9 .text 10 .Ltext0: 83 .global __vector_25 85 __vector_25: 87 .Ltext1: 1:../../../atmel/oulib/include/oulib_serial_buffered.h **** #include "oulib.h" 2:../../../atmel/oulib/include/oulib_serial_buffered.h **** 3:../../../atmel/oulib/include/oulib_serial_buffered.h **** #ifdef SERIAL_NPORTS_2 4:../../../atmel/oulib/include/oulib_serial_buffered.h **** // Two serial ports 5:../../../atmel/oulib/include/oulib_serial_buffered.h **** struct OU_FILE_BUF *ou_file_buf[2] = {NULL, NULL}; 6:../../../atmel/oulib/include/oulib_serial_buffered.h **** 7:../../../atmel/oulib/include/oulib_serial_buffered.h **** ISR(USART0_RX_vect) { 8:../../../atmel/oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[0]); 9:../../../atmel/oulib/include/oulib_serial_buffered.h **** } 10:../../../atmel/oulib/include/oulib_serial_buffered.h **** ISR(USART1_RX_vect) { 11:../../../atmel/oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[1]); 12:../../../atmel/oulib/include/oulib_serial_buffered.h **** } 13:../../../atmel/oulib/include/oulib_serial_buffered.h **** ISR(USART0_UDRE_vect) { 14:../../../atmel/oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[0]); 15:../../../atmel/oulib/include/oulib_serial_buffered.h **** } 16:../../../atmel/oulib/include/oulib_serial_buffered.h **** ISR(USART1_UDRE_vect) { 17:../../../atmel/oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[1]); 18:../../../atmel/oulib/include/oulib_serial_buffered.h **** } 19:../../../atmel/oulib/include/oulib_serial_buffered.h **** #else 20:../../../atmel/oulib/include/oulib_serial_buffered.h **** #ifdef SERIAL_NPORTS_4 21:../../../atmel/oulib/include/oulib_serial_buffered.h **** // Four serial ports 22:../../../atmel/oulib/include/oulib_serial_buffered.h **** struct OU_FILE_BUF *ou_file_buf[4] = {NULL, NULL, NULL, NULL}; 23:../../../atmel/oulib/include/oulib_serial_buffered.h **** 24:../../../atmel/oulib/include/oulib_serial_buffered.h **** ISR(USART0_RX_vect) { 89 .LM0: 90 .LFBB1: 91 0000 1F92 push __zero_reg__ 92 0002 0F92 push r0 93 0004 0FB6 in r0,__SREG__ 94 0006 0F92 push r0 95 0008 0BB6 in r0,91-32 96 000a 0F92 push r0 97 000c 1124 clr __zero_reg__ 98 000e 2F93 push r18 99 0010 3F93 push r19 100 0012 4F93 push r20 101 0014 5F93 push r21 102 0016 6F93 push r22 103 0018 7F93 push r23 104 001a 8F93 push r24 105 001c 9F93 push r25 106 001e AF93 push r26 107 0020 BF93 push r27 108 0022 EF93 push r30 109 0024 FF93 push r31 110 /* prologue: Signal */ 111 /* frame size = 0 */ 112 /* stack size = 16 */ 113 .L__stack_usage = 16 25:../../../atmel/oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[0]); 115 .LM1: 116 0026 8091 0000 lds r24,ou_file_buf 117 002a 9091 0000 lds r25,ou_file_buf+1 118 002e 0E94 0000 call serial_receive_isr 119 /* epilogue start */ 26:../../../atmel/oulib/include/oulib_serial_buffered.h **** } 121 .LM2: 122 0032 FF91 pop r31 123 0034 EF91 pop r30 124 0036 BF91 pop r27 125 0038 AF91 pop r26 126 003a 9F91 pop r25 127 003c 8F91 pop r24 128 003e 7F91 pop r23 129 0040 6F91 pop r22 130 0042 5F91 pop r21 131 0044 4F91 pop r20 132 0046 3F91 pop r19 133 0048 2F91 pop r18 134 004a 0F90 pop r0 135 004c 0BBE out 91-32,r0 136 004e 0F90 pop r0 137 0050 0FBE out __SREG__,r0 138 0052 0F90 pop r0 139 0054 1F90 pop __zero_reg__ 140 0056 1895 reti 142 .Lscope1: 144 .global __vector_36 146 __vector_36: 27:../../../atmel/oulib/include/oulib_serial_buffered.h **** ISR(USART1_RX_vect) { 148 .LM3: 149 .LFBB2: 150 0058 1F92 push __zero_reg__ 151 005a 0F92 push r0 152 005c 0FB6 in r0,__SREG__ 153 005e 0F92 push r0 154 0060 0BB6 in r0,91-32 155 0062 0F92 push r0 156 0064 1124 clr __zero_reg__ 157 0066 2F93 push r18 158 0068 3F93 push r19 159 006a 4F93 push r20 160 006c 5F93 push r21 161 006e 6F93 push r22 162 0070 7F93 push r23 163 0072 8F93 push r24 164 0074 9F93 push r25 165 0076 AF93 push r26 166 0078 BF93 push r27 167 007a EF93 push r30 168 007c FF93 push r31 169 /* prologue: Signal */ 170 /* frame size = 0 */ 171 /* stack size = 16 */ 172 .L__stack_usage = 16 28:../../../atmel/oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[1]); 174 .LM4: 175 007e 8091 0000 lds r24,ou_file_buf+2 176 0082 9091 0000 lds r25,ou_file_buf+2+1 177 0086 0E94 0000 call serial_receive_isr 178 /* epilogue start */ 29:../../../atmel/oulib/include/oulib_serial_buffered.h **** } 180 .LM5: 181 008a FF91 pop r31 182 008c EF91 pop r30 183 008e BF91 pop r27 184 0090 AF91 pop r26 185 0092 9F91 pop r25 186 0094 8F91 pop r24 187 0096 7F91 pop r23 188 0098 6F91 pop r22 189 009a 5F91 pop r21 190 009c 4F91 pop r20 191 009e 3F91 pop r19 192 00a0 2F91 pop r18 193 00a2 0F90 pop r0 194 00a4 0BBE out 91-32,r0 195 00a6 0F90 pop r0 196 00a8 0FBE out __SREG__,r0 197 00aa 0F90 pop r0 198 00ac 1F90 pop __zero_reg__ 199 00ae 1895 reti 201 .Lscope2: 203 .global __vector_51 205 __vector_51: 30:../../../atmel/oulib/include/oulib_serial_buffered.h **** 31:../../../atmel/oulib/include/oulib_serial_buffered.h **** ISR(USART2_RX_vect) { 207 .LM6: 208 .LFBB3: 209 00b0 1F92 push __zero_reg__ 210 00b2 0F92 push r0 211 00b4 0FB6 in r0,__SREG__ 212 00b6 0F92 push r0 213 00b8 0BB6 in r0,91-32 214 00ba 0F92 push r0 215 00bc 1124 clr __zero_reg__ 216 00be 2F93 push r18 217 00c0 3F93 push r19 218 00c2 4F93 push r20 219 00c4 5F93 push r21 220 00c6 6F93 push r22 221 00c8 7F93 push r23 222 00ca 8F93 push r24 223 00cc 9F93 push r25 224 00ce AF93 push r26 225 00d0 BF93 push r27 226 00d2 EF93 push r30 227 00d4 FF93 push r31 228 /* prologue: Signal */ 229 /* frame size = 0 */ 230 /* stack size = 16 */ 231 .L__stack_usage = 16 32:../../../atmel/oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[2]); 233 .LM7: 234 00d6 8091 0000 lds r24,ou_file_buf+4 235 00da 9091 0000 lds r25,ou_file_buf+4+1 236 00de 0E94 0000 call serial_receive_isr 237 /* epilogue start */ 33:../../../atmel/oulib/include/oulib_serial_buffered.h **** } 239 .LM8: 240 00e2 FF91 pop r31 241 00e4 EF91 pop r30 242 00e6 BF91 pop r27 243 00e8 AF91 pop r26 244 00ea 9F91 pop r25 245 00ec 8F91 pop r24 246 00ee 7F91 pop r23 247 00f0 6F91 pop r22 248 00f2 5F91 pop r21 249 00f4 4F91 pop r20 250 00f6 3F91 pop r19 251 00f8 2F91 pop r18 252 00fa 0F90 pop r0 253 00fc 0BBE out 91-32,r0 254 00fe 0F90 pop r0 255 0100 0FBE out __SREG__,r0 256 0102 0F90 pop r0 257 0104 1F90 pop __zero_reg__ 258 0106 1895 reti 260 .Lscope3: 262 .global __vector_54 264 __vector_54: 34:../../../atmel/oulib/include/oulib_serial_buffered.h **** 35:../../../atmel/oulib/include/oulib_serial_buffered.h **** ISR(USART3_RX_vect) { 266 .LM9: 267 .LFBB4: 268 0108 1F92 push __zero_reg__ 269 010a 0F92 push r0 270 010c 0FB6 in r0,__SREG__ 271 010e 0F92 push r0 272 0110 0BB6 in r0,91-32 273 0112 0F92 push r0 274 0114 1124 clr __zero_reg__ 275 0116 2F93 push r18 276 0118 3F93 push r19 277 011a 4F93 push r20 278 011c 5F93 push r21 279 011e 6F93 push r22 280 0120 7F93 push r23 281 0122 8F93 push r24 282 0124 9F93 push r25 283 0126 AF93 push r26 284 0128 BF93 push r27 285 012a EF93 push r30 286 012c FF93 push r31 287 /* prologue: Signal */ 288 /* frame size = 0 */ 289 /* stack size = 16 */ 290 .L__stack_usage = 16 36:../../../atmel/oulib/include/oulib_serial_buffered.h **** serial_receive_isr(ou_file_buf[3]); 292 .LM10: 293 012e 8091 0000 lds r24,ou_file_buf+6 294 0132 9091 0000 lds r25,ou_file_buf+6+1 295 0136 0E94 0000 call serial_receive_isr 296 /* epilogue start */ 37:../../../atmel/oulib/include/oulib_serial_buffered.h **** } 298 .LM11: 299 013a FF91 pop r31 300 013c EF91 pop r30 301 013e BF91 pop r27 302 0140 AF91 pop r26 303 0142 9F91 pop r25 304 0144 8F91 pop r24 305 0146 7F91 pop r23 306 0148 6F91 pop r22 307 014a 5F91 pop r21 308 014c 4F91 pop r20 309 014e 3F91 pop r19 310 0150 2F91 pop r18 311 0152 0F90 pop r0 312 0154 0BBE out 91-32,r0 313 0156 0F90 pop r0 314 0158 0FBE out __SREG__,r0 315 015a 0F90 pop r0 316 015c 1F90 pop __zero_reg__ 317 015e 1895 reti 319 .Lscope4: 321 .global __vector_26 323 __vector_26: 38:../../../atmel/oulib/include/oulib_serial_buffered.h **** ISR(USART0_UDRE_vect) { 325 .LM12: 326 .LFBB5: 327 0160 1F92 push __zero_reg__ 328 0162 0F92 push r0 329 0164 0FB6 in r0,__SREG__ 330 0166 0F92 push r0 331 0168 0BB6 in r0,91-32 332 016a 0F92 push r0 333 016c 1124 clr __zero_reg__ 334 016e 2F93 push r18 335 0170 3F93 push r19 336 0172 4F93 push r20 337 0174 5F93 push r21 338 0176 6F93 push r22 339 0178 7F93 push r23 340 017a 8F93 push r24 341 017c 9F93 push r25 342 017e AF93 push r26 343 0180 BF93 push r27 344 0182 EF93 push r30 345 0184 FF93 push r31 346 /* prologue: Signal */ 347 /* frame size = 0 */ 348 /* stack size = 16 */ 349 .L__stack_usage = 16 39:../../../atmel/oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[0]); 351 .LM13: 352 0186 8091 0000 lds r24,ou_file_buf 353 018a 9091 0000 lds r25,ou_file_buf+1 354 018e 0E94 0000 call serial_transmit_isr 355 /* epilogue start */ 40:../../../atmel/oulib/include/oulib_serial_buffered.h **** } 357 .LM14: 358 0192 FF91 pop r31 359 0194 EF91 pop r30 360 0196 BF91 pop r27 361 0198 AF91 pop r26 362 019a 9F91 pop r25 363 019c 8F91 pop r24 364 019e 7F91 pop r23 365 01a0 6F91 pop r22 366 01a2 5F91 pop r21 367 01a4 4F91 pop r20 368 01a6 3F91 pop r19 369 01a8 2F91 pop r18 370 01aa 0F90 pop r0 371 01ac 0BBE out 91-32,r0 372 01ae 0F90 pop r0 373 01b0 0FBE out __SREG__,r0 374 01b2 0F90 pop r0 375 01b4 1F90 pop __zero_reg__ 376 01b6 1895 reti 378 .Lscope5: 380 .global __vector_37 382 __vector_37: 41:../../../atmel/oulib/include/oulib_serial_buffered.h **** ISR(USART1_UDRE_vect) { 384 .LM15: 385 .LFBB6: 386 01b8 1F92 push __zero_reg__ 387 01ba 0F92 push r0 388 01bc 0FB6 in r0,__SREG__ 389 01be 0F92 push r0 390 01c0 0BB6 in r0,91-32 391 01c2 0F92 push r0 392 01c4 1124 clr __zero_reg__ 393 01c6 2F93 push r18 394 01c8 3F93 push r19 395 01ca 4F93 push r20 396 01cc 5F93 push r21 397 01ce 6F93 push r22 398 01d0 7F93 push r23 399 01d2 8F93 push r24 400 01d4 9F93 push r25 401 01d6 AF93 push r26 402 01d8 BF93 push r27 403 01da EF93 push r30 404 01dc FF93 push r31 405 /* prologue: Signal */ 406 /* frame size = 0 */ 407 /* stack size = 16 */ 408 .L__stack_usage = 16 42:../../../atmel/oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[1]); 410 .LM16: 411 01de 8091 0000 lds r24,ou_file_buf+2 412 01e2 9091 0000 lds r25,ou_file_buf+2+1 413 01e6 0E94 0000 call serial_transmit_isr 414 /* epilogue start */ 43:../../../atmel/oulib/include/oulib_serial_buffered.h **** } 416 .LM17: 417 01ea FF91 pop r31 418 01ec EF91 pop r30 419 01ee BF91 pop r27 420 01f0 AF91 pop r26 421 01f2 9F91 pop r25 422 01f4 8F91 pop r24 423 01f6 7F91 pop r23 424 01f8 6F91 pop r22 425 01fa 5F91 pop r21 426 01fc 4F91 pop r20 427 01fe 3F91 pop r19 428 0200 2F91 pop r18 429 0202 0F90 pop r0 430 0204 0BBE out 91-32,r0 431 0206 0F90 pop r0 432 0208 0FBE out __SREG__,r0 433 020a 0F90 pop r0 434 020c 1F90 pop __zero_reg__ 435 020e 1895 reti 437 .Lscope6: 439 .global __vector_52 441 __vector_52: 44:../../../atmel/oulib/include/oulib_serial_buffered.h **** ISR(USART2_UDRE_vect) { 443 .LM18: 444 .LFBB7: 445 0210 1F92 push __zero_reg__ 446 0212 0F92 push r0 447 0214 0FB6 in r0,__SREG__ 448 0216 0F92 push r0 449 0218 0BB6 in r0,91-32 450 021a 0F92 push r0 451 021c 1124 clr __zero_reg__ 452 021e 2F93 push r18 453 0220 3F93 push r19 454 0222 4F93 push r20 455 0224 5F93 push r21 456 0226 6F93 push r22 457 0228 7F93 push r23 458 022a 8F93 push r24 459 022c 9F93 push r25 460 022e AF93 push r26 461 0230 BF93 push r27 462 0232 EF93 push r30 463 0234 FF93 push r31 464 /* prologue: Signal */ 465 /* frame size = 0 */ 466 /* stack size = 16 */ 467 .L__stack_usage = 16 45:../../../atmel/oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[2]); 469 .LM19: 470 0236 8091 0000 lds r24,ou_file_buf+4 471 023a 9091 0000 lds r25,ou_file_buf+4+1 472 023e 0E94 0000 call serial_transmit_isr 473 /* epilogue start */ 46:../../../atmel/oulib/include/oulib_serial_buffered.h **** } 475 .LM20: 476 0242 FF91 pop r31 477 0244 EF91 pop r30 478 0246 BF91 pop r27 479 0248 AF91 pop r26 480 024a 9F91 pop r25 481 024c 8F91 pop r24 482 024e 7F91 pop r23 483 0250 6F91 pop r22 484 0252 5F91 pop r21 485 0254 4F91 pop r20 486 0256 3F91 pop r19 487 0258 2F91 pop r18 488 025a 0F90 pop r0 489 025c 0BBE out 91-32,r0 490 025e 0F90 pop r0 491 0260 0FBE out __SREG__,r0 492 0262 0F90 pop r0 493 0264 1F90 pop __zero_reg__ 494 0266 1895 reti 496 .Lscope7: 498 .global __vector_55 500 __vector_55: 47:../../../atmel/oulib/include/oulib_serial_buffered.h **** ISR(USART3_UDRE_vect) { 502 .LM21: 503 .LFBB8: 504 0268 1F92 push __zero_reg__ 505 026a 0F92 push r0 506 026c 0FB6 in r0,__SREG__ 507 026e 0F92 push r0 508 0270 0BB6 in r0,91-32 509 0272 0F92 push r0 510 0274 1124 clr __zero_reg__ 511 0276 2F93 push r18 512 0278 3F93 push r19 513 027a 4F93 push r20 514 027c 5F93 push r21 515 027e 6F93 push r22 516 0280 7F93 push r23 517 0282 8F93 push r24 518 0284 9F93 push r25 519 0286 AF93 push r26 520 0288 BF93 push r27 521 028a EF93 push r30 522 028c FF93 push r31 523 /* prologue: Signal */ 524 /* frame size = 0 */ 525 /* stack size = 16 */ 526 .L__stack_usage = 16 48:../../../atmel/oulib/include/oulib_serial_buffered.h **** serial_transmit_isr(ou_file_buf[3]); 528 .LM22: 529 028e 8091 0000 lds r24,ou_file_buf+6 530 0292 9091 0000 lds r25,ou_file_buf+6+1 531 0296 0E94 0000 call serial_transmit_isr 532 /* epilogue start */ 49:../../../atmel/oulib/include/oulib_serial_buffered.h **** } 534 .LM23: 535 029a FF91 pop r31 536 029c EF91 pop r30 537 029e BF91 pop r27 538 02a0 AF91 pop r26 539 02a2 9F91 pop r25 540 02a4 8F91 pop r24 541 02a6 7F91 pop r23 542 02a8 6F91 pop r22 543 02aa 5F91 pop r21 544 02ac 4F91 pop r20 545 02ae 3F91 pop r19 546 02b0 2F91 pop r18 547 02b2 0F90 pop r0 548 02b4 0BBE out 91-32,r0 549 02b6 0F90 pop r0 550 02b8 0FBE out __SREG__,r0 551 02ba 0F90 pop r0 552 02bc 1F90 pop __zero_reg__ 553 02be 1895 reti 555 .Lscope8: 556 .data 557 .LC0: 558 0000 6865 6C6C .string "hello world\n\r" 558 6F20 776F 558 726C 640A 558 0D00 559 .LC1: 560 000e 496E 6974 .string "Initialize: %d\n\r" 560 6961 6C69 560 7A65 3A20 560 2564 0A0D 560 00 561 .LC2: 562 001f 4164 6472 .string "Address: %x\n\r" 562 6573 733A 562 2025 780A 562 0D00 563 .LC3: 564 002d 436F 6D70 .string "Compass address: %x\n\r" 564 6173 7320 564 6164 6472 564 6573 733A 564 2025 780A 565 .LC4: 566 0043 2564 3A20 .string "%d: %06d %06d %06d\n\r" 566 2530 3664 566 2025 3036 566 6420 2530 566 3664 0A0D 567 .LC5: 568 0058 466C 7573 .string "Flushed %d bytes\n\r" 568 6865 6420 568 2564 2062 568 7974 6573 568 0A0D 00 569 .text 571 .global main 573 main: 575 .Ltext2: 1:mpu9150.c **** #include 2:mpu9150.c **** #include "mpu9150.h" 3:mpu9150.c **** 4:mpu9150.c **** // Load the ISRs 5:mpu9150.c **** #include "oulib_serial_buffered.h" 6:mpu9150.c **** 7:mpu9150.c **** /************************* 8:mpu9150.c **** * USB Serial Connection * 9:mpu9150.c **** *************************/ 10:mpu9150.c **** #define SERIAL_PORT 0 11:mpu9150.c **** #define SERIAL_BAUD 38400 12:mpu9150.c **** #define SERIAL_BUFFER_SIZE 40 13:mpu9150.c **** 14:mpu9150.c **** /////////////////////////////////////////////////////////////////////////// 15:mpu9150.c **** // File pointer for USB connection 16:mpu9150.c **** FILE* fp0 = NULL; 17:mpu9150.c **** 18:mpu9150.c **** /////////////////////////////////////////////////////////////////////////// 19:mpu9150.c **** 20:mpu9150.c **** /////////////////////////////////////////////////////////////////////////// 21:mpu9150.c **** int main(void) 22:mpu9150.c **** { 577 .LM24: 578 .LFBB9: 579 02c0 8F92 push r8 580 02c2 9F92 push r9 581 02c4 AF92 push r10 582 02c6 BF92 push r11 583 02c8 CF92 push r12 584 02ca DF92 push r13 585 02cc EF92 push r14 586 02ce FF92 push r15 587 02d0 0F93 push r16 588 02d2 1F93 push r17 589 02d4 DF93 push r29 590 02d6 CF93 push r28 591 02d8 CDB7 in r28,__SP_L__ 592 02da DEB7 in r29,__SP_H__ 593 02dc 6297 sbiw r28,18 594 02de 0FB6 in __tmp_reg__,__SREG__ 595 02e0 F894 cli 596 02e2 DEBF out __SP_H__,r29 597 02e4 0FBE out __SREG__,__tmp_reg__ 598 02e6 CDBF out __SP_L__,r28 599 /* prologue: function */ 600 /* frame size = 18 */ 601 /* stack size = 30 */ 602 .L__stack_usage = 30 23:mpu9150.c **** char c; 24:mpu9150.c **** uint8_t i; 25:mpu9150.c **** 26:mpu9150.c **** DDRD = 0x0; 604 .LM25: 605 02e8 1AB8 out 42-32,__zero_reg__ 27:mpu9150.c **** PORTD = 0x0; 607 .LM26: 608 02ea 1BB8 out 43-32,__zero_reg__ 28:mpu9150.c **** 29:mpu9150.c **** // LED on the Arduino 30:mpu9150.c **** DDRB = 0x80; 610 .LM27: 611 02ec 80E8 ldi r24,lo8(-128) 612 02ee 84B9 out 36-32,r24 31:mpu9150.c **** 32:mpu9150.c **** // Flash the LED a few times 33:mpu9150.c **** PORTB ^= 0x80; 614 .LM28: 615 02f0 85B1 in r24,37-32 616 02f2 8058 subi r24,lo8(-(-128)) 617 02f4 85B9 out 37-32,r24 34:mpu9150.c **** delay_ms(100); 619 .LM29: 620 02f6 84E6 ldi r24,lo8(100) 621 02f8 90E0 ldi r25,hi8(100) 622 02fa 0E94 0000 call delay_ms 35:mpu9150.c **** PORTB ^= 0x80; 624 .LM30: 625 02fe 85B1 in r24,37-32 626 0300 8058 subi r24,lo8(-(-128)) 627 0302 85B9 out 37-32,r24 36:mpu9150.c **** delay_ms(100); 629 .LM31: 630 0304 84E6 ldi r24,lo8(100) 631 0306 90E0 ldi r25,hi8(100) 632 0308 0E94 0000 call delay_ms 37:mpu9150.c **** PORTB ^= 0x80; 634 .LM32: 635 030c 85B1 in r24,37-32 636 030e 8058 subi r24,lo8(-(-128)) 637 0310 85B9 out 37-32,r24 38:mpu9150.c **** delay_ms(100); 639 .LM33: 640 0312 84E6 ldi r24,lo8(100) 641 0314 90E0 ldi r25,hi8(100) 642 0316 0E94 0000 call delay_ms 39:mpu9150.c **** PORTB ^= 0x80; 644 .LM34: 645 031a 85B1 in r24,37-32 646 031c 8058 subi r24,lo8(-(-128)) 647 031e 85B9 out 37-32,r24 40:mpu9150.c **** delay_ms(500); 649 .LM35: 650 0320 84EF ldi r24,lo8(500) 651 0322 91E0 ldi r25,hi8(500) 652 0324 0E94 0000 call delay_ms 41:mpu9150.c **** 42:mpu9150.c **** // Initialize the serial port connected to the USB cable 43:mpu9150.c **** fp0 = serial_init_buffered(SERIAL_PORT, SERIAL_BAUD, SERIAL_BUFFER_SIZE, SERIAL_BUFFER_SIZE); 654 .LM36: 655 0328 80E0 ldi r24,lo8(0) 656 032a 40E0 ldi r20,lo8(38400) 657 032c 56E9 ldi r21,hi8(38400) 658 032e 60E0 ldi r22,hlo8(38400) 659 0330 70E0 ldi r23,hhi8(38400) 660 0332 28E2 ldi r18,lo8(40) 661 0334 08E2 ldi r16,lo8(40) 662 0336 0E94 0000 call serial_init_buffered 663 033a 9093 0000 sts fp0+1,r25 664 033e 8093 0000 sts fp0,r24 44:mpu9150.c **** 45:mpu9150.c **** // Initialize all interrupts 46:mpu9150.c **** sei(); 666 .LM37: 667 /* #APP */ 668 ; 46 "mpu9150.c" 1 669 0342 7894 sei 670 ; 0 "" 2 47:mpu9150.c **** 48:mpu9150.c **** // Say 'hello' 49:mpu9150.c **** fprintf(fp0, "hello world\n\r"); 672 .LM38: 673 /* #NOAPP */ 674 0344 6091 0000 lds r22,fp0 675 0348 7091 0000 lds r23,fp0+1 676 034c 80E0 ldi r24,lo8(.LC0) 677 034e 90E0 ldi r25,hi8(.LC0) 678 0350 0E94 0000 call fputs 50:mpu9150.c **** int8_t ret, ret2; 51:mpu9150.c **** 52:mpu9150.c **** //ret = imu_init(0, fp0); 53:mpu9150.c **** ret = imu_init(0); 680 .LM39: 681 0354 80E0 ldi r24,lo8(0) 682 0356 0E94 0000 call imu_init 54:mpu9150.c **** 55:mpu9150.c **** fprintf(fp0, "Initialize: %d\n\r", ret); 684 .LM40: 685 035a 00D0 rcall . 686 035c 00D0 rcall . 687 035e EDB7 in r30,__SP_L__ 688 0360 FEB7 in r31,__SP_H__ 689 0362 3196 adiw r30,1 690 0364 2091 0000 lds r18,fp0 691 0368 3091 0000 lds r19,fp0+1 692 036c ADB7 in r26,__SP_L__ 693 036e BEB7 in r27,__SP_H__ 694 0370 1296 adiw r26,1+1 695 0372 3C93 st X,r19 696 0374 2E93 st -X,r18 697 0376 1197 sbiw r26,1 698 0378 20E0 ldi r18,lo8(.LC1) 699 037a 30E0 ldi r19,hi8(.LC1) 700 037c 3383 std Z+3,r19 701 037e 2283 std Z+2,r18 702 0380 9927 clr r25 703 0382 87FD sbrc r24,7 704 0384 9095 com r25 705 0386 9583 std Z+5,r25 706 0388 8483 std Z+4,r24 707 038a 0E94 0000 call fprintf 56:mpu9150.c **** 57:mpu9150.c **** fprintf(fp0, "Address: %x\n\r", (int) imu_get_address() >> 2); 709 .LM41: 710 038e 0091 0000 lds r16,fp0 711 0392 1091 0000 lds r17,fp0+1 712 0396 2DB7 in r18,__SP_L__ 713 0398 3EB7 in r19,__SP_H__ 714 039a 2A5F subi r18,lo8(-(6)) 715 039c 3F4F sbci r19,hi8(-(6)) 716 039e 0FB6 in __tmp_reg__,__SREG__ 717 03a0 F894 cli 718 03a2 3EBF out __SP_H__,r19 719 03a4 0FBE out __SREG__,__tmp_reg__ 720 03a6 2DBF out __SP_L__,r18 721 03a8 0E94 0000 call imu_get_address 722 03ac 00D0 rcall . 723 03ae 00D0 rcall . 724 03b0 EDB7 in r30,__SP_L__ 725 03b2 FEB7 in r31,__SP_H__ 726 03b4 3196 adiw r30,1 727 03b6 ADB7 in r26,__SP_L__ 728 03b8 BEB7 in r27,__SP_H__ 729 03ba 1296 adiw r26,1+1 730 03bc 1C93 st X,r17 731 03be 0E93 st -X,r16 732 03c0 1197 sbiw r26,1 733 03c2 20E0 ldi r18,lo8(.LC2) 734 03c4 30E0 ldi r19,hi8(.LC2) 735 03c6 3383 std Z+3,r19 736 03c8 2283 std Z+2,r18 737 03ca 8695 lsr r24 738 03cc 8695 lsr r24 739 03ce 8483 std Z+4,r24 740 03d0 1582 std Z+5,__zero_reg__ 741 03d2 0E94 0000 call fprintf 58:mpu9150.c **** fprintf(fp0, "Compass address: %x\n\r", (int) imu_get_address_compass() >> 2); 743 .LM42: 744 03d6 0091 0000 lds r16,fp0 745 03da 1091 0000 lds r17,fp0+1 746 03de 2DB7 in r18,__SP_L__ 747 03e0 3EB7 in r19,__SP_H__ 748 03e2 2A5F subi r18,lo8(-(6)) 749 03e4 3F4F sbci r19,hi8(-(6)) 750 03e6 0FB6 in __tmp_reg__,__SREG__ 751 03e8 F894 cli 752 03ea 3EBF out __SP_H__,r19 753 03ec 0FBE out __SREG__,__tmp_reg__ 754 03ee 2DBF out __SP_L__,r18 755 03f0 0E94 0000 call imu_get_address_compass 756 03f4 00D0 rcall . 757 03f6 00D0 rcall . 758 03f8 EDB7 in r30,__SP_L__ 759 03fa FEB7 in r31,__SP_H__ 760 03fc 3196 adiw r30,1 761 03fe ADB7 in r26,__SP_L__ 762 0400 BEB7 in r27,__SP_H__ 763 0402 1296 adiw r26,1+1 764 0404 1C93 st X,r17 765 0406 0E93 st -X,r16 766 0408 1197 sbiw r26,1 767 040a 20E0 ldi r18,lo8(.LC3) 768 040c 30E0 ldi r19,hi8(.LC3) 769 040e 3383 std Z+3,r19 770 0410 2283 std Z+2,r18 771 0412 8695 lsr r24 772 0414 8695 lsr r24 773 0416 8483 std Z+4,r24 774 0418 1582 std Z+5,__zero_reg__ 775 041a 0E94 0000 call fprintf 59:mpu9150.c **** check_registers(fp0); 777 .LM43: 778 041e 2DB7 in r18,__SP_L__ 779 0420 3EB7 in r19,__SP_H__ 780 0422 2A5F subi r18,lo8(-(6)) 781 0424 3F4F sbci r19,hi8(-(6)) 782 0426 0FB6 in __tmp_reg__,__SREG__ 783 0428 F894 cli 784 042a 3EBF out __SP_H__,r19 785 042c 0FBE out __SREG__,__tmp_reg__ 786 042e 2DBF out __SP_L__,r18 787 0430 8091 0000 lds r24,fp0 788 0434 9091 0000 lds r25,fp0+1 789 0438 0E94 0000 call check_registers 60:mpu9150.c **** 61:mpu9150.c **** int16_t gyro[3]; 62:mpu9150.c **** int16_t mag[3]; 63:mpu9150.c **** int16_t accel[3]; 64:mpu9150.c **** 65:mpu9150.c **** while(1) { 66:mpu9150.c **** if(serial_buffered_input_waiting(fp0)){ 67:mpu9150.c **** c = fgetc(fp0); 68:mpu9150.c **** switch(c) 69:mpu9150.c **** { 70:mpu9150.c **** case 'a': 71:mpu9150.c **** // Read accels 72:mpu9150.c **** ret = imu_read_accel(accel); 73:mpu9150.c **** fprintf(fp0, "%d: %06d %06d %06d\n\r", ret, accel[0], accel[1], accel[2]); 74:mpu9150.c **** if((ret2 = imu_buffer_check()) > 0) 75:mpu9150.c **** fprintf(fp0, "Flushed %d bytes\n\r", ret2); 76:mpu9150.c **** break; 77:mpu9150.c **** case 'g': 78:mpu9150.c **** // Read gyros 79:mpu9150.c **** ret = imu_read_gyro(gyro); 791 .LM44: 792 043c 6E01 movw r12,r28 793 043e 0894 sec 794 0440 C11C adc r12,__zero_reg__ 795 0442 D11C adc r13,__zero_reg__ 80:mpu9150.c **** fprintf(fp0, "%d: %06d %06d %06d\n\r", ret, gyro[0], gyro[1], gyro[2]); 797 .LM45: 798 0444 20E0 ldi r18,lo8(.LC4) 799 0446 E22E mov r14,r18 800 0448 20E0 ldi r18,hi8(.LC4) 801 044a F22E mov r15,r18 81:mpu9150.c **** if((ret2 = imu_buffer_check()) > 0) 82:mpu9150.c **** fprintf(fp0, "Flushed %d bytes\n\r", ret2); 803 .LM46: 804 044c 00E0 ldi r16,lo8(.LC5) 805 044e 10E0 ldi r17,hi8(.LC5) 83:mpu9150.c **** break; 84:mpu9150.c **** case 'm': 85:mpu9150.c **** // Read gyros 86:mpu9150.c **** //ret = imu_read_magnetometer(mag, fp0); 87:mpu9150.c **** ret = imu_read_magnetometer(mag); 807 .LM47: 808 0450 97E0 ldi r25,lo8(7) 809 0452 A92E mov r10,r25 810 0454 B12C mov r11,__zero_reg__ 811 0456 AC0E add r10,r28 812 0458 BD1E adc r11,r29 72:mpu9150.c **** ret = imu_read_accel(accel); 814 .LM48: 815 045a 8DE0 ldi r24,lo8(13) 816 045c 882E mov r8,r24 817 045e 912C mov r9,__zero_reg__ 818 0460 8C0E add r8,r28 819 0462 9D1E adc r9,r29 820 .L21: 66:mpu9150.c **** if(serial_buffered_input_waiting(fp0)){ 822 .LM49: 823 0464 8091 0000 lds r24,fp0 824 0468 9091 0000 lds r25,fp0+1 825 046c 0E94 0000 call serial_buffered_input_waiting 826 0470 8823 tst r24 827 0472 01F0 breq .L21 67:mpu9150.c **** c = fgetc(fp0); 829 .LM50: 830 0474 8091 0000 lds r24,fp0 831 0478 9091 0000 lds r25,fp0+1 832 047c 0E94 0000 call fgetc 68:mpu9150.c **** switch(c) 834 .LM51: 835 0480 8736 cpi r24,lo8(103) 836 0482 01F0 breq .L14 837 0484 8836 cpi r24,lo8(104) 838 0486 00F4 brsh .L17 839 0488 8136 cpi r24,lo8(97) 840 048a 01F4 brne .L21 841 048c 00C0 rjmp .L26 842 .L17: 843 048e 8D36 cpi r24,lo8(109) 844 0490 01F4 brne .+2 845 0492 00C0 rjmp .L15 846 0494 8337 cpi r24,lo8(115) 847 0496 01F4 brne .L21 848 0498 00C0 rjmp .L27 849 .L26: 72:mpu9150.c **** ret = imu_read_accel(accel); 851 .LM52: 852 049a C401 movw r24,r8 853 049c 0E94 0000 call imu_read_accel 73:mpu9150.c **** fprintf(fp0, "%d: %06d %06d %06d\n\r", ret, accel[0], accel[1], accel[2]); 855 .LM53: 856 04a0 ADB7 in r26,__SP_L__ 857 04a2 BEB7 in r27,__SP_H__ 858 04a4 1C97 sbiw r26,12 859 04a6 0FB6 in __tmp_reg__,__SREG__ 860 04a8 F894 cli 861 04aa BEBF out __SP_H__,r27 862 04ac 0FBE out __SREG__,__tmp_reg__ 863 04ae ADBF out __SP_L__,r26 864 04b0 EDB7 in r30,__SP_L__ 865 04b2 FEB7 in r31,__SP_H__ 866 04b4 3196 adiw r30,1 867 04b6 2091 0000 lds r18,fp0 868 04ba 3091 0000 lds r19,fp0+1 869 04be 1296 adiw r26,1+1 870 04c0 3C93 st X,r19 871 04c2 2E93 st -X,r18 872 04c4 1197 sbiw r26,1 873 04c6 F382 std Z+3,r15 874 04c8 E282 std Z+2,r14 875 04ca 9927 clr r25 876 04cc 87FD sbrc r24,7 877 04ce 9095 com r25 878 04d0 9583 std Z+5,r25 879 04d2 8483 std Z+4,r24 880 04d4 8D85 ldd r24,Y+13 881 04d6 9E85 ldd r25,Y+14 882 04d8 9783 std Z+7,r25 883 04da 8683 std Z+6,r24 884 04dc 8F85 ldd r24,Y+15 885 04de 9889 ldd r25,Y+16 886 04e0 9187 std Z+9,r25 887 04e2 8087 std Z+8,r24 888 04e4 8989 ldd r24,Y+17 889 04e6 9A89 ldd r25,Y+18 890 04e8 00C0 rjmp .L24 891 .L14: 79:mpu9150.c **** ret = imu_read_gyro(gyro); 893 .LM54: 894 04ea C601 movw r24,r12 895 04ec 0E94 0000 call imu_read_gyro 80:mpu9150.c **** fprintf(fp0, "%d: %06d %06d %06d\n\r", ret, gyro[0], gyro[1], gyro[2]); 897 .LM55: 898 04f0 ADB7 in r26,__SP_L__ 899 04f2 BEB7 in r27,__SP_H__ 900 04f4 1C97 sbiw r26,12 901 04f6 0FB6 in __tmp_reg__,__SREG__ 902 04f8 F894 cli 903 04fa BEBF out __SP_H__,r27 904 04fc 0FBE out __SREG__,__tmp_reg__ 905 04fe ADBF out __SP_L__,r26 906 0500 EDB7 in r30,__SP_L__ 907 0502 FEB7 in r31,__SP_H__ 908 0504 3196 adiw r30,1 909 0506 2091 0000 lds r18,fp0 910 050a 3091 0000 lds r19,fp0+1 911 050e 1296 adiw r26,1+1 912 0510 3C93 st X,r19 913 0512 2E93 st -X,r18 914 0514 1197 sbiw r26,1 915 0516 F382 std Z+3,r15 916 0518 E282 std Z+2,r14 917 051a 9927 clr r25 918 051c 87FD sbrc r24,7 919 051e 9095 com r25 920 0520 9583 std Z+5,r25 921 0522 8483 std Z+4,r24 922 0524 8981 ldd r24,Y+1 923 0526 9A81 ldd r25,Y+2 924 0528 9783 std Z+7,r25 925 052a 8683 std Z+6,r24 926 052c 8B81 ldd r24,Y+3 927 052e 9C81 ldd r25,Y+4 928 0530 9187 std Z+9,r25 929 0532 8087 std Z+8,r24 930 0534 8D81 ldd r24,Y+5 931 0536 9E81 ldd r25,Y+6 932 0538 00C0 rjmp .L24 933 .L15: 935 .LM56: 936 053a C501 movw r24,r10 937 053c 0E94 0000 call imu_read_magnetometer 88:mpu9150.c **** 89:mpu9150.c **** fprintf(fp0, "%d: %06d %06d %06d\n\r", ret, mag[0], mag[1], mag[2]); 939 .LM57: 940 0540 ADB7 in r26,__SP_L__ 941 0542 BEB7 in r27,__SP_H__ 942 0544 1C97 sbiw r26,12 943 0546 0FB6 in __tmp_reg__,__SREG__ 944 0548 F894 cli 945 054a BEBF out __SP_H__,r27 946 054c 0FBE out __SREG__,__tmp_reg__ 947 054e ADBF out __SP_L__,r26 948 0550 EDB7 in r30,__SP_L__ 949 0552 FEB7 in r31,__SP_H__ 950 0554 3196 adiw r30,1 951 0556 2091 0000 lds r18,fp0 952 055a 3091 0000 lds r19,fp0+1 953 055e 1296 adiw r26,1+1 954 0560 3C93 st X,r19 955 0562 2E93 st -X,r18 956 0564 1197 sbiw r26,1 957 0566 F382 std Z+3,r15 958 0568 E282 std Z+2,r14 959 056a 9927 clr r25 960 056c 87FD sbrc r24,7 961 056e 9095 com r25 962 0570 9583 std Z+5,r25 963 0572 8483 std Z+4,r24 964 0574 8F81 ldd r24,Y+7 965 0576 9885 ldd r25,Y+8 966 0578 9783 std Z+7,r25 967 057a 8683 std Z+6,r24 968 057c 8985 ldd r24,Y+9 969 057e 9A85 ldd r25,Y+10 970 0580 9187 std Z+9,r25 971 0582 8087 std Z+8,r24 972 0584 8B85 ldd r24,Y+11 973 0586 9C85 ldd r25,Y+12 974 .L24: 975 0588 9387 std Z+11,r25 976 058a 8287 std Z+10,r24 977 058c 0E94 0000 call fprintf 90:mpu9150.c **** if((ret2 = imu_buffer_check()) > 0) 979 .LM58: 980 0590 2DB7 in r18,__SP_L__ 981 0592 3EB7 in r19,__SP_H__ 982 0594 245F subi r18,lo8(-(12)) 983 0596 3F4F sbci r19,hi8(-(12)) 984 0598 0FB6 in __tmp_reg__,__SREG__ 985 059a F894 cli 986 059c 3EBF out __SP_H__,r19 987 059e 0FBE out __SREG__,__tmp_reg__ 988 05a0 2DBF out __SP_L__,r18 989 05a2 0E94 0000 call imu_buffer_check 990 05a6 1816 cp __zero_reg__,r24 991 05a8 04F0 brlt .+2 992 05aa 00C0 rjmp .L21 91:mpu9150.c **** fprintf(fp0, "Flushed %d bytes\n\r", ret2); 994 .LM59: 995 05ac 00D0 rcall . 996 05ae 00D0 rcall . 997 05b0 EDB7 in r30,__SP_L__ 998 05b2 FEB7 in r31,__SP_H__ 999 05b4 3196 adiw r30,1 1000 05b6 2091 0000 lds r18,fp0 1001 05ba 3091 0000 lds r19,fp0+1 1002 05be ADB7 in r26,__SP_L__ 1003 05c0 BEB7 in r27,__SP_H__ 1004 05c2 1296 adiw r26,1+1 1005 05c4 3C93 st X,r19 1006 05c6 2E93 st -X,r18 1007 05c8 1197 sbiw r26,1 1008 05ca 1383 std Z+3,r17 1009 05cc 0283 std Z+2,r16 1010 05ce 9927 clr r25 1011 05d0 87FD sbrc r24,7 1012 05d2 9095 com r25 1013 05d4 9583 std Z+5,r25 1014 05d6 8483 std Z+4,r24 1015 05d8 0E94 0000 call fprintf 1016 05dc 2DB7 in r18,__SP_L__ 1017 05de 3EB7 in r19,__SP_H__ 1018 05e0 2A5F subi r18,lo8(-(6)) 1019 05e2 3F4F sbci r19,hi8(-(6)) 1020 05e4 0FB6 in __tmp_reg__,__SREG__ 1021 05e6 F894 cli 1022 05e8 3EBF out __SP_H__,r19 1023 05ea 0FBE out __SREG__,__tmp_reg__ 1024 05ec 2DBF out __SP_L__,r18 1025 05ee 00C0 rjmp .L21 1026 .L27: 92:mpu9150.c **** break; 93:mpu9150.c **** case's': 94:mpu9150.c **** imu_check_bus(fp0); 1028 .LM60: 1029 05f0 8091 0000 lds r24,fp0 1030 05f4 9091 0000 lds r25,fp0+1 1031 05f8 0E94 0000 call imu_check_bus 1032 05fc 00C0 rjmp .L21 1039 .Lscope9: 1040 .global ou_file_buf 1041 .global ou_file_buf 1042 .section .bss 1045 ou_file_buf: 1046 0000 0000 0000 .skip 8,0 1046 0000 0000 1047 .global fp0 1048 .global fp0 1051 fp0: 1052 0008 0000 .skip 2,0 1055 .text 1057 .Letext0: 1058 .global __do_copy_data 1059 .global __do_clear_bss DEFINED SYMBOLS *ABS*:0000000000000000 mpu9150.c /tmp/cckRSHps.s:2 *ABS*:000000000000003f __SREG__ /tmp/cckRSHps.s:3 *ABS*:000000000000003e __SP_H__ /tmp/cckRSHps.s:4 *ABS*:000000000000003d __SP_L__ /tmp/cckRSHps.s:5 *ABS*:0000000000000034 __CCP__ /tmp/cckRSHps.s:6 *ABS*:0000000000000000 __tmp_reg__ /tmp/cckRSHps.s:7 *ABS*:0000000000000001 __zero_reg__ /tmp/cckRSHps.s:85 .text:0000000000000000 __vector_25 /tmp/cckRSHps.s:1045 .bss:0000000000000000 ou_file_buf /tmp/cckRSHps.s:146 .text:0000000000000058 __vector_36 /tmp/cckRSHps.s:205 .text:00000000000000b0 __vector_51 /tmp/cckRSHps.s:264 .text:0000000000000108 __vector_54 /tmp/cckRSHps.s:323 .text:0000000000000160 __vector_26 /tmp/cckRSHps.s:382 .text:00000000000001b8 __vector_37 /tmp/cckRSHps.s:441 .text:0000000000000210 __vector_52 /tmp/cckRSHps.s:500 .text:0000000000000268 __vector_55 /tmp/cckRSHps.s:573 .text:00000000000002c0 main /tmp/cckRSHps.s:1051 .bss:0000000000000008 fp0 UNDEFINED SYMBOLS serial_receive_isr serial_transmit_isr delay_ms serial_init_buffered fputs imu_init fprintf imu_get_address imu_get_address_compass check_registers serial_buffered_input_waiting fgetc imu_read_accel imu_read_gyro imu_read_magnetometer imu_buffer_check imu_check_bus __do_copy_data __do_clear_bss