1,89 → 1,88 |
GAS LISTING /tmp/ccZHfAgR.s page 1 |
GAS LISTING /tmp/ccfEG7oP.s page 1 |
|
|
1 .file "I2CInterface.c" |
2 .arch atmega8 |
3 __SREG__ = 0x3f |
4 __SP_H__ = 0x3e |
5 __SP_L__ = 0x3d |
6 __tmp_reg__ = 0 |
7 __zero_reg__ = 1 |
8 .global __do_copy_data |
9 .global __do_clear_bss |
10 .stabs "/home/kaklik/projects/programy/Atmel_C/AVRcam/",100,0,2,.Ltext0 |
11 .stabs "I2CInterface.c",100,0,2,.Ltext0 |
12 .text |
13 .Ltext0: |
14 .stabs "gcc2_compiled.",60,0,0,0 |
15 .stabs "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0 |
16 .stabs "char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0 |
17 .stabs "long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,0,0 |
18 .stabs "unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,0,0 |
19 .stabs "long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,0,0 |
20 .stabs "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0, |
21 .stabs "long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,0,0 |
22 .stabs "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0 |
23 .stabs "short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,0,0 |
24 .stabs "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0 |
25 .stabs "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0 |
26 .stabs "float:t(0,12)=r(0,1);4;0;",128,0,0,0 |
27 .stabs "double:t(0,13)=r(0,1);4;0;",128,0,0,0 |
28 .stabs "long double:t(0,14)=r(0,1);4;0;",128,0,0,0 |
29 .stabs "void:t(0,15)=(0,15)",128,0,0,0 |
30 .stabs "/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/io.h",130,0,0,0 |
31 .stabs "/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/sfr_defs.h",130,0,0,0 |
32 .stabs "/usr/lib/gcc/avr/4.1.0/../../../../avr/include/inttypes.h",130,0,0,0 |
33 .stabs "/usr/lib/gcc/avr/4.1.0/../../../../avr/include/stdint.h",130,0,0,0 |
34 .stabs "int8_t:t(4,1)=(0,10)",128,0,116,0 |
35 .stabs "uint8_t:t(4,2)=(0,11)",128,0,117,0 |
36 .stabs "int16_t:t(4,3)=(0,1)",128,0,118,0 |
37 .stabs "uint16_t:t(4,4)=(0,4)",128,0,119,0 |
38 .stabs "int32_t:t(4,5)=(0,3)",128,0,120,0 |
39 .stabs "uint32_t:t(4,6)=(0,5)",128,0,121,0 |
40 .stabs "int64_t:t(4,7)=(0,6)",128,0,122,0 |
41 .stabs "uint64_t:t(4,8)=(0,7)",128,0,123,0 |
42 .stabs "intptr_t:t(4,9)=(4,3)",128,0,135,0 |
43 .stabs "uintptr_t:t(4,10)=(4,4)",128,0,140,0 |
44 .stabs "int_least8_t:t(4,11)=(4,1)",128,0,152,0 |
45 .stabs "uint_least8_t:t(4,12)=(4,2)",128,0,157,0 |
46 .stabs "int_least16_t:t(4,13)=(4,3)",128,0,162,0 |
47 .stabs "uint_least16_t:t(4,14)=(4,4)",128,0,167,0 |
48 .stabs "int_least32_t:t(4,15)=(4,5)",128,0,172,0 |
49 .stabs "uint_least32_t:t(4,16)=(4,6)",128,0,177,0 |
50 .stabs "int_least64_t:t(4,17)=(4,7)",128,0,182,0 |
51 .stabs "uint_least64_t:t(4,18)=(4,8)",128,0,187,0 |
52 .stabs "int_fast8_t:t(4,19)=(4,1)",128,0,200,0 |
53 .stabs "uint_fast8_t:t(4,20)=(4,2)",128,0,205,0 |
54 .stabs "int_fast16_t:t(4,21)=(4,3)",128,0,210,0 |
55 .stabs "uint_fast16_t:t(4,22)=(4,4)",128,0,215,0 |
56 .stabs "int_fast32_t:t(4,23)=(4,5)",128,0,220,0 |
57 .stabs "uint_fast32_t:t(4,24)=(4,6)",128,0,225,0 |
GAS LISTING /tmp/ccZHfAgR.s page 2 |
2 __SREG__ = 0x3f |
3 __SP_H__ = 0x3e |
4 __SP_L__ = 0x3d |
5 __tmp_reg__ = 0 |
6 __zero_reg__ = 1 |
7 .global __do_copy_data |
8 .global __do_clear_bss |
9 .stabs "/home/kaklik/projects/programy/C/avr/AVRcam/",100,0,2,.Ltext0 |
10 .stabs "I2CInterface.c",100,0,2,.Ltext0 |
11 .text |
12 .Ltext0: |
13 .stabs "gcc2_compiled.",60,0,0,0 |
14 .stabs "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0 |
15 .stabs "char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0 |
16 .stabs "long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,0,0 |
17 .stabs "unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,0,0 |
18 .stabs "long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,0,0 |
19 .stabs "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0, |
20 .stabs "long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,0,0 |
21 .stabs "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0 |
22 .stabs "short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,0,0 |
23 .stabs "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0 |
24 .stabs "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0 |
25 .stabs "float:t(0,12)=r(0,1);4;0;",128,0,0,0 |
26 .stabs "double:t(0,13)=r(0,1);4;0;",128,0,0,0 |
27 .stabs "long double:t(0,14)=r(0,1);4;0;",128,0,0,0 |
28 .stabs "void:t(0,15)=(0,15)",128,0,0,0 |
29 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/io.h",130,0,0,0 |
30 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/sfr_defs.h",130,0,0,0 |
31 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/inttypes.h",130,0,0,0 |
32 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/stdint.h",130,0,0,0 |
33 .stabs "int8_t:t(4,1)=(0,10)",128,0,116,0 |
34 .stabs "uint8_t:t(4,2)=(0,11)",128,0,117,0 |
35 .stabs "int16_t:t(4,3)=(0,1)",128,0,118,0 |
36 .stabs "uint16_t:t(4,4)=(0,4)",128,0,119,0 |
37 .stabs "int32_t:t(4,5)=(0,3)",128,0,120,0 |
38 .stabs "uint32_t:t(4,6)=(0,5)",128,0,121,0 |
39 .stabs "int64_t:t(4,7)=(0,6)",128,0,122,0 |
40 .stabs "uint64_t:t(4,8)=(0,7)",128,0,123,0 |
41 .stabs "intptr_t:t(4,9)=(4,3)",128,0,135,0 |
42 .stabs "uintptr_t:t(4,10)=(4,4)",128,0,140,0 |
43 .stabs "int_least8_t:t(4,11)=(4,1)",128,0,152,0 |
44 .stabs "uint_least8_t:t(4,12)=(4,2)",128,0,157,0 |
45 .stabs "int_least16_t:t(4,13)=(4,3)",128,0,162,0 |
46 .stabs "uint_least16_t:t(4,14)=(4,4)",128,0,167,0 |
47 .stabs "int_least32_t:t(4,15)=(4,5)",128,0,172,0 |
48 .stabs "uint_least32_t:t(4,16)=(4,6)",128,0,177,0 |
49 .stabs "int_least64_t:t(4,17)=(4,7)",128,0,182,0 |
50 .stabs "uint_least64_t:t(4,18)=(4,8)",128,0,187,0 |
51 .stabs "int_fast8_t:t(4,19)=(4,1)",128,0,200,0 |
52 .stabs "uint_fast8_t:t(4,20)=(4,2)",128,0,205,0 |
53 .stabs "int_fast16_t:t(4,21)=(4,3)",128,0,210,0 |
54 .stabs "uint_fast16_t:t(4,22)=(4,4)",128,0,215,0 |
55 .stabs "int_fast32_t:t(4,23)=(4,5)",128,0,220,0 |
56 .stabs "uint_fast32_t:t(4,24)=(4,6)",128,0,225,0 |
57 .stabs "int_fast64_t:t(4,25)=(4,7)",128,0,230,0 |
GAS LISTING /tmp/ccfEG7oP.s page 2 |
|
|
58 .stabs "int_fast64_t:t(4,25)=(4,7)",128,0,230,0 |
59 .stabs "uint_fast64_t:t(4,26)=(4,8)",128,0,235,0 |
60 .stabs "intmax_t:t(4,27)=(4,7)",128,0,249,0 |
61 .stabs "uintmax_t:t(4,28)=(4,8)",128,0,254,0 |
62 .stabn 162,0,0,0 |
63 .stabs "int_farptr_t:t(3,1)=(4,5)",128,0,76,0 |
64 .stabs "uint_farptr_t:t(3,2)=(4,6)",128,0,80,0 |
58 .stabs "uint_fast64_t:t(4,26)=(4,8)",128,0,235,0 |
59 .stabs "intmax_t:t(4,27)=(4,7)",128,0,249,0 |
60 .stabs "uintmax_t:t(4,28)=(4,8)",128,0,254,0 |
61 .stabn 162,0,0,0 |
62 .stabs "int_farptr_t:t(3,1)=(4,5)",128,0,76,0 |
63 .stabs "uint_farptr_t:t(3,2)=(4,6)",128,0,80,0 |
64 .stabn 162,0,0,0 |
65 .stabn 162,0,0,0 |
66 .stabn 162,0,0,0 |
67 .stabn 162,0,0,0 |
68 .stabs "CamConfig.h",130,0,0,0 |
69 .stabs "I2CInterface.h",130,0,0,0 |
70 .stabs "CommonDefs.h",130,0,0,0 |
71 .stabs "bool_t:t(7,1)=(0,11)",128,0,56,0 |
72 .stabn 162,0,0,0 |
73 .stabs "i2cCmd_t:t(6,1)=(6,2)=s2configReg:(0,11),0,8;data:(0,11),8,8;;",128,0,53,0 |
67 .stabs "CamConfig.h",130,0,0,0 |
68 .stabs "I2CInterface.h",130,0,0,0 |
69 .stabs "CommonDefs.h",130,0,0,0 |
70 .stabs "bool_t:t(7,1)=(0,11)",128,0,56,0 |
71 .stabn 162,0,0,0 |
72 .stabs "i2cCmd_t:t(6,1)=(6,2)=s2configReg:(0,11),0,8;data:(0,11),8,8;;",128,0,53,0 |
73 .stabn 162,0,0,0 |
74 .stabn 162,0,0,0 |
75 .stabn 162,0,0,0 |
76 .stabs "I2CInt_init:F(0,15)",36,0,85,I2CInt_init |
77 .global I2CInt_init |
78 .type I2CInt_init, @function |
79 I2CInt_init: |
80 .stabd 46,0,0 |
75 .stabs "I2CInt_init:F(0,15)",36,0,85,I2CInt_init |
76 .global I2CInt_init |
77 .type I2CInt_init, @function |
78 I2CInt_init: |
79 .stabd 46,0,0 |
1:I2CInterface.c **** /* |
2:I2CInterface.c **** Copyright (C) 2004 John Orlando |
3:I2CInterface.c **** |
118,10 → 117,10 |
32:I2CInterface.c **** low-level interface to the I2C hardware resident on the |
33:I2CInterface.c **** mega8 processor (also known as the Two-Wire Interface, |
34:I2CInterface.c **** or TWI). The interface is needed to configure the |
GAS LISTING /tmp/ccZHfAgR.s page 3 |
35:I2CInterface.c **** needed registers in the OV6620 camera. This interface |
GAS LISTING /tmp/ccfEG7oP.s page 3 |
|
|
35:I2CInterface.c **** needed registers in the OV6620 camera. This interface |
36:I2CInterface.c **** is interrupt-driven based on the events that should |
37:I2CInterface.c **** occur upon successful writing of an I2C register. |
38:I2CInterface.c **** |
172,13 → 171,14 |
83:I2CInterface.c **** ***********************************************************/ |
84:I2CInterface.c **** void I2CInt_init(void) |
85:I2CInterface.c **** { |
81 .stabn 68,0,85,.LM0-I2CInt_init |
82 .LM0: |
80 .stabn 68,0,85,.LM0-.LFBB1 |
81 .LM0: |
82 .LFBB1: |
83 /* prologue: frame size=0 */ |
84 /* prologue end (size=0) */ |
86:I2CInterface.c **** TWSR = 0; |
85 .stabn 68,0,86,.LM1-I2CInt_init |
GAS LISTING /tmp/ccZHfAgR.s page 4 |
85 .stabn 68,0,86,.LM1-.LFBB1 |
GAS LISTING /tmp/ccfEG7oP.s page 4 |
|
|
86 .LM1: |
187,7 → 187,7 |
88:I2CInterface.c **** /* init the speed of the I2C interface, running at |
89:I2CInterface.c **** 100 Kbps */ |
90:I2CInterface.c **** TWBR = (FOSC / I2C_SPEED - 16)/2; |
88 .stabn 68,0,90,.LM2-I2CInt_init |
88 .stabn 68,0,90,.LM2-.LFBB1 |
89 .LM2: |
90 0002 88E4 ldi r24,lo8(72) |
91 0004 80B9 out 32-0x20,r24 |
196,8 → 196,8 |
94 /* epilogue end (size=1) */ |
95 /* function I2CInt_init size 4 (3) */ |
96 .size I2CInt_init, .-I2CInt_init |
97 .Lscope0: |
98 .stabs "",36,0,0,.Lscope0-I2CInt_init |
97 .Lscope1: |
98 .stabs "",36,0,0,.Lscope1-.LFBB1 |
99 .stabd 78,0,0 |
100 .stabs "I2CInt_writeData:F(0,15)",36,0,108,I2CInt_writeData |
101 .stabs "address:P(0,11)",64,0,107,25 |
225,86 → 225,87 |
106:I2CInterface.c **** ***********************************************************/ |
107:I2CInterface.c **** void I2CInt_writeData(unsigned char address, unsigned char *data, unsigned char bytes) |
108:I2CInterface.c **** { |
108 .stabn 68,0,108,.LM3-I2CInt_writeData |
108 .stabn 68,0,108,.LM3-.LFBB2 |
109 .LM3: |
110 /* prologue: frame size=0 */ |
111 /* prologue end (size=0) */ |
112 0008 982F mov r25,r24 |
113 .L5: |
110 .LFBB2: |
111 /* prologue: frame size=0 */ |
112 /* prologue end (size=0) */ |
113 0008 982F mov r25,r24 |
114 .L5: |
109:I2CInterface.c **** while(status & (1<<BUSY)); /* Bus is busy wait (or exit with error code) */ |
114 .stabn 68,0,109,.LM4-I2CInt_writeData |
115 .LM4: |
116 000a 8091 0000 lds r24,status |
117 000e 8823 tst r24 |
118 0010 E4F3 brlt .L5 |
119 .L9: |
GAS LISTING /tmp/ccZHfAgR.s page 5 |
115 .stabn 68,0,109,.LM4-.LFBB2 |
116 .LM4: |
117 000a 8091 0000 lds r24,status |
118 000e 8823 tst r24 |
119 0010 04F0 brlt .L5 |
GAS LISTING /tmp/ccfEG7oP.s page 5 |
|
|
120 .L9: |
110:I2CInterface.c **** while(TWCR & (1<<TWSTO)); |
120 .stabn 68,0,110,.LM5-I2CInt_writeData |
121 .LM5: |
122 0012 06B6 in __tmp_reg__,86-0x20 |
123 0014 04FC sbrc __tmp_reg__,4 |
124 0016 FDCF rjmp .L9 |
121 .stabn 68,0,110,.LM5-.LFBB2 |
122 .LM5: |
123 0012 06B6 in __tmp_reg__,86-0x20 |
124 0014 04FC sbrc __tmp_reg__,4 |
125 0016 00C0 rjmp .L9 |
111:I2CInterface.c **** |
112:I2CInterface.c **** /* copy the needed data and state info to our local I2C command structure */ |
113:I2CInterface.c **** twi_address = address; |
125 .stabn 68,0,113,.LM6-I2CInt_writeData |
126 .LM6: |
127 0018 9093 0000 sts twi_address,r25 |
126 .stabn 68,0,113,.LM6-.LFBB2 |
127 .LM6: |
128 0018 9093 0000 sts twi_address,r25 |
114:I2CInterface.c **** twi_data = data; |
128 .stabn 68,0,114,.LM7-I2CInt_writeData |
129 .LM7: |
130 001c 7093 0000 sts (twi_data)+1,r23 |
131 0020 6093 0000 sts twi_data,r22 |
129 .stabn 68,0,114,.LM7-.LFBB2 |
130 .LM7: |
131 001c 7093 0000 sts (twi_data)+1,r23 |
132 0020 6093 0000 sts twi_data,r22 |
115:I2CInterface.c **** twi_bytes = bytes; |
132 .stabn 68,0,115,.LM8-I2CInt_writeData |
133 .LM8: |
134 0024 4093 0000 sts twi_bytes,r20 |
133 .stabn 68,0,115,.LM8-.LFBB2 |
134 .LM8: |
135 0024 4093 0000 sts twi_bytes,r20 |
116:I2CInterface.c **** twi_ddr = TW_WRITE; |
135 .stabn 68,0,116,.LM9-I2CInt_writeData |
136 .LM9: |
137 0028 1092 0000 sts twi_ddr,__zero_reg__ |
136 .stabn 68,0,116,.LM9-.LFBB2 |
137 .LM9: |
138 0028 1092 0000 sts twi_ddr,__zero_reg__ |
117:I2CInterface.c **** |
118:I2CInterface.c **** retry_cnt = 0; |
138 .stabn 68,0,118,.LM10-I2CInt_writeData |
139 .LM10: |
140 002c 1092 0000 sts retry_cnt,__zero_reg__ |
139 .stabn 68,0,118,.LM10-.LFBB2 |
140 .LM10: |
141 002c 1092 0000 sts retry_cnt,__zero_reg__ |
119:I2CInterface.c **** |
120:I2CInterface.c **** /* Generate start condition, the remainder of the transfer is interrupt driven and |
121:I2CInterface.c **** will be performed in the background */ |
122:I2CInterface.c **** TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)|(1<<TWIE); |
141 .stabn 68,0,122,.LM11-I2CInt_writeData |
142 .LM11: |
143 0030 85EA ldi r24,lo8(-91) |
144 0032 86BF out 86-0x20,r24 |
142 .stabn 68,0,122,.LM11-.LFBB2 |
143 .LM11: |
144 0030 85EA ldi r24,lo8(-91) |
145 0032 86BF out 86-0x20,r24 |
123:I2CInterface.c **** |
124:I2CInterface.c **** status |= (1<<BUSY); |
145 .stabn 68,0,124,.LM12-I2CInt_writeData |
146 .LM12: |
147 0034 8091 0000 lds r24,status |
148 0038 8068 ori r24,lo8(-128) |
149 003a 8093 0000 sts status,r24 |
150 /* epilogue: frame size=0 */ |
151 003e 0895 ret |
152 /* epilogue end (size=1) */ |
153 /* function I2CInt_writeData size 28 (27) */ |
154 .size I2CInt_writeData, .-I2CInt_writeData |
155 .Lscope1: |
156 .stabs "",36,0,0,.Lscope1-I2CInt_writeData |
157 .stabd 78,0,0 |
158 .stabs "I2CInt_readData:F(0,15)",36,0,138,I2CInt_readData |
159 .stabs "address:P(0,11)",64,0,137,25 |
160 .stabs "data:P(0,16)",64,0,137,22 |
161 .stabs "bytes:P(0,11)",64,0,137,20 |
GAS LISTING /tmp/ccZHfAgR.s page 6 |
146 .stabn 68,0,124,.LM12-.LFBB2 |
147 .LM12: |
148 0034 8091 0000 lds r24,status |
149 0038 8068 ori r24,lo8(-128) |
150 003a 8093 0000 sts status,r24 |
151 /* epilogue: frame size=0 */ |
152 003e 0895 ret |
153 /* epilogue end (size=1) */ |
154 /* function I2CInt_writeData size 28 (27) */ |
155 .size I2CInt_writeData, .-I2CInt_writeData |
156 .Lscope2: |
157 .stabs "",36,0,0,.Lscope2-.LFBB2 |
158 .stabd 78,0,0 |
159 .stabs "I2CInt_readData:F(0,15)",36,0,138,I2CInt_readData |
160 .stabs "address:P(0,11)",64,0,137,25 |
161 .stabs "data:P(0,16)",64,0,137,22 |
GAS LISTING /tmp/ccfEG7oP.s page 6 |
|
|
162 .global I2CInt_readData |
163 .type I2CInt_readData, @function |
164 I2CInt_readData: |
165 .stabd 46,0,0 |
162 .stabs "bytes:P(0,11)",64,0,137,20 |
163 .global I2CInt_readData |
164 .type I2CInt_readData, @function |
165 I2CInt_readData: |
166 .stabd 46,0,0 |
125:I2CInterface.c **** } |
126:I2CInterface.c **** |
127:I2CInterface.c **** /*********************************************************** |
319,74 → 320,75 |
136:I2CInterface.c **** ***********************************************************/ |
137:I2CInterface.c **** void I2CInt_readData(unsigned char address, unsigned char *data, unsigned char bytes) |
138:I2CInterface.c **** { |
166 .stabn 68,0,138,.LM13-I2CInt_readData |
167 .LM13: |
168 /* prologue: frame size=0 */ |
169 /* prologue end (size=0) */ |
170 0040 982F mov r25,r24 |
171 .L15: |
167 .stabn 68,0,138,.LM13-.LFBB3 |
168 .LM13: |
169 .LFBB3: |
170 /* prologue: frame size=0 */ |
171 /* prologue end (size=0) */ |
172 0040 982F mov r25,r24 |
173 .L15: |
139:I2CInterface.c **** /* Bus is busy wait (or exit with error code) */ |
140:I2CInterface.c **** while(status & (1<<BUSY)); |
172 .stabn 68,0,140,.LM14-I2CInt_readData |
173 .LM14: |
174 0042 8091 0000 lds r24,status |
175 0046 8823 tst r24 |
176 0048 E4F3 brlt .L15 |
174 .stabn 68,0,140,.LM14-.LFBB3 |
175 .LM14: |
176 0042 8091 0000 lds r24,status |
177 0046 8823 tst r24 |
178 0048 04F0 brlt .L15 |
141:I2CInterface.c **** |
142:I2CInterface.c **** twi_address = address; |
177 .stabn 68,0,142,.LM15-I2CInt_readData |
178 .LM15: |
179 004a 9093 0000 sts twi_address,r25 |
179 .stabn 68,0,142,.LM15-.LFBB3 |
180 .LM15: |
181 004a 9093 0000 sts twi_address,r25 |
143:I2CInterface.c **** twi_data = data; |
180 .stabn 68,0,143,.LM16-I2CInt_readData |
181 .LM16: |
182 004e 7093 0000 sts (twi_data)+1,r23 |
183 0052 6093 0000 sts twi_data,r22 |
182 .stabn 68,0,143,.LM16-.LFBB3 |
183 .LM16: |
184 004e 7093 0000 sts (twi_data)+1,r23 |
185 0052 6093 0000 sts twi_data,r22 |
144:I2CInterface.c **** twi_bytes = bytes; |
184 .stabn 68,0,144,.LM17-I2CInt_readData |
185 .LM17: |
186 0056 4093 0000 sts twi_bytes,r20 |
186 .stabn 68,0,144,.LM17-.LFBB3 |
187 .LM17: |
188 0056 4093 0000 sts twi_bytes,r20 |
145:I2CInterface.c **** twi_ddr = TW_READ; |
187 .stabn 68,0,145,.LM18-I2CInt_readData |
188 .LM18: |
189 005a 81E0 ldi r24,lo8(1) |
190 005c 8093 0000 sts twi_ddr,r24 |
189 .stabn 68,0,145,.LM18-.LFBB3 |
190 .LM18: |
191 005a 81E0 ldi r24,lo8(1) |
192 005c 8093 0000 sts twi_ddr,r24 |
146:I2CInterface.c **** |
147:I2CInterface.c **** retry_cnt = 0; |
191 .stabn 68,0,147,.LM19-I2CInt_readData |
192 .LM19: |
193 0060 1092 0000 sts retry_cnt,__zero_reg__ |
193 .stabn 68,0,147,.LM19-.LFBB3 |
194 .LM19: |
195 0060 1092 0000 sts retry_cnt,__zero_reg__ |
GAS LISTING /tmp/ccfEG7oP.s page 7 |
|
|
148:I2CInterface.c **** |
149:I2CInterface.c **** /* Generate start condition, the remainder of the transfer is interrupt driven and |
GAS LISTING /tmp/ccZHfAgR.s page 7 |
|
|
150:I2CInterface.c **** will be performed in the background */ |
151:I2CInterface.c **** TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)|(1<<TWIE); |
194 .stabn 68,0,151,.LM20-I2CInt_readData |
195 .LM20: |
196 0064 85EA ldi r24,lo8(-91) |
197 0066 86BF out 86-0x20,r24 |
196 .stabn 68,0,151,.LM20-.LFBB3 |
197 .LM20: |
198 0064 85EA ldi r24,lo8(-91) |
199 0066 86BF out 86-0x20,r24 |
152:I2CInterface.c **** |
153:I2CInterface.c **** status |= (1<<BUSY); |
198 .stabn 68,0,153,.LM21-I2CInt_readData |
199 .LM21: |
200 0068 8091 0000 lds r24,status |
201 006c 8068 ori r24,lo8(-128) |
202 006e 8093 0000 sts status,r24 |
203 /* epilogue: frame size=0 */ |
204 0072 0895 ret |
205 /* epilogue end (size=1) */ |
206 /* function I2CInt_readData size 26 (25) */ |
207 .size I2CInt_readData, .-I2CInt_readData |
208 .Lscope2: |
209 .stabs "",36,0,0,.Lscope2-I2CInt_readData |
210 .stabd 78,0,0 |
211 .stabs "I2CInt_isI2cBusy:F(7,1)",36,0,166,I2CInt_isI2cBusy |
212 .global I2CInt_isI2cBusy |
213 .type I2CInt_isI2cBusy, @function |
214 I2CInt_isI2cBusy: |
215 .stabd 46,0,0 |
200 .stabn 68,0,153,.LM21-.LFBB3 |
201 .LM21: |
202 0068 8091 0000 lds r24,status |
203 006c 8068 ori r24,lo8(-128) |
204 006e 8093 0000 sts status,r24 |
205 /* epilogue: frame size=0 */ |
206 0072 0895 ret |
207 /* epilogue end (size=1) */ |
208 /* function I2CInt_readData size 26 (25) */ |
209 .size I2CInt_readData, .-I2CInt_readData |
210 .Lscope3: |
211 .stabs "",36,0,0,.Lscope3-.LFBB3 |
212 .stabd 78,0,0 |
213 .stabs "I2CInt_isI2cBusy:F(7,1)",36,0,166,I2CInt_isI2cBusy |
214 .global I2CInt_isI2cBusy |
215 .type I2CInt_isI2cBusy, @function |
216 I2CInt_isI2cBusy: |
217 .stabd 46,0,0 |
154:I2CInterface.c **** } |
155:I2CInterface.c **** |
156:I2CInterface.c **** /*********************************************************** |
400,43 → 402,44 |
164:I2CInterface.c **** ***********************************************************/ |
165:I2CInterface.c **** bool_t I2CInt_isI2cBusy(void) |
166:I2CInterface.c **** { |
216 .stabn 68,0,166,.LM22-I2CInt_isI2cBusy |
217 .LM22: |
218 /* prologue: frame size=0 */ |
219 /* prologue end (size=0) */ |
218 .stabn 68,0,166,.LM22-.LFBB4 |
219 .LM22: |
220 .LFBB4: |
221 /* prologue: frame size=0 */ |
222 /* prologue end (size=0) */ |
167:I2CInterface.c **** bool_t retVal = FALSE; |
168:I2CInterface.c **** if ( (status & (1<<BUSY)) != 0) |
220 .stabn 68,0,168,.LM23-I2CInt_isI2cBusy |
221 .LM23: |
222 0074 8091 0000 lds r24,status |
223 0078 881F rol r24 |
224 007a 8827 clr r24 |
225 007c 881F rol r24 |
223 .stabn 68,0,168,.LM23-.LFBB4 |
224 .LM23: |
225 0074 8091 0000 lds r24,status |
226 0078 881F rol r24 |
227 007a 8827 clr r24 |
228 007c 881F rol r24 |
169:I2CInterface.c **** { |
170:I2CInterface.c **** retVal = TRUE; |
171:I2CInterface.c **** } |
GAS LISTING /tmp/ccfEG7oP.s page 8 |
|
|
172:I2CInterface.c **** |
173:I2CInterface.c **** return(retVal); |
174:I2CInterface.c **** } |
GAS LISTING /tmp/ccZHfAgR.s page 8 |
|
|
226 .stabn 68,0,174,.LM24-I2CInt_isI2cBusy |
227 .LM24: |
228 007e 9927 clr r25 |
229 /* epilogue: frame size=0 */ |
230 0080 0895 ret |
231 /* epilogue end (size=1) */ |
232 /* function I2CInt_isI2cBusy size 7 (6) */ |
233 .size I2CInt_isI2cBusy, .-I2CInt_isI2cBusy |
234 .Lscope3: |
235 .stabs "",36,0,0,.Lscope3-I2CInt_isI2cBusy |
236 .stabd 78,0,0 |
237 .stabs "__vector_17:F(0,15)",36,0,185,__vector_17 |
238 .global __vector_17 |
239 .type __vector_17, @function |
240 __vector_17: |
241 .stabd 46,0,0 |
229 .stabn 68,0,174,.LM24-.LFBB4 |
230 .LM24: |
231 007e 9927 clr r25 |
232 /* epilogue: frame size=0 */ |
233 0080 0895 ret |
234 /* epilogue end (size=1) */ |
235 /* function I2CInt_isI2cBusy size 7 (6) */ |
236 .size I2CInt_isI2cBusy, .-I2CInt_isI2cBusy |
237 .Lscope4: |
238 .stabs "",36,0,0,.Lscope4-.LFBB4 |
239 .stabd 78,0,0 |
240 .stabs "__vector_17:F(0,15)",36,0,185,__vector_17 |
241 .global __vector_17 |
242 .type __vector_17, @function |
243 __vector_17: |
244 .stabd 46,0,0 |
175:I2CInterface.c **** |
176:I2CInterface.c **** /*********************************************************** |
177:I2CInterface.c **** Function Name: <interrupt handler for I2C> |
448,303 → 451,302 |
183:I2CInterface.c **** ***********************************************************/ |
184:I2CInterface.c **** SIGNAL(SIG_2WIRE_SERIAL) |
185:I2CInterface.c **** { |
242 .stabn 68,0,185,.LM25-__vector_17 |
243 .LM25: |
244 /* prologue: frame size=0 */ |
245 0082 1F92 push __zero_reg__ |
246 0084 0F92 push __tmp_reg__ |
247 0086 0FB6 in __tmp_reg__,__SREG__ |
248 0088 0F92 push __tmp_reg__ |
249 008a 1124 clr __zero_reg__ |
250 008c 8F93 push r24 |
251 008e 9F93 push r25 |
252 0090 AF93 push r26 |
253 0092 BF93 push r27 |
254 0094 EF93 push r30 |
255 0096 FF93 push r31 |
256 /* prologue end (size=11) */ |
245 .stabn 68,0,185,.LM25-.LFBB5 |
246 .LM25: |
247 .LFBB5: |
248 /* prologue: frame size=0 */ |
249 0082 1F92 push __zero_reg__ |
250 0084 0F92 push __tmp_reg__ |
251 0086 0FB6 in __tmp_reg__,__SREG__ |
252 0088 0F92 push __tmp_reg__ |
253 008a 1124 clr __zero_reg__ |
254 008c 8F93 push r24 |
255 008e 9F93 push r25 |
256 0090 AF93 push r26 |
257 0092 BF93 push r27 |
258 0094 EF93 push r30 |
259 0096 FF93 push r31 |
260 /* prologue end (size=11) */ |
186:I2CInterface.c **** unsigned char TWI_status = TWSR & TW_STATUS_MASK; /* grab just the status bits */ |
257 .stabn 68,0,186,.LM26-__vector_17 |
258 .LM26: |
259 0098 81B1 in r24,33-0x20 |
261 .stabn 68,0,186,.LM26-.LFBB5 |
262 .LM26: |
263 0098 81B1 in r24,33-0x20 |
187:I2CInterface.c **** |
188:I2CInterface.c **** /* the entire I2C handler is state-based...determine |
189:I2CInterface.c **** what needs to be done based on TWI_status */ |
190:I2CInterface.c **** switch(TWI_status) |
260 .stabn 68,0,190,.LM27-__vector_17 |
261 .LM27: |
262 009a 9927 clr r25 |
263 009c AA27 clr r26 |
264 009e BB27 clr r27 |
265 00a0 887F andi r24,lo8(248) |
266 00a2 9070 andi r25,hi8(248) |
GAS LISTING /tmp/ccZHfAgR.s page 9 |
264 .stabn 68,0,190,.LM27-.LFBB5 |
265 .LM27: |
266 009a 9927 clr r25 |
GAS LISTING /tmp/ccfEG7oP.s page 9 |
|
|
267 00a4 A070 andi r26,hlo8(248) |
268 00a6 B070 andi r27,hhi8(248) |
269 00a8 FC01 movw r30,r24 |
270 00aa 3897 sbiw r30,8 |
271 00ac E135 cpi r30,81 |
272 00ae F105 cpc r31,__zero_reg__ |
273 00b0 08F0 brlo .+2 |
274 00b2 9AC0 rjmp .L42 |
275 .stabn 68,0,190,.LM28-__vector_17 |
276 .LM28: |
277 00b4 E050 subi r30,lo8(-(pm(.L33))) |
278 00b6 F040 sbci r31,hi8(-(pm(.L33))) |
279 00b8 0994 ijmp |
280 .data |
281 .section .progmem.gcc_sw_table, "ax", @progbits |
282 .p2align 1 |
283 .L33: |
267 009c AA27 clr r26 |
268 009e BB27 clr r27 |
269 00a0 887F andi r24,lo8(248) |
270 00a2 9070 andi r25,hi8(248) |
271 00a4 A070 andi r26,hlo8(248) |
272 00a6 B070 andi r27,hhi8(248) |
273 00a8 FC01 movw r30,r24 |
274 00aa 3897 sbiw r30,8 |
275 00ac E135 cpi r30,81 |
276 00ae F105 cpc r31,__zero_reg__ |
277 00b0 00F0 brlo .+2 |
278 00b2 00C0 rjmp .L42 |
279 .stabn 68,0,190,.LM28-.LFBB5 |
280 .LM28: |
281 00b4 E050 subi r30,lo8(-(pm(.L33))) |
282 00b6 F040 sbci r31,hi8(-(pm(.L33))) |
283 00b8 0994 ijmp |
284 .data |
285 .section .progmem.gcc_sw_table, "ax", @progbits |
286 .p2align 1 |
287 0000 00C0 rjmp .L25 |
288 0002 00C0 rjmp .L42 |
289 0004 00C0 rjmp .L42 |
290 0006 00C0 rjmp .L42 |
291 0008 00C0 rjmp .L42 |
292 000a 00C0 rjmp .L42 |
293 000c 00C0 rjmp .L42 |
294 000e 00C0 rjmp .L42 |
295 0010 00C0 rjmp .L25 |
296 0012 00C0 rjmp .L42 |
297 0014 00C0 rjmp .L42 |
298 0016 00C0 rjmp .L42 |
299 0018 00C0 rjmp .L42 |
300 001a 00C0 rjmp .L42 |
301 001c 00C0 rjmp .L42 |
302 001e 00C0 rjmp .L42 |
303 0020 00C0 rjmp .L26 |
304 0022 00C0 rjmp .L42 |
305 0024 00C0 rjmp .L42 |
306 0026 00C0 rjmp .L42 |
307 0028 00C0 rjmp .L42 |
308 002a 00C0 rjmp .L42 |
309 002c 00C0 rjmp .L42 |
310 002e 00C0 rjmp .L42 |
311 0030 00C0 rjmp .L27 |
312 0032 00C0 rjmp .L42 |
313 0034 00C0 rjmp .L42 |
314 0036 00C0 rjmp .L42 |
315 0038 00C0 rjmp .L42 |
316 003a 00C0 rjmp .L42 |
317 003c 00C0 rjmp .L42 |
318 003e 00C0 rjmp .L42 |
319 0040 00C0 rjmp .L28 |
320 0042 00C0 rjmp .L42 |
321 0044 00C0 rjmp .L42 |
322 0046 00C0 rjmp .L42 |
323 0048 00C0 rjmp .L42 |
GAS LISTING /tmp/ccZHfAgR.s page 10 |
287 .L33: |
288 .data |
289 .section .progmem.gcc_sw_table, "ax", @progbits |
290 .p2align 1 |
291 0000 00C0 rjmp .L25 |
292 0002 00C0 rjmp .L42 |
293 0004 00C0 rjmp .L42 |
294 0006 00C0 rjmp .L42 |
295 0008 00C0 rjmp .L42 |
296 000a 00C0 rjmp .L42 |
297 000c 00C0 rjmp .L42 |
298 000e 00C0 rjmp .L42 |
299 0010 00C0 rjmp .L25 |
300 0012 00C0 rjmp .L42 |
301 0014 00C0 rjmp .L42 |
302 0016 00C0 rjmp .L42 |
303 0018 00C0 rjmp .L42 |
304 001a 00C0 rjmp .L42 |
305 001c 00C0 rjmp .L42 |
306 001e 00C0 rjmp .L42 |
307 0020 00C0 rjmp .L26 |
308 0022 00C0 rjmp .L42 |
309 0024 00C0 rjmp .L42 |
310 0026 00C0 rjmp .L42 |
311 0028 00C0 rjmp .L42 |
312 002a 00C0 rjmp .L42 |
313 002c 00C0 rjmp .L42 |
314 002e 00C0 rjmp .L42 |
315 0030 00C0 rjmp .L27 |
316 0032 00C0 rjmp .L42 |
317 0034 00C0 rjmp .L42 |
318 0036 00C0 rjmp .L42 |
319 0038 00C0 rjmp .L42 |
320 003a 00C0 rjmp .L42 |
321 003c 00C0 rjmp .L42 |
322 003e 00C0 rjmp .L42 |
323 0040 00C0 rjmp .L28 |
GAS LISTING /tmp/ccfEG7oP.s page 10 |
|
|
324 004a 00C0 rjmp .L42 |
325 004c 00C0 rjmp .L42 |
326 004e 00C0 rjmp .L42 |
327 0050 00C0 rjmp .L29 |
328 0052 00C0 rjmp .L42 |
329 0054 00C0 rjmp .L42 |
330 0056 00C0 rjmp .L42 |
331 0058 00C0 rjmp .L42 |
332 005a 00C0 rjmp .L42 |
333 005c 00C0 rjmp .L42 |
334 005e 00C0 rjmp .L42 |
335 0060 00C0 rjmp .L42 |
336 0062 00C0 rjmp .L42 |
337 0064 00C0 rjmp .L42 |
338 0066 00C0 rjmp .L42 |
339 0068 00C0 rjmp .L42 |
340 006a 00C0 rjmp .L42 |
341 006c 00C0 rjmp .L42 |
342 006e 00C0 rjmp .L42 |
343 0070 00C0 rjmp .L30 |
344 0072 00C0 rjmp .L42 |
345 0074 00C0 rjmp .L42 |
346 0076 00C0 rjmp .L42 |
347 0078 00C0 rjmp .L42 |
348 007a 00C0 rjmp .L42 |
349 007c 00C0 rjmp .L42 |
350 007e 00C0 rjmp .L42 |
351 0080 00C0 rjmp .L27 |
352 0082 00C0 rjmp .L42 |
353 0084 00C0 rjmp .L42 |
354 0086 00C0 rjmp .L42 |
355 0088 00C0 rjmp .L42 |
356 008a 00C0 rjmp .L42 |
357 008c 00C0 rjmp .L42 |
358 008e 00C0 rjmp .L42 |
359 0090 00C0 rjmp .L31 |
360 0092 00C0 rjmp .L42 |
361 0094 00C0 rjmp .L42 |
362 0096 00C0 rjmp .L42 |
363 0098 00C0 rjmp .L42 |
364 009a 00C0 rjmp .L42 |
365 009c 00C0 rjmp .L42 |
366 009e 00C0 rjmp .L42 |
367 00a0 00C0 rjmp .L32 |
368 .text |
369 .L25: |
324 0042 00C0 rjmp .L42 |
325 0044 00C0 rjmp .L42 |
326 0046 00C0 rjmp .L42 |
327 0048 00C0 rjmp .L42 |
328 004a 00C0 rjmp .L42 |
329 004c 00C0 rjmp .L42 |
330 004e 00C0 rjmp .L42 |
331 0050 00C0 rjmp .L29 |
332 0052 00C0 rjmp .L42 |
333 0054 00C0 rjmp .L42 |
334 0056 00C0 rjmp .L42 |
335 0058 00C0 rjmp .L42 |
336 005a 00C0 rjmp .L42 |
337 005c 00C0 rjmp .L42 |
338 005e 00C0 rjmp .L42 |
339 0060 00C0 rjmp .L42 |
340 0062 00C0 rjmp .L42 |
341 0064 00C0 rjmp .L42 |
342 0066 00C0 rjmp .L42 |
343 0068 00C0 rjmp .L42 |
344 006a 00C0 rjmp .L42 |
345 006c 00C0 rjmp .L42 |
346 006e 00C0 rjmp .L42 |
347 0070 00C0 rjmp .L30 |
348 0072 00C0 rjmp .L42 |
349 0074 00C0 rjmp .L42 |
350 0076 00C0 rjmp .L42 |
351 0078 00C0 rjmp .L42 |
352 007a 00C0 rjmp .L42 |
353 007c 00C0 rjmp .L42 |
354 007e 00C0 rjmp .L42 |
355 0080 00C0 rjmp .L27 |
356 0082 00C0 rjmp .L42 |
357 0084 00C0 rjmp .L42 |
358 0086 00C0 rjmp .L42 |
359 0088 00C0 rjmp .L42 |
360 008a 00C0 rjmp .L42 |
361 008c 00C0 rjmp .L42 |
362 008e 00C0 rjmp .L42 |
363 0090 00C0 rjmp .L31 |
364 0092 00C0 rjmp .L42 |
365 0094 00C0 rjmp .L42 |
366 0096 00C0 rjmp .L42 |
367 0098 00C0 rjmp .L42 |
368 009a 00C0 rjmp .L42 |
369 009c 00C0 rjmp .L42 |
370 009e 00C0 rjmp .L42 |
371 00a0 00C0 rjmp .L32 |
372 .text |
373 .L25: |
191:I2CInterface.c **** { |
192:I2CInterface.c **** case TW_START: /* Start condition */ |
193:I2CInterface.c **** case TW_REP_START: /* Repeated start condition */ |
194:I2CInterface.c **** if(retry_cnt > MAX_TWI_RETRIES) |
370 .stabn 68,0,194,.LM29-__vector_17 |
371 .LM29: |
372 00ba 8091 0000 lds r24,retry_cnt |
373 00be 8330 cpi r24,lo8(3) |
374 00c0 48F0 brlo .L34 |
374 .stabn 68,0,194,.LM29-.LFBB5 |
375 .LM29: |
376 00ba 8091 0000 lds r24,retry_cnt |
GAS LISTING /tmp/ccfEG7oP.s page 11 |
|
|
377 00be 8330 cpi r24,lo8(3) |
378 00c0 00F0 brlo .L34 |
195:I2CInterface.c **** { |
196:I2CInterface.c **** /* generate stop condition if we've reached our retry limit */ |
GAS LISTING /tmp/ccZHfAgR.s page 11 |
|
|
197:I2CInterface.c **** TWCR |= (1<<TWINT)|(1<<TWSTO); |
375 .stabn 68,0,197,.LM30-__vector_17 |
376 .LM30: |
377 00c2 86B7 in r24,86-0x20 |
378 00c4 8069 ori r24,lo8(-112) |
379 00c6 86BF out 86-0x20,r24 |
379 .stabn 68,0,197,.LM30-.LFBB5 |
380 .LM30: |
381 00c2 86B7 in r24,86-0x20 |
382 00c4 8069 ori r24,lo8(-112) |
383 00c6 86BF out 86-0x20,r24 |
198:I2CInterface.c **** status &= ~(1<<BUSY); |
380 .stabn 68,0,198,.LM31-__vector_17 |
381 .LM31: |
382 00c8 8091 0000 lds r24,status |
383 00cc 8F77 andi r24,lo8(127) |
384 00ce 8093 0000 sts status,r24 |
385 00d2 8AC0 rjmp .L42 |
386 .L34: |
384 .stabn 68,0,198,.LM31-.LFBB5 |
385 .LM31: |
386 00c8 8091 0000 lds r24,status |
387 00cc 8F77 andi r24,lo8(127) |
388 00ce 8093 0000 sts status,r24 |
389 00d2 00C0 rjmp .L42 |
390 .L34: |
199:I2CInterface.c **** return; |
200:I2CInterface.c **** } |
201:I2CInterface.c **** /* indicate read or write */ |
202:I2CInterface.c **** TWDR = (twi_address<<1) + twi_ddr; |
387 .stabn 68,0,202,.LM32-__vector_17 |
388 .LM32: |
389 00d4 8091 0000 lds r24,twi_address |
390 00d8 9091 0000 lds r25,twi_ddr |
391 00dc 880F lsl r24 |
392 00de 890F add r24,r25 |
393 00e0 83B9 out 35-0x20,r24 |
391 .stabn 68,0,202,.LM32-.LFBB5 |
392 .LM32: |
393 00d4 8091 0000 lds r24,twi_address |
394 00d8 9091 0000 lds r25,twi_ddr |
395 00dc 880F lsl r24 |
396 00de 890F add r24,r25 |
397 00e0 83B9 out 35-0x20,r24 |
203:I2CInterface.c **** /* TWSTA must be cleared...also clears TWINT */ |
204:I2CInterface.c **** TWCR &= ~(1<<TWSTA); |
394 .stabn 68,0,204,.LM33-__vector_17 |
395 .LM33: |
396 00e2 86B7 in r24,86-0x20 |
397 00e4 8F7D andi r24,lo8(-33) |
398 00e6 86BF out 86-0x20,r24 |
399 00e8 7FC0 rjmp .L42 |
400 .L26: |
398 .stabn 68,0,204,.LM33-.LFBB5 |
399 .LM33: |
400 00e2 86B7 in r24,86-0x20 |
401 00e4 8F7D andi r24,lo8(-33) |
402 00e6 86BF out 86-0x20,r24 |
403 00e8 00C0 rjmp .L42 |
404 .L26: |
205:I2CInterface.c **** break; |
206:I2CInterface.c **** |
207:I2CInterface.c **** case TW_MT_SLA_ACK: /* Slave acknowledged address, */ |
208:I2CInterface.c **** retry_cnt = 0; |
401 .stabn 68,0,208,.LM34-__vector_17 |
402 .LM34: |
403 00ea 1092 0000 sts retry_cnt,__zero_reg__ |
405 .stabn 68,0,208,.LM34-.LFBB5 |
406 .LM34: |
407 00ea 1092 0000 sts retry_cnt,__zero_reg__ |
209:I2CInterface.c **** /* tx the data, and increment the data pointer */ |
210:I2CInterface.c **** TWDR = *twi_data; |
404 .stabn 68,0,210,.LM35-__vector_17 |
405 .LM35: |
406 00ee E091 0000 lds r30,twi_data |
407 00f2 F091 0000 lds r31,(twi_data)+1 |
408 00f6 8081 ld r24,Z |
409 00f8 83B9 out 35-0x20,r24 |
408 .stabn 68,0,210,.LM35-.LFBB5 |
409 .LM35: |
410 00ee E091 0000 lds r30,twi_data |
411 00f2 F091 0000 lds r31,(twi_data)+1 |
412 00f6 8191 ld r24,Z+ |
413 00f8 83B9 out 35-0x20,r24 |
211:I2CInterface.c **** twi_data++; |
410 .stabn 68,0,211,.LM36-__vector_17 |
411 .LM36: |
412 00fa 3196 adiw r30,1 |
413 00fc F093 0000 sts (twi_data)+1,r31 |
414 0100 E093 0000 sts twi_data,r30 |
414 .stabn 68,0,211,.LM36-.LFBB5 |
415 .LM36: |
416 00fa F093 0000 sts (twi_data)+1,r31 |
GAS LISTING /tmp/ccfEG7oP.s page 12 |
|
|
417 00fe E093 0000 sts twi_data,r30 |
212:I2CInterface.c **** |
213:I2CInterface.c **** /* clear the int to continue */ |
GAS LISTING /tmp/ccZHfAgR.s page 12 |
|
|
214:I2CInterface.c **** TWCR |= (1<<TWINT); |
415 .stabn 68,0,214,.LM37-__vector_17 |
416 .LM37: |
417 0104 86B7 in r24,86-0x20 |
418 0106 8068 ori r24,lo8(-128) |
419 0108 86BF out 86-0x20,r24 |
420 010a 6EC0 rjmp .L42 |
421 .L27: |
418 .stabn 68,0,214,.LM37-.LFBB5 |
419 .LM37: |
420 0102 86B7 in r24,86-0x20 |
421 0104 8068 ori r24,lo8(-128) |
422 0106 86BF out 86-0x20,r24 |
423 0108 00C0 rjmp .L42 |
424 .L27: |
215:I2CInterface.c **** break; |
216:I2CInterface.c **** |
217:I2CInterface.c **** case TW_MT_SLA_NACK: /* Slave didn't acknowledge address, */ |
218:I2CInterface.c **** case TW_MR_SLA_NACK: |
219:I2CInterface.c **** retry_cnt++; |
422 .stabn 68,0,219,.LM38-__vector_17 |
423 .LM38: |
424 010c 8091 0000 lds r24,retry_cnt |
425 0110 8F5F subi r24,lo8(-(1)) |
426 0112 8093 0000 sts retry_cnt,r24 |
425 .stabn 68,0,219,.LM38-.LFBB5 |
426 .LM38: |
427 010a 8091 0000 lds r24,retry_cnt |
428 010e 8F5F subi r24,lo8(-(1)) |
429 0110 8093 0000 sts retry_cnt,r24 |
220:I2CInterface.c **** |
221:I2CInterface.c **** /* retry...*/ |
222:I2CInterface.c **** TWCR |= (1<<TWINT)|(1<<TWSTA)|(1<<TWSTO); |
427 .stabn 68,0,222,.LM39-__vector_17 |
428 .LM39: |
429 0116 86B7 in r24,86-0x20 |
430 0118 806B ori r24,lo8(-80) |
431 011a 86BF out 86-0x20,r24 |
432 011c 65C0 rjmp .L42 |
433 .L28: |
430 .stabn 68,0,222,.LM39-.LFBB5 |
431 .LM39: |
432 0114 86B7 in r24,86-0x20 |
433 0116 806B ori r24,lo8(-80) |
434 0118 86BF out 86-0x20,r24 |
435 011a 00C0 rjmp .L42 |
436 .L28: |
223:I2CInterface.c **** break; |
224:I2CInterface.c **** |
225:I2CInterface.c **** case TW_MT_DATA_ACK: /* Slave Acknowledged data, */ |
226:I2CInterface.c **** if(--twi_bytes > 0) |
434 .stabn 68,0,226,.LM40-__vector_17 |
435 .LM40: |
436 011e 8091 0000 lds r24,twi_bytes |
437 0122 8150 subi r24,lo8(-(-1)) |
438 0124 8093 0000 sts twi_bytes,r24 |
439 0128 8091 0000 lds r24,twi_bytes |
440 012c 8823 tst r24 |
441 012e 79F0 breq .L36 |
437 .stabn 68,0,226,.LM40-.LFBB5 |
438 .LM40: |
439 011c 8091 0000 lds r24,twi_bytes |
440 0120 8150 subi r24,lo8(-(-1)) |
441 0122 8093 0000 sts twi_bytes,r24 |
442 0126 8091 0000 lds r24,twi_bytes |
443 012a 8823 tst r24 |
444 012c 01F0 breq .L36 |
227:I2CInterface.c **** { |
228:I2CInterface.c **** /* more data to send, so send it */ |
229:I2CInterface.c **** TWDR = *twi_data; |
442 .stabn 68,0,229,.LM41-__vector_17 |
443 .LM41: |
444 0130 E091 0000 lds r30,twi_data |
445 0134 F091 0000 lds r31,(twi_data)+1 |
446 0138 8081 ld r24,Z |
447 013a 83B9 out 35-0x20,r24 |
445 .stabn 68,0,229,.LM41-.LFBB5 |
446 .LM41: |
447 012e E091 0000 lds r30,twi_data |
448 0132 F091 0000 lds r31,(twi_data)+1 |
449 0136 8191 ld r24,Z+ |
450 0138 83B9 out 35-0x20,r24 |
230:I2CInterface.c **** twi_data++; |
448 .stabn 68,0,230,.LM42-__vector_17 |
449 .LM42: |
450 013c 3196 adiw r30,1 |
451 013e F093 0000 sts (twi_data)+1,r31 |
452 0142 E093 0000 sts twi_data,r30 |
231:I2CInterface.c **** TWCR |= (1<<TWINT); |
453 .stabn 68,0,231,.LM43-__vector_17 |
GAS LISTING /tmp/ccZHfAgR.s page 13 |
451 .stabn 68,0,230,.LM42-.LFBB5 |
452 .LM42: |
453 013a F093 0000 sts (twi_data)+1,r31 |
454 013e E093 0000 sts twi_data,r30 |
GAS LISTING /tmp/ccfEG7oP.s page 13 |
|
|
454 .LM43: |
455 0146 86B7 in r24,86-0x20 |
456 0148 8068 ori r24,lo8(-128) |
457 014a 86BF out 86-0x20,r24 |
458 014c 4DC0 rjmp .L42 |
459 .L36: |
231:I2CInterface.c **** TWCR |= (1<<TWINT); |
455 .stabn 68,0,231,.LM43-.LFBB5 |
456 .LM43: |
457 0142 86B7 in r24,86-0x20 |
458 0144 8068 ori r24,lo8(-128) |
459 0146 86BF out 86-0x20,r24 |
460 0148 00C0 rjmp .L42 |
461 .L36: |
232:I2CInterface.c **** } |
233:I2CInterface.c **** else |
234:I2CInterface.c **** { |
235:I2CInterface.c **** /* generate the stop condition if needed */ |
236:I2CInterface.c **** TWCR |= (1<<TWSTO)|(1<<TWINT); |
460 .stabn 68,0,236,.LM44-__vector_17 |
461 .LM44: |
462 014e 86B7 in r24,86-0x20 |
463 0150 8069 ori r24,lo8(-112) |
464 0152 86BF out 86-0x20,r24 |
462 .stabn 68,0,236,.LM44-.LFBB5 |
463 .LM44: |
464 014a 86B7 in r24,86-0x20 |
465 014c 8069 ori r24,lo8(-112) |
466 014e 86BF out 86-0x20,r24 |
237:I2CInterface.c **** status &= ~(1<<BUSY); |
465 .stabn 68,0,237,.LM45-__vector_17 |
466 .LM45: |
467 0154 8091 0000 lds r24,status |
468 0158 8F77 andi r24,lo8(127) |
469 015a 8093 0000 sts status,r24 |
470 015e 44C0 rjmp .L42 |
471 .L29: |
467 .stabn 68,0,237,.LM45-.LFBB5 |
468 .LM45: |
469 0150 8091 0000 lds r24,status |
470 0154 8F77 andi r24,lo8(127) |
471 0156 8093 0000 sts status,r24 |
472 015a 00C0 rjmp .L42 |
473 .L29: |
238:I2CInterface.c **** } |
239:I2CInterface.c **** break; |
240:I2CInterface.c **** |
751,56 → 753,56 |
241:I2CInterface.c **** case TW_MT_DATA_NACK: /* Slave didn't acknowledge data */ |
242:I2CInterface.c **** /* send the stop condition */ |
243:I2CInterface.c **** TWCR |= (1<<TWINT)|(1<<TWSTO); |
472 .stabn 68,0,243,.LM46-__vector_17 |
473 .LM46: |
474 0160 86B7 in r24,86-0x20 |
475 0162 8069 ori r24,lo8(-112) |
476 0164 86BF out 86-0x20,r24 |
474 .stabn 68,0,243,.LM46-.LFBB5 |
475 .LM46: |
476 015c 86B7 in r24,86-0x20 |
477 015e 8069 ori r24,lo8(-112) |
478 0160 86BF out 86-0x20,r24 |
244:I2CInterface.c **** status &= ~(1<<BUSY); |
477 .stabn 68,0,244,.LM47-__vector_17 |
478 .LM47: |
479 0166 8091 0000 lds r24,status |
480 016a 8F77 andi r24,lo8(127) |
481 016c 8093 0000 sts status,r24 |
482 0170 3BC0 rjmp .L42 |
483 .L30: |
479 .stabn 68,0,244,.LM47-.LFBB5 |
480 .LM47: |
481 0162 8091 0000 lds r24,status |
482 0166 8F77 andi r24,lo8(127) |
483 0168 8093 0000 sts status,r24 |
484 016c 00C0 rjmp .L42 |
485 .L30: |
245:I2CInterface.c **** break; |
246:I2CInterface.c **** |
247:I2CInterface.c **** case TW_MR_SLA_ACK: /* Slave acknowledged address */ |
248:I2CInterface.c **** if(--twi_bytes > 0) |
484 .stabn 68,0,248,.LM48-__vector_17 |
485 .LM48: |
486 0172 8091 0000 lds r24,twi_bytes |
487 0176 8150 subi r24,lo8(-(-1)) |
488 0178 8093 0000 sts twi_bytes,r24 |
489 017c 8091 0000 lds r24,twi_bytes |
490 0180 8823 tst r24 |
491 0182 21F0 breq .L38 |
486 .stabn 68,0,248,.LM48-.LFBB5 |
487 .LM48: |
488 016e 8091 0000 lds r24,twi_bytes |
489 0172 8150 subi r24,lo8(-(-1)) |
490 0174 8093 0000 sts twi_bytes,r24 |
491 0178 8091 0000 lds r24,twi_bytes |
492 017c 8823 tst r24 |
493 017e 01F0 breq .L38 |
GAS LISTING /tmp/ccfEG7oP.s page 14 |
|
|
249:I2CInterface.c **** { |
250:I2CInterface.c **** /* if there is more than one byte to read, acknowledge */ |
GAS LISTING /tmp/ccZHfAgR.s page 14 |
|
|
251:I2CInterface.c **** TWCR |= (1<<TWEA)|(1<<TWINT); |
492 .stabn 68,0,251,.LM49-__vector_17 |
493 .LM49: |
494 0184 86B7 in r24,86-0x20 |
495 0186 806C ori r24,lo8(-64) |
496 0188 86BF out 86-0x20,r24 |
497 018a 2EC0 rjmp .L42 |
498 .L38: |
494 .stabn 68,0,251,.LM49-.LFBB5 |
495 .LM49: |
496 0180 86B7 in r24,86-0x20 |
497 0182 806C ori r24,lo8(-64) |
498 0184 86BF out 86-0x20,r24 |
499 0186 00C0 rjmp .L42 |
500 .L38: |
252:I2CInterface.c **** } |
253:I2CInterface.c **** else |
254:I2CInterface.c **** { |
255:I2CInterface.c **** /* no acknowledge */ |
256:I2CInterface.c **** TWCR |= (1<<TWINT); |
499 .stabn 68,0,256,.LM50-__vector_17 |
500 .LM50: |
501 018c 86B7 in r24,86-0x20 |
502 018e 8068 ori r24,lo8(-128) |
503 0190 86BF out 86-0x20,r24 |
504 0192 2AC0 rjmp .L42 |
505 .L31: |
501 .stabn 68,0,256,.LM50-.LFBB5 |
502 .LM50: |
503 0188 86B7 in r24,86-0x20 |
504 018a 8068 ori r24,lo8(-128) |
505 018c 86BF out 86-0x20,r24 |
506 018e 00C0 rjmp .L42 |
507 .L31: |
257:I2CInterface.c **** } |
258:I2CInterface.c **** break; |
259:I2CInterface.c **** |
808,52 → 810,51 |
261:I2CInterface.c **** |
262:I2CInterface.c **** /* grab the received data */ |
263:I2CInterface.c **** *twi_data = TWDR; |
506 .stabn 68,0,263,.LM51-__vector_17 |
507 .LM51: |
508 0194 E091 0000 lds r30,twi_data |
509 0198 F091 0000 lds r31,(twi_data)+1 |
510 019c 83B1 in r24,35-0x20 |
511 019e 8083 st Z,r24 |
508 .stabn 68,0,263,.LM51-.LFBB5 |
509 .LM51: |
510 0190 E091 0000 lds r30,twi_data |
511 0194 F091 0000 lds r31,(twi_data)+1 |
512 0198 83B1 in r24,35-0x20 |
513 019a 8193 st Z+,r24 |
264:I2CInterface.c **** twi_data++; |
512 .stabn 68,0,264,.LM52-__vector_17 |
513 .LM52: |
514 01a0 3196 adiw r30,1 |
515 01a2 F093 0000 sts (twi_data)+1,r31 |
516 01a6 E093 0000 sts twi_data,r30 |
514 .stabn 68,0,264,.LM52-.LFBB5 |
515 .LM52: |
516 019c F093 0000 sts (twi_data)+1,r31 |
517 01a0 E093 0000 sts twi_data,r30 |
265:I2CInterface.c **** if(--twi_bytes > 0) |
517 .stabn 68,0,265,.LM53-__vector_17 |
518 .LM53: |
519 01aa 8091 0000 lds r24,twi_bytes |
520 01ae 8150 subi r24,lo8(-(-1)) |
521 01b0 8093 0000 sts twi_bytes,r24 |
522 01b4 8091 0000 lds r24,twi_bytes |
523 01b8 8823 tst r24 |
524 01ba 21F0 breq .L40 |
518 .stabn 68,0,265,.LM53-.LFBB5 |
519 .LM53: |
520 01a4 8091 0000 lds r24,twi_bytes |
521 01a8 8150 subi r24,lo8(-(-1)) |
522 01aa 8093 0000 sts twi_bytes,r24 |
523 01ae 8091 0000 lds r24,twi_bytes |
524 01b2 8823 tst r24 |
525 01b4 01F0 breq .L40 |
266:I2CInterface.c **** { |
267:I2CInterface.c **** /* get the next data byte and ack */ |
268:I2CInterface.c **** TWCR |= (1<<TWEA)|(1<<TWINT); |
525 .stabn 68,0,268,.LM54-__vector_17 |
526 .LM54: |
527 01bc 86B7 in r24,86-0x20 |
528 01be 806C ori r24,lo8(-64) |
529 01c0 86BF out 86-0x20,r24 |
530 01c2 12C0 rjmp .L42 |
GAS LISTING /tmp/ccZHfAgR.s page 15 |
526 .stabn 68,0,268,.LM54-.LFBB5 |
527 .LM54: |
528 01b6 86B7 in r24,86-0x20 |
529 01b8 806C ori r24,lo8(-64) |
530 01ba 86BF out 86-0x20,r24 |
GAS LISTING /tmp/ccfEG7oP.s page 15 |
|
|
531 .L40: |
531 01bc 00C0 rjmp .L42 |
532 .L40: |
269:I2CInterface.c **** } |
270:I2CInterface.c **** else |
271:I2CInterface.c **** { |
272:I2CInterface.c **** /* clear out the enable acknowledge bit */ |
273:I2CInterface.c **** TWCR &= ~(1<<TWEA); |
532 .stabn 68,0,273,.LM55-__vector_17 |
533 .LM55: |
534 01c4 86B7 in r24,86-0x20 |
535 01c6 8F7B andi r24,lo8(-65) |
536 01c8 86BF out 86-0x20,r24 |
537 01ca 0EC0 rjmp .L42 |
538 .L32: |
533 .stabn 68,0,273,.LM55-.LFBB5 |
534 .LM55: |
535 01be 86B7 in r24,86-0x20 |
536 01c0 8F7B andi r24,lo8(-65) |
537 01c2 86BF out 86-0x20,r24 |
538 01c4 00C0 rjmp .L42 |
539 .L32: |
274:I2CInterface.c **** } |
275:I2CInterface.c **** break; |
276:I2CInterface.c **** |
860,82 → 861,82 |
277:I2CInterface.c **** case TW_MR_DATA_NACK: /* Master didn't acknowledge data -> end of read process */ |
278:I2CInterface.c **** /* read data, and generate the stop condition */ |
279:I2CInterface.c **** *twi_data = TWDR; |
539 .stabn 68,0,279,.LM56-__vector_17 |
540 .LM56: |
541 01cc E091 0000 lds r30,twi_data |
542 01d0 F091 0000 lds r31,(twi_data)+1 |
543 01d4 83B1 in r24,35-0x20 |
544 01d6 8083 st Z,r24 |
540 .stabn 68,0,279,.LM56-.LFBB5 |
541 .LM56: |
542 01c6 E091 0000 lds r30,twi_data |
543 01ca F091 0000 lds r31,(twi_data)+1 |
544 01ce 83B1 in r24,35-0x20 |
545 01d0 8083 st Z,r24 |
280:I2CInterface.c **** TWCR |= (1<<TWSTO)|(1<<TWINT); |
545 .stabn 68,0,280,.LM57-__vector_17 |
546 .LM57: |
547 01d8 86B7 in r24,86-0x20 |
548 01da 8069 ori r24,lo8(-112) |
549 01dc 86BF out 86-0x20,r24 |
546 .stabn 68,0,280,.LM57-.LFBB5 |
547 .LM57: |
548 01d2 86B7 in r24,86-0x20 |
549 01d4 8069 ori r24,lo8(-112) |
550 01d6 86BF out 86-0x20,r24 |
281:I2CInterface.c **** status &= ~(1<<BUSY); |
550 .stabn 68,0,281,.LM58-__vector_17 |
551 .LM58: |
552 01de 8091 0000 lds r24,status |
553 01e2 8F77 andi r24,lo8(127) |
554 01e4 8093 0000 sts status,r24 |
555 .L42: |
556 /* epilogue: frame size=0 */ |
557 01e8 FF91 pop r31 |
558 01ea EF91 pop r30 |
559 01ec BF91 pop r27 |
560 01ee AF91 pop r26 |
561 01f0 9F91 pop r25 |
562 01f2 8F91 pop r24 |
563 01f4 0F90 pop __tmp_reg__ |
564 01f6 0FBE out __SREG__,__tmp_reg__ |
565 01f8 0F90 pop __tmp_reg__ |
566 01fa 1F90 pop __zero_reg__ |
567 01fc 1895 reti |
568 /* epilogue end (size=11) */ |
569 /* function __vector_17 size 271 (249) */ |
570 .size __vector_17, .-__vector_17 |
571 .Lscope4: |
572 .stabs "",36,0,0,.Lscope4-__vector_17 |
573 .stabd 78,0,0 |
574 .lcomm twi_address,1 |
GAS LISTING /tmp/ccZHfAgR.s page 16 |
551 .stabn 68,0,281,.LM58-.LFBB5 |
552 .LM58: |
553 01d8 8091 0000 lds r24,status |
554 01dc 8F77 andi r24,lo8(127) |
555 01de 8093 0000 sts status,r24 |
556 .L42: |
557 /* epilogue: frame size=0 */ |
558 01e2 FF91 pop r31 |
559 01e4 EF91 pop r30 |
560 01e6 BF91 pop r27 |
561 01e8 AF91 pop r26 |
562 01ea 9F91 pop r25 |
563 01ec 8F91 pop r24 |
564 01ee 0F90 pop __tmp_reg__ |
565 01f0 0FBE out __SREG__,__tmp_reg__ |
566 01f2 0F90 pop __tmp_reg__ |
567 01f4 1F90 pop __zero_reg__ |
568 01f6 1895 reti |
569 /* epilogue end (size=11) */ |
570 /* function __vector_17 size 268 (246) */ |
571 .size __vector_17, .-__vector_17 |
572 .Lscope5: |
573 .stabs "",36,0,0,.Lscope5-.LFBB5 |
574 .stabd 78,0,0 |
GAS LISTING /tmp/ccfEG7oP.s page 16 |
|
|
575 .lcomm twi_data,2 |
576 .lcomm twi_ddr,1 |
577 .lcomm twi_bytes,1 |
578 .lcomm status,1 |
579 .lcomm retry_cnt,1 |
580 .stabs "twi_address:S(0,17)=B(0,11)",40,0,59,twi_address |
581 .stabs "twi_data:S(0,18)=*(0,17)",40,0,60,twi_data |
582 .stabs "twi_ddr:S(0,17)",40,0,61,twi_ddr |
583 .stabs "twi_bytes:S(0,17)",40,0,62,twi_bytes |
584 .stabs "status:S(0,17)",40,0,63,status |
585 .stabs "retry_cnt:S(0,17)",40,0,64,retry_cnt |
586 .stabs "",100,0,0,.Letext0 |
587 .Letext0: |
588 /* File "I2CInterface.c": code 336 = 0x0150 ( 310), prologues 11, epilogues 15 */ |
GAS LISTING /tmp/ccZHfAgR.s page 17 |
575 .lcomm twi_address,1 |
576 .lcomm twi_data,2 |
577 .lcomm twi_ddr,1 |
578 .lcomm twi_bytes,1 |
579 .lcomm status,1 |
580 .lcomm retry_cnt,1 |
581 .stabs "twi_address:S(0,17)=B(0,11)",40,0,59,twi_address |
582 .stabs "twi_data:S(0,18)=*(0,17)",40,0,60,twi_data |
583 .stabs "twi_ddr:S(0,17)",40,0,61,twi_ddr |
584 .stabs "twi_bytes:S(0,17)",40,0,62,twi_bytes |
585 .stabs "status:S(0,17)",40,0,63,status |
586 .stabs "retry_cnt:S(0,17)",40,0,64,retry_cnt |
587 .stabs "",100,0,0,.Letext0 |
588 .Letext0: |
589 /* File "I2CInterface.c": code 333 = 0x014d ( 307), prologues 11, epilogues 15 */ |
GAS LISTING /tmp/ccfEG7oP.s page 17 |
|
|
DEFINED SYMBOLS |
*ABS*:00000000 I2CInterface.c |
/tmp/ccZHfAgR.s:3 *ABS*:0000003f __SREG__ |
/tmp/ccZHfAgR.s:4 *ABS*:0000003e __SP_H__ |
/tmp/ccZHfAgR.s:5 *ABS*:0000003d __SP_L__ |
/tmp/ccZHfAgR.s:6 *ABS*:00000000 __tmp_reg__ |
/tmp/ccZHfAgR.s:7 *ABS*:00000001 __zero_reg__ |
/tmp/ccZHfAgR.s:79 .text:00000000 I2CInt_init |
/tmp/ccZHfAgR.s:106 .text:00000008 I2CInt_writeData |
/tmp/ccZHfAgR.s:577 .bss:00000005 status |
/tmp/ccfEG7oP.s:2 *ABS*:0000003f __SREG__ |
/tmp/ccfEG7oP.s:3 *ABS*:0000003e __SP_H__ |
/tmp/ccfEG7oP.s:4 *ABS*:0000003d __SP_L__ |
/tmp/ccfEG7oP.s:5 *ABS*:00000000 __tmp_reg__ |
/tmp/ccfEG7oP.s:6 *ABS*:00000001 __zero_reg__ |
/tmp/ccfEG7oP.s:78 .text:00000000 I2CInt_init |
/tmp/ccfEG7oP.s:106 .text:00000008 I2CInt_writeData |
/tmp/ccfEG7oP.s:578 .bss:00000005 status |
.bss:00000000 twi_address |
/tmp/ccZHfAgR.s:574 .bss:00000001 twi_data |
/tmp/ccZHfAgR.s:576 .bss:00000004 twi_bytes |
/tmp/ccZHfAgR.s:575 .bss:00000003 twi_ddr |
/tmp/ccZHfAgR.s:578 .bss:00000006 retry_cnt |
/tmp/ccZHfAgR.s:164 .text:00000040 I2CInt_readData |
/tmp/ccZHfAgR.s:214 .text:00000074 I2CInt_isI2cBusy |
/tmp/ccZHfAgR.s:240 .text:00000082 __vector_17 |
/tmp/ccfEG7oP.s:575 .bss:00000001 twi_data |
/tmp/ccfEG7oP.s:577 .bss:00000004 twi_bytes |
/tmp/ccfEG7oP.s:576 .bss:00000003 twi_ddr |
/tmp/ccfEG7oP.s:579 .bss:00000006 retry_cnt |
/tmp/ccfEG7oP.s:165 .text:00000040 I2CInt_readData |
/tmp/ccfEG7oP.s:216 .text:00000074 I2CInt_isI2cBusy |
/tmp/ccfEG7oP.s:243 .text:00000082 __vector_17 |
|
UNDEFINED SYMBOLS |
__do_copy_data |