diff --git a/Mainboard/Mainboard.atsuo b/Mainboard/Mainboard.atsuo index b7d3e5d..cd93d35 100644 Binary files a/Mainboard/Mainboard.atsuo and b/Mainboard/Mainboard.atsuo differ diff --git a/Mainboard/Mainboard/Can.cpp b/Mainboard/Mainboard/Can.cpp index dbb32a1..5f12a62 100644 --- a/Mainboard/Mainboard/Can.cpp +++ b/Mainboard/Mainboard/Can.cpp @@ -22,15 +22,25 @@ #define CANP_RST PIND6 Can::Can() { - Led(0).color(Led::GREEN); - _delay_ms(100); - Led(0).color(Led::BLACK); - _delay_ms(100); + _delay_ms(10); init_pin(); init_spi(); init_can(); } +uint8_t Can::spi_putc( uint8_t data ) { + // Sendet ein Byte + SPDR = data; + + // Wartet bis Byte gesendet wurde + Led(0).color(Led::MAGENTA); + loop_until_bit_is_set(SPSR, SPIF); + //_delay_us(100); + Led(0).color(Led::BLACK); + + return SPDR; +} + void Can::init_pin() { //SPI Pins CANDDR_SPI |= (1<: 0: 0c 94 3b 00 jmp 0x76 ; 0x76 <__ctors_end> - 4: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 8: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - c: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 10: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 14: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 18: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 1c: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 20: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 24: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 28: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 2c: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 30: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 34: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 38: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 3c: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 40: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 44: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 48: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 4c: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 50: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 54: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 58: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 5c: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 60: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 64: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 68: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 6c: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> - 70: 0c 94 58 00 jmp 0xb0 ; 0xb0 <__bad_interrupt> + 4: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 8: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + c: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 10: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 14: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 18: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 1c: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 20: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 24: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 28: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 2c: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 30: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 34: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 38: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 3c: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 40: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 44: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 48: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 4c: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 50: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 54: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 58: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 5c: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 60: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 64: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 68: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 6c: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> + 70: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__bad_interrupt> 00000074 <__ctors_start>: - 74: d4 01 movw r26, r8 + 74: 4b 02 muls r20, r27 00000076 <__ctors_end>: 76: 11 24 eor r1, r1 @@ -76,660 +76,960 @@ Disassembly of section .text: 7e: de bf out 0x3e, r29 ; 62 80: cd bf out 0x3d, r28 ; 61 -00000082 <__do_clear_bss>: - 82: 21 e0 ldi r18, 0x01 ; 1 +00000082 <__do_copy_data>: + 82: 11 e0 ldi r17, 0x01 ; 1 84: a0 e0 ldi r26, 0x00 ; 0 86: b1 e0 ldi r27, 0x01 ; 1 - 88: 01 c0 rjmp .+2 ; 0x8c <.do_clear_bss_start> + 88: ea e1 ldi r30, 0x1A ; 26 + 8a: f5 e0 ldi r31, 0x05 ; 5 + 8c: 02 c0 rjmp .+4 ; 0x92 <__do_copy_data+0x10> + 8e: 05 90 lpm r0, Z+ + 90: 0d 92 st X+, r0 + 92: a6 30 cpi r26, 0x06 ; 6 + 94: b1 07 cpc r27, r17 + 96: d9 f7 brne .-10 ; 0x8e <__do_copy_data+0xc> -0000008a <.do_clear_bss_loop>: - 8a: 1d 92 st X+, r1 +00000098 <__do_clear_bss>: + 98: 21 e0 ldi r18, 0x01 ; 1 + 9a: a6 e0 ldi r26, 0x06 ; 6 + 9c: b1 e0 ldi r27, 0x01 ; 1 + 9e: 01 c0 rjmp .+2 ; 0xa2 <.do_clear_bss_start> -0000008c <.do_clear_bss_start>: - 8c: a2 30 cpi r26, 0x02 ; 2 - 8e: b2 07 cpc r27, r18 - 90: e1 f7 brne .-8 ; 0x8a <.do_clear_bss_loop> +000000a0 <.do_clear_bss_loop>: + a0: 1d 92 st X+, r1 -00000092 <__do_global_ctors>: - 92: 10 e0 ldi r17, 0x00 ; 0 - 94: c6 e7 ldi r28, 0x76 ; 118 - 96: d0 e0 ldi r29, 0x00 ; 0 - 98: 04 c0 rjmp .+8 ; 0xa2 <__do_global_ctors+0x10> - 9a: 22 97 sbiw r28, 0x02 ; 2 - 9c: fe 01 movw r30, r28 - 9e: 0e 94 df 01 call 0x3be ; 0x3be <__tablejump__> - a2: c4 37 cpi r28, 0x74 ; 116 - a4: d1 07 cpc r29, r17 - a6: c9 f7 brne .-14 ; 0x9a <__do_global_ctors+0x8> - a8: 0e 94 ce 01 call 0x39c ; 0x39c
- ac: 0c 94 e3 01 jmp 0x3c6 ; 0x3c6 <_exit> +000000a2 <.do_clear_bss_start>: + a2: a9 30 cpi r26, 0x09 ; 9 + a4: b2 07 cpc r27, r18 + a6: e1 f7 brne .-8 ; 0xa0 <.do_clear_bss_loop> -000000b0 <__bad_interrupt>: - b0: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> +000000a8 <__do_global_ctors>: + a8: 10 e0 ldi r17, 0x00 ; 0 + aa: c6 e7 ldi r28, 0x76 ; 118 + ac: d0 e0 ldi r29, 0x00 ; 0 + ae: 04 c0 rjmp .+8 ; 0xb8 <__do_global_ctors+0x10> + b0: 22 97 sbiw r28, 0x02 ; 2 + b2: fe 01 movw r30, r28 + b4: 0e 94 87 02 call 0x50e ; 0x50e <__tablejump__> + b8: c4 37 cpi r28, 0x74 ; 116 + ba: d1 07 cpc r29, r17 + bc: c9 f7 brne .-14 ; 0xb0 <__do_global_ctors+0x8> + be: 0e 94 f9 01 call 0x3f2 ; 0x3f2
+ c2: 0c 94 8b 02 jmp 0x516 ; 0x516 <_exit> -000000b4 <_ZN3Can8init_pinEv>: - if (length > 8) { - length = 8; - } - - // Ist die Nachricht ein "Remote Transmit Request" ? - if (p_message->rtr) - b4: 84 b1 in r24, 0x04 ; 4 - b6: 86 60 ori r24, 0x06 ; 6 - b8: 84 b9 out 0x04, r24 ; 4 - ba: 85 b1 in r24, 0x05 ; 5 - { - /* Ein RTR hat zwar eine Laenge, - aber enthaelt keine Daten */ - - // Nachrichten Laenge + RTR einstellen +000000c6 <__bad_interrupt>: + c6: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000ca <_ZN3Can8spi_putcEh>: spi_putc((1< + ca: cf 93 push r28 + cc: df 93 push r29 + ce: 00 d0 rcall .+0 ; 0xd0 <_ZN3Can8spi_putcEh+0x6> // Daten for (uint8_t i=0;i - d2: 00 00 nop + d0: cd b7 in r28, 0x3d ; 61 + d2: de b7 in r29, 0x3e ; 62 // /CS Leitung wieder freigeben CANPORT_CS |= (1< - de: 00 c0 rjmp .+0 ; 0xe0 <_ZN3Can8init_pinEv+0x2c> - e0: 00 00 nop - e2: 08 95 ret - -000000e4 <_ZN3Can8init_spiEv>: - e4: 1c bc out 0x2c, r1 ; 44 - e6: 2f ef ldi r18, 0xFF ; 255 + d4: 6e bd out 0x2e, r22 ; 46 + d6: 65 e0 ldi r22, 0x05 ; 5 + d8: ce 01 movw r24, r28 + da: 02 96 adiw r24, 0x02 ; 2 + dc: 0e 94 ef 01 call 0x3de ; 0x3de <_ZN3Led5colorEh> + e0: 0d b4 in r0, 0x2d ; 45 + e2: 07 fe sbrs r0, 7 + e4: fd cf rjmp .-6 ; 0xe0 <_ZN3Can8spi_putcEh+0x16> + e6: 60 e0 ldi r22, 0x00 ; 0 // Nachrichten Laenge einstellen spi_putc(length); // Daten for (uint8_t i=0;idata[i]); - e8: 81 ee ldi r24, 0xE1 ; 225 - ea: 94 e0 ldi r25, 0x04 ; 4 - ec: 21 50 subi r18, 0x01 ; 1 - ee: 80 40 sbci r24, 0x00 ; 0 - f0: 90 40 sbci r25, 0x00 ; 0 - f2: e1 f7 brne .-8 ; 0xec <_ZN3Can8init_spiEv+0x8> + e8: ce 01 movw r24, r28 + ea: 01 96 adiw r24, 0x01 ; 1 + ec: 0e 94 ef 01 call 0x3de ; 0x3de <_ZN3Led5colorEh> + f0: 8e b5 in r24, 0x2e ; 46 + f2: 0f 90 pop r0 { // Nachrichten Laenge einstellen spi_putc(length); // Daten for (uint8_t i=0;i - f6: 00 00 nop - f8: 83 e5 ldi r24, 0x53 ; 83 + f4: 0f 90 pop r0 + f6: df 91 pop r29 + f8: cf 91 pop r28 spi_putc(p_message->data[i]); } } CANPORT_CS |= (1<: asm volatile ("nop"); - fc: 08 95 ret - -000000fe <_ZN3Can8spi_putcEh>: + fc: 84 b1 in r24, 0x04 ; 4 /* CAN Nachricht verschicken die letzten drei Bit im RTS Kommando geben an welcher Puffer gesendet werden soll */ CANPORT_CS &= ~(1< - 106: 00 d0 rcall .+0 ; 0x108 <_ZN3Can8spi_putcEh+0xa> - 108: 1f 92 push r1 - 10a: cd b7 in r28, 0x3d ; 61 - 10c: de b7 in r29, 0x3e ; 62 + 104: 81 7f andi r24, 0xF1 ; 241 + 106: 85 b9 out 0x05, r24 ; 5 + 108: 24 9a sbi 0x04, 4 ; 4 + 10a: 2c 9a sbi 0x05, 4 ; 5 + 10c: 08 95 ret + +0000010e <_ZN3Can8init_spiEv>: } else { spi_putc(SPI_RTS | address); - 10e: 16 2f mov r17, r22 - 110: 61 e0 ldi r22, 0x01 ; 1 - 112: ce 01 movw r24, r28 - 114: 05 96 adiw r24, 0x05 ; 5 - 116: 0e 94 c4 01 call 0x388 ; 0x388 <_ZN3Led5colorEh> + 10e: 80 e5 ldi r24, 0x50 ; 80 + 110: 8c bd out 0x2c, r24 ; 44 + 112: 81 e0 ldi r24, 0x01 ; 1 + 114: 8d bd out 0x2d, r24 ; 45 + 116: 08 95 ret + +00000118 <_ZN3Can22mcp2515_write_registerEhh>: } CANPORT_CS |= (1< - 12a: 00 c0 rjmp .+0 ; 0x12c <_ZN3Can8spi_putcEh+0x2e> - 12c: 00 00 nop - 12e: 60 e0 ldi r22, 0x00 ; 0 + 120: ec 01 movw r28, r24 + 122: 06 2f mov r16, r22 + 124: 14 2f mov r17, r20 + 126: 2c 98 cbi 0x05, 4 ; 5 + 128: 62 e0 ldi r22, 0x02 ; 2 + 12a: 0e 94 65 00 call 0xca ; 0xca <_ZN3Can8spi_putcEh> + 12e: 60 2f mov r22, r16 130: ce 01 movw r24, r28 - 132: 04 96 adiw r24, 0x04 ; 4 - 134: 0e 94 c4 01 call 0x388 ; 0x388 <_ZN3Led5colorEh> + 132: 0e 94 65 00 call 0xca ; 0xca <_ZN3Can8spi_putcEh> + 136: 61 2f mov r22, r17 + // /CS des MCP2515 auf Low ziehen + CANPORT_CS &= ~(1< + + // /CS Leitung wieder freigeben + CANPORT_CS |= (1<: + SPCR = (1< #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 138: 9f ef ldi r25, 0xFF ; 255 - 13a: 23 ec ldi r18, 0xC3 ; 195 - 13c: 39 e0 ldi r19, 0x09 ; 9 - 13e: 91 50 subi r25, 0x01 ; 1 - 140: 20 40 sbci r18, 0x00 ; 0 - 142: 30 40 sbci r19, 0x00 ; 0 - 144: e1 f7 brne .-8 ; 0x13e <_ZN3Can8spi_putcEh+0x40> - 146: 00 c0 rjmp .+0 ; 0x148 <_ZN3Can8spi_putcEh+0x4a> - 148: 00 00 nop - SPDR = data; - _delay_ms(200); - Led(0).color(Led::BLACK); - _delay_ms(200); - // Wartet bis Byte gesendet wurde - while(!(SPSR & (1< - if(SPSR & (1< - Led(0).color(Led::WHITE); - 156: 67 e0 ldi r22, 0x07 ; 7 - 158: ce 01 movw r24, r28 - 15a: 03 96 adiw r24, 0x03 ; 3 - 15c: 0e 94 c4 01 call 0x388 ; 0x388 <_ZN3Led5colorEh> - 160: 8a ea ldi r24, 0xAA ; 170 - 162: 96 ee ldi r25, 0xE6 ; 230 - 164: 26 e9 ldi r18, 0x96 ; 150 - 166: 31 e0 ldi r19, 0x01 ; 1 - 168: 81 50 subi r24, 0x01 ; 1 - 16a: 90 40 sbci r25, 0x00 ; 0 - 16c: 20 40 sbci r18, 0x00 ; 0 - 16e: 30 40 sbci r19, 0x00 ; 0 - 170: d9 f7 brne .-10 ; 0x168 <_ZN3Can8spi_putcEh+0x6a> - 172: 00 00 nop - _delay_ms(10000); - } - Led(0).color(Led::MAGENTA); - 174: 65 e0 ldi r22, 0x05 ; 5 - 176: ce 01 movw r24, r28 - 178: 02 96 adiw r24, 0x02 ; 2 - 17a: 0e 94 c4 01 call 0x388 ; 0x388 <_ZN3Led5colorEh> - 17e: 8f ef ldi r24, 0xFF ; 255 - 180: 91 ee ldi r25, 0xE1 ; 225 - 182: 24 e0 ldi r18, 0x04 ; 4 - 184: 81 50 subi r24, 0x01 ; 1 - 186: 90 40 sbci r25, 0x00 ; 0 - 188: 20 40 sbci r18, 0x00 ; 0 - 18a: e1 f7 brne .-8 ; 0x184 <_ZN3Can8spi_putcEh+0x86> - 18c: 00 c0 rjmp .+0 ; 0x18e <_ZN3Can8spi_putcEh+0x90> - 18e: 00 00 nop - _delay_ms(100); - Led(0).color(Led::BLACK); - 190: 60 e0 ldi r22, 0x00 ; 0 - 192: ce 01 movw r24, r28 - 194: 01 96 adiw r24, 0x01 ; 1 - 196: 0e 94 c4 01 call 0x388 ; 0x388 <_ZN3Led5colorEh> - 19a: 3f ef ldi r19, 0xFF ; 255 - 19c: 81 ee ldi r24, 0xE1 ; 225 - 19e: 94 e0 ldi r25, 0x04 ; 4 - 1a0: 31 50 subi r19, 0x01 ; 1 - 1a2: 80 40 sbci r24, 0x00 ; 0 - 1a4: 90 40 sbci r25, 0x00 ; 0 - 1a6: e1 f7 brne .-8 ; 0x1a0 <_ZN3Can8spi_putcEh+0xa2> - 1a8: 00 c0 rjmp .+0 ; 0x1aa <_ZN3Can8spi_putcEh+0xac> - 1aa: 00 00 nop - SPDR = data; - _delay_ms(200); - Led(0).color(Led::BLACK); - _delay_ms(200); - // Wartet bis Byte gesendet wurde - while(!(SPSR & (1< - Led(0).color(Led::BLACK); - _delay_ms(100); - - } - - return SPDR; - 1b2: 8e b5 in r24, 0x2e ; 46 -} - 1b4: 0f 90 pop r0 - 1b6: 0f 90 pop r0 - 1b8: 0f 90 pop r0 - 1ba: 0f 90 pop r0 - 1bc: 0f 90 pop r0 - 1be: df 91 pop r29 - 1c0: cf 91 pop r28 - 1c2: 1f 91 pop r17 - 1c4: 08 95 ret - -000001c6 <_ZN3Can22mcp2515_write_registerEhh>: - -void Can::mcp2515_write_register( uint8_t adress, uint8_t data ) -{ - 1c6: 0f 93 push r16 - 1c8: 1f 93 push r17 - 1ca: cf 93 push r28 - 1cc: df 93 push r29 - 1ce: ec 01 movw r28, r24 - 1d0: 06 2f mov r16, r22 - 1d2: 14 2f mov r17, r20 - // /CS des MCP2515 auf Low ziehen - CANPORT_CS &= ~(1< - spi_putc(adress); - 1dc: 60 2f mov r22, r16 - 1de: ce 01 movw r24, r28 - 1e0: 0e 94 7f 00 call 0xfe ; 0xfe <_ZN3Can8spi_putcEh> - spi_putc(data); - 1e4: 61 2f mov r22, r17 - 1e6: ce 01 movw r24, r28 - 1e8: 0e 94 7f 00 call 0xfe ; 0xfe <_ZN3Can8spi_putcEh> - - // /CS Leitung wieder freigeben - CANPORT_CS |= (1<: - - return data; -} - -void Can::mcp2515_bit_modify(uint8_t adress, uint8_t mask, uint8_t data) -{ - 1f8: ff 92 push r15 - 1fa: 0f 93 push r16 - 1fc: 1f 93 push r17 - 1fe: cf 93 push r28 - 200: df 93 push r29 - 202: ec 01 movw r28, r24 - 204: f6 2e mov r15, r22 - 206: 04 2f mov r16, r20 - 208: 12 2f mov r17, r18 - // /CS des MCP2515 auf Low ziehen - CANPORT_CS &= ~(1< - spi_putc(adress); - 212: 6f 2d mov r22, r15 - 214: ce 01 movw r24, r28 - 216: 0e 94 7f 00 call 0xfe ; 0xfe <_ZN3Can8spi_putcEh> - spi_putc(mask); - 21a: 60 2f mov r22, r16 - 21c: ce 01 movw r24, r28 - 21e: 0e 94 7f 00 call 0xfe ; 0xfe <_ZN3Can8spi_putcEh> - spi_putc(data); - 222: 61 2f mov r22, r17 - 224: ce 01 movw r24, r28 - 226: 0e 94 7f 00 call 0xfe ; 0xfe <_ZN3Can8spi_putcEh> - - // /CS Leitung wieder freigeben - CANPORT_CS |= (1<: - _delay_ms(100); - SPCR = (1< - 246: 8f e9 ldi r24, 0x9F ; 159 - 248: 9f e0 ldi r25, 0x0F ; 15 - 24a: 01 97 sbiw r24, 0x01 ; 1 - 24c: f1 f7 brne .-4 ; 0x24a <_ZN3Can8init_canEv+0x12> - 24e: 00 c0 rjmp .+0 ; 0x250 <_ZN3Can8init_canEv+0x18> - 250: 00 00 nop + 158: 8f e9 ldi r24, 0x9F ; 159 + 15a: 9f e0 ldi r25, 0x0F ; 15 + 15c: 01 97 sbiw r24, 0x01 ; 1 + 15e: f1 f7 brne .-4 ; 0x15c <_ZN3Can8init_canEv+0x12> + 160: 00 c0 rjmp .+0 ; 0x162 <_ZN3Can8init_canEv+0x18> + 162: 00 00 nop _delay_ms(1); CANPORT_CS |= (1< - 25c: 00 c0 rjmp .+0 ; 0x25e <_ZN3Can8init_canEv+0x26> - 25e: 00 00 nop + 164: 2c 9a sbi 0x05, 4 ; 5 + 166: 8f e3 ldi r24, 0x3F ; 63 + 168: 9c e9 ldi r25, 0x9C ; 156 + 16a: 01 97 sbiw r24, 0x01 ; 1 + 16c: f1 f7 brne .-4 ; 0x16a <_ZN3Can8init_canEv+0x20> + 16e: 00 c0 rjmp .+0 ; 0x170 <_ZN3Can8init_canEv+0x26> + 170: 00 00 nop * Bus speed = 1 / (Total # of TQ) * TQ * = 1 / 8 * TQ = 125 kHz */ - //return; +//return; // BRP = 7 mcp2515_write_register( CNF1, (1< - + 172: 47 e0 ldi r20, 0x07 ; 7 + 174: 6a e2 ldi r22, 0x2A ; 42 + 176: ce 01 movw r24, r28 + 178: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> +//return; // Prop Seg und Phase Seg1 einstellen mcp2515_write_register( CNF2, (1< - + 17c: 40 e9 ldi r20, 0x90 ; 144 + 17e: 69 e2 ldi r22, 0x29 ; 41 + 180: ce 01 movw r24, r28 + 182: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> +//return; // Wake-up Filter deaktivieren, Phase Seg2 einstellen mcp2515_write_register( CNF3, (1< - + 186: 42 e0 ldi r20, 0x02 ; 2 + 188: 68 e2 ldi r22, 0x28 ; 40 + 18a: ce 01 movw r24, r28 + 18c: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> +//return; // Aktivieren der Rx Buffer Interrupts mcp2515_write_register( CANINTE, (1< + 190: 43 e0 ldi r20, 0x03 ; 3 + 192: 6b e2 ldi r22, 0x2B ; 43 + 194: ce 01 movw r24, r28 + 196: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> /* * Einstellen der Filter */ // Buffer 0 : Empfangen aller Nachrichten mcp2515_write_register( RXB0CTRL, (1< + 19a: 40 e6 ldi r20, 0x60 ; 96 + 19c: 60 e6 ldi r22, 0x60 ; 96 + 19e: ce 01 movw r24, r28 + 1a0: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> // Buffer 1 : Empfangen aller Nachrichten mcp2515_write_register( RXB1CTRL, (1< - + 1a4: 40 e6 ldi r20, 0x60 ; 96 + 1a6: 60 e7 ldi r22, 0x70 ; 112 + 1a8: ce 01 movw r24, r28 + 1aa: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> +//return; // Alle Bits der Empfangsmaske loeschen, // damit werden alle Nachrichten empfangen - mcp2515_write_register( RXM0SIDH, 0 ); - 29c: 40 e0 ldi r20, 0x00 ; 0 - 29e: 60 e2 ldi r22, 0x20 ; 32 - 2a0: ce 01 movw r24, r28 - 2a2: 0e 94 e3 00 call 0x1c6 ; 0x1c6 <_ZN3Can22mcp2515_write_registerEhh> - mcp2515_write_register( RXM0SIDL, 0 ); - 2a6: 40 e0 ldi r20, 0x00 ; 0 - 2a8: 61 e2 ldi r22, 0x21 ; 33 - 2aa: ce 01 movw r24, r28 - 2ac: 0e 94 e3 00 call 0x1c6 ; 0x1c6 <_ZN3Can22mcp2515_write_registerEhh> + mcp2515_write_register( RXM0SIDH, 0 ); //return; + 1ae: 40 e0 ldi r20, 0x00 ; 0 + 1b0: 60 e2 ldi r22, 0x20 ; 32 + 1b2: ce 01 movw r24, r28 + 1b4: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> + mcp2515_write_register( RXM0SIDL, 0 ); //return; + 1b8: 40 e0 ldi r20, 0x00 ; 0 + 1ba: 61 e2 ldi r22, 0x21 ; 33 + 1bc: ce 01 movw r24, r28 + 1be: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> mcp2515_write_register( RXM0EID8, 0 ); - 2b0: 40 e0 ldi r20, 0x00 ; 0 - 2b2: 62 e2 ldi r22, 0x22 ; 34 - 2b4: ce 01 movw r24, r28 - 2b6: 0e 94 e3 00 call 0x1c6 ; 0x1c6 <_ZN3Can22mcp2515_write_registerEhh> + 1c2: 40 e0 ldi r20, 0x00 ; 0 + 1c4: 62 e2 ldi r22, 0x22 ; 34 + 1c6: ce 01 movw r24, r28 + 1c8: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> mcp2515_write_register( RXM0EID0, 0 ); - 2ba: 40 e0 ldi r20, 0x00 ; 0 - 2bc: 63 e2 ldi r22, 0x23 ; 35 - 2be: ce 01 movw r24, r28 - 2c0: 0e 94 e3 00 call 0x1c6 ; 0x1c6 <_ZN3Can22mcp2515_write_registerEhh> - - mcp2515_write_register( RXM1SIDH, 0 ); - 2c4: 40 e0 ldi r20, 0x00 ; 0 - 2c6: 64 e2 ldi r22, 0x24 ; 36 - 2c8: ce 01 movw r24, r28 - 2ca: 0e 94 e3 00 call 0x1c6 ; 0x1c6 <_ZN3Can22mcp2515_write_registerEhh> - mcp2515_write_register( RXM1SIDL, 0 ); - 2ce: 40 e0 ldi r20, 0x00 ; 0 - 2d0: 65 e2 ldi r22, 0x25 ; 37 - 2d2: ce 01 movw r24, r28 - 2d4: 0e 94 e3 00 call 0x1c6 ; 0x1c6 <_ZN3Can22mcp2515_write_registerEhh> + 1cc: 40 e0 ldi r20, 0x00 ; 0 + 1ce: 63 e2 ldi r22, 0x23 ; 35 + 1d0: ce 01 movw r24, r28 + 1d2: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> +//return; + mcp2515_write_register( RXM1SIDH, 0 ); //return; + 1d6: 40 e0 ldi r20, 0x00 ; 0 + 1d8: 64 e2 ldi r22, 0x24 ; 36 + 1da: ce 01 movw r24, r28 + 1dc: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> + mcp2515_write_register( RXM1SIDL, 0 ); //return; + 1e0: 40 e0 ldi r20, 0x00 ; 0 + 1e2: 65 e2 ldi r22, 0x25 ; 37 + 1e4: ce 01 movw r24, r28 + 1e6: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> mcp2515_write_register( RXM1EID8, 0 ); - 2d8: 40 e0 ldi r20, 0x00 ; 0 - 2da: 66 e2 ldi r22, 0x26 ; 38 - 2dc: ce 01 movw r24, r28 - 2de: 0e 94 e3 00 call 0x1c6 ; 0x1c6 <_ZN3Can22mcp2515_write_registerEhh> + 1ea: 40 e0 ldi r20, 0x00 ; 0 + 1ec: 66 e2 ldi r22, 0x26 ; 38 + 1ee: ce 01 movw r24, r28 + 1f0: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> mcp2515_write_register( RXM1EID0, 0 ); - 2e2: 40 e0 ldi r20, 0x00 ; 0 - 2e4: 67 e2 ldi r22, 0x27 ; 39 - 2e6: ce 01 movw r24, r28 - 2e8: 0e 94 e3 00 call 0x1c6 ; 0x1c6 <_ZN3Can22mcp2515_write_registerEhh> + 1f4: 40 e0 ldi r20, 0x00 ; 0 + 1f6: 67 e2 ldi r22, 0x27 ; 39 + 1f8: ce 01 movw r24, r28 + 1fa: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> /* * Einstellen der Pin Funktionen */ // Deaktivieren der Pins RXnBF Pins (High Impedance State) - mcp2515_write_register( BFPCTRL, 0 ); - 2ec: 40 e0 ldi r20, 0x00 ; 0 - 2ee: 6c e0 ldi r22, 0x0C ; 12 - 2f0: ce 01 movw r24, r28 - 2f2: 0e 94 e3 00 call 0x1c6 ; 0x1c6 <_ZN3Can22mcp2515_write_registerEhh> - + mcp2515_write_register( BFPCTRL, 0 ); return; + 1fe: 40 e0 ldi r20, 0x00 ; 0 + 200: 6c e0 ldi r22, 0x0C ; 12 + 202: ce 01 movw r24, r28 + 204: 0e 94 8c 00 call 0x118 ; 0x118 <_ZN3Can22mcp2515_write_registerEhh> // TXnRTS Bits als Inputs schalten mcp2515_write_register( TXRTSCTRL, 0 ); - 2f6: 40 e0 ldi r20, 0x00 ; 0 - 2f8: 6d e0 ldi r22, 0x0D ; 13 - 2fa: ce 01 movw r24, r28 - 2fc: 0e 94 e3 00 call 0x1c6 ; 0x1c6 <_ZN3Can22mcp2515_write_registerEhh> - +//return; // Device zurueck in den normalen Modus versetzten - mcp2515_bit_modify( CANCTRL, 0xE0, 0); - 300: 20 e0 ldi r18, 0x00 ; 0 - 302: 40 ee ldi r20, 0xE0 ; 224 - 304: 6f e0 ldi r22, 0x0F ; 15 - 306: ce 01 movw r24, r28 - 308: 0e 94 fc 00 call 0x1f8 ; 0x1f8 <_ZN3Can18mcp2515_bit_modifyEhhh> + mcp2515_bit_modify( CANCTRL, 0xE0, 0); } - 30c: df 91 pop r29 - 30e: cf 91 pop r28 - 310: 08 95 ret + 208: df 91 pop r29 + 20a: cf 91 pop r28 + 20c: 08 95 ret -00000312 <_ZN3CanC1Ev>: +0000020e <_ZN3CanC1Ev>: #define CANDDR_RST DDRD #define CANPORT_RST PORTD #define CANP_RST PIND6 Can::Can() { - 312: 0f 93 push r16 - 314: 1f 93 push r17 - 316: cf 93 push r28 - 318: df 93 push r29 - 31a: 00 d0 rcall .+0 ; 0x31c <_ZN3CanC1Ev+0xa> - 31c: cd b7 in r28, 0x3d ; 61 - 31e: de b7 in r29, 0x3e ; 62 - 320: 8c 01 movw r16, r24 - Led(0).color(Led::GREEN); - 322: 62 e0 ldi r22, 0x02 ; 2 - 324: ce 01 movw r24, r28 - 326: 02 96 adiw r24, 0x02 ; 2 - 328: 0e 94 c4 01 call 0x388 ; 0x388 <_ZN3Led5colorEh> - 32c: 2f ef ldi r18, 0xFF ; 255 - 32e: 81 ee ldi r24, 0xE1 ; 225 - 330: 94 e0 ldi r25, 0x04 ; 4 - 332: 21 50 subi r18, 0x01 ; 1 - 334: 80 40 sbci r24, 0x00 ; 0 - 336: 90 40 sbci r25, 0x00 ; 0 - 338: e1 f7 brne .-8 ; 0x332 <_ZN3CanC1Ev+0x20> - 33a: 00 c0 rjmp .+0 ; 0x33c <_ZN3CanC1Ev+0x2a> - 33c: 00 00 nop - _delay_ms(100); - Led(0).color(Led::BLACK); - 33e: 60 e0 ldi r22, 0x00 ; 0 - 340: ce 01 movw r24, r28 - 342: 01 96 adiw r24, 0x01 ; 1 - 344: 0e 94 c4 01 call 0x388 ; 0x388 <_ZN3Led5colorEh> - 348: 2f ef ldi r18, 0xFF ; 255 - 34a: 81 ee ldi r24, 0xE1 ; 225 - 34c: 94 e0 ldi r25, 0x04 ; 4 - 34e: 21 50 subi r18, 0x01 ; 1 - 350: 80 40 sbci r24, 0x00 ; 0 - 352: 90 40 sbci r25, 0x00 ; 0 - 354: e1 f7 brne .-8 ; 0x34e <_ZN3CanC1Ev+0x3c> - 356: 00 c0 rjmp .+0 ; 0x358 <_ZN3CanC1Ev+0x46> - 358: 00 00 nop - _delay_ms(100); + 20e: cf 93 push r28 + 210: df 93 push r29 + 212: ec 01 movw r28, r24 + 214: 8f e3 ldi r24, 0x3F ; 63 + 216: 9c e9 ldi r25, 0x9C ; 156 + 218: 01 97 sbiw r24, 0x01 ; 1 + 21a: f1 f7 brne .-4 ; 0x218 <_ZN3CanC1Ev+0xa> + 21c: 00 c0 rjmp .+0 ; 0x21e <_ZN3CanC1Ev+0x10> + 21e: 00 00 nop + _delay_ms(10); init_pin(); - 35a: c8 01 movw r24, r16 - 35c: 0e 94 5a 00 call 0xb4 ; 0xb4 <_ZN3Can8init_pinEv> + 220: ce 01 movw r24, r28 + 222: 0e 94 7e 00 call 0xfc ; 0xfc <_ZN3Can8init_pinEv> init_spi(); - 360: c8 01 movw r24, r16 - 362: 0e 94 72 00 call 0xe4 ; 0xe4 <_ZN3Can8init_spiEv> + 226: ce 01 movw r24, r28 + 228: 0e 94 87 00 call 0x10e ; 0x10e <_ZN3Can8init_spiEv> init_can(); - 366: c8 01 movw r24, r16 - 368: 0e 94 1c 01 call 0x238 ; 0x238 <_ZN3Can8init_canEv> + 22c: ce 01 movw r24, r28 + 22e: 0e 94 a5 00 call 0x14a ; 0x14a <_ZN3Can8init_canEv> } - 36c: 0f 90 pop r0 - 36e: 0f 90 pop r0 - 370: df 91 pop r29 - 372: cf 91 pop r28 - 374: 1f 91 pop r17 - 376: 0f 91 pop r16 - 378: 08 95 ret + 232: df 91 pop r29 + 234: cf 91 pop r28 + 236: 08 95 ret -0000037a <_ZN3Led4initEv>: +00000238 <_ZN3Can18mcp2515_bit_modifyEhhh>: + + return data; +} + +void Can::mcp2515_bit_modify(uint8_t adress, uint8_t mask, uint8_t data) +{ + 238: ff 92 push r15 + 23a: 0f 93 push r16 + 23c: 1f 93 push r17 + 23e: cf 93 push r28 + 240: df 93 push r29 + 242: ec 01 movw r28, r24 + 244: f6 2e mov r15, r22 + 246: 04 2f mov r16, r20 + 248: 12 2f mov r17, r18 + // /CS des MCP2515 auf Low ziehen + CANPORT_CS &= ~(1< + spi_putc(adress); + 252: 6f 2d mov r22, r15 + 254: ce 01 movw r24, r28 + 256: 0e 94 65 00 call 0xca ; 0xca <_ZN3Can8spi_putcEh> + spi_putc(mask); + 25a: 60 2f mov r22, r16 + 25c: ce 01 movw r24, r28 + 25e: 0e 94 65 00 call 0xca ; 0xca <_ZN3Can8spi_putcEh> + spi_putc(data); + 262: 61 2f mov r22, r17 + 264: ce 01 movw r24, r28 + 266: 0e 94 65 00 call 0xca ; 0xca <_ZN3Can8spi_putcEh> + + // /CS Leitung wieder freigeben + CANPORT_CS |= (1<: + + return (status & 0x07); +} + +uint8_t Can::mcp2515_read_rx_status(void) +{ + 278: 1f 93 push r17 + 27a: cf 93 push r28 + 27c: df 93 push r29 + 27e: ec 01 movw r28, r24 + uint8_t data; + + // /CS des MCP2515 auf Low ziehen + CANPORT_CS &= ~(1< + data = spi_putc(0xff); + 288: 6f ef ldi r22, 0xFF ; 255 + 28a: ce 01 movw r24, r28 + 28c: 0e 94 65 00 call 0xca ; 0xca <_ZN3Can8spi_putcEh> + 290: 18 2f mov r17, r24 + + // Die Daten werden noch einmal wiederholt gesendet, + // man braucht also nur eins der beiden Bytes auswerten. + spi_putc(0xff); + 292: 6f ef ldi r22, 0xFF ; 255 + 294: ce 01 movw r24, r28 + 296: 0e 94 65 00 call 0xca ; 0xca <_ZN3Can8spi_putcEh> + + // /CS Leitung wieder freigeben + CANPORT_CS |= (1<: + + return 1; +} + +uint8_t Can::can_get_message(CANMessage *p_message) +{ + 2a6: af 92 push r10 + 2a8: bf 92 push r11 + 2aa: cf 92 push r12 + 2ac: df 92 push r13 + 2ae: ef 92 push r14 + 2b0: ff 92 push r15 + 2b2: 0f 93 push r16 + 2b4: 1f 93 push r17 + 2b6: cf 93 push r28 + 2b8: df 93 push r29 + 2ba: 1f 92 push r1 + 2bc: cd b7 in r28, 0x3d ; 61 + 2be: de b7 in r29, 0x3e ; 62 + 2c0: 7c 01 movw r14, r24 + 2c2: 6b 01 movw r12, r22 + // Status auslesen + uint8_t status = mcp2515_read_rx_status(); + 2c4: 0e 94 3c 01 call 0x278 ; 0x278 <_ZN3Can22mcp2515_read_rx_statusEv> + 2c8: 89 83 std Y+1, r24 ; 0x01 + + if (bit_is_set(status,6)) + 2ca: 89 81 ldd r24, Y+1 ; 0x01 + 2cc: 86 ff sbrs r24, 6 + 2ce: 06 c0 rjmp .+12 ; 0x2dc <_ZN3Can15can_get_messageEP10CANMessage+0x36> + { + // Nachricht in Puffer 0 + + CANPORT_CS &= ~(1< + 2da: 09 c0 rjmp .+18 ; 0x2ee <_ZN3Can15can_get_messageEP10CANMessage+0x48> + } + else if (bit_is_set(status,7)) + 2dc: 89 81 ldd r24, Y+1 ; 0x01 + 2de: 88 23 and r24, r24 + 2e0: 0c f0 brlt .+2 ; 0x2e4 <_ZN3Can15can_get_messageEP10CANMessage+0x3e> + 2e2: 69 c0 rjmp .+210 ; 0x3b6 <_ZN3Can15can_get_messageEP10CANMessage+0x110> + { + // Nachricht in Puffer 1 + + CANPORT_CS &= ~(1< + /* Fehler: Keine neue Nachricht vorhanden */ + return 0xff; + } + + // Standard ID auslesen + p_message->id = (uint16_t) spi_putc(0xff) << 3; + 2ee: 6f ef ldi r22, 0xFF ; 255 + 2f0: c7 01 movw r24, r14 + 2f2: 0e 94 65 00 call 0xca ; 0xca <_ZN3Can8spi_putcEh> + 2f6: 90 e0 ldi r25, 0x00 ; 0 + 2f8: 88 0f add r24, r24 + 2fa: 99 1f adc r25, r25 + 2fc: 88 0f add r24, r24 + 2fe: 99 1f adc r25, r25 + 300: 88 0f add r24, r24 + 302: 99 1f adc r25, r25 + 304: f6 01 movw r30, r12 + 306: 91 83 std Z+1, r25 ; 0x01 + 308: 80 83 st Z, r24 + p_message->id |= (uint16_t) spi_putc(0xff) >> 5; + 30a: 6f ef ldi r22, 0xFF ; 255 + 30c: c7 01 movw r24, r14 + 30e: 0e 94 65 00 call 0xca ; 0xca <_ZN3Can8spi_putcEh> + 312: 90 e0 ldi r25, 0x00 ; 0 + 314: 96 95 lsr r25 + 316: 87 95 ror r24 + 318: 92 95 swap r25 + 31a: 82 95 swap r24 + 31c: 8f 70 andi r24, 0x0F ; 15 + 31e: 89 27 eor r24, r25 + 320: 9f 70 andi r25, 0x0F ; 15 + 322: 89 27 eor r24, r25 + 324: f6 01 movw r30, r12 + 326: 20 81 ld r18, Z + 328: 31 81 ldd r19, Z+1 ; 0x01 + 32a: 82 2b or r24, r18 + 32c: 93 2b or r25, r19 + 32e: 91 83 std Z+1, r25 ; 0x01 + 330: 80 83 st Z, r24 + + spi_putc(0xff); + 332: 6f ef ldi r22, 0xFF ; 255 + 334: c7 01 movw r24, r14 + 336: 0e 94 65 00 call 0xca ; 0xca <_ZN3Can8spi_putcEh> + spi_putc(0xff); + 33a: 6f ef ldi r22, 0xFF ; 255 + 33c: c7 01 movw r24, r14 + 33e: 0e 94 65 00 call 0xca ; 0xca <_ZN3Can8spi_putcEh> + + // Laenge auslesen + uint8_t length = spi_putc(0xff) & 0x0f; + 342: 6f ef ldi r22, 0xFF ; 255 + 344: c7 01 movw r24, r14 + 346: 0e 94 65 00 call 0xca ; 0xca <_ZN3Can8spi_putcEh> + 34a: 8f 70 andi r24, 0x0F ; 15 + p_message->length = length; + 34c: f6 01 movw r30, r12 + 34e: 83 83 std Z+3, r24 ; 0x03 + + // Daten auslesen + for (uint8_t i=0;i + CANPORT_CS |= (1<length = length; + + // Daten auslesen + for (uint8_t i=0;idata[i] = spi_putc(0xff); + 368: 6f ef ldi r22, 0xFF ; 255 + 36a: c7 01 movw r24, r14 + 36c: 0e 94 65 00 call 0xca ; 0xca <_ZN3Can8spi_putcEh> + 370: f8 01 movw r30, r16 + 372: 81 93 st Z+, r24 + 374: 8f 01 movw r16, r30 + // Laenge auslesen + uint8_t length = spi_putc(0xff) & 0x0f; + p_message->length = length; + + // Daten auslesen + for (uint8_t i=0;i + p_message->data[i] = spi_putc(0xff); + } + + CANPORT_CS |= (1< + p_message->rtr = 1; + 384: 81 e0 ldi r24, 0x01 ; 1 + 386: f6 01 movw r30, r12 + 388: 82 83 std Z+2, r24 ; 0x02 + 38a: 02 c0 rjmp .+4 ; 0x390 <_ZN3Can15can_get_messageEP10CANMessage+0xea> + } else { + p_message->rtr = 0; + 38c: f6 01 movw r30, r12 + 38e: 12 82 std Z+2, r1 ; 0x02 + } + + // Interrupt Flag loeschen + if (bit_is_set(status,6)) { + 390: 89 81 ldd r24, Y+1 ; 0x01 + 392: 86 ff sbrs r24, 6 + 394: 07 c0 rjmp .+14 ; 0x3a4 <_ZN3Can15can_get_messageEP10CANMessage+0xfe> + mcp2515_bit_modify(CANINTF, (1< + 3a2: 06 c0 rjmp .+12 ; 0x3b0 <_ZN3Can15can_get_messageEP10CANMessage+0x10a> + } else { + mcp2515_bit_modify(CANINTF, (1< + } + + return (status & 0x07); + 3b0: 89 81 ldd r24, Y+1 ; 0x01 + 3b2: 87 70 andi r24, 0x07 ; 7 + 3b4: 01 c0 rjmp .+2 ; 0x3b8 <_ZN3Can15can_get_messageEP10CANMessage+0x112> + CANPORT_CS &= ~(1<: Led::Led() { init(); } void Led::init() { LEDDDR |= (1<: +000003d8 <_ZN3LedC1Ev>: #define LEDPING PINC6 #define LEDPINB PINC7 #define LEDPINM PINC5 Led::Led() { init(); - 382: 0e 94 bd 01 call 0x37a ; 0x37a <_ZN3Led4initEv> - 386: 08 95 ret + 3d8: 0e 94 e8 01 call 0x3d0 ; 0x3d0 <_ZN3Led4initEv> + 3dc: 08 95 ret -00000388 <_ZN3Led5colorEh>: +000003de <_ZN3Led5colorEh>: int rgb = 0; rgb |= (mask & (1<<0)) ? (1<<0) : (0<<0); rgb |= (mask & (1<<1)) ? (1<<1) : (0<<1); rgb |= (mask & (1<<2)) ? (1<<2) : (0<<2); LEDPORT &= ~((1<: +000003f2
: Led l; +Rs232 r; Can c; int main(void) { + 3f2: cf 93 push r28 + 3f4: df 93 push r29 + 3f6: cd b7 in r28, 0x3d ; 61 + 3f8: de b7 in r29, 0x3e ; 62 + 3fa: 2c 97 sbiw r28, 0x0c ; 12 + 3fc: 0f b6 in r0, 0x3f ; 63 + 3fe: f8 94 cli + 400: de bf out 0x3e, r29 ; 62 + 402: 0f be out 0x3f, r0 ; 63 + 404: cd bf out 0x3d, r28 ; 61 l.color(Led::YELLOW); - 39c: 66 e0 ldi r22, 0x06 ; 6 - 39e: 81 e0 ldi r24, 0x01 ; 1 - 3a0: 91 e0 ldi r25, 0x01 ; 1 - 3a2: 0e 94 c4 01 call 0x388 ; 0x388 <_ZN3Led5colorEh> - 3a6: ff cf rjmp .-2 ; 0x3a6 + 406: 66 e0 ldi r22, 0x06 ; 6 + 408: 88 e0 ldi r24, 0x08 ; 8 + 40a: 91 e0 ldi r25, 0x01 ; 1 + 40c: 0e 94 ef 01 call 0x3de ; 0x3de <_ZN3Led5colorEh> + r.send("bla\n"); + 410: 60 e0 ldi r22, 0x00 ; 0 + 412: 71 e0 ldi r23, 0x01 ; 1 + 414: 87 e0 ldi r24, 0x07 ; 7 + 416: 91 e0 ldi r25, 0x01 ; 1 + 418: 0e 94 70 02 call 0x4e0 ; 0x4e0 <_ZN5Rs2324sendEPc> + CANMessage m; + m.id = 0x0123; + 41c: 83 e2 ldi r24, 0x23 ; 35 + 41e: 91 e0 ldi r25, 0x01 ; 1 + 420: 9a 83 std Y+2, r25 ; 0x02 + 422: 89 83 std Y+1, r24 ; 0x01 + m.rtr = 0; + 424: 1b 82 std Y+3, r1 ; 0x03 + m.length = 2; + 426: 82 e0 ldi r24, 0x02 ; 2 + 428: 8c 83 std Y+4, r24 ; 0x04 + m.data[0] = 0xAF; + 42a: 8f ea ldi r24, 0xAF ; 175 + 42c: 8d 83 std Y+5, r24 ; 0x05 + m.data[1] = 0xFE; + 42e: 8e ef ldi r24, 0xFE ; 254 + 430: 8e 83 std Y+6, r24 ; 0x06 + while(1) + { + l.color(Led::GREEN); + 432: 62 e0 ldi r22, 0x02 ; 2 + 434: 88 e0 ldi r24, 0x08 ; 8 + 436: 91 e0 ldi r25, 0x01 ; 1 + 438: 0e 94 ef 01 call 0x3de ; 0x3de <_ZN3Led5colorEh> + 43c: 2f ef ldi r18, 0xFF ; 255 + 43e: 83 ed ldi r24, 0xD3 ; 211 + 440: 90 e3 ldi r25, 0x30 ; 48 + 442: 21 50 subi r18, 0x01 ; 1 + 444: 80 40 sbci r24, 0x00 ; 0 + 446: 90 40 sbci r25, 0x00 ; 0 + 448: e1 f7 brne .-8 ; 0x442 + 44a: 00 c0 rjmp .+0 ; 0x44c + 44c: 00 00 nop + //c.can_send_message(&m); + //l.color(Led::BLACK); + //_delay_ms(100); + //l.color(Led::GREEN); + + uint8_t r = c.can_get_message(&m); + 44e: be 01 movw r22, r28 + 450: 6f 5f subi r22, 0xFF ; 255 + 452: 7f 4f sbci r23, 0xFF ; 255 + 454: 86 e0 ldi r24, 0x06 ; 6 + 456: 91 e0 ldi r25, 0x01 ; 1 + 458: 0e 94 53 01 call 0x2a6 ; 0x2a6 <_ZN3Can15can_get_messageEP10CANMessage> + if(r == 0xFF) { + 45c: 8f 3f cpi r24, 0xFF ; 255 + 45e: 61 f4 brne .+24 ; 0x478 + l.color(Led::RED); + 460: 64 e0 ldi r22, 0x04 ; 4 + 462: 88 e0 ldi r24, 0x08 ; 8 + 464: 91 e0 ldi r25, 0x01 ; 1 + 466: 0e 94 ef 01 call 0x3de ; 0x3de <_ZN3Led5colorEh> + 46a: 8f e3 ldi r24, 0x3F ; 63 + 46c: 9c e9 ldi r25, 0x9C ; 156 + 46e: 01 97 sbiw r24, 0x01 ; 1 + 470: f1 f7 brne .-4 ; 0x46e + 472: 00 c0 rjmp .+0 ; 0x474 + 474: 00 00 nop + 476: dd cf rjmp .-70 ; 0x432 + _delay_ms(10); + } else { + l.color(Led::BLUE); + 478: 61 e0 ldi r22, 0x01 ; 1 + 47a: 88 e0 ldi r24, 0x08 ; 8 + 47c: 91 e0 ldi r25, 0x01 ; 1 + 47e: 0e 94 ef 01 call 0x3de ; 0x3de <_ZN3Led5colorEh> + 482: 9f ef ldi r25, 0xFF ; 255 + 484: 23 ed ldi r18, 0xD3 ; 211 + 486: 80 e3 ldi r24, 0x30 ; 48 + 488: 91 50 subi r25, 0x01 ; 1 + 48a: 20 40 sbci r18, 0x00 ; 0 + 48c: 80 40 sbci r24, 0x00 ; 0 + 48e: e1 f7 brne .-8 ; 0x488 + 490: 00 c0 rjmp .+0 ; 0x492 + 492: 00 00 nop + 494: ce cf rjmp .-100 ; 0x432 -000003a8 <_GLOBAL__sub_I_l>: -#include "config.h" +00000496 <_GLOBAL__sub_I_l>: #include "Led.h" +#include "Rs232.h" #include "Can.h" #include Led l; - 3a8: 81 e0 ldi r24, 0x01 ; 1 - 3aa: 91 e0 ldi r25, 0x01 ; 1 - 3ac: 0e 94 c1 01 call 0x382 ; 0x382 <_ZN3LedC1Ev> + 496: 88 e0 ldi r24, 0x08 ; 8 + 498: 91 e0 ldi r25, 0x01 ; 1 + 49a: 0e 94 ec 01 call 0x3d8 ; 0x3d8 <_ZN3LedC1Ev> +Rs232 r; + 49e: 87 e0 ldi r24, 0x07 ; 7 + 4a0: 91 e0 ldi r25, 0x01 ; 1 + 4a2: 0e 94 6d 02 call 0x4da ; 0x4da <_ZN5Rs232C1Ev> Can c; - 3b0: 80 e0 ldi r24, 0x00 ; 0 - 3b2: 91 e0 ldi r25, 0x01 ; 1 - 3b4: 0e 94 89 01 call 0x312 ; 0x312 <_ZN3CanC1Ev> - 3b8: 08 95 ret + 4a6: 86 e0 ldi r24, 0x06 ; 6 + 4a8: 91 e0 ldi r25, 0x01 ; 1 + 4aa: 0e 94 07 01 call 0x20e ; 0x20e <_ZN3CanC1Ev> + 4ae: 08 95 ret -000003ba <__tablejump2__>: - 3ba: ee 0f add r30, r30 - 3bc: ff 1f adc r31, r31 +000004b0 <_ZN5Rs23212uart_putcharEh>: + init(); +} -000003be <__tablejump__>: - 3be: 05 90 lpm r0, Z+ - 3c0: f4 91 lpm r31, Z - 3c2: e0 2d mov r30, r0 - 3c4: 09 94 ijmp +uint8_t Rs232::uart_putchar(uint8_t c) +{ + loop_until_bit_is_set(UCSR1A, UDRE1); //Ausgabe des Zeichens + 4b0: e8 ec ldi r30, 0xC8 ; 200 + 4b2: f0 e0 ldi r31, 0x00 ; 0 + 4b4: 80 81 ld r24, Z + 4b6: 85 ff sbrs r24, 5 + 4b8: fd cf rjmp .-6 ; 0x4b4 <_ZN5Rs23212uart_putcharEh+0x4> + UDR1 = c; + 4ba: 60 93 ce 00 sts 0x00CE, r22 + return 0; +} + 4be: 80 e0 ldi r24, 0x00 ; 0 + 4c0: 08 95 ret -000003c6 <_exit>: - 3c6: f8 94 cli +000004c2 <_ZN5Rs2324initEv>: -000003c8 <__stop_program>: - 3c8: ff cf rjmp .-2 ; 0x3c8 <__stop_program> +void Rs232::init() +{ + UCSR1C = (1 << UCSZ11) |(1 << UCSZ10); //8N1 + 4c2: 86 e0 ldi r24, 0x06 ; 6 + 4c4: 80 93 ca 00 sts 0x00CA, r24 + UCSR1B |= /*(1<: + */ + +#include "Rs232.h" + +Rs232::Rs232() { + init(); + 4da: 0e 94 61 02 call 0x4c2 ; 0x4c2 <_ZN5Rs2324initEv> + 4de: 08 95 ret + +000004e0 <_ZN5Rs2324sendEPc>: + UCSR1C = (1 << UCSZ11) |(1 << UCSZ10); //8N1 + UCSR1B |= /*(1< + UCSR1C = (1 << UCSZ11) |(1 << UCSZ10); //8N1 + UCSR1B |= /*(1< + UCSR1B |= /*(1< + { + uart_putchar(*text); + text++; + } + 500: df 91 pop r29 + 502: cf 91 pop r28 + 504: 1f 91 pop r17 + 506: 0f 91 pop r16 + 508: 08 95 ret + +0000050a <__tablejump2__>: + 50a: ee 0f add r30, r30 + 50c: ff 1f adc r31, r31 + +0000050e <__tablejump__>: + 50e: 05 90 lpm r0, Z+ + 510: f4 91 lpm r31, Z + 512: e0 2d mov r30, r0 + 514: 09 94 ijmp + +00000516 <_exit>: + 516: f8 94 cli + +00000518 <__stop_program>: + 518: ff cf rjmp .-2 ; 0x518 <__stop_program> diff --git a/Mainboard/Mainboard/Debug/Mainboard.map b/Mainboard/Mainboard/Debug/Mainboard.map index 039851b..446bde3 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.map +++ b/Mainboard/Mainboard/Debug/Mainboard.map @@ -2,6 +2,8 @@ Archive member included because of file (symbol) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o (exit) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) + Mainboard.o (__do_copy_data) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o) Mainboard.o (__do_clear_bss) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_ctors.o) @@ -18,10 +20,6 @@ Discarded input sections 0x00000000 0x2c Can.o .text._ZN3Can16can_send_messageEP10CANMessage 0x00000000 0x138 Can.o - .text._ZN3Can22mcp2515_read_rx_statusEv - 0x00000000 0x2e Can.o - .text._ZN3Can15can_get_messageEP10CANMessage - 0x00000000 0x12a Can.o .text 0x00000000 0x0 Led.o .bss 0x00000000 0x0 Led.o .text._ZN3Led6uninitEv @@ -31,6 +29,8 @@ Discarded input sections .text._ZN3Led7rainbowEh 0x00000000 0x7c Led.o .text 0x00000000 0x0 Mainboard.o + .text 0x00000000 0x0 Rs232.o + .bss 0x00000000 0x0 Rs232.o .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) .text.libgcc.mul @@ -44,6 +44,19 @@ Discarded input sections 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) .text.libgcc.fmul 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o) .text.libgcc.mul @@ -102,6 +115,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 LOAD Can.o LOAD Led.o LOAD Mainboard.o +LOAD Rs232.o START GROUP LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libm.a END GROUP @@ -201,7 +215,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0x3ca +.text 0x00000000 0x51a *(.vectors) .vectors 0x00000000 0x74 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o 0x00000000 __vector_default @@ -240,99 +254,120 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.init3) *(.init3) *(.init4) - .init4 0x00000082 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o) - 0x00000082 __do_clear_bss + .init4 0x00000082 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) + 0x00000082 __do_copy_data + .init4 0x00000098 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o) + 0x00000098 __do_clear_bss *(.init4) *(.init5) *(.init5) *(.init6) - .init6 0x00000092 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_ctors.o) - 0x00000092 __do_global_ctors + .init6 0x000000a8 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_ctors.o) + 0x000000a8 __do_global_ctors *(.init6) *(.init7) *(.init7) *(.init8) *(.init8) *(.init9) - .init9 0x000000a8 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o + .init9 0x000000be 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o *(.init9) *(.text) - .text 0x000000b0 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o - 0x000000b0 __vector_22 - 0x000000b0 __vector_28 - 0x000000b0 __vector_1 - 0x000000b0 __vector_24 - 0x000000b0 __vector_12 - 0x000000b0 __bad_interrupt - 0x000000b0 __vector_6 - 0x000000b0 __vector_3 - 0x000000b0 __vector_23 - 0x000000b0 __vector_25 - 0x000000b0 __vector_11 - 0x000000b0 __vector_13 - 0x000000b0 __vector_17 - 0x000000b0 __vector_19 - 0x000000b0 __vector_7 - 0x000000b0 __vector_27 - 0x000000b0 __vector_5 - 0x000000b0 __vector_4 - 0x000000b0 __vector_9 - 0x000000b0 __vector_2 - 0x000000b0 __vector_21 - 0x000000b0 __vector_15 - 0x000000b0 __vector_8 - 0x000000b0 __vector_26 - 0x000000b0 __vector_14 - 0x000000b0 __vector_10 - 0x000000b0 __vector_16 - 0x000000b0 __vector_18 - 0x000000b0 __vector_20 - 0x000000b4 . = ALIGN (0x2) + .text 0x000000c6 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o + 0x000000c6 __vector_22 + 0x000000c6 __vector_28 + 0x000000c6 __vector_1 + 0x000000c6 __vector_24 + 0x000000c6 __vector_12 + 0x000000c6 __bad_interrupt + 0x000000c6 __vector_6 + 0x000000c6 __vector_3 + 0x000000c6 __vector_23 + 0x000000c6 __vector_25 + 0x000000c6 __vector_11 + 0x000000c6 __vector_13 + 0x000000c6 __vector_17 + 0x000000c6 __vector_19 + 0x000000c6 __vector_7 + 0x000000c6 __vector_27 + 0x000000c6 __vector_5 + 0x000000c6 __vector_4 + 0x000000c6 __vector_9 + 0x000000c6 __vector_2 + 0x000000c6 __vector_21 + 0x000000c6 __vector_15 + 0x000000c6 __vector_8 + 0x000000c6 __vector_26 + 0x000000c6 __vector_14 + 0x000000c6 __vector_10 + 0x000000c6 __vector_16 + 0x000000c6 __vector_18 + 0x000000c6 __vector_20 + 0x000000ca . = ALIGN (0x2) *(.text.*) - .text._ZN3Can8init_pinEv - 0x000000b4 0x30 Can.o - 0x000000b4 _ZN3Can8init_pinEv - .text._ZN3Can8init_spiEv - 0x000000e4 0x1a Can.o - 0x000000e4 _ZN3Can8init_spiEv .text._ZN3Can8spi_putcEh - 0x000000fe 0xc8 Can.o - 0x000000fe _ZN3Can8spi_putcEh + 0x000000ca 0x32 Can.o + 0x000000ca _ZN3Can8spi_putcEh + .text._ZN3Can8init_pinEv + 0x000000fc 0x12 Can.o + 0x000000fc _ZN3Can8init_pinEv + .text._ZN3Can8init_spiEv + 0x0000010e 0xa Can.o + 0x0000010e _ZN3Can8init_spiEv .text._ZN3Can22mcp2515_write_registerEhh - 0x000001c6 0x32 Can.o - 0x000001c6 _ZN3Can22mcp2515_write_registerEhh - .text._ZN3Can18mcp2515_bit_modifyEhhh - 0x000001f8 0x40 Can.o - 0x000001f8 _ZN3Can18mcp2515_bit_modifyEhhh + 0x00000118 0x32 Can.o + 0x00000118 _ZN3Can22mcp2515_write_registerEhh .text._ZN3Can8init_canEv - 0x00000238 0xda Can.o - 0x00000238 _ZN3Can8init_canEv + 0x0000014a 0xc4 Can.o + 0x0000014a _ZN3Can8init_canEv .text._ZN3CanC2Ev - 0x00000312 0x68 Can.o - 0x00000312 _ZN3CanC2Ev - 0x00000312 _ZN3CanC1Ev + 0x0000020e 0x2a Can.o + 0x0000020e _ZN3CanC2Ev + 0x0000020e _ZN3CanC1Ev + .text._ZN3Can18mcp2515_bit_modifyEhhh + 0x00000238 0x40 Can.o + 0x00000238 _ZN3Can18mcp2515_bit_modifyEhhh + .text._ZN3Can22mcp2515_read_rx_statusEv + 0x00000278 0x2e Can.o + 0x00000278 _ZN3Can22mcp2515_read_rx_statusEv + .text._ZN3Can15can_get_messageEP10CANMessage + 0x000002a6 0x12a Can.o + 0x000002a6 _ZN3Can15can_get_messageEP10CANMessage .text._ZN3Led4initEv - 0x0000037a 0x8 Led.o - 0x0000037a _ZN3Led4initEv + 0x000003d0 0x8 Led.o + 0x000003d0 _ZN3Led4initEv .text._ZN3LedC2Ev - 0x00000382 0x6 Led.o - 0x00000382 _ZN3LedC1Ev - 0x00000382 _ZN3LedC2Ev + 0x000003d8 0x6 Led.o + 0x000003d8 _ZN3LedC1Ev + 0x000003d8 _ZN3LedC2Ev .text._ZN3Led5colorEh - 0x00000388 0x14 Led.o - 0x00000388 _ZN3Led5colorEh - .text.main 0x0000039c 0xc Mainboard.o - 0x0000039c main + 0x000003de 0x14 Led.o + 0x000003de _ZN3Led5colorEh + .text.main 0x000003f2 0xa4 Mainboard.o + 0x000003f2 main .text._GLOBAL__sub_I_l - 0x000003a8 0x12 Mainboard.o - .text.libgcc 0x000003ba 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_tablejump.o) - 0x000003ba __tablejump2__ - 0x000003be __tablejump__ - 0x000003c6 . = ALIGN (0x2) + 0x00000496 0x1a Mainboard.o + .text._ZN5Rs23212uart_putcharEh + 0x000004b0 0x12 Rs232.o + 0x000004b0 _ZN5Rs23212uart_putcharEh + .text._ZN5Rs2324initEv + 0x000004c2 0x18 Rs232.o + 0x000004c2 _ZN5Rs2324initEv + .text._ZN5Rs232C2Ev + 0x000004da 0x6 Rs232.o + 0x000004da _ZN5Rs232C2Ev + 0x000004da _ZN5Rs232C1Ev + .text._ZN5Rs2324sendEPc + 0x000004e0 0x2a Rs232.o + 0x000004e0 _ZN5Rs2324sendEPc + .text.libgcc 0x0000050a 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_tablejump.o) + 0x0000050a __tablejump2__ + 0x0000050e __tablejump__ + 0x00000516 . = ALIGN (0x2) *(.fini9) - .fini9 0x000003c6 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) - 0x000003c6 _exit - 0x000003c6 exit + .fini9 0x00000516 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) + 0x00000516 _exit + 0x00000516 exit *(.fini9) *(.fini8) *(.fini8) @@ -351,47 +386,53 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000003c6 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) + .fini0 0x00000516 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) *(.fini0) - 0x000003ca _etext = . + 0x0000051a _etext = . -.data 0x00800100 0x0 load address 0x000003ca +.data 0x00800100 0x6 load address 0x0000051a 0x00800100 PROVIDE (__data_start, .) *(.data) .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o .data 0x00800100 0x0 Can.o .data 0x00800100 0x0 Led.o .data 0x00800100 0x0 Mainboard.o + .data 0x00800100 0x0 Rs232.o .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o) .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_ctors.o) .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_tablejump.o) *(.data*) *(.rodata) *(.rodata*) + .rodata.str1.1 + 0x00800100 0x5 Mainboard.o *(.gnu.linkonce.d*) - 0x00800100 . = ALIGN (0x2) - 0x00800100 _edata = . - 0x00800100 PROVIDE (__data_end, .) + 0x00800106 . = ALIGN (0x2) + *fill* 0x00800105 0x1 + 0x00800106 _edata = . + 0x00800106 PROVIDE (__data_end, .) -.bss 0x00800100 0x2 - 0x00800100 PROVIDE (__bss_start, .) +.bss 0x00800106 0x3 + 0x00800106 PROVIDE (__bss_start, .) *(.bss) - .bss 0x00800100 0x2 Mainboard.o - 0x00800100 c - 0x00800101 l + .bss 0x00800106 0x3 Mainboard.o + 0x00800106 c + 0x00800107 r + 0x00800108 l *(.bss*) *(COMMON) - 0x00800102 PROVIDE (__bss_end, .) - 0x000003ca __data_load_start = LOADADDR (.data) - 0x000003ca __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00800109 PROVIDE (__bss_end, .) + 0x0000051a __data_load_start = LOADADDR (.data) + 0x00000520 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800102 0x0 - 0x00800102 PROVIDE (__noinit_start, .) +.noinit 0x00800109 0x0 + 0x00800109 PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800102 PROVIDE (__noinit_end, .) - 0x00800102 _end = . - 0x00800102 PROVIDE (__heap_start, .) + 0x00800109 PROVIDE (__noinit_end, .) + 0x00800109 _end = . + 0x00800109 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -438,6 +479,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x30 (size before relaxing) .comment 0x00000000 0x30 Led.o .comment 0x00000000 0x30 Mainboard.o + .comment 0x00000000 0x30 Rs232.o .debug *(.debug) @@ -451,7 +493,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0xe0 +.debug_aranges 0x00000000 0x118 *(.debug_aranges) .debug_aranges 0x00000000 0x70 Can.o @@ -459,48 +501,58 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x00000070 0x48 Led.o .debug_aranges 0x000000b8 0x28 Mainboard.o + .debug_aranges + 0x000000e0 0x38 Rs232.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x1c15 +.debug_info 0x00000000 0x1e0f *(.debug_info) - .debug_info 0x00000000 0x1274 Can.o - .debug_info 0x00001274 0x4f8 Led.o - .debug_info 0x0000176c 0x4a9 Mainboard.o + .debug_info 0x00000000 0xf5f Can.o + .debug_info 0x00000f5f 0x4f8 Led.o + .debug_info 0x00001457 0x781 Mainboard.o + .debug_info 0x00001bd8 0x237 Rs232.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x750 +.debug_abbrev 0x00000000 0x99e *(.debug_abbrev) - .debug_abbrev 0x00000000 0x353 Can.o - .debug_abbrev 0x00000353 0x1eb Led.o - .debug_abbrev 0x0000053e 0x212 Mainboard.o + .debug_abbrev 0x00000000 0x34a Can.o + .debug_abbrev 0x0000034a 0x1eb Led.o + .debug_abbrev 0x00000535 0x2fc Mainboard.o + .debug_abbrev 0x00000831 0x16d Rs232.o -.debug_line 0x00000000 0x59e +.debug_line 0x00000000 0x72a *(.debug_line) - .debug_line 0x00000000 0x340 Can.o - .debug_line 0x00000340 0x162 Led.o - .debug_line 0x000004a2 0xfc Mainboard.o + .debug_line 0x00000000 0x2e1 Can.o + .debug_line 0x000002e1 0x162 Led.o + .debug_line 0x00000443 0x1ca Mainboard.o + .debug_line 0x0000060d 0x11d Rs232.o -.debug_frame 0x00000000 0x2d8 +.debug_frame 0x00000000 0x338 *(.debug_frame) - .debug_frame 0x00000000 0x1c4 Can.o - .debug_frame 0x000001c4 0xe0 Led.o - .debug_frame 0x000002a4 0x34 Mainboard.o + .debug_frame 0x00000000 0x1ac Can.o + .debug_frame 0x000001ac 0xe0 Led.o + .debug_frame 0x0000028c 0x44 Mainboard.o + .debug_frame 0x000002d0 0x68 Rs232.o -.debug_str 0x00000000 0x419 +.debug_str 0x00000000 0x490 *(.debug_str) .debug_str 0x00000000 0x389 Can.o 0x3e1 (size before relaxing) .debug_str 0x00000389 0x23 Led.o 0x185 (size before relaxing) - .debug_str 0x000003ac 0x6d Mainboard.o - 0x3b8 (size before relaxing) + .debug_str 0x000003ac 0xc2 Mainboard.o + 0x465 (size before relaxing) + .debug_str 0x0000046e 0x22 Rs232.o + 0x14a (size before relaxing) -.debug_loc 0x00000000 0xc98 +.debug_loc 0x00000000 0xd47 *(.debug_loc) - .debug_loc 0x00000000 0x8ad Can.o - .debug_loc 0x000008ad 0x3eb Led.o + .debug_loc 0x00000000 0x796 Can.o + .debug_loc 0x00000796 0x3eb Led.o + .debug_loc 0x00000b81 0xad Mainboard.o + .debug_loc 0x00000c2e 0x119 Rs232.o .debug_macinfo *(.debug_macinfo) @@ -508,11 +560,12 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0xf8 +.debug_ranges 0x00000000 0x120 *(.debug_ranges) .debug_ranges 0x00000000 0x60 Can.o .debug_ranges 0x00000060 0x80 Led.o .debug_ranges 0x000000e0 0x18 Mainboard.o + .debug_ranges 0x000000f8 0x28 Rs232.o .debug_macro *(.debug_macro) diff --git a/Mainboard/Mainboard/Debug/Mainboard.srec b/Mainboard/Mainboard/Debug/Mainboard.srec index ddd7179..00734d1 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.srec +++ b/Mainboard/Mainboard/Debug/Mainboard.srec @@ -1,63 +1,85 @@ S01100004D61696E626F6172642E7372656386 -S11300000C943B000C9458000C9458000C94580029 -S11300100C9458000C9458000C9458000C945800FC -S11300200C9458000C9458000C9458000C945800EC -S11300300C9458000C9458000C9458000C945800DC -S11300400C9458000C9458000C9458000C945800CC -S11300500C9458000C9458000C9458000C945800BC -S11300600C9458000C9458000C9458000C945800AC -S11300700C945800D40111241FBECFEFD4E0DEBF8E -S1130080CDBF21E0A0E0B1E001C01D92A230B207D3 -S1130090E1F710E0C6E7D0E004C02297FE010E9419 -S11300A0DF01C437D107C9F70E94CE010C94E301E4 -S11300B00C94000084B1866084B985B1817F85B9D0 -S11300C0249A2C9A569A5E988FE39CE90197F1F74B -S11300D000C000005E9A8FE39CE90197F1F700C02D -S11300E0000008951CBC2FEF81EE94E02150804065 -S11300F09040E1F700C0000083E58CBD08951F9394 -S1130100CF93DF9300D000D01F92CDB7DEB7162F68 -S113011061E0CE0105960E94C4011EBD2FEF33ECB1 -S113012089E0215030408040E1F700C0000060E0E9 -S1130130CE0104960E94C4019FEF23EC39E0915054 -S113014020403040E1F700C000000DB407FC31C08E -S11301500DB406FE0FC067E0CE0103960E94C401F1 -S11301608AEA96EE26E931E0815090402040304002 -S1130170D9F7000065E0CE0102960E94C4018FEF1A -S113018091EE24E0815090402040E1F700C000004F -S113019060E0CE0101960E94C4013FEF81EE94E03D -S11301A0315080409040E1F700C000000DB407FEDC -S11301B0CFCF8EB50F900F900F900F900F90DF91CF -S11301C0CF911F9108950F931F93CF93DF93EC0169 -S11301D0062F142F2C9862E00E947F00602FCE011E -S11301E00E947F00612FCE010E947F002C9ADF9134 -S11301F0CF911F910F910895FF920F931F93CF9367 -S1130200DF93EC01F62E042F122F2C9865E00E9448 -S11302107F006F2DCE010E947F00602FCE010E94CF -S11302207F00612FCE010E947F002C9ADF91CF9135 -S11302301F910F91FF900895CF93DF93EC012C98B9 -S113024060EC0E947F008FE99FE00197F1F700C006 -S113025000002C9A8FE39CE90197F1F700C000009D -S113026047E06AE2CE010E94E30040E969E2CE0180 -S11302700E94E30042E068E2CE010E94E30043E012 -S11302806BE2CE010E94E30040E660E6CE010E94EC -S1130290E30040E660E7CE010E94E30040E060E254 -S11302A0CE010E94E30040E061E2CE010E94E3003F -S11302B040E062E2CE010E94E30040E063E2CE014E -S11302C00E94E30040E064E2CE010E94E30040E0CB -S11302D065E2CE010E94E30040E066E2CE010E94A6 -S11302E0E30040E067E2CE010E94E30040E06CE0FE -S11302F0CE010E94E30040E06DE0CE010E94E300E5 -S113030020E040EE6FE0CE010E94FC00DF91CF912F -S113031008950F931F93CF93DF9300D0CDB7DEB72B -S11303208C0162E0CE0102960E94C4012FEF81EE9F -S113033094E0215080409040E1F700C0000060E06C -S1130340CE0101960E94C4012FEF81EE94E021506A -S113035080409040E1F700C00000C8010E945A00AC -S1130360C8010E947200C8010E941C010F900F90E6 -S1130370DF91CF911F910F91089584B1806E84B95C -S113038008950E94BD01089585B18F7185B985B125 -S11303906295660F607E682B65B9089566E081E01A -S11303A091E00E94C401FFCF81E091E00E94C1016D -S11303B080E091E00E9489010895EE0FFF1F0590EF -S10D03C0F491E02D0994F894FFCFA6 +S11300000C943B000C9463000C9463000C94630008 +S11300100C9463000C9463000C9463000C946300D0 +S11300200C9463000C9463000C9463000C946300C0 +S11300300C9463000C9463000C9463000C946300B0 +S11300400C9463000C9463000C9463000C946300A0 +S11300500C9463000C9463000C9463000C94630090 +S11300600C9463000C9463000C9463000C94630080 +S11300700C9463004B0211241FBECFEFD4E0DEBF0B +S1130080CDBF11E0A0E0B1E0EAE1F5E002C00590E7 +S11300900D92A630B107D9F721E0A6E0B1E001C086 +S11300A01D92A930B207E1F710E0C6E7D0E004C022 +S11300B02297FE010E948702C437D107C9F70E9424 +S11300C0F9010C948B020C940000CF93DF9300D0C1 +S11300D0CDB7DEB76EBD65E0CE0102960E94EF019A +S11300E00DB407FEFDCF60E0CE0101960E94EF0142 +S11300F08EB50F900F90DF91CF91089584B18660F3 +S113010084B985B1817F85B9249A2C9A089580E5B4 +S11301108CBD81E08DBD08950F931F93CF93DF9322 +S1130120EC01062F142F2C9862E00E946500602FCA +S1130130CE010E946500612FCE010E9465002C9AB9 +S1130140DF91CF911F910F910895CF93DF93EC012D +S11301502C9860EC0E9465008FE99FE00197F1F70D +S113016000C000002C9A8FE39CE90197F1F700C0CE +S1130170000047E06AE2CE010E948C0040E969E297 +S1130180CE010E948C0042E068E2CE010E948C0005 +S113019043E06BE2CE010E948C0040E660E6CE01B3 +S11301A00E948C0040E660E7CE010E948C0040E093 +S11301B060E2CE010E948C0040E061E2CE010E9428 +S11301C08C0040E062E2CE010E948C0040E063E2D9 +S11301D0CE010E948C0040E064E2CE010E948C00BB +S11301E040E065E2CE010E948C0040E066E2CE0170 +S11301F00E948C0040E067E2CE010E948C0040E047 +S11302006CE0CE010E948C00DF91CF910895CF93D2 +S1130210DF93EC018FE39CE90197F1F700C0000044 +S1130220CE010E947E00CE010E948700CE010E9472 +S1130230A500DF91CF910895FF920F931F93CF9361 +S1130240DF93EC01F62E042F122F2C9865E00E9408 +S113025065006F2DCE010E946500602FCE010E94C3 +S11302606500612FCE010E9465002C9ADF91CF9129 +S11302701F910F91FF9008951F93CF93DF93EC018B +S11302802C9860EB0E9465006FEFCE010E94650020 +S1130290182F6FEFCE010E9465002C9A812FDF91F9 +S11302A0CF911F910895AF92BF92CF92DF92EF92B8 +S11302B0FF920F931F93CF93DF931F92CDB7DEB7B7 +S11302C07C016B010E943C018983898186FF06C001 +S11302D02C9860E9C7010E94650009C089818823C0 +S11302E00CF069C02C9864E9C7010E9465006FEFA7 +S11302F0C7010E94650090E0880F991F880F991F1D +S1130300880F991FF601918380836FEFC7010E94C4 +S1130310650090E096958795929582958F708927D0 +S11303209F708927F60120813181822B932B918341 +S113033080836FEFC7010E9465006FEFC7010E94C1 +S113034065006FEFC7010E9465008F70F60183831B +S11303508823A1F086010C5F1F4F5601F5E0AF0E14 +S1130360B11C8150A80EB11C6FEFC7010E9465003B +S1130370F80181938F01EA15FB05B1F72C9A898165 +S113038083FF04C081E0F601828302C0F601128279 +S1130390898186FF07C020E041E06CE2C7010E942A +S11303A01C0106C020E042E06CE2C7010E941C016F +S11303B08981877001C08FEF0F90DF91CF911F91DA +S11303C00F91FF90EF90DF90CF90BF90AF90089582 +S11303D084B1806E84B908950E94E801089585B1BE +S11303E08F7185B985B16295660F607E682B65B99A +S11303F00895CF93DF93CDB7DEB72C970FB6F8945B +S1130400DEBF0FBECDBF66E088E091E00E94EF0141 +S113041060E071E087E091E00E94700283E291E085 +S11304209A8389831B8282E08C838FEA8D838EEF8B +S11304308E8362E088E091E00E94EF012FEF83ED6C +S113044090E3215080409040E1F700C00000BE01DD +S11304506F5F7F4F86E091E00E9453018F3F61F40C +S113046064E088E091E00E94EF018FE39CE901974A +S1130470F1F700C00000DDCF61E088E091E00E9468 +S1130480EF019FEF23ED80E3915020408040E1F79E +S113049000C00000CECF88E091E00E94EC0187E02C +S11304A091E00E946D0286E091E00E9407010895A8 +S11304B0E8ECF0E0808185FFFDCF6093CE0080E022 +S11304C0089586E08093CA00E9ECF0E080818860BA +S11304D0808387E68093CC0008950E94610208958A +S11304E00F931F93CF93DF938C01EB0168816623F5 +S11304F039F02196C8010E94580269916111FACF1E +S1130500DF91CF911F910F910895EE0FFF1F05907A +S10D0510F491E02D0994F894FFCF54 +S109051A626C610A00009E S9030000FC diff --git a/Mainboard/Mainboard/Debug/Makefile b/Mainboard/Mainboard/Debug/Makefile index d195b0b..be2a735 100644 --- a/Mainboard/Mainboard/Debug/Makefile +++ b/Mainboard/Mainboard/Debug/Makefile @@ -38,7 +38,8 @@ SUBDIRS := C_SRCS += \ ../Can.cpp \ ../Led.cpp \ -../Mainboard.cpp +../Mainboard.cpp \ +../Rs232.cpp PREPROCESSING_SRCS += @@ -50,25 +51,29 @@ ASM_SRCS += OBJS += \ Can.o \ Led.o \ -Mainboard.o +Mainboard.o \ +Rs232.o OBJS_AS_ARGS += \ Can.o \ Led.o \ -Mainboard.o +Mainboard.o \ +Rs232.o C_DEPS += \ Can.d \ Led.d \ -Mainboard.d +Mainboard.d \ +Rs232.d C_DEPS_AS_ARGS += \ Can.d \ Led.d \ -Mainboard.d +Mainboard.d \ +Rs232.d OUTPUT_FILE_PATH +=Mainboard.elf @@ -89,6 +94,8 @@ LIB_DEP+= + + ./%.o: .././%.cpp @echo Building file: $< @echo Invoking: AVR8/GNU C++ Compiler : diff --git a/Mainboard/Mainboard/Debug/rs232.d b/Mainboard/Mainboard/Debug/Rs232.d similarity index 67% rename from Mainboard/Mainboard/Debug/rs232.d rename to Mainboard/Mainboard/Debug/Rs232.d index 37c4dcc..795b886 100644 --- a/Mainboard/Mainboard/Debug/rs232.d +++ b/Mainboard/Mainboard/Debug/Rs232.d @@ -1,12 +1,10 @@ -rs232.d rs232.o: .././rs232.c .././config.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h \ +Rs232.d Rs232.o: .././Rs232.cpp .././Rs232.h .././config.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdbool.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/interrupt.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/iom32u2.h \ @@ -14,16 +12,13 @@ rs232.d rs232.o: .././rs232.c .././config.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h \ - .././rs232.h + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h + +.././Rs232.h: .././config.h: -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h: +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h: c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h: @@ -31,13 +26,9 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h: -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h: +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h: -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h: - -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdbool.h: - -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/interrupt.h: +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h: c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h: @@ -54,13 +45,3 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h: c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h: - -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h: - -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h: - -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h: - -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h: - -.././rs232.h: diff --git a/Mainboard/Mainboard/Debug/makedep.mk b/Mainboard/Mainboard/Debug/makedep.mk index bf0f449..dadaf01 100644 --- a/Mainboard/Mainboard/Debug/makedep.mk +++ b/Mainboard/Mainboard/Debug/makedep.mk @@ -8,3 +8,5 @@ Led.cpp Mainboard.cpp +Rs232.cpp + diff --git a/Mainboard/Mainboard/Mainboard.cpp b/Mainboard/Mainboard/Mainboard.cpp index 8abd301..7e387cc 100644 --- a/Mainboard/Mainboard/Mainboard.cpp +++ b/Mainboard/Mainboard/Mainboard.cpp @@ -7,27 +7,42 @@ #include "config.h" #include "Led.h" +#include "Rs232.h" #include "Can.h" #include Led l; +Rs232 r; Can c; int main(void) { l.color(Led::YELLOW); - //CANMessage m; + r.send("bla\n"); + CANMessage m; + m.id = 0x0123; + m.rtr = 0; + m.length = 2; + m.data[0] = 0xAF; + m.data[1] = 0xFE; while(1) { - /*l.color(Led::GREEN); + l.color(Led::GREEN); + _delay_ms(1000); + //r.send("Text\n"); + //_delay_ms(500); + //c.can_send_message(&m); + //l.color(Led::BLACK); + //_delay_ms(100); + //l.color(Led::GREEN); uint8_t r = c.can_get_message(&m); if(r == 0xFF) { l.color(Led::RED); - _delay_ms(100); + _delay_ms(10); } else { l.color(Led::BLUE); - _delay_ms(100); - }*/ + _delay_ms(1000); + } } } \ No newline at end of file diff --git a/Mainboard/Mainboard/Mainboard.cppproj b/Mainboard/Mainboard/Mainboard.cppproj index 1176fbf..dbcf42d 100644 --- a/Mainboard/Mainboard/Mainboard.cppproj +++ b/Mainboard/Mainboard/Mainboard.cppproj @@ -18,7 +18,8 @@ Native true false - exception_table + + 0 true 0x20000000 @@ -104,42 +105,42 @@ - True - True - True - True - True - True - - - DEBUG - - - Optimize (-O1) - True - True - Default (-g2) - True - True - True - - - DEBUG - - - Optimize (-O1) - True - True - Default (-g2) - True - - - libm - - - <segmentname>=<address>, for example .boot=0xff - Default (-Wa,-g) - + True + True + True + True + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + <segmentname>=<address>, for example .boot=0xff + Default (-Wa,-g) + @@ -164,6 +165,12 @@ compile + + compile + + + compile + \ No newline at end of file diff --git a/Mainboard/Mainboard/Rs232.cpp b/Mainboard/Mainboard/Rs232.cpp new file mode 100644 index 0000000..d3c56b3 --- /dev/null +++ b/Mainboard/Mainboard/Rs232.cpp @@ -0,0 +1,34 @@ +/* + * Rs232.cpp + * + * Created: 04.11.2013 21:37:19 + * Author: netz + */ + +#include "Rs232.h" + +Rs232::Rs232() { + init(); +} + +uint8_t Rs232::uart_putchar(uint8_t c) +{ + loop_until_bit_is_set(UCSR1A, UDRE1); //Ausgabe des Zeichens + UDR1 = c; + return 0; +} + +void Rs232::init() +{ + UCSR1C = (1 << UCSZ11) |(1 << UCSZ10); //8N1 + UCSR1B |= /*(1< +#include + +class Rs232 { + private: + void init(); + uint8_t uart_putchar(uint8_t c); + public: + Rs232(); + Rs232(int) {} + void send(char *text); +}; + + + +#endif /* RS232_H_ */ \ No newline at end of file diff --git a/Mainboard/Mainboard/config.h b/Mainboard/Mainboard/config.h index 01820f0..121c732 100644 --- a/Mainboard/Mainboard/config.h +++ b/Mainboard/Mainboard/config.h @@ -10,5 +10,6 @@ #define CONFIG_H_ #define F_CPU 16000000 +#define BAUD_RATE 9600 #endif /* CONFIG_H_ */ \ No newline at end of file diff --git a/Mainboard/Mainboard/rs232.h b/Mainboard/Mainboard/rs232.h deleted file mode 100644 index 586c967..0000000 --- a/Mainboard/Mainboard/rs232.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * rs232.h - * - * Created: 06.10.2013 16:34:17 - * Author: netz - */ - -#include - -#ifndef RS232_H_ -#define RS232_H_ - -void init_rs232(); -void rs232_send(char * text); - -#endif /* RS232_H_ */ \ No newline at end of file