Subversion Repositories FlightCtrl

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1131 krheinwald 1
   1               		.file	"altcon.c"
2
   2               	__SREG__ = 0x3f
3
   3               	__SP_H__ = 0x3e
4
   4               	__SP_L__ = 0x3d
5
   5               	__CCP__  = 0x34
6
   6               	__tmp_reg__ = 0
7
   7               	__zero_reg__ = 1
8
   8               		.global __do_copy_data
9
   9               		.global __do_clear_bss
10
  10               		.text
11
  11               	.global	altcon_init
12
  13               	altcon_init:
13
  14               	/* prologue: function */
14
  15               	/* frame size = 0 */
15
  16 0000 1092 0000 		sts enabled,__zero_reg__
16
  17 0004 84EF      		ldi r24,lo8(500)
17
  18 0006 91E0      		ldi r25,hi8(500)
18
  19 0008 9093 0000 		sts (beeptime)+1,r25
19
  20 000c 8093 0000 		sts beeptime,r24
20
  21               	/* epilogue start */
21
  22 0010 0895      		ret
22
  24               	.global	altcon_lock
23
  26               	altcon_lock:
24
  27               	/* prologue: function */
25
  28               	/* frame size = 0 */
26
  29 0012 8091 0000 		lds r24,airPressure
27
  30 0016 9091 0000 		lds r25,(airPressure)+1
28
  31 001a 9093 0000 		sts (pressureOffset)+1,r25
29
  32 001e 8093 0000 		sts pressureOffset,r24
30
  33               	/* epilogue start */
31
  34 0022 0895      		ret
32
  36               	.global	altcon_start
33
  38               	altcon_start:
34
  39               	/* prologue: function */
35
  40               	/* frame size = 0 */
36
  41 0024 6091 0000 		lds r22,Mess_Integral_Hoch
37
  42 0028 7091 0000 		lds r23,(Mess_Integral_Hoch)+1
38
  43 002c 8091 0000 		lds r24,(Mess_Integral_Hoch)+2
39
  44 0030 9091 0000 		lds r25,(Mess_Integral_Hoch)+3
40
  45 0034 20E8      		ldi r18,lo8(128)
41
  46 0036 30E0      		ldi r19,hi8(128)
42
  47 0038 40E0      		ldi r20,hlo8(128)
43
  48 003a 50E0      		ldi r21,hhi8(128)
44
  49 003c 0E94 0000 		call __divmodsi4
45
  50 0040 3093 0000 		sts (accZOffset)+1,r19
46
  51 0044 2093 0000 		sts accZOffset,r18
47
  52 0048 1092 0000 		sts (lastError)+1,__zero_reg__
48
  53 004c 1092 0000 		sts lastError,__zero_reg__
49
  54 0050 1092 0000 		sts (lastN)+1,__zero_reg__
50
  55 0054 1092 0000 		sts lastN,__zero_reg__
51
  56 0058 1092 0000 		sts (averageN)+1,__zero_reg__
52
  57 005c 1092 0000 		sts averageN,__zero_reg__
53
  58 0060 1092 0000 		sts altIntegral,__zero_reg__
54
  59 0064 1092 0000 		sts (altIntegral)+1,__zero_reg__
55
  60 0068 1092 0000 		sts (altIntegral)+2,__zero_reg__
56
  61 006c 1092 0000 		sts (altIntegral)+3,__zero_reg__
57
  62 0070 84EF      		ldi r24,lo8(500)
58
  63 0072 91E0      		ldi r25,hi8(500)
59
  64 0074 9093 0000 		sts (beeptime)+1,r25
60
  65 0078 8093 0000 		sts beeptime,r24
61
  66               	/* epilogue start */
62
  67 007c 0895      		ret
63
  69               	.global	altcon_stop
64
  71               	altcon_stop:
65
  72               	/* prologue: function */
66
  73               	/* frame size = 0 */
67
  74 007e 1092 0000 		sts enabled,__zero_reg__
68
  75 0082 84EF      		ldi r24,lo8(500)
69
  76 0084 91E0      		ldi r25,hi8(500)
