252 lines
8.0 KiB
Plaintext
Executable File
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>
|