bosch-scu/BOSCH_SCU.lss

252 lines
8.0 KiB
Plaintext
Executable File

BOSCH_SCU.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000000ca 00000000 00000000 00000054 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .debug_aranges 00000020 00000000 00000000 0000011e 2**0
CONTENTS, READONLY, DEBUGGING
2 .debug_pubnames 00000040 00000000 00000000 0000013e 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_info 00000110 00000000 00000000 0000017e 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_abbrev 000000e0 00000000 00000000 0000028e 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_line 0000016a 00000000 00000000 0000036e 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_frame 00000050 00000000 00000000 000004d8 2**2
CONTENTS, READONLY, DEBUGGING
7 .debug_str 00000088 00000000 00000000 00000528 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_loc 0000001e 00000000 00000000 000005b0 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0e c0 rjmp .+28 ; 0x1e <__ctors_end>
2: 26 c0 rjmp .+76 ; 0x50 <__bad_interrupt>
4: 25 c0 rjmp .+74 ; 0x50 <__bad_interrupt>
6: 24 c0 rjmp .+72 ; 0x50 <__bad_interrupt>
8: 23 c0 rjmp .+70 ; 0x50 <__bad_interrupt>
a: 22 c0 rjmp .+68 ; 0x50 <__bad_interrupt>
c: 21 c0 rjmp .+66 ; 0x50 <__bad_interrupt>
e: 20 c0 rjmp .+64 ; 0x50 <__bad_interrupt>
10: 1f c0 rjmp .+62 ; 0x50 <__bad_interrupt>
12: 1e c0 rjmp .+60 ; 0x50 <__bad_interrupt>
14: 1d c0 rjmp .+58 ; 0x50 <__bad_interrupt>
16: 1c c0 rjmp .+56 ; 0x50 <__bad_interrupt>
18: 1b c0 rjmp .+54 ; 0x50 <__bad_interrupt>
1a: 1a c0 rjmp .+52 ; 0x50 <__bad_interrupt>
1c: 19 c0 rjmp .+50 ; 0x50 <__bad_interrupt>
0000001e <__ctors_end>:
1e: 11 24 eor r1, r1
20: 1f be out 0x3f, r1 ; 63
22: cf ed ldi r28, 0xDF ; 223
24: cd bf out 0x3d, r28 ; 61
00000026 <__do_copy_data>:
26: 10 e0 ldi r17, 0x00 ; 0
28: a0 e6 ldi r26, 0x60 ; 96
2a: b0 e0 ldi r27, 0x00 ; 0
2c: ea ec ldi r30, 0xCA ; 202
2e: f0 e0 ldi r31, 0x00 ; 0
30: 02 c0 rjmp .+4 ; 0x36 <.do_copy_data_start>
00000032 <.do_copy_data_loop>:
32: 05 90 lpm r0, Z+
34: 0d 92 st X+, r0
00000036 <.do_copy_data_start>:
36: a0 36 cpi r26, 0x60 ; 96
38: b1 07 cpc r27, r17
3a: d9 f7 brne .-10 ; 0x32 <.do_copy_data_loop>
0000003c <__do_clear_bss>:
3c: 10 e0 ldi r17, 0x00 ; 0
3e: a0 e6 ldi r26, 0x60 ; 96
40: b0 e0 ldi r27, 0x00 ; 0
42: 01 c0 rjmp .+2 ; 0x46 <.do_clear_bss_start>
00000044 <.do_clear_bss_loop>:
44: 1d 92 st X+, r1
00000046 <.do_clear_bss_start>:
46: a0 36 cpi r26, 0x60 ; 96
48: b1 07 cpc r27, r17
4a: e1 f7 brne .-8 ; 0x44 <.do_clear_bss_loop>
4c: 29 d0 rcall .+82 ; 0xa0 <main>
4e: 3b c0 rjmp .+118 ; 0xc6 <_exit>
00000050 <__bad_interrupt>:
50: d7 cf rjmp .-82 ; 0x0 <__vectors>
00000052 <initIO>:
Description: Initialise I/O
Input: -
Output: -
------------------------------------------------------------------------------------------------*/
void initIO (void){
52: 82 e0 ldi r24, 0x02 ; 2
54: 87 bd out 0x27, r24 ; 39
/* Start PLL */
PLLCSR = (1<<PLLE);
loop_until_bit_is_set(PLLCSR, PLOCK);
56: 07 b4 in r0, 0x27 ; 39
58: 00 fe sbrs r0, 0
5a: fd cf rjmp .-6 ; 0x56 <initIO+0x4>
PLLCSR |= (1<<PCKE);
5c: 87 b5 in r24, 0x27 ; 39
5e: 84 60 ori r24, 0x04 ; 4
60: 87 bd out 0x27, r24 ; 39
/* Direction settings for port B */
DDRB = (1<<PB1);
62: 82 e0 ldi r24, 0x02 ; 2
64: 87 bb out 0x17, r24 ; 23
/* Timer/PWM settings */
OCR1A = 0; // PWM value = 0
66: 1e bc out 0x2e, r1 ; 46
OCR1C = 255; // ~62kHz
68: 8f ef ldi r24, 0xFF ; 255
6a: 8d bd out 0x2d, r24 ; 45
TCCR1 = (1<<PWM1A)|(1<<COM1A0)|(1<<COM1A1)|(1<<CS11)|(1<<CS10);
6c: 83 e7 ldi r24, 0x73 ; 115
6e: 80 bf out 0x30, r24 ; 48
/* ADC settings */
DIDR0 = (1<<ADC1D);
70: 84 e0 ldi r24, 0x04 ; 4
72: 84 bb out 0x14, r24 ; 20
ADMUX = (1<<ADLAR)|(1<<MUX0);
74: 81 e2 ldi r24, 0x21 ; 33
76: 87 b9 out 0x07, r24 ; 7
ADCSRA = (1<<ADEN);
78: 80 e8 ldi r24, 0x80 ; 128
7a: 86 b9 out 0x06, r24 ; 6
}
7c: 08 95 ret
0000007e <readSensor>:
Description: Reading value from distance-sensor
Input: -
Output: -
------------------------------------------------------------------------------------------------*/
unsigned char readSensor (void){
7e: 36 9a sbi 0x06, 6 ; 6
ADCSRA |= (1<<ADSC);
loop_until_bit_is_clear(ADCSRA,ADSC);
80: 36 99 sbic 0x06, 6 ; 6
82: fe cf rjmp .-4 ; 0x80 <readSensor+0x2>
return ADCH;
84: 85 b1 in r24, 0x05 ; 5
}
86: 08 95 ret
00000088 <setPWM>:
Description: Set PMW output
Input: -
Output: -
------------------------------------------------------------------------------------------------*/
void setPWM (unsigned char pwmValue){
88: 98 2f mov r25, r24
if(pwmValue < 255 && pwmValue > 70)
8a: 87 54 subi r24, 0x47 ; 71
8c: 88 3b cpi r24, 0xB8 ; 184
8e: 10 f4 brcc .+4 ; 0x94 <setPWM+0xc>
{
pwmValue = pwmValue - 70;
90: 96 54 subi r25, 0x46 ; 70
92: 04 c0 rjmp .+8 ; 0x9c <setPWM+0x14>
OCR1A = pwmValue;
}
else if(pwmValue <= 70)
94: 97 34 cpi r25, 0x47 ; 71
96: 10 f4 brcc .+4 ; 0x9c <setPWM+0x14>
{
OCR1A = 0;
98: 1e bc out 0x2e, r1 ; 46
9a: 08 95 ret
}
else
{
OCR1A = pwmValue;
9c: 9e bd out 0x2e, r25 ; 46
9e: 08 95 ret
000000a0 <main>:
}
/*================================================================================================
Main
================================================================================================*/
int main (void){
a0: f8 94 cli
unsigned char tmp = 0;
cli(); // Disable global interrupt
initIO();
a2: d7 df rcall .-82 ; 0x52 <initIO>
sei(); // Enable global interrupt
a4: 78 94 sei
Input: -
Output: -
------------------------------------------------------------------------------------------------*/
unsigned char readSensor (void){
ADCSRA |= (1<<ADSC);
a6: 36 9a sbi 0x06, 6 ; 6
loop_until_bit_is_clear(ADCSRA,ADSC);
a8: 36 99 sbic 0x06, 6 ; 6
aa: fe cf rjmp .-4 ; 0xa8 <main+0x8>
return ADCH;
ac: 95 b1 in r25, 0x05 ; 5
Input: -
Output: -
------------------------------------------------------------------------------------------------*/
void setPWM (unsigned char pwmValue){
if(pwmValue < 255 && pwmValue > 70)
ae: 89 2f mov r24, r25
b0: 87 54 subi r24, 0x47 ; 71
b2: 88 3b cpi r24, 0xB8 ; 184
b4: 10 f4 brcc .+4 ; 0xba <main+0x1a>
{
pwmValue = pwmValue - 70;
b6: 96 54 subi r25, 0x46 ; 70
b8: 04 c0 rjmp .+8 ; 0xc2 <main+0x22>
OCR1A = pwmValue;
}
else if(pwmValue <= 70)
ba: 97 34 cpi r25, 0x47 ; 71
bc: 10 f4 brcc .+4 ; 0xc2 <main+0x22>
{
OCR1A = 0;
be: 1e bc out 0x2e, r1 ; 46
c0: f2 cf rjmp .-28 ; 0xa6 <main+0x6>
}
else
{
OCR1A = pwmValue;
c2: 9e bd out 0x2e, r25 ; 46
c4: f0 cf rjmp .-32 ; 0xa6 <main+0x6>
000000c6 <_exit>:
c6: f8 94 cli
000000c8 <__stop_program>:
c8: ff cf rjmp .-2 ; 0xc8 <__stop_program>