70
  77 0086 9093 0000 		sts (beeptime)+1,r25
71
  78 008a 8093 0000 		sts beeptime,r24
72
  79               	/* epilogue start */
73
  80 008e 0895      		ret
74
  82               	.global	altcon_error
75
  84               	altcon_error:
76
  85 0090 9F92      		push r9
77
  86 0092 AF92      		push r10
78
  87 0094 BF92      		push r11
79
  88 0096 CF92      		push r12
80
  89 0098 DF92      		push r13
81
  90 009a EF92      		push r14
82
  91 009c FF92      		push r15
83
  92 009e 0F93      		push r16
84
  93 00a0 1F93      		push r17
85
  94 00a2 CF93      		push r28
86
  95 00a4 DF93      		push r29
87
  96               	/* prologue: function */
88
  97               	/* frame size = 0 */
89
  98 00a6 8091 0000 		lds r24,enabled
90
  99 00aa 8823      		tst r24
91
 100 00ac 01F4      		brne .+2
92
 101 00ae 00C0      		rjmp .L10
93
 102 00b0 8091 0000 		lds r24,Notlandung
94
 103 00b4 8823      		tst r24
95
 104 00b6 01F0      		breq .+2
96
 105 00b8 00C0      		rjmp .L10
97
 106 00ba E090 0000 		lds r14,airPressure
98
 107 00be F090 0000 		lds r15,(airPressure)+1
99
 108 00c2 8091 0000 		lds r24,pressureOffset
100
 109 00c6 9091 0000 		lds r25,(pressureOffset)+1
101
 110 00ca E81A      		sub r14,r24
102
 111 00cc F90A      		sbc r15,r25
103
 112 00ce 0091 0000 		lds r16,Parameter_Hoehe_P
104
 113 00d2 8091 0000 		lds r24,EE_Parameter+31
105
 114 00d6 90E0      		ldi r25,lo8(0)
106
 115 00d8 9C01      		movw r18,r24
107
 116 00da 2E9D      		mul r18,r14
108
 117 00dc C001      		movw r24,r0
109
 118 00de 2F9D      		mul r18,r15
110
 119 00e0 900D      		add r25,r0
111
 120 00e2 3E9D      		mul r19,r14
112
 121 00e4 900D      		add r25,r0
113
 122 00e6 1124      		clr r1
114
 123 00e8 64E0      		ldi r22,lo8(4)
115
 124 00ea 70E0      		ldi r23,hi8(4)
116
 125 00ec 0E94 0000 		call __divmodhi4
117
 126 00f0 9B01      		movw r18,r22
118
 127 00f2 4427      		clr r20
119
 128 00f4 37FD      		sbrc r19,7
120
 129 00f6 4095      		com r20
121
 130 00f8 542F      		mov r21,r20
122
 131 00fa 8091 0000 		lds r24,altIntegral
123
 132 00fe 9091 0000 		lds r25,(altIntegral)+1
124
 133 0102 A091 0000 		lds r26,(altIntegral)+2
125
 134 0106 B091 0000 		lds r27,(altIntegral)+3
126
 135 010a 280F      		add r18,r24
127
 136 010c 391F      		adc r19,r25
128
 137 010e 4A1F      		adc r20,r26
129
 138 0110 5B1F      		adc r21,r27
130
 139 0112 2093 0000 		sts altIntegral,r18
131
 140 0116 3093 0000 		sts (altIntegral)+1,r19
132
 141 011a 4093 0000 		sts (altIntegral)+2,r20
133
 142 011e 5093 0000 		sts (altIntegral)+3,r21
134
 143 0122 2134      		cpi r18,lo8(1000001)
135
 144 0124 62E4      		ldi r22,hi8(1000001)
136
 145 0126 3607      		cpc r19,r22
137
 146 0128 6FE0      		ldi r22,hlo8(1000001)
138
 147 012a 4607      		cpc r20,r22
139
 148 012c 60E0      		ldi r22,hhi8(1000001)
140
 149 012e 5607      		cpc r21,r22
