Blame | Last modification | View Log | RSS feed
1 .file "analog.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
11 .text
12 .Ltext0:
100 .global ADC_Init
102 ADC_Init:
103 .stabd 46,0,0
1:src/analog.c **** /*############################################################################
2:src/analog.c ****
3:src/analog.c **** ############################################################################*/
4:src/analog.c ****
5:src/analog.c **** #include "main.h"
6:src/analog.c ****
7:src/analog.c **** //############################################################################
8:src/analog.c **** //Init ADC
9:src/analog.c **** void ADC_Init(void)
10:src/analog.c **** //############################################################################
11:src/analog.c **** {
105 .LM0:
106 .LFBB1:
107 /* prologue: frame size=0 */
108 /* prologue end (size=0) */
12:src/analog.c **** ADCSRA = 0xA6; // Free Run & 1MHZ
110 .LM1:
111 0000 86EA ldi r24,lo8(-90)
112 0002 86B9 out 38-0x20,r24
13:src/analog.c **** ADMUX = 7; // Kanal 7
114 .LM2:
115 0004 87E0 ldi r24,lo8(7)
116 0006 87B9 out 39-0x20,r24
14:src/analog.c **** ADCSRA |= 0x40; // Start
118 .LM3:
119 0008 369A sbi 38-0x20,6
120 /* epilogue: frame size=0 */
121 000a 0895 ret
122 /* epilogue end (size=1) */
123 /* function ADC_Init size 6 (5) */
125 .Lscope1:
127 .stabd 78,0,0
129 .global AdConvert
131 AdConvert:
132 .stabd 46,0,0
15:src/analog.c **** }
16:src/analog.c ****
17:src/analog.c **** //############################################################################
18:src/analog.c **** //Strom Analogwerte lesen
19:src/analog.c **** void AdConvert(void)
20:src/analog.c **** //############################################################################
21:src/analog.c **** {
134 .LM4:
135 .LFBB2:
136 /* prologue: frame size=0 */
137 /* prologue end (size=0) */
22:src/analog.c **** unsigned int i=0;
23:src/analog.c **** unsigned char sense;
24:src/analog.c **** sense = ADMUX; // Sense-Kanal merken
139 .LM5:
140 000c 27B1 in r18,39-0x20
25:src/analog.c **** ADMUX = 0x06; // Kanal 6
142 .LM6:
143 000e 96E0 ldi r25,lo8(6)
144 0010 97B9 out 39-0x20,r25
26:src/analog.c **** SFIOR = 0x00; // Analog Comperator aus
146 .LM7:
147 0012 10BE out 80-0x20,__zero_reg__
27:src/analog.c **** ADCSRA = 0xD3; // Converter ein, single
149 .LM8:
150 0014 83ED ldi r24,lo8(-45)
151 0016 86B9 out 38-0x20,r24
28:src/analog.c **** ADCSRA |= 0x10; // Ready löschen
153 .LM9:
154 0018 349A sbi 38-0x20,4
29:src/analog.c **** ADMUX = 0x06; // Kanal 6
156 .LM10:
157 001a 97B9 out 39-0x20,r25
30:src/analog.c **** ADCSRA |= 0x40; // Start
159 .LM11:
160 001c 369A sbi 38-0x20,6
161 .L4:
31:src/analog.c **** while (((ADCSRA & 0x10) == 0));
163 .LM12:
164 001e 349B sbis 38-0x20,4
165 0020 00C0 rjmp .L4
32:src/analog.c **** ADMUX = sense; // zurück auf den Sense-Kanal
167 .LM13:
168 0022 27B9 out 39-0x20,r18
33:src/analog.c **** i = ADCW * 4;
170 .LM14:
171 0024 84B1 in r24,36-0x20
172 0026 95B1 in r25,(36)+1-0x20
34:src/analog.c **** // if(i > 300) i = 300;
35:src/analog.c **** Strom = (i + Strom * 7) / 8;
174 .LM15:
175 0028 2091 0000 lds r18,Strom
176 002c 3091 0000 lds r19,(Strom)+1
177 0030 A901 movw r20,r18
178 0032 63E0 ldi r22,3
179 0034 440F 1: lsl r20
180 0036 551F rol r21
181 0038 6A95 dec r22
182 003a 01F4 brne 1b
183 003c 421B sub r20,r18
184 003e 530B sbc r21,r19
185 0040 880F lsl r24
186 0042 991F rol r25
187 0044 880F lsl r24
188 0046 991F rol r25
189 0048 480F add r20,r24
190 004a 591F adc r21,r25
191 004c 83E0 ldi r24,3
192 004e 5695 1: lsr r21
193 0050 4795 ror r20
194 0052 8A95 dec r24
195 0054 01F4 brne 1b
196 0056 5093 0000 sts (Strom)+1,r21
197 005a 4093 0000 sts Strom,r20
36:src/analog.c **** if (Strom_max < Strom) Strom_max = Strom;
199 .LM16:
200 005e 8091 0000 lds r24,Strom_max
201 0062 9927 clr r25
202 0064 8417 cp r24,r20
203 0066 9507 cpc r25,r21
204 0068 00F4 brsh .L6
205 006a 4093 0000 sts Strom_max,r20
206 .L6:
37:src/analog.c **** ADCSRA = 0x00;
208 .LM17:
209 006e 16B8 out 38-0x20,__zero_reg__
38:src/analog.c **** SFIOR = 0x08; // Analog Comperator ein
211 .LM18:
212 0070 88E0 ldi r24,lo8(8)
213 0072 80BF out 80-0x20,r24
214 /* epilogue: frame size=0 */
215 0074 0895 ret
216 /* epilogue end (size=1) */
217 /* function AdConvert size 53 (52) */
222 .Lscope2:
224 .stabd 78,0,0
227 .global MessAD
229 MessAD:
230 .stabd 46,0,0
39:src/analog.c **** }
40:src/analog.c ****
41:src/analog.c ****
42:src/analog.c ****
43:src/analog.c **** //############################################################################
44:src/analog.c **** //Strom Analogwerte lesen
45:src/analog.c **** unsigned int MessAD(unsigned char channel)
46:src/analog.c **** //############################################################################
47:src/analog.c **** {
232 .LM19:
233 .LFBB3:
234 /* prologue: frame size=0 */
235 /* prologue end (size=0) */
48:src/analog.c **** unsigned char sense;
49:src/analog.c **** sense = ADMUX; // Sense-Kanal merken
237 .LM20:
238 0076 27B1 in r18,39-0x20
50:src/analog.c **** ADMUX = channel; // Kanal 6
240 .LM21:
241 0078 87B9 out 39-0x20,r24
51:src/analog.c **** SFIOR = 0x00; // Analog Comperator aus
243 .LM22:
244 007a 10BE out 80-0x20,__zero_reg__
52:src/analog.c **** ADCSRA = 0xD3; // Converter ein, single
246 .LM23:
247 007c 93ED ldi r25,lo8(-45)
248 007e 96B9 out 38-0x20,r25
53:src/analog.c **** ADCSRA |= 0x10; // Ready löschen
250 .LM24:
251 0080 349A sbi 38-0x20,4
54:src/analog.c **** ADMUX = channel; // Kanal 6
253 .LM25:
254 0082 87B9 out 39-0x20,r24
55:src/analog.c **** ADCSRA |= 0x40; // Start
256 .LM26:
257 0084 369A sbi 38-0x20,6
258 .L12:
56:src/analog.c **** while (((ADCSRA & 0x10) == 0));
260 .LM27:
261 0086 349B sbis 38-0x20,4
262 0088 00C0 rjmp .L12
57:src/analog.c **** ADMUX = sense; // zurück auf den Sense-Kanal
264 .LM28:
265 008a 27B9 out 39-0x20,r18
58:src/analog.c **** ADCSRA = 0x00;
267 .LM29:
268 008c 16B8 out 38-0x20,__zero_reg__
59:src/analog.c **** SFIOR = 0x08; // Analog Comperator ein
270 .LM30:
271 008e 88E0 ldi r24,lo8(8)
272 0090 80BF out 80-0x20,r24
60:src/analog.c **** return(ADCW);
274 .LM31:
275 0092 84B1 in r24,36-0x20
276 0094 95B1 in r25,(36)+1-0x20
277 /* epilogue: frame size=0 */
278 0096 0895 ret
279 /* epilogue end (size=1) */
280 /* function MessAD size 17 (16) */
285 .Lscope3:
287 .stabd 78,0,0
289 .global FastADConvert
291 FastADConvert:
292 .stabd 46,0,0
61:src/analog.c **** }
62:src/analog.c ****
63:src/analog.c **** //############################################################################
64:src/analog.c **** //Strom Analogwerte lesen
65:src/analog.c **** void FastADConvert(void)
66:src/analog.c **** //############################################################################
67:src/analog.c **** {
294 .LM32:
295 .LFBB4:
296 /* prologue: frame size=0 */
297 /* prologue end (size=0) */
68:src/analog.c **** unsigned int i=0;
69:src/analog.c **** i = MessAD(6) * 4;
299 .LM33:
300 0098 86E0 ldi r24,lo8(6)
301 009a 00D0 rcall MessAD
302 009c 9C01 movw r18,r24
303 009e 220F lsl r18
304 00a0 331F rol r19
305 00a2 220F lsl r18
306 00a4 331F rol r19
307 00a6 293C cpi r18,201
308 00a8 3105 cpc r19,__zero_reg__
309 00aa 00F0 brlo .L18
311 .LM34:
312 00ac 28EC ldi r18,lo8(200)
313 00ae 30E0 ldi r19,hi8(200)
314 .L18:
70:src/analog.c **** // i = ADCW * 4;
71:src/analog.c **** if(i > 200) i = 200;
72:src/analog.c **** Strom = i;//(i + Strom * 1) / 2;
316 .LM35:
317 00b0 3093 0000 sts (Strom)+1,r19
318 00b4 2093 0000 sts Strom,r18
73:src/analog.c **** if (Strom_max < Strom) Strom_max = Strom;
320 .LM36:
321 00b8 8091 0000 lds r24,Strom_max
322 00bc 9927 clr r25
323 00be 8217 cp r24,r18
324 00c0 9307 cpc r25,r19
325 00c2 00F4 brsh .L19
326 00c4 2093 0000 sts Strom_max,r18
327 .L19:
74:src/analog.c **** ADCSRA = 0x00;
329 .LM37:
330 00c8 16B8 out 38-0x20,__zero_reg__
75:src/analog.c **** SFIOR = 0x08; // Analog Comperator ein
332 .LM38:
333 00ca 88E0 ldi r24,lo8(8)
334 00cc 80BF out 80-0x20,r24
335 /* epilogue: frame size=0 */
336 00ce 0895 ret
337 /* epilogue end (size=1) */
338 /* function FastADConvert size 28 (27) */
340 .Lscope4:
342 .stabd 78,0,0
344 .Letext0:
345 /* File "src/analog.c": code 104 = 0x0068 ( 100), prologues 0, epilogues 4 */
DEFINED SYMBOLS
*ABS*:00000000 analog.c
/tmp/ccjrtWT0.s:2 *ABS*:0000003f __SREG__
/tmp/ccjrtWT0.s:3 *ABS*:0000003e __SP_H__
/tmp/ccjrtWT0.s:4 *ABS*:0000003d __SP_L__
/tmp/ccjrtWT0.s:5 *ABS*:00000000 __tmp_reg__
/tmp/ccjrtWT0.s:6 *ABS*:00000001 __zero_reg__
/tmp/ccjrtWT0.s:102 .text:00000000 ADC_Init
/tmp/ccjrtWT0.s:131 .text:0000000c AdConvert
/tmp/ccjrtWT0.s:229 .text:00000076 MessAD
/tmp/ccjrtWT0.s:291 .text:00000098 FastADConvert
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
Strom
Strom_max