Rev 1189 | Blame | Compare with Previous | Last modification | View Log | RSS feed
1 .file "twimaster.c"
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 .text
10 .global i2c_init
12 i2c_init:
13 /* prologue: frame size=0 */
14 /* prologue end (size=0) */
15 0000 1092 B900 sts 185,__zero_reg__
16 0004 8AE2 ldi r24,lo8(42)
17 0006 8093 B800 sts 184,r24
18 /* epilogue: frame size=0 */
19 000a 0895 ret
20 /* epilogue end (size=1) */
21 /* function i2c_init size 6 (5) */
23 .global i2c_start
25 i2c_start:
26 /* prologue: frame size=0 */
27 /* prologue end (size=0) */
28 000c 85EA ldi r24,lo8(-91)
29 000e 8093 BC00 sts 188,r24
30 0012 80E0 ldi r24,lo8(0)
31 0014 90E0 ldi r25,hi8(0)
32 /* epilogue: frame size=0 */
33 0016 0895 ret
34 /* epilogue end (size=1) */
35 /* function i2c_start size 6 (5) */
37 .global i2c_stop
39 i2c_stop:
40 /* prologue: frame size=0 */
41 /* prologue end (size=0) */
42 0018 84E9 ldi r24,lo8(-108)
43 001a 8093 BC00 sts 188,r24
44 /* epilogue: frame size=0 */
45 001e 0895 ret
46 /* epilogue end (size=1) */
47 /* function i2c_stop size 4 (3) */
49 .global i2c_write_byte
51 i2c_write_byte:
52 /* prologue: frame size=0 */
53 /* prologue end (size=0) */
54 0020 1092 B900 sts 185,__zero_reg__
55 0024 8093 BB00 sts 187,r24
56 0028 85E8 ldi r24,lo8(-123)
57 002a 8093 BC00 sts 188,r24
58 002e 80E0 ldi r24,lo8(0)
59 0030 90E0 ldi r25,hi8(0)
60 /* epilogue: frame size=0 */
61 0032 0895 ret
62 /* epilogue end (size=1) */
63 /* function i2c_write_byte size 10 (9) */
65 .global i2c_reset
67 i2c_reset:
68 /* prologue: frame size=0 */
69 /* prologue end (size=0) */
70 0034 0E94 0000 call i2c_stop
71 0038 1092 0000 sts twi_state,__zero_reg__
72 003c EBEB ldi r30,lo8(187)
73 003e F0E0 ldi r31,hi8(187)
74 0040 8081 ld r24,Z
75 0042 1092 0000 sts motor,__zero_reg__
76 0046 80E8 ldi r24,lo8(-128)
77 0048 8093 BC00 sts 188,r24
78 004c 1092 BD00 sts 189,__zero_reg__
79 0050 1092 BA00 sts 186,__zero_reg__
80 0054 1082 st Z,__zero_reg__
81 0056 1092 B900 sts 185,__zero_reg__
82 005a 1092 B800 sts 184,__zero_reg__
83 005e 0E94 0000 call i2c_init
84 0062 0E94 0000 call i2c_start
85 0066 80E0 ldi r24,lo8(0)
86 0068 0E94 0000 call i2c_write_byte
87 /* epilogue: frame size=0 */
88 006c 0895 ret
89 /* epilogue end (size=1) */
90 /* function i2c_reset size 29 (28) */
92 .global __vector_26
94 __vector_26:
95 /* prologue: frame size=0 */
96 006e 1F92 push __zero_reg__
97 0070 0F92 push __tmp_reg__
98 0072 0FB6 in __tmp_reg__,__SREG__
99 0074 0F92 push __tmp_reg__
100 0076 1124 clr __zero_reg__
101 0078 2F93 push r18
102 007a 3F93 push r19
103 007c 4F93 push r20
104 007e 5F93 push r21
105 0080 6F93 push r22
106 0082 7F93 push r23
107 0084 8F93 push r24
108 0086 9F93 push r25
109 0088 AF93 push r26
110 008a BF93 push r27
111 008c EF93 push r30
112 008e FF93 push r31
113 /* prologue end (size=17) */
114 0090 8091 0000 lds r24,twi_state
115 0094 8F5F subi r24,lo8(-(1))
116 0096 8093 0000 sts twi_state,r24
117 009a 8150 subi r24,lo8(-(-1))
118 009c E82F mov r30,r24
119 009e F0E0 ldi r31,lo8(0)
120 00a0 E731 cpi r30,23
121 00a2 F105 cpc r31,__zero_reg__
122 00a4 00F0 brlo .+2
123 00a6 00C0 rjmp .L12
124 00a8 E050 subi r30,lo8(-(gs(.L36)))
**** Warning:expression dangerous with linker stubs
125 00aa F040 sbci r31,hi8(-(gs(.L36)))
**** Warning:expression dangerous with linker stubs
126 00ac EE0F lsl r30
127 00ae FF1F rol r31
128 00b0 0590 lpm __tmp_reg__,Z+
129 00b2 F491 lpm r31,Z
130 00b4 E02D mov r30,__tmp_reg__
131 00b6 0994 ijmp
132 .data
133 .section .progmem.gcc_sw_table, "a", @progbits
134 .p2align 1
135 .L36:
136 .data
137 .section .progmem.gcc_sw_table, "a", @progbits
138 .p2align 1
139 0000 0000 .word gs(.L13)
140 0002 0000 .word gs(.L14)
141 0004 0000 .word gs(.L15)
142 0006 0000 .word gs(.L16)
143 0008 0000 .word gs(.L17)
144 000a 0000 .word gs(.L18)
145 000c 0000 .word gs(.L55)
146 000e 0000 .word gs(.L20)
147 0010 0000 .word gs(.L31)
148 0012 0000 .word gs(.L22)
149 0014 0000 .word gs(.L23)
150 0016 0000 .word gs(.L34)
151 0018 0000 .word gs(.L30)
152 001a 0000 .word gs(.L31)
153 001c 0000 .word gs(.L27)
154 001e 0000 .word gs(.L28)
155 0020 0000 .word gs(.L34)
156 0022 0000 .word gs(.L30)
157 0024 0000 .word gs(.L31)
158 0026 0000 .word gs(.L32)
159 0028 0000 .word gs(.L33)
160 002a 0000 .word gs(.L34)
161 002c 0000 .word gs(.L35)
162 .text
163 .L18:
164 00b8 8091 BB00 lds r24,187
165 00bc 9091 0000 lds r25,motorread
166 00c0 E92F mov r30,r25
167 00c2 F0E0 ldi r31,lo8(0)
168 00c4 E050 subi r30,lo8(-(motor_rx))
169 00c6 F040 sbci r31,hi8(-(motor_rx))
170 00c8 8083 st Z,r24
171 .L19:
172 00ca 9130 cpi r25,lo8(1)
173 00cc 01F4 brne .+2
174 00ce 00C0 rjmp .L49
175 00d0 9130 cpi r25,lo8(1)
176 00d2 00F4 brsh .+2
177 00d4 00C0 rjmp .L48
178 00d6 9230 cpi r25,lo8(2)
179 00d8 01F4 brne .+2
180 00da 00C0 rjmp .L50
181 00dc 9330 cpi r25,lo8(3)
182 00de 01F0 breq .+2
183 00e0 00C0 rjmp .L12
184 .L51:
185 00e2 8091 0000 lds r24,Motor_Links
186 00e6 0E94 0000 call i2c_write_byte
187 00ea 00C0 rjmp .L12
188 .L31:
189 00ec 88E9 ldi r24,lo8(-104)
190 00ee 0E94 0000 call i2c_write_byte
191 00f2 00C0 rjmp .L12
192 .L34:
193 00f4 80E8 ldi r24,lo8(-128)
194 00f6 0E94 0000 call i2c_write_byte
195 00fa 00C0 rjmp .L12
196 .L30:
197 00fc 0E94 0000 call i2c_stop
198 0100 8AE0 ldi r24,lo8(10)
199 0102 90E0 ldi r25,hi8(10)
200 0104 9093 0000 sts (I2CTimeout)+1,r25
201 0108 8093 0000 sts I2CTimeout,r24
202 .L62:
203 010c 0E94 0000 call i2c_start
204 0110 00C0 rjmp .L12
205 .L20:
206 0112 9091 0000 lds r25,motorread
207 0116 8091 BB00 lds r24,187
208 011a E92F mov r30,r25
209 011c F0E0 ldi r31,lo8(0)
210 011e E050 subi r30,lo8(-(motor_rx))
211 0120 F040 sbci r31,hi8(-(motor_rx))
212 0122 8483 std Z+4,r24
213 0124 9F5F subi r25,lo8(-(1))
214 0126 9093 0000 sts motorread,r25
215 012a 9430 cpi r25,lo8(4)
216 012c 00F0 brlo .L35
217 012e 1092 0000 sts motorread,__zero_reg__
218 .L35:
219 0132 0E94 0000 call i2c_stop
220 0136 8AE0 ldi r24,lo8(10)
221 0138 90E0 ldi r25,hi8(10)
222 013a 9093 0000 sts (I2CTimeout)+1,r25
223 013e 8093 0000 sts I2CTimeout,r24
224 0142 1092 0000 sts twi_state,__zero_reg__
225 0146 00C0 rjmp .L12
226 .L15:
227 0148 0E94 0000 call i2c_stop
228 014c 8091 0000 lds r24,motor
229 0150 8430 cpi r24,lo8(4)
230 0152 00F0 brlo .+2
231 0154 00C0 rjmp .L41
232 0156 1092 0000 sts twi_state,__zero_reg__
233 015a 00C0 rjmp .L62
234 .L33:
235 015c 8091 0000 lds r24,AnalogOffsetGier
236 0160 0E94 0000 call i2c_write_byte
237 0164 00C0 rjmp .L12
238 .L23:
239 0166 8091 0000 lds r24,AnalogOffsetNick
240 016a 0E94 0000 call i2c_write_byte
241 016e 00C0 rjmp .L12
242 .L13:
243 0170 8091 0000 lds r24,motor
244 0174 880F lsl r24
245 0176 8E5A subi r24,lo8(-(82))
246 0178 0E94 0000 call i2c_write_byte
247 017c 00C0 rjmp .L12
248 .L22:
249 017e 80E1 ldi r24,lo8(16)
250 0180 0E94 0000 call i2c_write_byte
251 0184 00C0 rjmp .L12
252 .L17:
253 0186 8091 0000 lds r24,motorread
254 018a 8130 cpi r24,lo8(1)
255 018c 01F0 breq .L49
256 .L61:
257 018e 8130 cpi r24,lo8(1)
258 0190 00F0 brlo .L48
259 0192 8230 cpi r24,lo8(2)
260 0194 01F0 breq .L50
261 0196 8330 cpi r24,lo8(3)
262 0198 01F4 brne .L12
263 019a 00C0 rjmp .L51
264 .L14:
265 019c 8091 0000 lds r24,motor
266 01a0 8F5F subi r24,lo8(-(1))
267 01a2 8093 0000 sts motor,r24
268 01a6 8150 subi r24,lo8(-(-1))
269 01a8 8130 cpi r24,lo8(1)
270 01aa 01F4 brne .L61
271 .L49:
272 01ac 8091 0000 lds r24,Motor_Hinten
273 01b0 0E94 0000 call i2c_write_byte
274 01b4 00C0 rjmp .L12
275 .L32:
276 01b6 84E1 ldi r24,lo8(20)
277 01b8 0E94 0000 call i2c_write_byte
278 01bc 00C0 rjmp .L12
279 .L28:
280 01be 8091 0000 lds r24,AnalogOffsetRoll
281 01c2 0E94 0000 call i2c_write_byte
282 01c6 00C0 rjmp .L12
283 .L27:
284 01c8 82E1 ldi r24,lo8(18)
285 01ca 0E94 0000 call i2c_write_byte
286 01ce 00C0 rjmp .L12
287 .L16:
288 01d0 8091 0000 lds r24,motorread
289 01d4 880F lsl r24
290 01d6 8D5A subi r24,lo8(-(83))
291 01d8 0E94 0000 call i2c_write_byte
292 01dc 00C0 rjmp .L12
293 .L55:
294 01de 9091 0000 lds r25,motorread
295 01e2 00C0 rjmp .L19
296 .L48:
297 01e4 8091 0000 lds r24,Motor_Vorne
298 01e8 0E94 0000 call i2c_write_byte
299 01ec 00C0 rjmp .L12
300 .L50:
301 01ee 8091 0000 lds r24,Motor_Rechts
302 01f2 0E94 0000 call i2c_write_byte
303 01f6 00C0 rjmp .L12
304 .L41:
305 01f8 1092 0000 sts motor,__zero_reg__
306 01fc 00C0 rjmp .L62
307 .L12:
308 01fe 8091 BC00 lds r24,188
309 0202 8068 ori r24,lo8(-128)
310 0204 8093 BC00 sts 188,r24
311 /* epilogue: frame size=0 */
312 0208 FF91 pop r31
313 020a EF91 pop r30
314 020c BF91 pop r27
315 020e AF91 pop r26
316 0210 9F91 pop r25
317 0212 8F91 pop r24
318 0214 7F91 pop r23
319 0216 6F91 pop r22
320 0218 5F91 pop r21
321 021a 4F91 pop r20
322 021c 3F91 pop r19
323 021e 2F91 pop r18
324 0220 0F90 pop __tmp_reg__
325 0222 0FBE out __SREG__,__tmp_reg__
326 0224 0F90 pop __tmp_reg__
327 0226 1F90 pop __zero_reg__
328 0228 1895 reti
329 /* epilogue end (size=17) */
330 /* function __vector_26 size 245 (211) */
332 .global twi_state
333 .global twi_state
334 .section .bss
337 twi_state:
338 0000 00 .skip 1,0
339 .global motor
340 .global motor
343 motor:
344 0001 00 .skip 1,0
345 .global motorread
346 .global motorread
349 motorread:
350 0002 00 .skip 1,0
351 .comm motor_rx,16,1
352 /* File "twimaster.c": code 300 = 0x012c ( 261), prologues 17, epilogues 22 */
DEFINED SYMBOLS
*ABS*:00000000 twimaster.c
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:2 *ABS*:0000003f __SREG__
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:3 *ABS*:0000003e __SP_H__
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:4 *ABS*:0000003d __SP_L__
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:5 *ABS*:00000000 __tmp_reg__
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:6 *ABS*:00000001 __zero_reg__
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:12 .text:00000000 i2c_init
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:25 .text:0000000c i2c_start
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:39 .text:00000018 i2c_stop
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:51 .text:00000020 i2c_write_byte
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:67 .text:00000034 i2c_reset
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:337 .bss:00000000 twi_state
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:343 .bss:00000001 motor
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:94 .text:0000006e __vector_26
C:\DOKUME~1\David\LOKALE~1\Temp/ccjYjA6X.s:349 .bss:00000002 motorread
*COM*:00000010 motor_rx
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
Motor_Links
I2CTimeout
AnalogOffsetGier
AnalogOffsetNick
Motor_Hinten
AnalogOffsetRoll
Motor_Vorne
Motor_Rechts