141
 150 0130 04F0      		brlt .L11
142
 151 0132 80E4      		ldi r24,lo8(1000000)
143
 152 0134 92E4      		ldi r25,hi8(1000000)
144
 153 0136 AFE0      		ldi r26,hlo8(1000000)
145
 154 0138 B0E0      		ldi r27,hhi8(1000000)
146
 155 013a 00C0      		rjmp .L20
147
 156               	.L11:
148
 157 013c 205C      		subi r18,lo8(-1000000)
149
 158 013e 3D4B      		sbci r19,hi8(-1000000)
150
 159 0140 404F      		sbci r20,hlo8(-1000000)
151
 160 0142 5F4F      		sbci r21,hhi8(-1000000)
152
 161 0144 04F4      		brge .L12
153
 162 0146 80EC      		ldi r24,lo8(-1000000)
154
 163 0148 9DEB      		ldi r25,hi8(-1000000)
155
 164 014a A0EF      		ldi r26,hlo8(-1000000)
156
 165 014c BFEF      		ldi r27,hhi8(-1000000)
157
 166               	.L20:
158
 167 014e 8093 0000 		sts altIntegral,r24
159
 168 0152 9093 0000 		sts (altIntegral)+1,r25
160
 169 0156 A093 0000 		sts (altIntegral)+2,r26
161
 170 015a B093 0000 		sts (altIntegral)+3,r27
162
 171               	.L12:
163
 172 015e A090 0000 		lds r10,altIntegral
164
 173 0162 B090 0000 		lds r11,(altIntegral)+1
165
 174 0166 C090 0000 		lds r12,(altIntegral)+2
166
 175 016a D090 0000 		lds r13,(altIntegral)+3
167
 176 016e 9090 0000 		lds r9,Parameter_Luftdruck_D
168
 177 0172 C091 0000 		lds r28,lastError
169
 178 0176 D091 0000 		lds r29,(lastError)+1
170
 179 017a 6091 0000 		lds r22,Mess_Integral_Hoch
171
 180 017e 7091 0000 		lds r23,(Mess_Integral_Hoch)+1
172
 181 0182 8091 0000 		lds r24,(Mess_Integral_Hoch)+2
173
 182 0186 9091 0000 		lds r25,(Mess_Integral_Hoch)+3
174
 183 018a 20E8      		ldi r18,lo8(128)
175
 184 018c 30E0      		ldi r19,hi8(128)
176
 185 018e 40E0      		ldi r20,hlo8(128)
177
 186 0190 50E0      		ldi r21,hhi8(128)
178
 187 0192 0E94 0000 		call __divmodsi4
179
 188 0196 CA01      		movw r24,r20
180
 189 0198 B901      		movw r22,r18
181
 190 019a 2091 0000 		lds r18,accZOffset
182
 191 019e 3091 0000 		lds r19,(accZOffset)+1
183
 192 01a2 4427      		clr r20
184
 193 01a4 37FD      		sbrc r19,7
185
 194 01a6 4095      		com r20
186
 195 01a8 542F      		mov r21,r20
187
 196 01aa 621B      		sub r22,r18
188
 197 01ac 730B      		sbc r23,r19
189
 198 01ae 840B      		sbc r24,r20
190
 199 01b0 950B      		sbc r25,r21
191
 200 01b2 2091 0000 		lds r18,Parameter_Hoehe_ACC_Wirkung
192
 201 01b6 30E0      		ldi r19,lo8(0)
193
 202 01b8 40E0      		ldi r20,lo8(0)
194
 203 01ba 50E0      		ldi r21,hi8(0)
195
 204 01bc 0E94 0000 		call __mulsi3
196
 205 01c0 20E2      		ldi r18,lo8(32)
197
 206 01c2 30E0      		ldi r19,hi8(32)
198
 207 01c4 40E0      		ldi r20,hlo8(32)
199
 208 01c6 50E0      		ldi r21,hhi8(32)
200
 209 01c8 0E94 0000 		call __divmodsi4
201
 210 01cc C901      		movw r24,r18
