Line 1... |
Line 1... |
1 |
GAS LISTING /tmp/ccZHfAgR.s page 1
|
1 |
GAS LISTING /tmp/ccfEG7oP.s page 1
|
2 |
|
2 |
|
3 |
|
3 |
|
4 |
1 .file "I2CInterface.c"
|
4 |
1 .file "I2CInterface.c"
|
5 |
2 .arch atmega8
|
- |
|
6 |
3 __SREG__ = 0x3f
|
5 |
2 __SREG__ = 0x3f
|
7 |
4 __SP_H__ = 0x3e
|
6 |
3 __SP_H__ = 0x3e
|
8 |
5 __SP_L__ = 0x3d
|
7 |
4 __SP_L__ = 0x3d
|
9 |
6 __tmp_reg__ = 0
|
8 |
5 __tmp_reg__ = 0
|
10 |
7 __zero_reg__ = 1
|
9 |
6 __zero_reg__ = 1
|
11 |
8 .global __do_copy_data
|
10 |
7 .global __do_copy_data
|
12 |
9 .global __do_clear_bss
|
11 |
8 .global __do_clear_bss
|
13 |
10 .stabs "/home/kaklik/projects/programy/Atmel_C/AVRcam/",100,0,2,.Ltext0
|
12 |
9 .stabs "/home/kaklik/projects/programy/C/avr/AVRcam/",100,0,2,.Ltext0
|
14 |
11 .stabs "I2CInterface.c",100,0,2,.Ltext0
|
13 |
10 .stabs "I2CInterface.c",100,0,2,.Ltext0
|
15 |
12 .text
|
14 |
11 .text
|
16 |
13 .Ltext0:
|
15 |
12 .Ltext0:
|
17 |
14 .stabs "gcc2_compiled.",60,0,0,0
|
16 |
13 .stabs "gcc2_compiled.",60,0,0,0
|
18 |
15 .stabs "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0
|
17 |
14 .stabs "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0
|
19 |
16 .stabs "char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0
|
18 |
15 .stabs "char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0
|
20 |
17 .stabs "long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,0,0
|
19 |
16 .stabs "long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,0,0
|
21 |
18 .stabs "unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,0,0
|
20 |
17 .stabs "unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,0,0
|
22 |
19 .stabs "long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,0,0
|
21 |
18 .stabs "long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,0,0
|
23 |
20 .stabs "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,
|
22 |
19 .stabs "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,
|
24 |
21 .stabs "long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,0,0
|
23 |
20 .stabs "long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,0,0
|
25 |
22 .stabs "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
|
24 |
21 .stabs "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
|
26 |
23 .stabs "short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,0,0
|
25 |
22 .stabs "short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,0,0
|
27 |
24 .stabs "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0
|
26 |
23 .stabs "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0
|
28 |
25 .stabs "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0
|
27 |
24 .stabs "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0
|
29 |
26 .stabs "float:t(0,12)=r(0,1);4;0;",128,0,0,0
|
28 |
25 .stabs "float:t(0,12)=r(0,1);4;0;",128,0,0,0
|
30 |
27 .stabs "double:t(0,13)=r(0,1);4;0;",128,0,0,0
|
29 |
26 .stabs "double:t(0,13)=r(0,1);4;0;",128,0,0,0
|
31 |
28 .stabs "long double:t(0,14)=r(0,1);4;0;",128,0,0,0
|
30 |
27 .stabs "long double:t(0,14)=r(0,1);4;0;",128,0,0,0
|
32 |
29 .stabs "void:t(0,15)=(0,15)",128,0,0,0
|
31 |
28 .stabs "void:t(0,15)=(0,15)",128,0,0,0
|
33 |
30 .stabs "/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/io.h",130,0,0,0
|
32 |
29 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/io.h",130,0,0,0
|
34 |
31 .stabs "/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/sfr_defs.h",130,0,0,0
|
33 |
30 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/sfr_defs.h",130,0,0,0
|
35 |
32 .stabs "/usr/lib/gcc/avr/4.1.0/../../../../avr/include/inttypes.h",130,0,0,0
|
34 |
31 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/inttypes.h",130,0,0,0
|
36 |
33 .stabs "/usr/lib/gcc/avr/4.1.0/../../../../avr/include/stdint.h",130,0,0,0
|
35 |
32 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/stdint.h",130,0,0,0
|
37 |
34 .stabs "int8_t:t(4,1)=(0,10)",128,0,116,0
|
36 |
33 .stabs "int8_t:t(4,1)=(0,10)",128,0,116,0
|
38 |
35 .stabs "uint8_t:t(4,2)=(0,11)",128,0,117,0
|
37 |
34 .stabs "uint8_t:t(4,2)=(0,11)",128,0,117,0
|
39 |
36 .stabs "int16_t:t(4,3)=(0,1)",128,0,118,0
|
38 |
35 .stabs "int16_t:t(4,3)=(0,1)",128,0,118,0
|
40 |
37 .stabs "uint16_t:t(4,4)=(0,4)",128,0,119,0
|
39 |
36 .stabs "uint16_t:t(4,4)=(0,4)",128,0,119,0
|
41 |
38 .stabs "int32_t:t(4,5)=(0,3)",128,0,120,0
|
40 |
37 .stabs "int32_t:t(4,5)=(0,3)",128,0,120,0
|
42 |
39 .stabs "uint32_t:t(4,6)=(0,5)",128,0,121,0
|
41 |
38 .stabs "uint32_t:t(4,6)=(0,5)",128,0,121,0
|
43 |
40 .stabs "int64_t:t(4,7)=(0,6)",128,0,122,0
|
42 |
39 .stabs "int64_t:t(4,7)=(0,6)",128,0,122,0
|
44 |
41 .stabs "uint64_t:t(4,8)=(0,7)",128,0,123,0
|
43 |
40 .stabs "uint64_t:t(4,8)=(0,7)",128,0,123,0
|
45 |
42 .stabs "intptr_t:t(4,9)=(4,3)",128,0,135,0
|
44 |
41 .stabs "intptr_t:t(4,9)=(4,3)",128,0,135,0
|
46 |
43 .stabs "uintptr_t:t(4,10)=(4,4)",128,0,140,0
|
45 |
42 .stabs "uintptr_t:t(4,10)=(4,4)",128,0,140,0
|
47 |
44 .stabs "int_least8_t:t(4,11)=(4,1)",128,0,152,0
|
46 |
43 .stabs "int_least8_t:t(4,11)=(4,1)",128,0,152,0
|
48 |
45 .stabs "uint_least8_t:t(4,12)=(4,2)",128,0,157,0
|
47 |
44 .stabs "uint_least8_t:t(4,12)=(4,2)",128,0,157,0
|
49 |
46 .stabs "int_least16_t:t(4,13)=(4,3)",128,0,162,0
|
48 |
45 .stabs "int_least16_t:t(4,13)=(4,3)",128,0,162,0
|
50 |
47 .stabs "uint_least16_t:t(4,14)=(4,4)",128,0,167,0
|
49 |
46 .stabs "uint_least16_t:t(4,14)=(4,4)",128,0,167,0
|
51 |
48 .stabs "int_least32_t:t(4,15)=(4,5)",128,0,172,0
|
50 |
47 .stabs "int_least32_t:t(4,15)=(4,5)",128,0,172,0
|
52 |
49 .stabs "uint_least32_t:t(4,16)=(4,6)",128,0,177,0
|
51 |
48 .stabs "uint_least32_t:t(4,16)=(4,6)",128,0,177,0
|
53 |
50 .stabs "int_least64_t:t(4,17)=(4,7)",128,0,182,0
|
52 |
49 .stabs "int_least64_t:t(4,17)=(4,7)",128,0,182,0
|
54 |
51 .stabs "uint_least64_t:t(4,18)=(4,8)",128,0,187,0
|
53 |
50 .stabs "uint_least64_t:t(4,18)=(4,8)",128,0,187,0
|
55 |
52 .stabs "int_fast8_t:t(4,19)=(4,1)",128,0,200,0
|
54 |
51 .stabs "int_fast8_t:t(4,19)=(4,1)",128,0,200,0
|
56 |
53 .stabs "uint_fast8_t:t(4,20)=(4,2)",128,0,205,0
|
55 |
52 .stabs "uint_fast8_t:t(4,20)=(4,2)",128,0,205,0
|
57 |
54 .stabs "int_fast16_t:t(4,21)=(4,3)",128,0,210,0
|
56 |
53 .stabs "int_fast16_t:t(4,21)=(4,3)",128,0,210,0
|
58 |
55 .stabs "uint_fast16_t:t(4,22)=(4,4)",128,0,215,0
|
57 |
54 .stabs "uint_fast16_t:t(4,22)=(4,4)",128,0,215,0
|
59 |
56 .stabs "int_fast32_t:t(4,23)=(4,5)",128,0,220,0
|
58 |
55 .stabs "int_fast32_t:t(4,23)=(4,5)",128,0,220,0
|
60 |
57 .stabs "uint_fast32_t:t(4,24)=(4,6)",128,0,225,0
|
59 |
56 .stabs "uint_fast32_t:t(4,24)=(4,6)",128,0,225,0
|
- |
|
60 |
57 .stabs "int_fast64_t:t(4,25)=(4,7)",128,0,230,0
|
61 |
GAS LISTING /tmp/ccZHfAgR.s page 2
|
61 |
GAS LISTING /tmp/ccfEG7oP.s page 2
|
62 |
|
62 |
|
63 |
|
63 |
|
64 |
58 .stabs "int_fast64_t:t(4,25)=(4,7)",128,0,230,0
|
- |
|
65 |
59 .stabs "uint_fast64_t:t(4,26)=(4,8)",128,0,235,0
|
64 |
58 .stabs "uint_fast64_t:t(4,26)=(4,8)",128,0,235,0
|
66 |
60 .stabs "intmax_t:t(4,27)=(4,7)",128,0,249,0
|
65 |
59 .stabs "intmax_t:t(4,27)=(4,7)",128,0,249,0
|
67 |
61 .stabs "uintmax_t:t(4,28)=(4,8)",128,0,254,0
|
66 |
60 .stabs "uintmax_t:t(4,28)=(4,8)",128,0,254,0
|
68 |
62 .stabn 162,0,0,0
|
67 |
61 .stabn 162,0,0,0
|
69 |
63 .stabs "int_farptr_t:t(3,1)=(4,5)",128,0,76,0
|
68 |
62 .stabs "int_farptr_t:t(3,1)=(4,5)",128,0,76,0
|
70 |
64 .stabs "uint_farptr_t:t(3,2)=(4,6)",128,0,80,0
|
69 |
63 .stabs "uint_farptr_t:t(3,2)=(4,6)",128,0,80,0
|
- |
|
70 |
64 .stabn 162,0,0,0
|
71 |
65 .stabn 162,0,0,0
|
71 |
65 .stabn 162,0,0,0
|
72 |
66 .stabn 162,0,0,0
|
72 |
66 .stabn 162,0,0,0
|
73 |
67 .stabn 162,0,0,0
|
- |
|
74 |
68 .stabs "CamConfig.h",130,0,0,0
|
73 |
67 .stabs "CamConfig.h",130,0,0,0
|
75 |
69 .stabs "I2CInterface.h",130,0,0,0
|
74 |
68 .stabs "I2CInterface.h",130,0,0,0
|
76 |
70 .stabs "CommonDefs.h",130,0,0,0
|
75 |
69 .stabs "CommonDefs.h",130,0,0,0
|
77 |
71 .stabs "bool_t:t(7,1)=(0,11)",128,0,56,0
|
76 |
70 .stabs "bool_t:t(7,1)=(0,11)",128,0,56,0
|
78 |
72 .stabn 162,0,0,0
|
77 |
71 .stabn 162,0,0,0
|
79 |
73 .stabs "i2cCmd_t:t(6,1)=(6,2)=s2configReg:(0,11),0,8;data:(0,11),8,8;;",128,0,53,0
|
78 |
72 .stabs "i2cCmd_t:t(6,1)=(6,2)=s2configReg:(0,11),0,8;data:(0,11),8,8;;",128,0,53,0
|
- |
|
79 |
73 .stabn 162,0,0,0
|
80 |
74 .stabn 162,0,0,0
|
80 |
74 .stabn 162,0,0,0
|
81 |
75 .stabn 162,0,0,0
|
- |
|
82 |
76 .stabs "I2CInt_init:F(0,15)",36,0,85,I2CInt_init
|
81 |
75 .stabs "I2CInt_init:F(0,15)",36,0,85,I2CInt_init
|
83 |
77 .global I2CInt_init
|
82 |
76 .global I2CInt_init
|
84 |
78 .type I2CInt_init, @function
|
83 |
77 .type I2CInt_init, @function
|
85 |
79 I2CInt_init:
|
84 |
78 I2CInt_init:
|
86 |
80 .stabd 46,0,0
|
85 |
79 .stabd 46,0,0
|
87 |
1:I2CInterface.c **** /*
|
86 |
1:I2CInterface.c **** /*
|
88 |
2:I2CInterface.c **** Copyright (C) 2004 John Orlando
|
87 |
2:I2CInterface.c **** Copyright (C) 2004 John Orlando
|
89 |
3:I2CInterface.c ****
|
88 |
3:I2CInterface.c ****
|
90 |
4:I2CInterface.c **** AVRcam: a small real-time image processing engine.
|
89 |
4:I2CInterface.c **** AVRcam: a small real-time image processing engine.
|
91 |
5:I2CInterface.c ****
|
90 |
5:I2CInterface.c ****
|
Line 116... |
Line 115... |
116 |
30:I2CInterface.c ****
|
115 |
30:I2CInterface.c ****
|
117 |
31:I2CInterface.c **** Description: This module is responsible for providing a
|
116 |
31:I2CInterface.c **** Description: This module is responsible for providing a
|
118 |
32:I2CInterface.c **** low-level interface to the I2C hardware resident on the
|
117 |
32:I2CInterface.c **** low-level interface to the I2C hardware resident on the
|
119 |
33:I2CInterface.c **** mega8 processor (also known as the Two-Wire Interface,
|
118 |
33:I2CInterface.c **** mega8 processor (also known as the Two-Wire Interface,
|
120 |
34:I2CInterface.c **** or TWI). The interface is needed to configure the
|
119 |
34:I2CInterface.c **** or TWI). The interface is needed to configure the
|
- |
|
120 |
35:I2CInterface.c **** needed registers in the OV6620 camera. This interface
|
121 |
GAS LISTING /tmp/ccZHfAgR.s page 3
|
121 |
GAS LISTING /tmp/ccfEG7oP.s page 3
|
122 |
|
122 |
|
123 |
|
123 |
|
124 |
35:I2CInterface.c **** needed registers in the OV6620 camera. This interface
|
- |
|
125 |
36:I2CInterface.c **** is interrupt-driven based on the events that should
|
124 |
36:I2CInterface.c **** is interrupt-driven based on the events that should
|
126 |
37:I2CInterface.c **** occur upon successful writing of an I2C register.
|
125 |
37:I2CInterface.c **** occur upon successful writing of an I2C register.
|
127 |
38:I2CInterface.c ****
|
126 |
38:I2CInterface.c ****
|
128 |
39:I2CInterface.c **** Revision History:
|
127 |
39:I2CInterface.c **** Revision History:
|
129 |
40:I2CInterface.c **** Date Rel Ver. Notes
|
128 |
40:I2CInterface.c **** Date Rel Ver. Notes
|
Line 170... |
Line 169... |
170 |
81:I2CInterface.c **** Inputs: none
|
169 |
81:I2CInterface.c **** Inputs: none
|
171 |
82:I2CInterface.c **** Outputs: none
|
170 |
82:I2CInterface.c **** Outputs: none
|
172 |
83:I2CInterface.c **** ***********************************************************/
|
171 |
83:I2CInterface.c **** ***********************************************************/
|
173 |
84:I2CInterface.c **** void I2CInt_init(void)
|
172 |
84:I2CInterface.c **** void I2CInt_init(void)
|
174 |
85:I2CInterface.c **** {
|
173 |
85:I2CInterface.c **** {
|
175 |
81 .stabn 68,0,85,.LM0-I2CInt_init
|
174 |
80 .stabn 68,0,85,.LM0-.LFBB1
|
176 |
82 .LM0:
|
175 |
81 .LM0:
|
- |
|
176 |
82 .LFBB1:
|
177 |
83 /* prologue: frame size=0 */
|
177 |
83 /* prologue: frame size=0 */
|
178 |
84 /* prologue end (size=0) */
|
178 |
84 /* prologue end (size=0) */
|
179 |
86:I2CInterface.c **** TWSR = 0;
|
179 |
86:I2CInterface.c **** TWSR = 0;
|
180 |
85 .stabn 68,0,86,.LM1-I2CInt_init
|
180 |
85 .stabn 68,0,86,.LM1-.LFBB1
|
181 |
GAS LISTING /tmp/ccZHfAgR.s page 4
|
181 |
GAS LISTING /tmp/ccfEG7oP.s page 4
|
182 |
|
182 |
|
183 |
|
183 |
|
184 |
86 .LM1:
|
184 |
86 .LM1:
|
185 |
87 0000 11B8 out 33-0x20,__zero_reg__
|
185 |
87 0000 11B8 out 33-0x20,__zero_reg__
|
186 |
87:I2CInterface.c ****
|
186 |
87:I2CInterface.c ****
|
187 |
88:I2CInterface.c **** /* init the speed of the I2C interface, running at
|
187 |
88:I2CInterface.c **** /* init the speed of the I2C interface, running at
|
188 |
89:I2CInterface.c **** 100 Kbps */
|
188 |
89:I2CInterface.c **** 100 Kbps */
|
189 |
90:I2CInterface.c **** TWBR = (FOSC / I2C_SPEED - 16)/2;
|
189 |
90:I2CInterface.c **** TWBR = (FOSC / I2C_SPEED - 16)/2;
|
190 |
88 .stabn 68,0,90,.LM2-I2CInt_init
|
190 |
88 .stabn 68,0,90,.LM2-.LFBB1
|
191 |
89 .LM2:
|
191 |
89 .LM2:
|
192 |
90 0002 88E4 ldi r24,lo8(72)
|
192 |
90 0002 88E4 ldi r24,lo8(72)
|
193 |
91 0004 80B9 out 32-0x20,r24
|
193 |
91 0004 80B9 out 32-0x20,r24
|
194 |
92 /* epilogue: frame size=0 */
|
194 |
92 /* epilogue: frame size=0 */
|
195 |
93 0006 0895 ret
|
195 |
93 0006 0895 ret
|
196 |
94 /* epilogue end (size=1) */
|
196 |
94 /* epilogue end (size=1) */
|
197 |
95 /* function I2CInt_init size 4 (3) */
|
197 |
95 /* function I2CInt_init size 4 (3) */
|
198 |
96 .size I2CInt_init, .-I2CInt_init
|
198 |
96 .size I2CInt_init, .-I2CInt_init
|
199 |
97 .Lscope0:
|
199 |
97 .Lscope1:
|
200 |
98 .stabs "",36,0,0,.Lscope0-I2CInt_init
|
200 |
98 .stabs "",36,0,0,.Lscope1-.LFBB1
|
201 |
99 .stabd 78,0,0
|
201 |
99 .stabd 78,0,0
|
202 |
100 .stabs "I2CInt_writeData:F(0,15)",36,0,108,I2CInt_writeData
|
202 |
100 .stabs "I2CInt_writeData:F(0,15)",36,0,108,I2CInt_writeData
|
203 |
101 .stabs "address:P(0,11)",64,0,107,25
|
203 |
101 .stabs "address:P(0,11)",64,0,107,25
|
204 |
102 .stabs "data:P(0,16)=*(0,11)",64,0,107,22
|
204 |
102 .stabs "data:P(0,16)=*(0,11)",64,0,107,22
|
205 |
103 .stabs "bytes:P(0,11)",64,0,107,20
|
205 |
103 .stabs "bytes:P(0,11)",64,0,107,20
|
Line 223... |
Line 223... |
223 |
104:I2CInterface.c **** bytes: the number of bytes to write
|
223 |
104:I2CInterface.c **** bytes: the number of bytes to write
|
224 |
105:I2CInterface.c **** Outputs: none
|
224 |
105:I2CInterface.c **** Outputs: none
|
225 |
106:I2CInterface.c **** ***********************************************************/
|
225 |
106:I2CInterface.c **** ***********************************************************/
|
226 |
107:I2CInterface.c **** void I2CInt_writeData(unsigned char address, unsigned char *data, unsigned char bytes)
|
226 |
107:I2CInterface.c **** void I2CInt_writeData(unsigned char address, unsigned char *data, unsigned char bytes)
|
227 |
108:I2CInterface.c **** {
|
227 |
108:I2CInterface.c **** {
|
228 |
108 .stabn 68,0,108,.LM3-I2CInt_writeData
|
228 |
108 .stabn 68,0,108,.LM3-.LFBB2
|
229 |
109 .LM3:
|
229 |
109 .LM3:
|
- |
|
230 |
110 .LFBB2:
|
230 |
110 /* prologue: frame size=0 */
|
231 |
111 /* prologue: frame size=0 */
|
231 |
111 /* prologue end (size=0) */
|
232 |
112 /* prologue end (size=0) */
|
232 |
112 0008 982F mov r25,r24
|
233 |
113 0008 982F mov r25,r24
|
233 |
113 .L5:
|
234 |
114 .L5:
|
234 |
109:I2CInterface.c **** while(status & (1<<BUSY)); /* Bus is busy wait (or exit with error code) */
|
235 |
109:I2CInterface.c **** while(status & (1<<BUSY)); /* Bus is busy wait (or exit with error code) */
|
235 |
114 .stabn 68,0,109,.LM4-I2CInt_writeData
|
236 |
115 .stabn 68,0,109,.LM4-.LFBB2
|
236 |
115 .LM4:
|
237 |
116 .LM4:
|
237 |
116 000a 8091 0000 lds r24,status
|
238 |
117 000a 8091 0000 lds r24,status
|
238 |
117 000e 8823 tst r24
|
239 |
118 000e 8823 tst r24
|
239 |
118 0010 E4F3 brlt .L5
|
240 |
119 0010 04F0 brlt .L5
|
240 |
119 .L9:
|
- |
|
241 |
GAS LISTING /tmp/ccZHfAgR.s page 5
|
241 |
GAS LISTING /tmp/ccfEG7oP.s page 5
|
242 |
|
242 |
|
243 |
|
243 |
|
- |
|
244 |
120 .L9:
|
244 |
110:I2CInterface.c **** while(TWCR & (1<<TWSTO));
|
245 |
110:I2CInterface.c **** while(TWCR & (1<<TWSTO));
|
245 |
120 .stabn 68,0,110,.LM5-I2CInt_writeData
|
246 |
121 .stabn 68,0,110,.LM5-.LFBB2
|
246 |
121 .LM5:
|
247 |
122 .LM5:
|
247 |
122 0012 06B6 in __tmp_reg__,86-0x20
|
248 |
123 0012 06B6 in __tmp_reg__,86-0x20
|
248 |
123 0014 04FC sbrc __tmp_reg__,4
|
249 |
124 0014 04FC sbrc __tmp_reg__,4
|
249 |
124 0016 FDCF rjmp .L9
|
250 |
125 0016 00C0 rjmp .L9
|
250 |
111:I2CInterface.c ****
|
251 |
111:I2CInterface.c ****
|
251 |
112:I2CInterface.c **** /* copy the needed data and state info to our local I2C command structure */
|
252 |
112:I2CInterface.c **** /* copy the needed data and state info to our local I2C command structure */
|
252 |
113:I2CInterface.c **** twi_address = address;
|
253 |
113:I2CInterface.c **** twi_address = address;
|
253 |
125 .stabn 68,0,113,.LM6-I2CInt_writeData
|
254 |
126 .stabn 68,0,113,.LM6-.LFBB2
|
254 |
126 .LM6:
|
255 |
127 .LM6:
|
255 |
127 0018 9093 0000 sts twi_address,r25
|
256 |
128 0018 9093 0000 sts twi_address,r25
|
256 |
114:I2CInterface.c **** twi_data = data;
|
257 |
114:I2CInterface.c **** twi_data = data;
|
257 |
128 .stabn 68,0,114,.LM7-I2CInt_writeData
|
258 |
129 .stabn 68,0,114,.LM7-.LFBB2
|
258 |
129 .LM7:
|
259 |
130 .LM7:
|
259 |
130 001c 7093 0000 sts (twi_data)+1,r23
|
260 |
131 001c 7093 0000 sts (twi_data)+1,r23
|
260 |
131 0020 6093 0000 sts twi_data,r22
|
261 |
132 0020 6093 0000 sts twi_data,r22
|
261 |
115:I2CInterface.c **** twi_bytes = bytes;
|
262 |
115:I2CInterface.c **** twi_bytes = bytes;
|
262 |
132 .stabn 68,0,115,.LM8-I2CInt_writeData
|
263 |
133 .stabn 68,0,115,.LM8-.LFBB2
|
263 |
133 .LM8:
|
264 |
134 .LM8:
|
264 |
134 0024 4093 0000 sts twi_bytes,r20
|
265 |
135 0024 4093 0000 sts twi_bytes,r20
|
265 |
116:I2CInterface.c **** twi_ddr = TW_WRITE;
|
266 |
116:I2CInterface.c **** twi_ddr = TW_WRITE;
|
266 |
135 .stabn 68,0,116,.LM9-I2CInt_writeData
|
267 |
136 .stabn 68,0,116,.LM9-.LFBB2
|
267 |
136 .LM9:
|
268 |
137 .LM9:
|
268 |
137 0028 1092 0000 sts twi_ddr,__zero_reg__
|
269 |
138 0028 1092 0000 sts twi_ddr,__zero_reg__
|
269 |
117:I2CInterface.c ****
|
270 |
117:I2CInterface.c ****
|
270 |
118:I2CInterface.c **** retry_cnt = 0;
|
271 |
118:I2CInterface.c **** retry_cnt = 0;
|
271 |
138 .stabn 68,0,118,.LM10-I2CInt_writeData
|
272 |
139 .stabn 68,0,118,.LM10-.LFBB2
|
272 |
139 .LM10:
|
273 |
140 .LM10:
|
273 |
140 002c 1092 0000 sts retry_cnt,__zero_reg__
|
274 |
141 002c 1092 0000 sts retry_cnt,__zero_reg__
|
274 |
119:I2CInterface.c ****
|
275 |
119:I2CInterface.c ****
|
275 |
120:I2CInterface.c **** /* Generate start condition, the remainder of the transfer is interrupt driven and
|
276 |
120:I2CInterface.c **** /* Generate start condition, the remainder of the transfer is interrupt driven and
|
276 |
121:I2CInterface.c **** will be performed in the background */
|
277 |
121:I2CInterface.c **** will be performed in the background */
|
277 |
122:I2CInterface.c **** TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)|(1<<TWIE);
|
278 |
122:I2CInterface.c **** TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)|(1<<TWIE);
|
278 |
141 .stabn 68,0,122,.LM11-I2CInt_writeData
|
279 |
142 .stabn 68,0,122,.LM11-.LFBB2
|
279 |
142 .LM11:
|
280 |
143 .LM11:
|
280 |
143 0030 85EA ldi r24,lo8(-91)
|
281 |
144 0030 85EA ldi r24,lo8(-91)
|
281 |
144 0032 86BF out 86-0x20,r24
|
282 |
145 0032 86BF out 86-0x20,r24
|
282 |
123:I2CInterface.c ****
|
283 |
123:I2CInterface.c ****
|
283 |
124:I2CInterface.c **** status |= (1<<BUSY);
|
284 |
124:I2CInterface.c **** status |= (1<<BUSY);
|
284 |
145 .stabn 68,0,124,.LM12-I2CInt_writeData
|
285 |
146 .stabn 68,0,124,.LM12-.LFBB2
|
285 |
146 .LM12:
|
286 |
147 .LM12:
|
286 |
147 0034 8091 0000 lds r24,status
|
287 |
148 0034 8091 0000 lds r24,status
|
287 |
148 0038 8068 ori r24,lo8(-128)
|
288 |
149 0038 8068 ori r24,lo8(-128)
|
288 |
149 003a 8093 0000 sts status,r24
|
289 |
150 003a 8093 0000 sts status,r24
|
289 |
150 /* epilogue: frame size=0 */
|
290 |
151 /* epilogue: frame size=0 */
|
290 |
151 003e 0895 ret
|
291 |
152 003e 0895 ret
|
291 |
152 /* epilogue end (size=1) */
|
292 |
153 /* epilogue end (size=1) */
|
292 |
153 /* function I2CInt_writeData size 28 (27) */
|
293 |
154 /* function I2CInt_writeData size 28 (27) */
|
293 |
154 .size I2CInt_writeData, .-I2CInt_writeData
|
294 |
155 .size I2CInt_writeData, .-I2CInt_writeData
|
294 |
155 .Lscope1:
|
295 |
156 .Lscope2:
|
295 |
156 .stabs "",36,0,0,.Lscope1-I2CInt_writeData
|
296 |
157 .stabs "",36,0,0,.Lscope2-.LFBB2
|
296 |
157 .stabd 78,0,0
|
297 |
158 .stabd 78,0,0
|
297 |
158 .stabs "I2CInt_readData:F(0,15)",36,0,138,I2CInt_readData
|
298 |
159 .stabs "I2CInt_readData:F(0,15)",36,0,138,I2CInt_readData
|
298 |
159 .stabs "address:P(0,11)",64,0,137,25
|
299 |
160 .stabs "address:P(0,11)",64,0,137,25
|
299 |
160 .stabs "data:P(0,16)",64,0,137,22
|
300 |
161 .stabs "data:P(0,16)",64,0,137,22
|
300 |
161 .stabs "bytes:P(0,11)",64,0,137,20
|
- |
|
301 |
GAS LISTING /tmp/ccZHfAgR.s page 6
|
301 |
GAS LISTING /tmp/ccfEG7oP.s page 6
|
302 |
|
302 |
|
303 |
|
303 |
|
- |
|
304 |
162 .stabs "bytes:P(0,11)",64,0,137,20
|
304 |
162 .global I2CInt_readData
|
305 |
163 .global I2CInt_readData
|
305 |
163 .type I2CInt_readData, @function
|
306 |
164 .type I2CInt_readData, @function
|
306 |
164 I2CInt_readData:
|
307 |
165 I2CInt_readData:
|
307 |
165 .stabd 46,0,0
|
308 |
166 .stabd 46,0,0
|
308 |
125:I2CInterface.c **** }
|
309 |
125:I2CInterface.c **** }
|
309 |
126:I2CInterface.c ****
|
310 |
126:I2CInterface.c ****
|
310 |
127:I2CInterface.c **** /***********************************************************
|
311 |
127:I2CInterface.c **** /***********************************************************
|
311 |
128:I2CInterface.c **** Function Name: I2CInt_readData
|
312 |
128:I2CInterface.c **** Function Name: I2CInt_readData
|
312 |
129:I2CInterface.c **** Function Description: This funcion is responsible for
|
313 |
129:I2CInterface.c **** Function Description: This funcion is responsible for
|
Line 317... |
Line 318... |
317 |
134:I2CInterface.c **** bytes: the number of bytes to read
|
318 |
134:I2CInterface.c **** bytes: the number of bytes to read
|
318 |
135:I2CInterface.c **** Outputs: none
|
319 |
135:I2CInterface.c **** Outputs: none
|
319 |
136:I2CInterface.c **** ***********************************************************/
|
320 |
136:I2CInterface.c **** ***********************************************************/
|
320 |
137:I2CInterface.c **** void I2CInt_readData(unsigned char address, unsigned char *data, unsigned char bytes)
|
321 |
137:I2CInterface.c **** void I2CInt_readData(unsigned char address, unsigned char *data, unsigned char bytes)
|
321 |
138:I2CInterface.c **** {
|
322 |
138:I2CInterface.c **** {
|
322 |
166 .stabn 68,0,138,.LM13-I2CInt_readData
|
323 |
167 .stabn 68,0,138,.LM13-.LFBB3
|
323 |
167 .LM13:
|
324 |
168 .LM13:
|
- |
|
325 |
169 .LFBB3:
|
324 |
168 /* prologue: frame size=0 */
|
326 |
170 /* prologue: frame size=0 */
|
325 |
169 /* prologue end (size=0) */
|
327 |
171 /* prologue end (size=0) */
|
326 |
170 0040 982F mov r25,r24
|
328 |
172 0040 982F mov r25,r24
|
327 |
171 .L15:
|
329 |
173 .L15:
|
328 |
139:I2CInterface.c **** /* Bus is busy wait (or exit with error code) */
|
330 |
139:I2CInterface.c **** /* Bus is busy wait (or exit with error code) */
|
329 |
140:I2CInterface.c **** while(status & (1<<BUSY));
|
331 |
140:I2CInterface.c **** while(status & (1<<BUSY));
|
330 |
172 .stabn 68,0,140,.LM14-I2CInt_readData
|
332 |
174 .stabn 68,0,140,.LM14-.LFBB3
|
331 |
173 .LM14:
|
333 |
175 .LM14:
|
332 |
174 0042 8091 0000 lds r24,status
|
334 |
176 0042 8091 0000 lds r24,status
|
333 |
175 0046 8823 tst r24
|
335 |
177 0046 8823 tst r24
|
334 |
176 0048 E4F3 brlt .L15
|
336 |
178 0048 04F0 brlt .L15
|
335 |
141:I2CInterface.c ****
|
337 |
141:I2CInterface.c ****
|
336 |
142:I2CInterface.c **** twi_address = address;
|
338 |
142:I2CInterface.c **** twi_address = address;
|
337 |
177 .stabn 68,0,142,.LM15-I2CInt_readData
|
339 |
179 .stabn 68,0,142,.LM15-.LFBB3
|
338 |
178 .LM15:
|
340 |
180 .LM15:
|
339 |
179 004a 9093 0000 sts twi_address,r25
|
341 |
181 004a 9093 0000 sts twi_address,r25
|
340 |
143:I2CInterface.c **** twi_data = data;
|
342 |
143:I2CInterface.c **** twi_data = data;
|
341 |
180 .stabn 68,0,143,.LM16-I2CInt_readData
|
343 |
182 .stabn 68,0,143,.LM16-.LFBB3
|
342 |
181 .LM16:
|
344 |
183 .LM16:
|
343 |
182 004e 7093 0000 sts (twi_data)+1,r23
|
345 |
184 004e 7093 0000 sts (twi_data)+1,r23
|
344 |
183 0052 6093 0000 sts twi_data,r22
|
346 |
185 0052 6093 0000 sts twi_data,r22
|
345 |
144:I2CInterface.c **** twi_bytes = bytes;
|
347 |
144:I2CInterface.c **** twi_bytes = bytes;
|
346 |
184 .stabn 68,0,144,.LM17-I2CInt_readData
|
348 |
186 .stabn 68,0,144,.LM17-.LFBB3
|
347 |
185 .LM17:
|
349 |
187 .LM17:
|
348 |
186 0056 4093 0000 sts twi_bytes,r20
|
350 |
188 0056 4093 0000 sts twi_bytes,r20
|
349 |
145:I2CInterface.c **** twi_ddr = TW_READ;
|
351 |
145:I2CInterface.c **** twi_ddr = TW_READ;
|
350 |
187 .stabn 68,0,145,.LM18-I2CInt_readData
|
352 |
189 .stabn 68,0,145,.LM18-.LFBB3
|
351 |
188 .LM18:
|
353 |
190 .LM18:
|
352 |
189 005a 81E0 ldi r24,lo8(1)
|
354 |
191 005a 81E0 ldi r24,lo8(1)
|
353 |
190 005c 8093 0000 sts twi_ddr,r24
|
355 |
192 005c 8093 0000 sts twi_ddr,r24
|
354 |
146:I2CInterface.c ****
|
356 |
146:I2CInterface.c ****
|
355 |
147:I2CInterface.c **** retry_cnt = 0;
|
357 |
147:I2CInterface.c **** retry_cnt = 0;
|
356 |
191 .stabn 68,0,147,.LM19-I2CInt_readData
|
358 |
193 .stabn 68,0,147,.LM19-.LFBB3
|
357 |
192 .LM19:
|
359 |
194 .LM19:
|
358 |
193 0060 1092 0000 sts retry_cnt,__zero_reg__
|
360 |
195 0060 1092 0000 sts retry_cnt,__zero_reg__
|
359 |
148:I2CInterface.c ****
|
- |
|
360 |
149:I2CInterface.c **** /* Generate start condition, the remainder of the transfer is interrupt driven and
|
- |
|
361 |
GAS LISTING /tmp/ccZHfAgR.s page 7
|
361 |
GAS LISTING /tmp/ccfEG7oP.s page 7
|
362 |
|
362 |
|
363 |
|
363 |
|
- |
|
364 |
148:I2CInterface.c ****
|
- |
|
365 |
149:I2CInterface.c **** /* Generate start condition, the remainder of the transfer is interrupt driven and
|
364 |
150:I2CInterface.c **** will be performed in the background */
|
366 |
150:I2CInterface.c **** will be performed in the background */
|
365 |
151:I2CInterface.c **** TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)|(1<<TWIE);
|
367 |
151:I2CInterface.c **** TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)|(1<<TWIE);
|
366 |
194 .stabn 68,0,151,.LM20-I2CInt_readData
|
368 |
196 .stabn 68,0,151,.LM20-.LFBB3
|
367 |
195 .LM20:
|
369 |
197 .LM20:
|
368 |
196 0064 85EA ldi r24,lo8(-91)
|
370 |
198 0064 85EA ldi r24,lo8(-91)
|
369 |
197 0066 86BF out 86-0x20,r24
|
371 |
199 0066 86BF out 86-0x20,r24
|
370 |
152:I2CInterface.c ****
|
372 |
152:I2CInterface.c ****
|
371 |
153:I2CInterface.c **** status |= (1<<BUSY);
|
373 |
153:I2CInterface.c **** status |= (1<<BUSY);
|
372 |
198 .stabn 68,0,153,.LM21-I2CInt_readData
|
374 |
200 .stabn 68,0,153,.LM21-.LFBB3
|
373 |
199 .LM21:
|
375 |
201 .LM21:
|
374 |
200 0068 8091 0000 lds r24,status
|
376 |
202 0068 8091 0000 lds r24,status
|
375 |
201 006c 8068 ori r24,lo8(-128)
|
377 |
203 006c 8068 ori r24,lo8(-128)
|
376 |
202 006e 8093 0000 sts status,r24
|
378 |
204 006e 8093 0000 sts status,r24
|
377 |
203 /* epilogue: frame size=0 */
|
379 |
205 /* epilogue: frame size=0 */
|
378 |
204 0072 0895 ret
|
380 |
206 0072 0895 ret
|
379 |
205 /* epilogue end (size=1) */
|
381 |
207 /* epilogue end (size=1) */
|
380 |
206 /* function I2CInt_readData size 26 (25) */
|
382 |
208 /* function I2CInt_readData size 26 (25) */
|
381 |
207 .size I2CInt_readData, .-I2CInt_readData
|
383 |
209 .size I2CInt_readData, .-I2CInt_readData
|
382 |
208 .Lscope2:
|
384 |
210 .Lscope3:
|
383 |
209 .stabs "",36,0,0,.Lscope2-I2CInt_readData
|
385 |
211 .stabs "",36,0,0,.Lscope3-.LFBB3
|
384 |
210 .stabd 78,0,0
|
386 |
212 .stabd 78,0,0
|
385 |
211 .stabs "I2CInt_isI2cBusy:F(7,1)",36,0,166,I2CInt_isI2cBusy
|
387 |
213 .stabs "I2CInt_isI2cBusy:F(7,1)",36,0,166,I2CInt_isI2cBusy
|
386 |
212 .global I2CInt_isI2cBusy
|
388 |
214 .global I2CInt_isI2cBusy
|
387 |
213 .type I2CInt_isI2cBusy, @function
|
389 |
215 .type I2CInt_isI2cBusy, @function
|
388 |
214 I2CInt_isI2cBusy:
|
390 |
216 I2CInt_isI2cBusy:
|
389 |
215 .stabd 46,0,0
|
391 |
217 .stabd 46,0,0
|
390 |
154:I2CInterface.c **** }
|
392 |
154:I2CInterface.c **** }
|
391 |
155:I2CInterface.c ****
|
393 |
155:I2CInterface.c ****
|
392 |
156:I2CInterface.c **** /***********************************************************
|
394 |
156:I2CInterface.c **** /***********************************************************
|
393 |
157:I2CInterface.c **** Function Name: I2CInt_isI2cBusy
|
395 |
157:I2CInterface.c **** Function Name: I2CInt_isI2cBusy
|
394 |
158:I2CInterface.c **** Function Description: This funcion is responsible for
|
396 |
158:I2CInterface.c **** Function Description: This funcion is responsible for
|
Line 398... |
Line 400... |
398 |
162:I2CInterface.c **** Inputs: none
|
400 |
162:I2CInterface.c **** Inputs: none
|
399 |
163:I2CInterface.c **** Outputs: bool_t - indicating if bus is busy
|
401 |
163:I2CInterface.c **** Outputs: bool_t - indicating if bus is busy
|
400 |
164:I2CInterface.c **** ***********************************************************/
|
402 |
164:I2CInterface.c **** ***********************************************************/
|
401 |
165:I2CInterface.c **** bool_t I2CInt_isI2cBusy(void)
|
403 |
165:I2CInterface.c **** bool_t I2CInt_isI2cBusy(void)
|
402 |
166:I2CInterface.c **** {
|
404 |
166:I2CInterface.c **** {
|
403 |
216 .stabn 68,0,166,.LM22-I2CInt_isI2cBusy
|
405 |
218 .stabn 68,0,166,.LM22-.LFBB4
|
404 |
217 .LM22:
|
406 |
219 .LM22:
|
- |
|
407 |
220 .LFBB4:
|
405 |
218 /* prologue: frame size=0 */
|
408 |
221 /* prologue: frame size=0 */
|
406 |
219 /* prologue end (size=0) */
|
409 |
222 /* prologue end (size=0) */
|
407 |
167:I2CInterface.c **** bool_t retVal = FALSE;
|
410 |
167:I2CInterface.c **** bool_t retVal = FALSE;
|
408 |
168:I2CInterface.c **** if ( (status & (1<<BUSY)) != 0)
|
411 |
168:I2CInterface.c **** if ( (status & (1<<BUSY)) != 0)
|
409 |
220 .stabn 68,0,168,.LM23-I2CInt_isI2cBusy
|
412 |
223 .stabn 68,0,168,.LM23-.LFBB4
|
410 |
221 .LM23:
|
413 |
224 .LM23:
|
411 |
222 0074 8091 0000 lds r24,status
|
414 |
225 0074 8091 0000 lds r24,status
|
412 |
223 0078 881F rol r24
|
415 |
226 0078 881F rol r24
|
413 |
224 007a 8827 clr r24
|
416 |
227 007a 8827 clr r24
|
414 |
225 007c 881F rol r24
|
417 |
228 007c 881F rol r24
|
415 |
169:I2CInterface.c **** {
|
418 |
169:I2CInterface.c **** {
|
416 |
170:I2CInterface.c **** retVal = TRUE;
|
419 |
170:I2CInterface.c **** retVal = TRUE;
|
417 |
171:I2CInterface.c **** }
|
420 |
171:I2CInterface.c **** }
|
- |
|
421 |
GAS LISTING /tmp/ccfEG7oP.s page 8
|
- |
|
422 |
|
- |
|
423 |
|
418 |
172:I2CInterface.c ****
|
424 |
172:I2CInterface.c ****
|
419 |
173:I2CInterface.c **** return(retVal);
|
425 |
173:I2CInterface.c **** return(retVal);
|
420 |
174:I2CInterface.c **** }
|
426 |
174:I2CInterface.c **** }
|
421 |
GAS LISTING /tmp/ccZHfAgR.s page 8
|
- |
|
422 |
|
- |
|
423 |
|
- |
|
424 |
226 .stabn 68,0,174,.LM24-I2CInt_isI2cBusy
|
427 |
229 .stabn 68,0,174,.LM24-.LFBB4
|
425 |
227 .LM24:
|
428 |
230 .LM24:
|
426 |
228 007e 9927 clr r25
|
429 |
231 007e 9927 clr r25
|
427 |
229 /* epilogue: frame size=0 */
|
430 |
232 /* epilogue: frame size=0 */
|
428 |
230 0080 0895 ret
|
431 |
233 0080 0895 ret
|
429 |
231 /* epilogue end (size=1) */
|
432 |
234 /* epilogue end (size=1) */
|
430 |
232 /* function I2CInt_isI2cBusy size 7 (6) */
|
433 |
235 /* function I2CInt_isI2cBusy size 7 (6) */
|
431 |
233 .size I2CInt_isI2cBusy, .-I2CInt_isI2cBusy
|
434 |
236 .size I2CInt_isI2cBusy, .-I2CInt_isI2cBusy
|
432 |
234 .Lscope3:
|
435 |
237 .Lscope4:
|
433 |
235 .stabs "",36,0,0,.Lscope3-I2CInt_isI2cBusy
|
436 |
238 .stabs "",36,0,0,.Lscope4-.LFBB4
|
434 |
236 .stabd 78,0,0
|
437 |
239 .stabd 78,0,0
|
435 |
237 .stabs "__vector_17:F(0,15)",36,0,185,__vector_17
|
438 |
240 .stabs "__vector_17:F(0,15)",36,0,185,__vector_17
|
436 |
238 .global __vector_17
|
439 |
241 .global __vector_17
|
437 |
239 .type __vector_17, @function
|
440 |
242 .type __vector_17, @function
|
438 |
240 __vector_17:
|
441 |
243 __vector_17:
|
439 |
241 .stabd 46,0,0
|
442 |
244 .stabd 46,0,0
|
440 |
175:I2CInterface.c ****
|
443 |
175:I2CInterface.c ****
|
441 |
176:I2CInterface.c **** /***********************************************************
|
444 |
176:I2CInterface.c **** /***********************************************************
|
442 |
177:I2CInterface.c **** Function Name: <interrupt handler for I2C>
|
445 |
177:I2CInterface.c **** Function Name: <interrupt handler for I2C>
|
443 |
178:I2CInterface.c **** Function Description: This function is responsible for
|
446 |
178:I2CInterface.c **** Function Description: This function is responsible for
|
444 |
179:I2CInterface.c **** implementing the control logic needed to perform a
|
447 |
179:I2CInterface.c **** implementing the control logic needed to perform a
|
Line 446... |
Line 449... |
446 |
181:I2CInterface.c **** Inputs: none
|
449 |
181:I2CInterface.c **** Inputs: none
|
447 |
182:I2CInterface.c **** Outputs: none
|
450 |
182:I2CInterface.c **** Outputs: none
|
448 |
183:I2CInterface.c **** ***********************************************************/
|
451 |
183:I2CInterface.c **** ***********************************************************/
|
449 |
184:I2CInterface.c **** SIGNAL(SIG_2WIRE_SERIAL)
|
452 |
184:I2CInterface.c **** SIGNAL(SIG_2WIRE_SERIAL)
|
450 |
185:I2CInterface.c **** {
|
453 |
185:I2CInterface.c **** {
|
451 |
242 .stabn 68,0,185,.LM25-__vector_17
|
454 |
245 .stabn 68,0,185,.LM25-.LFBB5
|
452 |
243 .LM25:
|
455 |
246 .LM25:
|
- |
|
456 |
247 .LFBB5:
|
453 |
244 /* prologue: frame size=0 */
|
457 |
248 /* prologue: frame size=0 */
|
454 |
245 0082 1F92 push __zero_reg__
|
458 |
249 0082 1F92 push __zero_reg__
|
455 |
246 0084 0F92 push __tmp_reg__
|
459 |
250 0084 0F92 push __tmp_reg__
|
456 |
247 0086 0FB6 in __tmp_reg__,__SREG__
|
460 |
251 0086 0FB6 in __tmp_reg__,__SREG__
|
457 |
248 0088 0F92 push __tmp_reg__
|
461 |
252 0088 0F92 push __tmp_reg__
|
458 |
249 008a 1124 clr __zero_reg__
|
462 |
253 008a 1124 clr __zero_reg__
|
459 |
250 008c 8F93 push r24
|
463 |
254 008c 8F93 push r24
|
460 |
251 008e 9F93 push r25
|
464 |
255 008e 9F93 push r25
|
461 |
252 0090 AF93 push r26
|
465 |
256 0090 AF93 push r26
|
462 |
253 0092 BF93 push r27
|
466 |
257 0092 BF93 push r27
|
463 |
254 0094 EF93 push r30
|
467 |
258 0094 EF93 push r30
|
464 |
255 0096 FF93 push r31
|
468 |
259 0096 FF93 push r31
|
465 |
256 /* prologue end (size=11) */
|
469 |
260 /* prologue end (size=11) */
|
466 |
186:I2CInterface.c **** unsigned char TWI_status = TWSR & TW_STATUS_MASK; /* grab just the status bits */
|
470 |
186:I2CInterface.c **** unsigned char TWI_status = TWSR & TW_STATUS_MASK; /* grab just the status bits */
|
467 |
257 .stabn 68,0,186,.LM26-__vector_17
|
471 |
261 .stabn 68,0,186,.LM26-.LFBB5
|
468 |
258 .LM26:
|
472 |
262 .LM26:
|
469 |
259 0098 81B1 in r24,33-0x20
|
473 |
263 0098 81B1 in r24,33-0x20
|
470 |
187:I2CInterface.c ****
|
474 |
187:I2CInterface.c ****
|
471 |
188:I2CInterface.c **** /* the entire I2C handler is state-based...determine
|
475 |
188:I2CInterface.c **** /* the entire I2C handler is state-based...determine
|
472 |
189:I2CInterface.c **** what needs to be done based on TWI_status */
|
476 |
189:I2CInterface.c **** what needs to be done based on TWI_status */
|
473 |
190:I2CInterface.c **** switch(TWI_status)
|
477 |
190:I2CInterface.c **** switch(TWI_status)
|
474 |
260 .stabn 68,0,190,.LM27-__vector_17
|
478 |
264 .stabn 68,0,190,.LM27-.LFBB5
|
475 |
261 .LM27:
|
479 |
265 .LM27:
|
476 |
262 009a 9927 clr r25
|
480 |
266 009a 9927 clr r25
|
- |
|
481 |
GAS LISTING /tmp/ccfEG7oP.s page 9
|
- |
|
482 |
|
- |
|
483 |
|
477 |
263 009c AA27 clr r26
|
484 |
267 009c AA27 clr r26
|
478 |
264 009e BB27 clr r27
|
485 |
268 009e BB27 clr r27
|
479 |
265 00a0 887F andi r24,lo8(248)
|
486 |
269 00a0 887F andi r24,lo8(248)
|
480 |
266 00a2 9070 andi r25,hi8(248)
|
487 |
270 00a2 9070 andi r25,hi8(248)
|
481 |
GAS LISTING /tmp/ccZHfAgR.s page 9
|
- |
|
482 |
|
- |
|
483 |
|
- |
|
484 |
267 00a4 A070 andi r26,hlo8(248)
|
488 |
271 00a4 A070 andi r26,hlo8(248)
|
485 |
268 00a6 B070 andi r27,hhi8(248)
|
489 |
272 00a6 B070 andi r27,hhi8(248)
|
486 |
269 00a8 FC01 movw r30,r24
|
490 |
273 00a8 FC01 movw r30,r24
|
487 |
270 00aa 3897 sbiw r30,8
|
491 |
274 00aa 3897 sbiw r30,8
|
488 |
271 00ac E135 cpi r30,81
|
492 |
275 00ac E135 cpi r30,81
|
489 |
272 00ae F105 cpc r31,__zero_reg__
|
493 |
276 00ae F105 cpc r31,__zero_reg__
|
490 |
273 00b0 08F0 brlo .+2
|
494 |
277 00b0 00F0 brlo .+2
|
491 |
274 00b2 9AC0 rjmp .L42
|
495 |
278 00b2 00C0 rjmp .L42
|
492 |
275 .stabn 68,0,190,.LM28-__vector_17
|
496 |
279 .stabn 68,0,190,.LM28-.LFBB5
|
493 |
276 .LM28:
|
497 |
280 .LM28:
|
494 |
277 00b4 E050 subi r30,lo8(-(pm(.L33)))
|
498 |
281 00b4 E050 subi r30,lo8(-(pm(.L33)))
|
495 |
278 00b6 F040 sbci r31,hi8(-(pm(.L33)))
|
499 |
282 00b6 F040 sbci r31,hi8(-(pm(.L33)))
|
496 |
279 00b8 0994 ijmp
|
500 |
283 00b8 0994 ijmp
|
497 |
280 .data
|
- |
|
498 |
281 .section .progmem.gcc_sw_table, "ax", @progbits
|
- |
|
499 |
282 .p2align 1
|
- |
|
500 |
283 .L33:
|
- |
|
501 |
284 .data
|
501 |
284 .data
|
502 |
285 .section .progmem.gcc_sw_table, "ax", @progbits
|
502 |
285 .section .progmem.gcc_sw_table, "ax", @progbits
|
503 |
286 .p2align 1
|
503 |
286 .p2align 1
|
504 |
287 0000 00C0 rjmp .L25
|
504 |
287 .L33:
|
505 |
288 0002 00C0 rjmp .L42
|
505 |
288 .data
|
506 |
289 0004 00C0 rjmp .L42
|
506 |
289 .section .progmem.gcc_sw_table, "ax", @progbits
|
507 |
290 0006 00C0 rjmp .L42
|
507 |
290 .p2align 1
|
508 |
291 0008 00C0 rjmp .L42
|
508 |
291 0000 00C0 rjmp .L25
|
509 |
292 000a 00C0 rjmp .L42
|
509 |
292 0002 00C0 rjmp .L42
|
510 |
293 000c 00C0 rjmp .L42
|
510 |
293 0004 00C0 rjmp .L42
|
511 |
294 000e 00C0 rjmp .L42
|
511 |
294 0006 00C0 rjmp .L42
|
512 |
295 0010 00C0 rjmp .L25
|
512 |
295 0008 00C0 rjmp .L42
|
513 |
296 0012 00C0 rjmp .L42
|
513 |
296 000a 00C0 rjmp .L42
|
514 |
297 0014 00C0 rjmp .L42
|
514 |
297 000c 00C0 rjmp .L42
|
515 |
298 0016 00C0 rjmp .L42
|
515 |
298 000e 00C0 rjmp .L42
|
516 |
299 0018 00C0 rjmp .L42
|
516 |
299 0010 00C0 rjmp .L25
|
517 |
300 001a 00C0 rjmp .L42
|
517 |
300 0012 00C0 rjmp .L42
|
518 |
301 001c 00C0 rjmp .L42
|
518 |
301 0014 00C0 rjmp .L42
|
519 |
302 001e 00C0 rjmp .L42
|
519 |
302 0016 00C0 rjmp .L42
|
520 |
303 0020 00C0 rjmp .L26
|
520 |
303 0018 00C0 rjmp .L42
|
521 |
304 0022 00C0 rjmp .L42
|
521 |
304 001a 00C0 rjmp .L42
|
522 |
305 0024 00C0 rjmp .L42
|
522 |
305 001c 00C0 rjmp .L42
|
523 |
306 0026 00C0 rjmp .L42
|
523 |
306 001e 00C0 rjmp .L42
|
524 |
307 0028 00C0 rjmp .L42
|
524 |
307 0020 00C0 rjmp .L26
|
525 |
308 002a 00C0 rjmp .L42
|
525 |
308 0022 00C0 rjmp .L42
|
526 |
309 002c 00C0 rjmp .L42
|
526 |
309 0024 00C0 rjmp .L42
|
527 |
310 002e 00C0 rjmp .L42
|
527 |
310 0026 00C0 rjmp .L42
|
528 |
311 0030 00C0 rjmp .L27
|
528 |
311 0028 00C0 rjmp .L42
|
529 |
312 0032 00C0 rjmp .L42
|
529 |
312 002a 00C0 rjmp .L42
|
530 |
313 0034 00C0 rjmp .L42
|
530 |
313 002c 00C0 rjmp .L42
|
531 |
314 0036 00C0 rjmp .L42
|
531 |
314 002e 00C0 rjmp .L42
|
532 |
315 0038 00C0 rjmp .L42
|
532 |
315 0030 00C0 rjmp .L27
|
533 |
316 003a 00C0 rjmp .L42
|
533 |
316 0032 00C0 rjmp .L42
|
534 |
317 003c 00C0 rjmp .L42
|
534 |
317 0034 00C0 rjmp .L42
|
535 |
318 003e 00C0 rjmp .L42
|
535 |
318 0036 00C0 rjmp .L42
|
536 |
319 0040 00C0 rjmp .L28
|
536 |
319 0038 00C0 rjmp .L42
|
537 |
320 0042 00C0 rjmp .L42
|
537 |
320 003a 00C0 rjmp .L42
|
538 |
321 0044 00C0 rjmp .L42
|
538 |
321 003c 00C0 rjmp .L42
|
539 |
322 0046 00C0 rjmp .L42
|
539 |
322 003e 00C0 rjmp .L42
|
540 |
323 0048 00C0 rjmp .L42
|
540 |
323 0040 00C0 rjmp .L28
|
541 |
GAS LISTING /tmp/ccZHfAgR.s page 10
|
541 |
GAS LISTING /tmp/ccfEG7oP.s page 10
|
542 |
|
542 |
|
543 |
|
543 |
|
544 |
324 004a 00C0 rjmp .L42
|
544 |
324 0042 00C0 rjmp .L42
|
545 |
325 004c 00C0 rjmp .L42
|
545 |
325 0044 00C0 rjmp .L42
|
546 |
326 004e 00C0 rjmp .L42
|
546 |
326 0046 00C0 rjmp .L42
|
- |
|
547 |
327 0048 00C0 rjmp .L42
|
- |
|
548 |
328 004a 00C0 rjmp .L42
|
- |
|
549 |
329 004c 00C0 rjmp .L42
|
- |
|
550 |
330 004e 00C0 rjmp .L42
|
547 |
327 0050 00C0 rjmp .L29
|
551 |
331 0050 00C0 rjmp .L29
|
548 |
328 0052 00C0 rjmp .L42
|
552 |
332 0052 00C0 rjmp .L42
|
549 |
329 0054 00C0 rjmp .L42
|
553 |
333 0054 00C0 rjmp .L42
|
550 |
330 0056 00C0 rjmp .L42
|
554 |
334 0056 00C0 rjmp .L42
|
551 |
331 0058 00C0 rjmp .L42
|
555 |
335 0058 00C0 rjmp .L42
|
552 |
332 005a 00C0 rjmp .L42
|
556 |
336 005a 00C0 rjmp .L42
|
553 |
333 005c 00C0 rjmp .L42
|
557 |
337 005c 00C0 rjmp .L42
|
554 |
334 005e 00C0 rjmp .L42
|
558 |
338 005e 00C0 rjmp .L42
|
555 |
335 0060 00C0 rjmp .L42
|
559 |
339 0060 00C0 rjmp .L42
|
556 |
336 0062 00C0 rjmp .L42
|
560 |
340 0062 00C0 rjmp .L42
|
557 |
337 0064 00C0 rjmp .L42
|
561 |
341 0064 00C0 rjmp .L42
|
558 |
338 0066 00C0 rjmp .L42
|
562 |
342 0066 00C0 rjmp .L42
|
559 |
339 0068 00C0 rjmp .L42
|
563 |
343 0068 00C0 rjmp .L42
|
560 |
340 006a 00C0 rjmp .L42
|
564 |
344 006a 00C0 rjmp .L42
|
561 |
341 006c 00C0 rjmp .L42
|
565 |
345 006c 00C0 rjmp .L42
|
562 |
342 006e 00C0 rjmp .L42
|
566 |
346 006e 00C0 rjmp .L42
|
563 |
343 0070 00C0 rjmp .L30
|
567 |
347 0070 00C0 rjmp .L30
|
564 |
344 0072 00C0 rjmp .L42
|
568 |
348 0072 00C0 rjmp .L42
|
565 |
345 0074 00C0 rjmp .L42
|
569 |
349 0074 00C0 rjmp .L42
|
566 |
346 0076 00C0 rjmp .L42
|
570 |
350 0076 00C0 rjmp .L42
|
567 |
347 0078 00C0 rjmp .L42
|
571 |
351 0078 00C0 rjmp .L42
|
568 |
348 007a 00C0 rjmp .L42
|
572 |
352 007a 00C0 rjmp .L42
|
569 |
349 007c 00C0 rjmp .L42
|
573 |
353 007c 00C0 rjmp .L42
|
570 |
350 007e 00C0 rjmp .L42
|
574 |
354 007e 00C0 rjmp .L42
|
571 |
351 0080 00C0 rjmp .L27
|
575 |
355 0080 00C0 rjmp .L27
|
572 |
352 0082 00C0 rjmp .L42
|
576 |
356 0082 00C0 rjmp .L42
|
573 |
353 0084 00C0 rjmp .L42
|
577 |
357 0084 00C0 rjmp .L42
|
574 |
354 0086 00C0 rjmp .L42
|
578 |
358 0086 00C0 rjmp .L42
|
575 |
355 0088 00C0 rjmp .L42
|
579 |
359 0088 00C0 rjmp .L42
|
576 |
356 008a 00C0 rjmp .L42
|
580 |
360 008a 00C0 rjmp .L42
|
577 |
357 008c 00C0 rjmp .L42
|
581 |
361 008c 00C0 rjmp .L42
|
578 |
358 008e 00C0 rjmp .L42
|
582 |
362 008e 00C0 rjmp .L42
|
579 |
359 0090 00C0 rjmp .L31
|
583 |
363 0090 00C0 rjmp .L31
|
580 |
360 0092 00C0 rjmp .L42
|
584 |
364 0092 00C0 rjmp .L42
|
581 |
361 0094 00C0 rjmp .L42
|
585 |
365 0094 00C0 rjmp .L42
|
582 |
362 0096 00C0 rjmp .L42
|
586 |
366 0096 00C0 rjmp .L42
|
583 |
363 0098 00C0 rjmp .L42
|
587 |
367 0098 00C0 rjmp .L42
|
584 |
364 009a 00C0 rjmp .L42
|
588 |
368 009a 00C0 rjmp .L42
|
585 |
365 009c 00C0 rjmp .L42
|
589 |
369 009c 00C0 rjmp .L42
|
586 |
366 009e 00C0 rjmp .L42
|
590 |
370 009e 00C0 rjmp .L42
|
587 |
367 00a0 00C0 rjmp .L32
|
591 |
371 00a0 00C0 rjmp .L32
|
588 |
368 .text
|
592 |
372 .text
|
589 |
369 .L25:
|
593 |
373 .L25:
|
590 |
191:I2CInterface.c **** {
|
594 |
191:I2CInterface.c **** {
|
591 |
192:I2CInterface.c **** case TW_START: /* Start condition */
|
595 |
192:I2CInterface.c **** case TW_START: /* Start condition */
|
592 |
193:I2CInterface.c **** case TW_REP_START: /* Repeated start condition */
|
596 |
193:I2CInterface.c **** case TW_REP_START: /* Repeated start condition */
|
593 |
194:I2CInterface.c **** if(retry_cnt > MAX_TWI_RETRIES)
|
597 |
194:I2CInterface.c **** if(retry_cnt > MAX_TWI_RETRIES)
|
594 |
370 .stabn 68,0,194,.LM29-__vector_17
|
598 |
374 .stabn 68,0,194,.LM29-.LFBB5
|
595 |
371 .LM29:
|
599 |
375 .LM29:
|
596 |
372 00ba 8091 0000 lds r24,retry_cnt
|
600 |
376 00ba 8091 0000 lds r24,retry_cnt
|
597 |
373 00be 8330 cpi r24,lo8(3)
|
- |
|
598 |
374 00c0 48F0 brlo .L34
|
- |
|
599 |
195:I2CInterface.c **** {
|
- |
|
600 |
196:I2CInterface.c **** /* generate stop condition if we've reached our retry limit */
|
- |
|
601 |
GAS LISTING /tmp/ccZHfAgR.s page 11
|
601 |
GAS LISTING /tmp/ccfEG7oP.s page 11
|
602 |
|
602 |
|
603 |
|
603 |
|
- |
|
604 |
377 00be 8330 cpi r24,lo8(3)
|
- |
|
605 |
378 00c0 00F0 brlo .L34
|
- |
|
606 |
195:I2CInterface.c **** {
|
- |
|
607 |
196:I2CInterface.c **** /* generate stop condition if we've reached our retry limit */
|
604 |
197:I2CInterface.c **** TWCR |= (1<<TWINT)|(1<<TWSTO);
|
608 |
197:I2CInterface.c **** TWCR |= (1<<TWINT)|(1<<TWSTO);
|
605 |
375 .stabn 68,0,197,.LM30-__vector_17
|
609 |
379 .stabn 68,0,197,.LM30-.LFBB5
|
606 |
376 .LM30:
|
610 |
380 .LM30:
|
607 |
377 00c2 86B7 in r24,86-0x20
|
611 |
381 00c2 86B7 in r24,86-0x20
|
608 |
378 00c4 8069 ori r24,lo8(-112)
|
612 |
382 00c4 8069 ori r24,lo8(-112)
|
609 |
379 00c6 86BF out 86-0x20,r24
|
613 |
383 00c6 86BF out 86-0x20,r24
|
610 |
198:I2CInterface.c **** status &= ~(1<<BUSY);
|
614 |
198:I2CInterface.c **** status &= ~(1<<BUSY);
|
611 |
380 .stabn 68,0,198,.LM31-__vector_17
|
615 |
384 .stabn 68,0,198,.LM31-.LFBB5
|
612 |
381 .LM31:
|
616 |
385 .LM31:
|
613 |
382 00c8 8091 0000 lds r24,status
|
617 |
386 00c8 8091 0000 lds r24,status
|
614 |
383 00cc 8F77 andi r24,lo8(127)
|
618 |
387 00cc 8F77 andi r24,lo8(127)
|
615 |
384 00ce 8093 0000 sts status,r24
|
619 |
388 00ce 8093 0000 sts status,r24
|
616 |
385 00d2 8AC0 rjmp .L42
|
620 |
389 00d2 00C0 rjmp .L42
|
617 |
386 .L34:
|
621 |
390 .L34:
|
618 |
199:I2CInterface.c **** return;
|
622 |
199:I2CInterface.c **** return;
|
619 |
200:I2CInterface.c **** }
|
623 |
200:I2CInterface.c **** }
|
620 |
201:I2CInterface.c **** /* indicate read or write */
|
624 |
201:I2CInterface.c **** /* indicate read or write */
|
621 |
202:I2CInterface.c **** TWDR = (twi_address<<1) + twi_ddr;
|
625 |
202:I2CInterface.c **** TWDR = (twi_address<<1) + twi_ddr;
|
622 |
387 .stabn 68,0,202,.LM32-__vector_17
|
626 |
391 .stabn 68,0,202,.LM32-.LFBB5
|
623 |
388 .LM32:
|
627 |
392 .LM32:
|
624 |
389 00d4 8091 0000 lds r24,twi_address
|
628 |
393 00d4 8091 0000 lds r24,twi_address
|
625 |
390 00d8 9091 0000 lds r25,twi_ddr
|
629 |
394 00d8 9091 0000 lds r25,twi_ddr
|
626 |
391 00dc 880F lsl r24
|
630 |
395 00dc 880F lsl r24
|
627 |
392 00de 890F add r24,r25
|
631 |
396 00de 890F add r24,r25
|
628 |
393 00e0 83B9 out 35-0x20,r24
|
632 |
397 00e0 83B9 out 35-0x20,r24
|
629 |
203:I2CInterface.c **** /* TWSTA must be cleared...also clears TWINT */
|
633 |
203:I2CInterface.c **** /* TWSTA must be cleared...also clears TWINT */
|
630 |
204:I2CInterface.c **** TWCR &= ~(1<<TWSTA);
|
634 |
204:I2CInterface.c **** TWCR &= ~(1<<TWSTA);
|
631 |
394 .stabn 68,0,204,.LM33-__vector_17
|
635 |
398 .stabn 68,0,204,.LM33-.LFBB5
|
632 |
395 .LM33:
|
636 |
399 .LM33:
|
633 |
396 00e2 86B7 in r24,86-0x20
|
637 |
400 00e2 86B7 in r24,86-0x20
|
634 |
397 00e4 8F7D andi r24,lo8(-33)
|
638 |
401 00e4 8F7D andi r24,lo8(-33)
|
635 |
398 00e6 86BF out 86-0x20,r24
|
639 |
402 00e6 86BF out 86-0x20,r24
|
636 |
399 00e8 7FC0 rjmp .L42
|
640 |
403 00e8 00C0 rjmp .L42
|
637 |
400 .L26:
|
641 |
404 .L26:
|
638 |
205:I2CInterface.c **** break;
|
642 |
205:I2CInterface.c **** break;
|
639 |
206:I2CInterface.c ****
|
643 |
206:I2CInterface.c ****
|
640 |
207:I2CInterface.c **** case TW_MT_SLA_ACK: /* Slave acknowledged address, */
|
644 |
207:I2CInterface.c **** case TW_MT_SLA_ACK: /* Slave acknowledged address, */
|
641 |
208:I2CInterface.c **** retry_cnt = 0;
|
645 |
208:I2CInterface.c **** retry_cnt = 0;
|
642 |
401 .stabn 68,0,208,.LM34-__vector_17
|
646 |
405 .stabn 68,0,208,.LM34-.LFBB5
|
643 |
402 .LM34:
|
647 |
406 .LM34:
|
644 |
403 00ea 1092 0000 sts retry_cnt,__zero_reg__
|
648 |
407 00ea 1092 0000 sts retry_cnt,__zero_reg__
|
645 |
209:I2CInterface.c **** /* tx the data, and increment the data pointer */
|
649 |
209:I2CInterface.c **** /* tx the data, and increment the data pointer */
|
646 |
210:I2CInterface.c **** TWDR = *twi_data;
|
650 |
210:I2CInterface.c **** TWDR = *twi_data;
|
647 |
404 .stabn 68,0,210,.LM35-__vector_17
|
651 |
408 .stabn 68,0,210,.LM35-.LFBB5
|
648 |
405 .LM35:
|
652 |
409 .LM35:
|
649 |
406 00ee E091 0000 lds r30,twi_data
|
653 |
410 00ee E091 0000 lds r30,twi_data
|
650 |
407 00f2 F091 0000 lds r31,(twi_data)+1
|
654 |
411 00f2 F091 0000 lds r31,(twi_data)+1
|
651 |
408 00f6 8081 ld r24,Z
|
655 |
412 00f6 8191 ld r24,Z+
|
652 |
409 00f8 83B9 out 35-0x20,r24
|
656 |
413 00f8 83B9 out 35-0x20,r24
|
653 |
211:I2CInterface.c **** twi_data++;
|
657 |
211:I2CInterface.c **** twi_data++;
|
654 |
410 .stabn 68,0,211,.LM36-__vector_17
|
658 |
414 .stabn 68,0,211,.LM36-.LFBB5
|
655 |
411 .LM36:
|
659 |
415 .LM36:
|
656 |
412 00fa 3196 adiw r30,1
|
- |
|
657 |
413 00fc F093 0000 sts (twi_data)+1,r31
|
660 |
416 00fa F093 0000 sts (twi_data)+1,r31
|
658 |
414 0100 E093 0000 sts twi_data,r30
|
- |
|
659 |
212:I2CInterface.c ****
|
- |
|
660 |
213:I2CInterface.c **** /* clear the int to continue */
|
- |
|
661 |
GAS LISTING /tmp/ccZHfAgR.s page 12
|
661 |
GAS LISTING /tmp/ccfEG7oP.s page 12
|
662 |
|
662 |
|
663 |
|
663 |
|
- |
|
664 |
417 00fe E093 0000 sts twi_data,r30
|
- |
|
665 |
212:I2CInterface.c ****
|
- |
|
666 |
213:I2CInterface.c **** /* clear the int to continue */
|
664 |
214:I2CInterface.c **** TWCR |= (1<<TWINT);
|
667 |
214:I2CInterface.c **** TWCR |= (1<<TWINT);
|
665 |
415 .stabn 68,0,214,.LM37-__vector_17
|
668 |
418 .stabn 68,0,214,.LM37-.LFBB5
|
666 |
416 .LM37:
|
669 |
419 .LM37:
|
667 |
417 0104 86B7 in r24,86-0x20
|
670 |
420 0102 86B7 in r24,86-0x20
|
668 |
418 0106 8068 ori r24,lo8(-128)
|
671 |
421 0104 8068 ori r24,lo8(-128)
|
669 |
419 0108 86BF out 86-0x20,r24
|
672 |
422 0106 86BF out 86-0x20,r24
|
670 |
420 010a 6EC0 rjmp .L42
|
673 |
423 0108 00C0 rjmp .L42
|
671 |
421 .L27:
|
674 |
424 .L27:
|
672 |
215:I2CInterface.c **** break;
|
675 |
215:I2CInterface.c **** break;
|
673 |
216:I2CInterface.c ****
|
676 |
216:I2CInterface.c ****
|
674 |
217:I2CInterface.c **** case TW_MT_SLA_NACK: /* Slave didn't acknowledge address, */
|
677 |
217:I2CInterface.c **** case TW_MT_SLA_NACK: /* Slave didn't acknowledge address, */
|
675 |
218:I2CInterface.c **** case TW_MR_SLA_NACK:
|
678 |
218:I2CInterface.c **** case TW_MR_SLA_NACK:
|
676 |
219:I2CInterface.c **** retry_cnt++;
|
679 |
219:I2CInterface.c **** retry_cnt++;
|
677 |
422 .stabn 68,0,219,.LM38-__vector_17
|
680 |
425 .stabn 68,0,219,.LM38-.LFBB5
|
678 |
423 .LM38:
|
681 |
426 .LM38:
|
679 |
424 010c 8091 0000 lds r24,retry_cnt
|
682 |
427 010a 8091 0000 lds r24,retry_cnt
|
680 |
425 0110 8F5F subi r24,lo8(-(1))
|
683 |
428 010e 8F5F subi r24,lo8(-(1))
|
681 |
426 0112 8093 0000 sts retry_cnt,r24
|
684 |
429 0110 8093 0000 sts retry_cnt,r24
|
682 |
220:I2CInterface.c ****
|
685 |
220:I2CInterface.c ****
|
683 |
221:I2CInterface.c **** /* retry...*/
|
686 |
221:I2CInterface.c **** /* retry...*/
|
684 |
222:I2CInterface.c **** TWCR |= (1<<TWINT)|(1<<TWSTA)|(1<<TWSTO);
|
687 |
222:I2CInterface.c **** TWCR |= (1<<TWINT)|(1<<TWSTA)|(1<<TWSTO);
|
685 |
427 .stabn 68,0,222,.LM39-__vector_17
|
688 |
430 .stabn 68,0,222,.LM39-.LFBB5
|
686 |
428 .LM39:
|
689 |
431 .LM39:
|
687 |
429 0116 86B7 in r24,86-0x20
|
690 |
432 0114 86B7 in r24,86-0x20
|
688 |
430 0118 806B ori r24,lo8(-80)
|
691 |
433 0116 806B ori r24,lo8(-80)
|
689 |
431 011a 86BF out 86-0x20,r24
|
692 |
434 0118 86BF out 86-0x20,r24
|
690 |
432 011c 65C0 rjmp .L42
|
693 |
435 011a 00C0 rjmp .L42
|
691 |
433 .L28:
|
694 |
436 .L28:
|
692 |
223:I2CInterface.c **** break;
|
695 |
223:I2CInterface.c **** break;
|
693 |
224:I2CInterface.c ****
|
696 |
224:I2CInterface.c ****
|
694 |
225:I2CInterface.c **** case TW_MT_DATA_ACK: /* Slave Acknowledged data, */
|
697 |
225:I2CInterface.c **** case TW_MT_DATA_ACK: /* Slave Acknowledged data, */
|
695 |
226:I2CInterface.c **** if(--twi_bytes > 0)
|
698 |
226:I2CInterface.c **** if(--twi_bytes > 0)
|
696 |
434 .stabn 68,0,226,.LM40-__vector_17
|
699 |
437 .stabn 68,0,226,.LM40-.LFBB5
|
697 |
435 .LM40:
|
700 |
438 .LM40:
|
698 |
436 011e 8091 0000 lds r24,twi_bytes
|
701 |
439 011c 8091 0000 lds r24,twi_bytes
|
699 |
437 0122 8150 subi r24,lo8(-(-1))
|
702 |
440 0120 8150 subi r24,lo8(-(-1))
|
700 |
438 0124 8093 0000 sts twi_bytes,r24
|
703 |
441 0122 8093 0000 sts twi_bytes,r24
|
701 |
439 0128 8091 0000 lds r24,twi_bytes
|
704 |
442 0126 8091 0000 lds r24,twi_bytes
|
702 |
440 012c 8823 tst r24
|
705 |
443 012a 8823 tst r24
|
703 |
441 012e 79F0 breq .L36
|
706 |
444 012c 01F0 breq .L36
|
704 |
227:I2CInterface.c **** {
|
707 |
227:I2CInterface.c **** {
|
705 |
228:I2CInterface.c **** /* more data to send, so send it */
|
708 |
228:I2CInterface.c **** /* more data to send, so send it */
|
706 |
229:I2CInterface.c **** TWDR = *twi_data;
|
709 |
229:I2CInterface.c **** TWDR = *twi_data;
|
707 |
442 .stabn 68,0,229,.LM41-__vector_17
|
710 |
445 .stabn 68,0,229,.LM41-.LFBB5
|
708 |
443 .LM41:
|
711 |
446 .LM41:
|
709 |
444 0130 E091 0000 lds r30,twi_data
|
712 |
447 012e E091 0000 lds r30,twi_data
|
710 |
445 0134 F091 0000 lds r31,(twi_data)+1
|
713 |
448 0132 F091 0000 lds r31,(twi_data)+1
|
711 |
446 0138 8081 ld r24,Z
|
714 |
449 0136 8191 ld r24,Z+
|
712 |
447 013a 83B9 out 35-0x20,r24
|
715 |
450 0138 83B9 out 35-0x20,r24
|
713 |
230:I2CInterface.c **** twi_data++;
|
716 |
230:I2CInterface.c **** twi_data++;
|
714 |
448 .stabn 68,0,230,.LM42-__vector_17
|
717 |
451 .stabn 68,0,230,.LM42-.LFBB5
|
715 |
449 .LM42:
|
718 |
452 .LM42:
|
716 |
450 013c 3196 adiw r30,1
|
- |
|
717 |
451 013e F093 0000 sts (twi_data)+1,r31
|
719 |
453 013a F093 0000 sts (twi_data)+1,r31
|
718 |
452 0142 E093 0000 sts twi_data,r30
|
720 |
454 013e E093 0000 sts twi_data,r30
|
719 |
231:I2CInterface.c **** TWCR |= (1<<TWINT);
|
- |
|
720 |
453 .stabn 68,0,231,.LM43-__vector_17
|
- |
|
721 |
GAS LISTING /tmp/ccZHfAgR.s page 13
|
721 |
GAS LISTING /tmp/ccfEG7oP.s page 13
|
722 |
|
722 |
|
723 |
|
723 |
|
- |
|
724 |
231:I2CInterface.c **** TWCR |= (1<<TWINT);
|
- |
|
725 |
455 .stabn 68,0,231,.LM43-.LFBB5
|
724 |
454 .LM43:
|
726 |
456 .LM43:
|
725 |
455 0146 86B7 in r24,86-0x20
|
727 |
457 0142 86B7 in r24,86-0x20
|
726 |
456 0148 8068 ori r24,lo8(-128)
|
728 |
458 0144 8068 ori r24,lo8(-128)
|
727 |
457 014a 86BF out 86-0x20,r24
|
729 |
459 0146 86BF out 86-0x20,r24
|
728 |
458 014c 4DC0 rjmp .L42
|
730 |
460 0148 00C0 rjmp .L42
|
729 |
459 .L36:
|
731 |
461 .L36:
|
730 |
232:I2CInterface.c **** }
|
732 |
232:I2CInterface.c **** }
|
731 |
233:I2CInterface.c **** else
|
733 |
233:I2CInterface.c **** else
|
732 |
234:I2CInterface.c **** {
|
734 |
234:I2CInterface.c **** {
|
733 |
235:I2CInterface.c **** /* generate the stop condition if needed */
|
735 |
235:I2CInterface.c **** /* generate the stop condition if needed */
|
734 |
236:I2CInterface.c **** TWCR |= (1<<TWSTO)|(1<<TWINT);
|
736 |
236:I2CInterface.c **** TWCR |= (1<<TWSTO)|(1<<TWINT);
|
735 |
460 .stabn 68,0,236,.LM44-__vector_17
|
737 |
462 .stabn 68,0,236,.LM44-.LFBB5
|
736 |
461 .LM44:
|
738 |
463 .LM44:
|
737 |
462 014e 86B7 in r24,86-0x20
|
739 |
464 014a 86B7 in r24,86-0x20
|
738 |
463 0150 8069 ori r24,lo8(-112)
|
740 |
465 014c 8069 ori r24,lo8(-112)
|
739 |
464 0152 86BF out 86-0x20,r24
|
741 |
466 014e 86BF out 86-0x20,r24
|
740 |
237:I2CInterface.c **** status &= ~(1<<BUSY);
|
742 |
237:I2CInterface.c **** status &= ~(1<<BUSY);
|
741 |
465 .stabn 68,0,237,.LM45-__vector_17
|
743 |
467 .stabn 68,0,237,.LM45-.LFBB5
|
742 |
466 .LM45:
|
744 |
468 .LM45:
|
743 |
467 0154 8091 0000 lds r24,status
|
745 |
469 0150 8091 0000 lds r24,status
|
744 |
468 0158 8F77 andi r24,lo8(127)
|
746 |
470 0154 8F77 andi r24,lo8(127)
|
745 |
469 015a 8093 0000 sts status,r24
|
747 |
471 0156 8093 0000 sts status,r24
|
746 |
470 015e 44C0 rjmp .L42
|
748 |
472 015a 00C0 rjmp .L42
|
747 |
471 .L29:
|
749 |
473 .L29:
|
748 |
238:I2CInterface.c **** }
|
750 |
238:I2CInterface.c **** }
|
749 |
239:I2CInterface.c **** break;
|
751 |
239:I2CInterface.c **** break;
|
750 |
240:I2CInterface.c ****
|
752 |
240:I2CInterface.c ****
|
751 |
241:I2CInterface.c **** case TW_MT_DATA_NACK: /* Slave didn't acknowledge data */
|
753 |
241:I2CInterface.c **** case TW_MT_DATA_NACK: /* Slave didn't acknowledge data */
|
752 |
242:I2CInterface.c **** /* send the stop condition */
|
754 |
242:I2CInterface.c **** /* send the stop condition */
|
753 |
243:I2CInterface.c **** TWCR |= (1<<TWINT)|(1<<TWSTO);
|
755 |
243:I2CInterface.c **** TWCR |= (1<<TWINT)|(1<<TWSTO);
|
754 |
472 .stabn 68,0,243,.LM46-__vector_17
|
756 |
474 .stabn 68,0,243,.LM46-.LFBB5
|
755 |
473 .LM46:
|
757 |
475 .LM46:
|
756 |
474 0160 86B7 in r24,86-0x20
|
758 |
476 015c 86B7 in r24,86-0x20
|
757 |
475 0162 8069 ori r24,lo8(-112)
|
759 |
477 015e 8069 ori r24,lo8(-112)
|
758 |
476 0164 86BF out 86-0x20,r24
|
760 |
478 0160 86BF out 86-0x20,r24
|
759 |
244:I2CInterface.c **** status &= ~(1<<BUSY);
|
761 |
244:I2CInterface.c **** status &= ~(1<<BUSY);
|
760 |
477 .stabn 68,0,244,.LM47-__vector_17
|
762 |
479 .stabn 68,0,244,.LM47-.LFBB5
|
761 |
478 .LM47:
|
763 |
480 .LM47:
|
762 |
479 0166 8091 0000 lds r24,status
|
764 |
481 0162 8091 0000 lds r24,status
|
763 |
480 016a 8F77 andi r24,lo8(127)
|
765 |
482 0166 8F77 andi r24,lo8(127)
|
764 |
481 016c 8093 0000 sts status,r24
|
766 |
483 0168 8093 0000 sts status,r24
|
765 |
482 0170 3BC0 rjmp .L42
|
767 |
484 016c 00C0 rjmp .L42
|
766 |
483 .L30:
|
768 |
485 .L30:
|
767 |
245:I2CInterface.c **** break;
|
769 |
245:I2CInterface.c **** break;
|
768 |
246:I2CInterface.c ****
|
770 |
246:I2CInterface.c ****
|
769 |
247:I2CInterface.c **** case TW_MR_SLA_ACK: /* Slave acknowledged address */
|
771 |
247:I2CInterface.c **** case TW_MR_SLA_ACK: /* Slave acknowledged address */
|
770 |
248:I2CInterface.c **** if(--twi_bytes > 0)
|
772 |
248:I2CInterface.c **** if(--twi_bytes > 0)
|
771 |
484 .stabn 68,0,248,.LM48-__vector_17
|
773 |
486 .stabn 68,0,248,.LM48-.LFBB5
|
772 |
485 .LM48:
|
774 |
487 .LM48:
|
773 |
486 0172 8091 0000 lds r24,twi_bytes
|
775 |
488 016e 8091 0000 lds r24,twi_bytes
|
774 |
487 0176 8150 subi r24,lo8(-(-1))
|
776 |
489 0172 8150 subi r24,lo8(-(-1))
|
775 |
488 0178 8093 0000 sts twi_bytes,r24
|
777 |
490 0174 8093 0000 sts twi_bytes,r24
|
776 |
489 017c 8091 0000 lds r24,twi_bytes
|
778 |
491 0178 8091 0000 lds r24,twi_bytes
|
777 |
490 0180 8823 tst r24
|
779 |
492 017c 8823 tst r24
|
778 |
491 0182 21F0 breq .L38
|
780 |
493 017e 01F0 breq .L38
|
779 |
249:I2CInterface.c **** {
|
- |
|
780 |
250:I2CInterface.c **** /* if there is more than one byte to read, acknowledge */
|
- |
|
781 |
GAS LISTING /tmp/ccZHfAgR.s page 14
|
781 |
GAS LISTING /tmp/ccfEG7oP.s page 14
|
782 |
|
782 |
|
783 |
|
783 |
|
- |
|
784 |
249:I2CInterface.c **** {
|
- |
|
785 |
250:I2CInterface.c **** /* if there is more than one byte to read, acknowledge */
|
784 |
251:I2CInterface.c **** TWCR |= (1<<TWEA)|(1<<TWINT);
|
786 |
251:I2CInterface.c **** TWCR |= (1<<TWEA)|(1<<TWINT);
|
785 |
492 .stabn 68,0,251,.LM49-__vector_17
|
787 |
494 .stabn 68,0,251,.LM49-.LFBB5
|
786 |
493 .LM49:
|
788 |
495 .LM49:
|
787 |
494 0184 86B7 in r24,86-0x20
|
789 |
496 0180 86B7 in r24,86-0x20
|
788 |
495 0186 806C ori r24,lo8(-64)
|
790 |
497 0182 806C ori r24,lo8(-64)
|
789 |
496 0188 86BF out 86-0x20,r24
|
791 |
498 0184 86BF out 86-0x20,r24
|
790 |
497 018a 2EC0 rjmp .L42
|
792 |
499 0186 00C0 rjmp .L42
|
791 |
498 .L38:
|
793 |
500 .L38:
|
792 |
252:I2CInterface.c **** }
|
794 |
252:I2CInterface.c **** }
|
793 |
253:I2CInterface.c **** else
|
795 |
253:I2CInterface.c **** else
|
794 |
254:I2CInterface.c **** {
|
796 |
254:I2CInterface.c **** {
|
795 |
255:I2CInterface.c **** /* no acknowledge */
|
797 |
255:I2CInterface.c **** /* no acknowledge */
|
796 |
256:I2CInterface.c **** TWCR |= (1<<TWINT);
|
798 |
256:I2CInterface.c **** TWCR |= (1<<TWINT);
|
797 |
499 .stabn 68,0,256,.LM50-__vector_17
|
799 |
501 .stabn 68,0,256,.LM50-.LFBB5
|
798 |
500 .LM50:
|
800 |
502 .LM50:
|
799 |
501 018c 86B7 in r24,86-0x20
|
801 |
503 0188 86B7 in r24,86-0x20
|
800 |
502 018e 8068 ori r24,lo8(-128)
|
802 |
504 018a 8068 ori r24,lo8(-128)
|
801 |
503 0190 86BF out 86-0x20,r24
|
803 |
505 018c 86BF out 86-0x20,r24
|
802 |
504 0192 2AC0 rjmp .L42
|
804 |
506 018e 00C0 rjmp .L42
|
803 |
505 .L31:
|
805 |
507 .L31:
|
804 |
257:I2CInterface.c **** }
|
806 |
257:I2CInterface.c **** }
|
805 |
258:I2CInterface.c **** break;
|
807 |
258:I2CInterface.c **** break;
|
806 |
259:I2CInterface.c ****
|
808 |
259:I2CInterface.c ****
|
807 |
260:I2CInterface.c **** case TW_MR_DATA_ACK: /* Master acknowledged data */
|
809 |
260:I2CInterface.c **** case TW_MR_DATA_ACK: /* Master acknowledged data */
|
808 |
261:I2CInterface.c ****
|
810 |
261:I2CInterface.c ****
|
809 |
262:I2CInterface.c **** /* grab the received data */
|
811 |
262:I2CInterface.c **** /* grab the received data */
|
810 |
263:I2CInterface.c **** *twi_data = TWDR;
|
812 |
263:I2CInterface.c **** *twi_data = TWDR;
|
811 |
506 .stabn 68,0,263,.LM51-__vector_17
|
813 |
508 .stabn 68,0,263,.LM51-.LFBB5
|
812 |
507 .LM51:
|
814 |
509 .LM51:
|
813 |
508 0194 E091 0000 lds r30,twi_data
|
815 |
510 0190 E091 0000 lds r30,twi_data
|
814 |
509 0198 F091 0000 lds r31,(twi_data)+1
|
816 |
511 0194 F091 0000 lds r31,(twi_data)+1
|
815 |
510 019c 83B1 in r24,35-0x20
|
817 |
512 0198 83B1 in r24,35-0x20
|
816 |
511 019e 8083 st Z,r24
|
818 |
513 019a 8193 st Z+,r24
|
817 |
264:I2CInterface.c **** twi_data++;
|
819 |
264:I2CInterface.c **** twi_data++;
|
818 |
512 .stabn 68,0,264,.LM52-__vector_17
|
820 |
514 .stabn 68,0,264,.LM52-.LFBB5
|
819 |
513 .LM52:
|
821 |
515 .LM52:
|
820 |
514 01a0 3196 adiw r30,1
|
- |
|
821 |
515 01a2 F093 0000 sts (twi_data)+1,r31
|
822 |
516 019c F093 0000 sts (twi_data)+1,r31
|
822 |
516 01a6 E093 0000 sts twi_data,r30
|
823 |
517 01a0 E093 0000 sts twi_data,r30
|
823 |
265:I2CInterface.c **** if(--twi_bytes > 0)
|
824 |
265:I2CInterface.c **** if(--twi_bytes > 0)
|
824 |
517 .stabn 68,0,265,.LM53-__vector_17
|
825 |
518 .stabn 68,0,265,.LM53-.LFBB5
|
825 |
518 .LM53:
|
826 |
519 .LM53:
|
826 |
519 01aa 8091 0000 lds r24,twi_bytes
|
827 |
520 01a4 8091 0000 lds r24,twi_bytes
|
827 |
520 01ae 8150 subi r24,lo8(-(-1))
|
828 |
521 01a8 8150 subi r24,lo8(-(-1))
|
828 |
521 01b0 8093 0000 sts twi_bytes,r24
|
829 |
522 01aa 8093 0000 sts twi_bytes,r24
|
829 |
522 01b4 8091 0000 lds r24,twi_bytes
|
830 |
523 01ae 8091 0000 lds r24,twi_bytes
|
830 |
523 01b8 8823 tst r24
|
831 |
524 01b2 8823 tst r24
|
831 |
524 01ba 21F0 breq .L40
|
832 |
525 01b4 01F0 breq .L40
|
832 |
266:I2CInterface.c **** {
|
833 |
266:I2CInterface.c **** {
|
833 |
267:I2CInterface.c **** /* get the next data byte and ack */
|
834 |
267:I2CInterface.c **** /* get the next data byte and ack */
|
834 |
268:I2CInterface.c **** TWCR |= (1<<TWEA)|(1<<TWINT);
|
835 |
268:I2CInterface.c **** TWCR |= (1<<TWEA)|(1<<TWINT);
|
835 |
525 .stabn 68,0,268,.LM54-__vector_17
|
836 |
526 .stabn 68,0,268,.LM54-.LFBB5
|
836 |
526 .LM54:
|
837 |
527 .LM54:
|
837 |
527 01bc 86B7 in r24,86-0x20
|
838 |
528 01b6 86B7 in r24,86-0x20
|
838 |
528 01be 806C ori r24,lo8(-64)
|
839 |
529 01b8 806C ori r24,lo8(-64)
|
839 |
529 01c0 86BF out 86-0x20,r24
|
840 |
530 01ba 86BF out 86-0x20,r24
|
840 |
530 01c2 12C0 rjmp .L42
|
- |
|
841 |
GAS LISTING /tmp/ccZHfAgR.s page 15
|
841 |
GAS LISTING /tmp/ccfEG7oP.s page 15
|
842 |
|
842 |
|
843 |
|
843 |
|
- |
|
844 |
531 01bc 00C0 rjmp .L42
|
844 |
531 .L40:
|
845 |
532 .L40:
|
845 |
269:I2CInterface.c **** }
|
846 |
269:I2CInterface.c **** }
|
846 |
270:I2CInterface.c **** else
|
847 |
270:I2CInterface.c **** else
|
847 |
271:I2CInterface.c **** {
|
848 |
271:I2CInterface.c **** {
|
848 |
272:I2CInterface.c **** /* clear out the enable acknowledge bit */
|
849 |
272:I2CInterface.c **** /* clear out the enable acknowledge bit */
|
849 |
273:I2CInterface.c **** TWCR &= ~(1<<TWEA);
|
850 |
273:I2CInterface.c **** TWCR &= ~(1<<TWEA);
|
850 |
532 .stabn 68,0,273,.LM55-__vector_17
|
851 |
533 .stabn 68,0,273,.LM55-.LFBB5
|
851 |
533 .LM55:
|
852 |
534 .LM55:
|
852 |
534 01c4 86B7 in r24,86-0x20
|
853 |
535 01be 86B7 in r24,86-0x20
|
853 |
535 01c6 8F7B andi r24,lo8(-65)
|
854 |
536 01c0 8F7B andi r24,lo8(-65)
|
854 |
536 01c8 86BF out 86-0x20,r24
|
855 |
537 01c2 86BF out 86-0x20,r24
|
855 |
537 01ca 0EC0 rjmp .L42
|
856 |
538 01c4 00C0 rjmp .L42
|
856 |
538 .L32:
|
857 |
539 .L32:
|
857 |
274:I2CInterface.c **** }
|
858 |
274:I2CInterface.c **** }
|
858 |
275:I2CInterface.c **** break;
|
859 |
275:I2CInterface.c **** break;
|
859 |
276:I2CInterface.c ****
|
860 |
276:I2CInterface.c ****
|
860 |
277:I2CInterface.c **** case TW_MR_DATA_NACK: /* Master didn't acknowledge data -> end of read process */
|
861 |
277:I2CInterface.c **** case TW_MR_DATA_NACK: /* Master didn't acknowledge data -> end of read process */
|
861 |
278:I2CInterface.c **** /* read data, and generate the stop condition */
|
862 |
278:I2CInterface.c **** /* read data, and generate the stop condition */
|
862 |
279:I2CInterface.c **** *twi_data = TWDR;
|
863 |
279:I2CInterface.c **** *twi_data = TWDR;
|
863 |
539 .stabn 68,0,279,.LM56-__vector_17
|
864 |
540 .stabn 68,0,279,.LM56-.LFBB5
|
864 |
540 .LM56:
|
865 |
541 .LM56:
|
865 |
541 01cc E091 0000 lds r30,twi_data
|
866 |
542 01c6 E091 0000 lds r30,twi_data
|
866 |
542 01d0 F091 0000 lds r31,(twi_data)+1
|
867 |
543 01ca F091 0000 lds r31,(twi_data)+1
|
867 |
543 01d4 83B1 in r24,35-0x20
|
868 |
544 01ce 83B1 in r24,35-0x20
|
868 |
544 01d6 8083 st Z,r24
|
869 |
545 01d0 8083 st Z,r24
|
869 |
280:I2CInterface.c **** TWCR |= (1<<TWSTO)|(1<<TWINT);
|
870 |
280:I2CInterface.c **** TWCR |= (1<<TWSTO)|(1<<TWINT);
|
870 |
545 .stabn 68,0,280,.LM57-__vector_17
|
871 |
546 .stabn 68,0,280,.LM57-.LFBB5
|
871 |
546 .LM57:
|
872 |
547 .LM57:
|
872 |
547 01d8 86B7 in r24,86-0x20
|
873 |
548 01d2 86B7 in r24,86-0x20
|
873 |
548 01da 8069 ori r24,lo8(-112)
|
874 |
549 01d4 8069 ori r24,lo8(-112)
|
874 |
549 01dc 86BF out 86-0x20,r24
|
875 |
550 01d6 86BF out 86-0x20,r24
|
875 |
281:I2CInterface.c **** status &= ~(1<<BUSY);
|
876 |
281:I2CInterface.c **** status &= ~(1<<BUSY);
|
876 |
550 .stabn 68,0,281,.LM58-__vector_17
|
877 |
551 .stabn 68,0,281,.LM58-.LFBB5
|
877 |
551 .LM58:
|
878 |
552 .LM58:
|
878 |
552 01de 8091 0000 lds r24,status
|
879 |
553 01d8 8091 0000 lds r24,status
|
879 |
553 01e2 8F77 andi r24,lo8(127)
|
880 |
554 01dc 8F77 andi r24,lo8(127)
|
880 |
554 01e4 8093 0000 sts status,r24
|
881 |
555 01de 8093 0000 sts status,r24
|
881 |
555 .L42:
|
882 |
556 .L42:
|
882 |
556 /* epilogue: frame size=0 */
|
883 |
557 /* epilogue: frame size=0 */
|
883 |
557 01e8 FF91 pop r31
|
884 |
558 01e2 FF91 pop r31
|
884 |
558 01ea EF91 pop r30
|
885 |
559 01e4 EF91 pop r30
|
885 |
559 01ec BF91 pop r27
|
886 |
560 01e6 BF91 pop r27
|
886 |
560 01ee AF91 pop r26
|
887 |
561 01e8 AF91 pop r26
|
887 |
561 01f0 9F91 pop r25
|
888 |
562 01ea 9F91 pop r25
|
888 |
562 01f2 8F91 pop r24
|
889 |
563 01ec 8F91 pop r24
|
889 |
563 01f4 0F90 pop __tmp_reg__
|
890 |
564 01ee 0F90 pop __tmp_reg__
|
890 |
564 01f6 0FBE out __SREG__,__tmp_reg__
|
891 |
565 01f0 0FBE out __SREG__,__tmp_reg__
|
891 |
565 01f8 0F90 pop __tmp_reg__
|
892 |
566 01f2 0F90 pop __tmp_reg__
|
892 |
566 01fa 1F90 pop __zero_reg__
|
893 |
567 01f4 1F90 pop __zero_reg__
|
893 |
567 01fc 1895 reti
|
894 |
568 01f6 1895 reti
|
894 |
568 /* epilogue end (size=11) */
|
895 |
569 /* epilogue end (size=11) */
|
895 |
569 /* function __vector_17 size 271 (249) */
|
896 |
570 /* function __vector_17 size 268 (246) */
|
896 |
570 .size __vector_17, .-__vector_17
|
897 |
571 .size __vector_17, .-__vector_17
|
897 |
571 .Lscope4:
|
898 |
572 .Lscope5:
|
898 |
572 .stabs "",36,0,0,.Lscope4-__vector_17
|
899 |
573 .stabs "",36,0,0,.Lscope5-.LFBB5
|
899 |
573 .stabd 78,0,0
|
900 |
574 .stabd 78,0,0
|
900 |
574 .lcomm twi_address,1
|
- |
|
901 |
GAS LISTING /tmp/ccZHfAgR.s page 16
|
901 |
GAS LISTING /tmp/ccfEG7oP.s page 16
|
902 |
|
902 |
|
903 |
|
903 |
|
- |
|
904 |
575 .lcomm twi_address,1
|
904 |
575 .lcomm twi_data,2
|
905 |
576 .lcomm twi_data,2
|
905 |
576 .lcomm twi_ddr,1
|
906 |
577 .lcomm twi_ddr,1
|
906 |
577 .lcomm twi_bytes,1
|
907 |
578 .lcomm twi_bytes,1
|
907 |
578 .lcomm status,1
|
908 |
579 .lcomm status,1
|
908 |
579 .lcomm retry_cnt,1
|
909 |
580 .lcomm retry_cnt,1
|
909 |
580 .stabs "twi_address:S(0,17)=B(0,11)",40,0,59,twi_address
|
910 |
581 .stabs "twi_address:S(0,17)=B(0,11)",40,0,59,twi_address
|
910 |
581 .stabs "twi_data:S(0,18)=*(0,17)",40,0,60,twi_data
|
911 |
582 .stabs "twi_data:S(0,18)=*(0,17)",40,0,60,twi_data
|
911 |
582 .stabs "twi_ddr:S(0,17)",40,0,61,twi_ddr
|
912 |
583 .stabs "twi_ddr:S(0,17)",40,0,61,twi_ddr
|
912 |
583 .stabs "twi_bytes:S(0,17)",40,0,62,twi_bytes
|
913 |
584 .stabs "twi_bytes:S(0,17)",40,0,62,twi_bytes
|
913 |
584 .stabs "status:S(0,17)",40,0,63,status
|
914 |
585 .stabs "status:S(0,17)",40,0,63,status
|
914 |
585 .stabs "retry_cnt:S(0,17)",40,0,64,retry_cnt
|
915 |
586 .stabs "retry_cnt:S(0,17)",40,0,64,retry_cnt
|
915 |
586 .stabs "",100,0,0,.Letext0
|
916 |
587 .stabs "",100,0,0,.Letext0
|
916 |
587 .Letext0:
|
917 |
588 .Letext0:
|
917 |
588 /* File "I2CInterface.c": code 336 = 0x0150 ( 310), prologues 11, epilogues 15 */
|
918 |
589 /* File "I2CInterface.c": code 333 = 0x014d ( 307), prologues 11, epilogues 15 */
|
918 |
GAS LISTING /tmp/ccZHfAgR.s page 17
|
919 |
GAS LISTING /tmp/ccfEG7oP.s page 17
|
919 |
|
920 |
|
920 |
|
921 |
|
921 |
DEFINED SYMBOLS
|
922 |
DEFINED SYMBOLS
|
922 |
*ABS*:00000000 I2CInterface.c
|
923 |
*ABS*:00000000 I2CInterface.c
|
923 |
/tmp/ccZHfAgR.s:3 *ABS*:0000003f __SREG__
|
924 |
/tmp/ccfEG7oP.s:2 *ABS*:0000003f __SREG__
|
924 |
/tmp/ccZHfAgR.s:4 *ABS*:0000003e __SP_H__
|
925 |
/tmp/ccfEG7oP.s:3 *ABS*:0000003e __SP_H__
|
925 |
/tmp/ccZHfAgR.s:5 *ABS*:0000003d __SP_L__
|
926 |
/tmp/ccfEG7oP.s:4 *ABS*:0000003d __SP_L__
|
926 |
/tmp/ccZHfAgR.s:6 *ABS*:00000000 __tmp_reg__
|
927 |
/tmp/ccfEG7oP.s:5 *ABS*:00000000 __tmp_reg__
|
927 |
/tmp/ccZHfAgR.s:7 *ABS*:00000001 __zero_reg__
|
928 |
/tmp/ccfEG7oP.s:6 *ABS*:00000001 __zero_reg__
|
928 |
/tmp/ccZHfAgR.s:79 .text:00000000 I2CInt_init
|
929 |
/tmp/ccfEG7oP.s:78 .text:00000000 I2CInt_init
|
929 |
/tmp/ccZHfAgR.s:106 .text:00000008 I2CInt_writeData
|
930 |
/tmp/ccfEG7oP.s:106 .text:00000008 I2CInt_writeData
|
930 |
/tmp/ccZHfAgR.s:577 .bss:00000005 status
|
931 |
/tmp/ccfEG7oP.s:578 .bss:00000005 status
|
931 |
.bss:00000000 twi_address
|
932 |
.bss:00000000 twi_address
|
932 |
/tmp/ccZHfAgR.s:574 .bss:00000001 twi_data
|
933 |
/tmp/ccfEG7oP.s:575 .bss:00000001 twi_data
|
933 |
/tmp/ccZHfAgR.s:576 .bss:00000004 twi_bytes
|
934 |
/tmp/ccfEG7oP.s:577 .bss:00000004 twi_bytes
|
934 |
/tmp/ccZHfAgR.s:575 .bss:00000003 twi_ddr
|
935 |
/tmp/ccfEG7oP.s:576 .bss:00000003 twi_ddr
|
935 |
/tmp/ccZHfAgR.s:578 .bss:00000006 retry_cnt
|
936 |
/tmp/ccfEG7oP.s:579 .bss:00000006 retry_cnt
|
936 |
/tmp/ccZHfAgR.s:164 .text:00000040 I2CInt_readData
|
937 |
/tmp/ccfEG7oP.s:165 .text:00000040 I2CInt_readData
|
937 |
/tmp/ccZHfAgR.s:214 .text:00000074 I2CInt_isI2cBusy
|
938 |
/tmp/ccfEG7oP.s:216 .text:00000074 I2CInt_isI2cBusy
|
938 |
/tmp/ccZHfAgR.s:240 .text:00000082 __vector_17
|
939 |
/tmp/ccfEG7oP.s:243 .text:00000082 __vector_17
|
939 |
|
940 |
|
940 |
UNDEFINED SYMBOLS
|
941 |
UNDEFINED SYMBOLS
|
941 |
__do_copy_data
|
942 |
__do_copy_data
|
942 |
__do_clear_bss
|
943 |
__do_clear_bss
|