202
 211 01ce 3093 0000 		sts (temp)+1,r19
203
 212 01d2 2093 0000 		sts temp,r18
204
 213 01d6 21E0      		ldi r18,hi8(281)
205
 214 01d8 8931      		cpi r24,lo8(281)
206
 215 01da 9207      		cpc r25,r18
207
 216 01dc 04F0      		brlt .L13
208
 217 01de 88E1      		ldi r24,lo8(280)
209
 218 01e0 91E0      		ldi r25,hi8(280)
210
 219 01e2 00C0      		rjmp .L21
211
 220               	.L13:
212
 221 01e4 885E      		subi r24,lo8(-280)
213
 222 01e6 9E4F      		sbci r25,hi8(-280)
214
 223 01e8 04F4      		brge .L14
215
 224 01ea 88EE      		ldi r24,lo8(-280)
216
 225 01ec 9EEF      		ldi r25,hi8(-280)
217
 226               	.L21:
218
 227 01ee 9093 0000 		sts (temp)+1,r25
219
 228 01f2 8093 0000 		sts temp,r24
220
 229               	.L14:
221
 230 01f6 802F      		mov r24,r16
222
 231 01f8 90E0      		ldi r25,lo8(0)
223
 232 01fa AC01      		movw r20,r24
224
 233 01fc 4E9D      		mul r20,r14
225
 234 01fe C001      		movw r24,r0
226
 235 0200 4F9D      		mul r20,r15
227
 236 0202 900D      		add r25,r0
228
 237 0204 5E9D      		mul r21,r14
229
 238 0206 900D      		add r25,r0
230
 239 0208 1124      		clr r1
231
 240 020a 64E0      		ldi r22,lo8(4)
232
 241 020c 70E0      		ldi r23,hi8(4)
233
 242 020e 0E94 0000 		call __divmodhi4
234
 243 0212 8B01      		movw r16,r22
235
 244 0214 C601      		movw r24,r12
236
 245 0216 B501      		movw r22,r10
237
 246 0218 20EA      		ldi r18,lo8(4000)
238
 247 021a 3FE0      		ldi r19,hi8(4000)
239
 248 021c 40E0      		ldi r20,hlo8(4000)
240
 249 021e 50E0      		ldi r21,hhi8(4000)
241
 250 0220 0E94 0000 		call __divmodsi4
242
 251 0224 020F      		add r16,r18
243
 252 0226 131F      		adc r17,r19
244
 253 0228 9701      		movw r18,r14
245
 254 022a 2C1B      		sub r18,r28
246
 255 022c 3D0B      		sbc r19,r29
247
 256 022e 892D      		mov r24,r9
248
 257 0230 90E0      		ldi r25,lo8(0)
249
 258 0232 BC01      		movw r22,r24
250
 259 0234 269F      		mul r18,r22
251
 260 0236 C001      		movw r24,r0
252
 261 0238 279F      		mul r18,r23
253
 262 023a 900D      		add r25,r0
254
 263 023c 369F      		mul r19,r22
255
 264 023e 900D      		add r25,r0
256
 265 0240 1124      		clr r1
257
 266 0242 62E0      		ldi r22,lo8(2)
258
 267 0244 70E0      		ldi r23,hi8(2)
259
 268 0246 0E94 0000 		call __divmodhi4
260
 269 024a 8091 0000 		lds r24,temp
261
 270 024e 9091 0000 		lds r25,(temp)+1
262
 271 0252 680F      		add r22,r24
263
 272 0254 791F      		adc r23,r25
264
 273 0256 600F      		add r22,r16
265
 274 0258 711F      		adc r23,r17
266
 275 025a 8091 0000 		lds r24,EE_Parameter+13
267
 276 025e 90E0      		ldi r25,lo8(0)
268
 277 0260 9C01      		movw r18,r24
269
 278 0262 629F      		mul r22,r18
270
 279 0264 C001      		movw r24,r0
271
 280 0266 639F      		mul r22,r19
272
 281 0268 900D      		add r25,r0
273
 282 026a 729F      		mul r23,r18
274
 283 026c 900D      		add r25,r0
275
 284 026e 1124      		clr r1
276
 285 0270 6AE0      		ldi r22,lo8(10)
277
 286 0272 70E0      		ldi r23,hi8(10)
278
 287 0274 0E94 0000 		call __divmodhi4
279
 288 0278 8091 0000 		lds r24,EE_Parameter+11
280
 289 027c 90E0      		ldi r25,lo8(0)
281
 290 027e 880F      		lsl r24
282
 291 0280 991F      		rol r25
283
 292 0282 880F      		lsl r24
284
 293 0284 991F      		rol r25
285
 294 0286 8617      		cp r24,r22
286
 295 0288 9707      		cpc r25,r23
287
 296 028a 04F4      		brge .L15
288
 297 028c EC01      		movw r28,r24
289
 298 028e 00C0      		rjmp .L16
290
 299               	.L15:
291
 300 0290 2227      		clr r18
292
 301 0292 3327      		clr r19
293
 302 0294 281B      		sub r18,r24
294
 303 0296 390B      		sbc r19,r25
295
 304 0298 EB01      		movw r28,r22
296
 305 029a 6217      		cp r22,r18
297
 306 029c 7307      		cpc r23,r19
298
 307 029e 04F4      		brge .L16
299
 308 02a0 E901      		movw r28,r18
300
 309               	.L16:
301
 310 02a2 D093 0000 		sts (lastN)+1,r29
302
 311 02a6 C093 0000 		sts lastN,r28
303
 312 02aa F092 0000 		sts (lastError)+1,r15
304
 313 02ae E092 0000 		sts lastError,r14
305
 314 02b2 2091 0000 		lds r18,averageN
306
 315 02b6 3091 0000 		lds r19,(averageN)+1
307
 316 02ba AE01      		movw r20,r28
308
 317 02bc 421B      		sub r20,r18
309
 318 02be 530B      		sbc r21,r19
310
 319 02c0 8091 0000 		lds r24,EE_Parameter+32
311
 320 02c4 90E0      		ldi r25,lo8(0)
312
 321 02c6 BC01      		movw r22,r24
313
 322 02c8 469F      		mul r20,r22
314
 323 02ca C001      		movw r24,r0
315
 324 02cc 479F      		mul r20,r23
316
 325 02ce 900D      		add r25,r0
317
 326 02d0 569F      		mul r21,r22
318
 327 02d2 900D      		add r25,r0
319
 328 02d4 1124      		clr r1
320
 329 02d6 64E6      		ldi r22,lo8(100)
321
 330 02d8 70E0      		ldi r23,hi8(100)
322
 331 02da 0E94 0000 		call __divmodhi4
323
 332 02de 260F      		add r18,r22
324
 333 02e0 371F      		adc r19,r23
325
 334 02e2 3093 0000 		sts (averageN)+1,r19
326
 335 02e6 2093 0000 		sts averageN,r18
327
 336 02ea 00C0      		rjmp .L18
328
 337               	.L10:
329
 338 02ec C0E0      		ldi r28,lo8(0)
330
 339 02ee D0E0      		ldi r29,hi8(0)
331
 340               	.L18:
332
 341 02f0 6091 0000 		lds r22,altIntegral
333
 342 02f4 7091 0000 		lds r23,(altIntegral)+1
334
 343 02f8 8091 0000 		lds r24,(altIntegral)+2
335
 344 02fc 9091 0000 		lds r25,(altIntegral)+3
336
 345 0300 20EA      		ldi r18,lo8(4000)
337
 346 0302 3FE0      		ldi r19,hi8(4000)
338
 347 0304 40E0      		ldi r20,hlo8(4000)
339
 348 0306 50E0      		ldi r21,hhi8(4000)
340
 349 0308 0E94 0000 		call __divmodsi4
341
 350 030c 3093 0000 		sts (DebugOut+62)+1,r19
342
 351 0310 2093 0000 		sts DebugOut+62,r18
343
 352 0314 D093 0000 		sts (DebugOut+56)+1,r29
344
 353 0318 C093 0000 		sts DebugOut+56,r28
345
 354 031c CE01      		movw r24,r28
346
 355               	/* epilogue start */
347
 356 031e DF91      		pop r29
348
 357 0320 CF91      		pop r28
349
 358 0322 1F91      		pop r17
350
 359 0324 0F91      		pop r16
351
 360 0326 FF90      		pop r15
352
 361 0328 EF90      		pop r14
353
 362 032a DF90      		pop r13
354
 363 032c CF90      		pop r12
355
 364 032e BF90      		pop r11
356
 365 0330 AF90      		pop r10
357
 366 0332 9F90      		pop r9
358
 367 0334 0895      		ret
359
 369               	.global	enabled
360
 370               	.global	enabled
361
 371               		.section .bss
362
 374               	enabled:
363
 375 0000 00        		.skip 1,0
364
 376               	.global	pressureOffset
365
 377               	.global	pressureOffset
366
 380               	pressureOffset:
367
 381 0001 0000      		.skip 2,0
368
 382               	.global	accZOffset
369
 383               	.global	accZOffset
370
 386               	accZOffset:
371
 387 0003 0000      		.skip 2,0
372
 388               	.global	lastError
373
 389               	.global	lastError
374
 392               	lastError:
375
 393 0005 0000      		.skip 2,0
376
 394               	.global	lastN
377
 395               	.global	lastN
378
 398               	lastN:
379
 399 0007 0000      		.skip 2,0
380
 400               	.global	averageN
381
 401               	.global	averageN
382
 404               	averageN:
383
 405 0009 0000      		.skip 2,0
384
 406               	.global	altIntegral
385
 407               	.global	altIntegral
386
 410               	altIntegral:
387
 411 000b 0000 0000 		.skip 4,0
388
 412               		.comm temp,2,1
389
DEFINED SYMBOLS
390
                            *ABS*:00000000 altcon.c
391
  c:\TEMP/cc6NfIds.s:2      *ABS*:0000003f __SREG__
392
  c:\TEMP/cc6NfIds.s:3      *ABS*:0000003e __SP_H__
393
  c:\TEMP/cc6NfIds.s:4      *ABS*:0000003d __SP_L__
394
  c:\TEMP/cc6NfIds.s:5      *ABS*:00000034 __CCP__
395
  c:\TEMP/cc6NfIds.s:6      *ABS*:00000000 __tmp_reg__
396
  c:\TEMP/cc6NfIds.s:7      *ABS*:00000001 __zero_reg__
397
  c:\TEMP/cc6NfIds.s:13     .text:00000000 altcon_init
398
  c:\TEMP/cc6NfIds.s:374    .bss:00000000 enabled
399
  c:\TEMP/cc6NfIds.s:26     .text:00000012 altcon_lock
400
  c:\TEMP/cc6NfIds.s:380    .bss:00000001 pressureOffset
401
  c:\TEMP/cc6NfIds.s:38     .text:00000024 altcon_start
402
  c:\TEMP/cc6NfIds.s:386    .bss:00000003 accZOffset
403
  c:\TEMP/cc6NfIds.s:392    .bss:00000005 lastError
404
  c:\TEMP/cc6NfIds.s:398    .bss:00000007 lastN
405
  c:\TEMP/cc6NfIds.s:404    .bss:00000009 averageN
406
  c:\TEMP/cc6NfIds.s:410    .bss:0000000b altIntegral
407
  c:\TEMP/cc6NfIds.s:71     .text:0000007e altcon_stop
408
  c:\TEMP/cc6NfIds.s:84     .text:00000090 altcon_error
409
                            *COM*:00000002 temp
410
 
411
UNDEFINED SYMBOLS
412
__do_copy_data
413
__do_clear_bss
414
beeptime
415
airPressure
416
Mess_Integral_Hoch
417
__divmodsi4
418
Notlandung
419
Parameter_Hoehe_P
420
EE_Parameter
421
__divmodhi4
422
Parameter_Luftdruck_D
423
Parameter_Hoehe_ACC_Wirkung
424
__mulsi3
425
DebugOut