2925 |
poskozby |
1 |
|
|
|
2 |
Balon_sonda.elf: file format elf32-avr |
|
|
3 |
|
|
|
4 |
Sections: |
|
|
5 |
Idx Name Size VMA LMA File off Algn |
|
|
6 |
|
|
|
7 |
CONTENTS, ALLOC, LOAD, DATA |
|
|
8 |
1 .text 000004fe 00000000 00000000 00000094 2**1 |
|
|
9 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
|
|
10 |
2 .bss 00000220 00800108 00800108 0000059a 2**0 |
|
|
11 |
ALLOC |
|
|
12 |
3 .stab 00000888 00000000 00000000 0000059c 2**2 |
|
|
13 |
CONTENTS, READONLY, DEBUGGING |
|
|
14 |
4 .stabstr 00000149 00000000 00000000 00000e24 2**0 |
|
|
15 |
CONTENTS, READONLY, DEBUGGING |
|
|
16 |
5 .debug_aranges 000000e0 00000000 00000000 00000f70 2**3 |
|
|
17 |
CONTENTS, READONLY, DEBUGGING |
|
|
18 |
6 .debug_info 000009b1 00000000 00000000 00001050 2**0 |
|
|
19 |
CONTENTS, READONLY, DEBUGGING |
|
|
20 |
7 .debug_abbrev 000002bc 00000000 00000000 00001a01 2**0 |
|
|
21 |
CONTENTS, READONLY, DEBUGGING |
|
|
22 |
8 .debug_line 000005e9 00000000 00000000 00001cbd 2**0 |
|
|
23 |
CONTENTS, READONLY, DEBUGGING |
|
|
24 |
9 .debug_frame 00000238 00000000 00000000 000022a8 2**2 |
|
|
25 |
CONTENTS, READONLY, DEBUGGING |
|
|
26 |
10 .debug_str 0000026a 00000000 00000000 000024e0 2**0 |
|
|
27 |
CONTENTS, READONLY, DEBUGGING |
|
|
28 |
11 .debug_loc 00000403 00000000 00000000 0000274a 2**0 |
|
|
29 |
CONTENTS, READONLY, DEBUGGING |
|
|
30 |
|
|
|
31 |
Disassembly of section .text: |
|
|
32 |
|
|
|
33 |
00000000 <__vectors>: |
|
|
34 |
0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end> |
|
|
35 |
4: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
36 |
8: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
37 |
c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
38 |
10: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
39 |
14: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
40 |
18: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
41 |
1c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
42 |
20: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
43 |
24: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
44 |
28: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
45 |
2c: 0c 94 ab 00 jmp 0x156 ; 0x156 <__vector_11> |
|
|
46 |
30: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
47 |
34: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
48 |
38: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
49 |
3c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
50 |
40: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
51 |
44: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
52 |
48: 0c 94 c2 01 jmp 0x384 ; 0x384 <__vector_18> |
|
|
53 |
4c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
54 |
50: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
55 |
54: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
56 |
58: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
57 |
5c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
58 |
60: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
59 |
64: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> |
|
|
60 |
|
|
|
61 |
00000068 <__ctors_end>: |
|
|
62 |
68: 11 24 eor r1, r1 |
|
|
63 |
6a: 1f be out 0x3f, r1 ; 63 |
|
|
64 |
6c: cf ef ldi r28, 0xFF ; 255 |
|
|
65 |
6e: d8 e0 ldi r29, 0x08 ; 8 |
|
|
66 |
70: de bf out 0x3e, r29 ; 62 |
|
|
67 |
72: cd bf out 0x3d, r28 ; 61 |
|
|
68 |
|
|
|
69 |
00000074 <__do_copy_data>: |
|
|
70 |
74: 11 e0 ldi r17, 0x01 ; 1 |
|
|
71 |
76: a0 e0 ldi r26, 0x00 ; 0 |
|
|
72 |
78: b1 e0 ldi r27, 0x01 ; 1 |
|
|
73 |
7a: ee ef ldi r30, 0xFE ; 254 |
|
|
74 |
7c: f4 e0 ldi r31, 0x04 ; 4 |
|
|
75 |
7e: 02 c0 rjmp .+4 ; 0x84 <__do_copy_data+0x10> |
|
|
76 |
80: 05 90 lpm r0, Z+ |
|
|
77 |
82: 0d 92 st X+, r0 |
|
|
78 |
84: a8 30 cpi r26, 0x08 ; 8 |
|
|
79 |
86: b1 07 cpc r27, r17 |
|
|
80 |
88: d9 f7 brne .-10 ; 0x80 <__do_copy_data+0xc> |
|
|
81 |
|
|
|
82 |
0000008a <__do_clear_bss>: |
|
|
83 |
8a: 13 e0 ldi r17, 0x03 ; 3 |
|
|
84 |
8c: a8 e0 ldi r26, 0x08 ; 8 |
|
|
85 |
8e: b1 e0 ldi r27, 0x01 ; 1 |
|
|
86 |
90: 01 c0 rjmp .+2 ; 0x94 <.do_clear_bss_start> |
|
|
87 |
|
|
|
88 |
00000092 <.do_clear_bss_loop>: |
|
|
89 |
92: 1d 92 st X+, r1 |
|
|
90 |
|
|
|
91 |
00000094 <.do_clear_bss_start>: |
|
|
92 |
94: a8 32 cpi r26, 0x28 ; 40 |
|
|
93 |
96: b1 07 cpc r27, r17 |
|
|
94 |
98: e1 f7 brne .-8 ; 0x92 <.do_clear_bss_loop> |
|
|
95 |
9a: 0e 94 53 00 call 0xa6 ; 0xa6 <main> |
|
|
96 |
9e: 0c 94 7d 02 jmp 0x4fa ; 0x4fa <_exit> |
|
|
97 |
|
|
|
98 |
000000a2 <__bad_interrupt>: |
|
|
99 |
a2: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> |
|
|
100 |
|
|
|
101 |
000000a6 <main>: |
|
|
102 |
#include <avr/interrupt.h> |
|
|
103 |
|
|
|
104 |
int main(void) |
|
|
105 |
{ |
|
|
106 |
//LEDs_init(); |
|
|
107 |
USART_Init(); |
|
|
108 |
a6: 0e 94 2d 02 call 0x45a ; 0x45a <USART_Init> |
|
|
109 |
Timer1_init(); |
|
|
110 |
aa: 0e 94 ea 00 call 0x1d4 ; 0x1d4 <Timer1_init> |
|
|
111 |
sei(); |
|
|
112 |
ae: 78 94 sei |
|
|
113 |
|
|
|
114 |
pocet_prubehu_casovace = PERIODA_VYCITANI; |
|
|
115 |
b0: 81 e0 ldi r24, 0x01 ; 1 |
|
|
116 |
b2: 80 93 26 03 sts 0x0326, r24 |
|
|
117 |
|
|
|
118 |
while(1) |
|
|
119 |
{ |
|
|
120 |
if (pocet_prubehu_casovace == 0) |
|
|
121 |
{ |
|
|
122 |
pocet_prubehu_casovace = PERIODA_VYCITANI; |
|
|
123 |
b6: c1 e0 ldi r28, 0x01 ; 1 |
|
|
124 |
dekoduj_zpravu_GPS(); |
|
|
125 |
if(Status_GPS == '1') |
|
|
126 |
{ |
|
|
127 |
USART0_posli_retezec(UTC_time); |
|
|
128 |
b8: 08 e0 ldi r16, 0x08 ; 8 |
|
|
129 |
ba: 12 e0 ldi r17, 0x02 ; 2 |
|
|
130 |
USART0_posli_znak('\n'); |
|
|
131 |
USART0_posli_znak('\r'); |
|
|
132 |
USART0_posli_znak(Status_GPS); |
|
|
133 |
USART0_posli_znak('\n'); |
|
|
134 |
USART0_posli_znak('\r'); |
|
|
135 |
USART0_posli_retezec(Latitude); |
|
|
136 |
bc: 0f 2e mov r0, r31 |
|
|
137 |
be: f5 e1 ldi r31, 0x15 ; 21 |
|
|
138 |
c0: ef 2e mov r14, r31 |
|
|
139 |
c2: f2 e0 ldi r31, 0x02 ; 2 |
|
|
140 |
c4: ff 2e mov r15, r31 |
|
|
141 |
c6: f0 2d mov r31, r0 |
|
|
142 |
USART0_posli_znak('\n'); |
|
|
143 |
USART0_posli_znak('\r'); |
|
|
144 |
USART0_posli_retezec(Longitude); |
|
|
145 |
c8: 0f 2e mov r0, r31 |
|
|
146 |
ca: f2 e2 ldi r31, 0x22 ; 34 |
|
|
147 |
cc: cf 2e mov r12, r31 |
|
|
148 |
ce: f2 e0 ldi r31, 0x02 ; 2 |
|
|
149 |
d0: df 2e mov r13, r31 |
|
|
150 |
d2: f0 2d mov r31, r0 |
|
|
151 |
USART0_posli_znak('\n'); |
|
|
152 |
USART0_posli_znak('\r'); |
|
|
153 |
USART0_posli_retezec(Altitude); |
|
|
154 |
d4: 0f 2e mov r0, r31 |
|
|
155 |
d6: fe ef ldi r31, 0xFE ; 254 |
|
|
156 |
d8: af 2e mov r10, r31 |
|
|
157 |
da: f1 e0 ldi r31, 0x01 ; 1 |
|
|
158 |
dc: bf 2e mov r11, r31 |
|
|
159 |
de: f0 2d mov r31, r0 |
|
|
160 |
|
|
|
161 |
pocet_prubehu_casovace = PERIODA_VYCITANI; |
|
|
162 |
|
|
|
163 |
while(1) |
|
|
164 |
{ |
|
|
165 |
if (pocet_prubehu_casovace == 0) |
|
|
166 |
e0: 80 91 26 03 lds r24, 0x0326 |
|
|
167 |
e4: 88 23 and r24, r24 |
|
|
168 |
e6: e1 f7 brne .-8 ; 0xe0 <main+0x3a> |
|
|
169 |
{ |
|
|
170 |
pocet_prubehu_casovace = PERIODA_VYCITANI; |
|
|
171 |
e8: c0 93 26 03 sts 0x0326, r28 |
|
|
172 |
dekoduj_zpravu_GPS(); |
|
|
173 |
ec: 0e 94 05 01 call 0x20a ; 0x20a <dekoduj_zpravu_GPS> |
|
|
174 |
if(Status_GPS == '1') |
|
|
175 |
f0: 80 91 27 03 lds r24, 0x0327 |
|
|
176 |
f4: 81 33 cpi r24, 0x31 ; 49 |
|
|
177 |
f6: a1 f7 brne .-24 ; 0xe0 <main+0x3a> |
|
|
178 |
{ |
|
|
179 |
USART0_posli_retezec(UTC_time); |
|
|
180 |
f8: c8 01 movw r24, r16 |
|
|
181 |
fa: 0e 94 45 02 call 0x48a ; 0x48a <USART0_posli_retezec> |
|
|
182 |
USART0_posli_znak('\n'); |
|
|
183 |
fe: 8a e0 ldi r24, 0x0A ; 10 |
|
|
184 |
100: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
185 |
USART0_posli_znak('\r'); |
|
|
186 |
104: 8d e0 ldi r24, 0x0D ; 13 |
|
|
187 |
106: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
188 |
USART0_posli_znak(Status_GPS); |
|
|
189 |
10a: 80 91 27 03 lds r24, 0x0327 |
|
|
190 |
10e: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
191 |
USART0_posli_znak('\n'); |
|
|
192 |
112: 8a e0 ldi r24, 0x0A ; 10 |
|
|
193 |
114: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
194 |
USART0_posli_znak('\r'); |
|
|
195 |
118: 8d e0 ldi r24, 0x0D ; 13 |
|
|
196 |
11a: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
197 |
USART0_posli_retezec(Latitude); |
|
|
198 |
11e: c7 01 movw r24, r14 |
|
|
199 |
120: 0e 94 45 02 call 0x48a ; 0x48a <USART0_posli_retezec> |
|
|
200 |
USART0_posli_znak('\n'); |
|
|
201 |
124: 8a e0 ldi r24, 0x0A ; 10 |
|
|
202 |
126: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
203 |
USART0_posli_znak('\r'); |
|
|
204 |
12a: 8d e0 ldi r24, 0x0D ; 13 |
|
|
205 |
12c: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
206 |
USART0_posli_retezec(Longitude); |
|
|
207 |
130: c6 01 movw r24, r12 |
|
|
208 |
132: 0e 94 45 02 call 0x48a ; 0x48a <USART0_posli_retezec> |
|
|
209 |
USART0_posli_znak('\n'); |
|
|
210 |
136: 8a e0 ldi r24, 0x0A ; 10 |
|
|
211 |
138: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
212 |
USART0_posli_znak('\r'); |
|
|
213 |
13c: 8d e0 ldi r24, 0x0D ; 13 |
|
|
214 |
13e: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
215 |
USART0_posli_retezec(Altitude); |
|
|
216 |
142: c5 01 movw r24, r10 |
|
|
217 |
144: 0e 94 45 02 call 0x48a ; 0x48a <USART0_posli_retezec> |
|
|
218 |
USART0_posli_znak('\n'); |
|
|
219 |
148: 8a e0 ldi r24, 0x0A ; 10 |
|
|
220 |
14a: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
221 |
USART0_posli_znak('\r'); |
|
|
222 |
14e: 8d e0 ldi r24, 0x0D ; 13 |
|
|
223 |
150: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
224 |
154: c5 cf rjmp .-118 ; 0xe0 <main+0x3a> |
|
|
225 |
|
|
|
226 |
00000156 <__vector_11>: |
|
|
227 |
} |
|
|
228 |
|
|
|
229 |
} |
|
|
230 |
|
|
|
231 |
SIGNAL (TIMER1_COMPA_vect) |
|
|
232 |
{ |
|
|
233 |
156: 1f 92 push r1 |
|
|
234 |
158: 0f 92 push r0 |
|
|
235 |
15a: 0f b6 in r0, 0x3f ; 63 |
|
|
236 |
15c: 0f 92 push r0 |
|
|
237 |
15e: 11 24 eor r1, r1 |
|
|
238 |
160: 2f 93 push r18 |
|
|
239 |
162: 3f 93 push r19 |
|
|
240 |
164: 4f 93 push r20 |
|
|
241 |
166: 5f 93 push r21 |
|
|
242 |
168: 6f 93 push r22 |
|
|
243 |
16a: 7f 93 push r23 |
|
|
244 |
16c: 8f 93 push r24 |
|
|
245 |
16e: 9f 93 push r25 |
|
|
246 |
170: af 93 push r26 |
|
|
247 |
172: bf 93 push r27 |
|
|
248 |
174: ef 93 push r30 |
|
|
249 |
176: ff 93 push r31 |
|
|
250 |
OCR1AH = 0xF4; // Start value in counter ~4s |
|
|
251 |
178: 84 ef ldi r24, 0xF4 ; 244 |
|
|
252 |
17a: 80 93 89 00 sts 0x0089, r24 |
|
|
253 |
OCR1AL = 0x24; |
|
|
254 |
17e: 84 e2 ldi r24, 0x24 ; 36 |
|
|
255 |
180: 80 93 88 00 sts 0x0088, r24 |
|
|
256 |
USART0_posli_znak('T'); |
|
|
257 |
184: 84 e5 ldi r24, 0x54 ; 84 |
|
|
258 |
186: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
259 |
if (pocet_prubehu_casovace > 0) |
|
|
260 |
18a: 80 91 26 03 lds r24, 0x0326 |
|
|
261 |
18e: 88 23 and r24, r24 |
|
|
262 |
190: 29 f0 breq .+10 ; 0x19c <__vector_11+0x46> |
|
|
263 |
{ |
|
|
264 |
pocet_prubehu_casovace--; |
|
|
265 |
192: 80 91 26 03 lds r24, 0x0326 |
|
|
266 |
196: 81 50 subi r24, 0x01 ; 1 |
|
|
267 |
198: 80 93 26 03 sts 0x0326, r24 |
|
|
268 |
} |
|
|
269 |
|
|
|
270 |
|
|
|
271 |
|
|
|
272 |
19c: ff 91 pop r31 |
|
|
273 |
19e: ef 91 pop r30 |
|
|
274 |
1a0: bf 91 pop r27 |
|
|
275 |
1a2: af 91 pop r26 |
|
|
276 |
1a4: 9f 91 pop r25 |
|
|
277 |
1a6: 8f 91 pop r24 |
|
|
278 |
1a8: 7f 91 pop r23 |
|
|
279 |
1aa: 6f 91 pop r22 |
|
|
280 |
1ac: 5f 91 pop r21 |
|
|
281 |
1ae: 4f 91 pop r20 |
|
|
282 |
1b0: 3f 91 pop r19 |
|
|
283 |
1b2: 2f 91 pop r18 |
|
|
284 |
1b4: 0f 90 pop r0 |
|
|
285 |
1b6: 0f be out 0x3f, r0 ; 63 |
|
|
286 |
1b8: 0f 90 pop r0 |
|
|
287 |
1ba: 1f 90 pop r1 |
|
|
288 |
1bc: 18 95 reti |
|
|
289 |
|
|
|
290 |
000001be <LEDs_init>: |
|
|
291 |
* Vstup: Zadny |
|
|
292 |
* Vystup: Zadny |
|
|
293 |
************************************************************************/ |
|
|
294 |
volatile void LEDs_init(void) |
|
|
295 |
{ |
|
|
296 |
DDRB = (1<<DDB0)|(1<<DDB1); |
|
|
297 |
1be: 83 e0 ldi r24, 0x03 ; 3 |
|
|
298 |
1c0: 84 b9 out 0x04, r24 ; 4 |
|
|
299 |
} |
|
|
300 |
1c2: 08 95 ret |
|
|
301 |
|
|
|
302 |
000001c4 <LED_horni_on>: |
|
|
303 |
* Vstup: Zadny |
|
|
304 |
* Vystup: Zadny |
|
|
305 |
************************************************************************/ |
|
|
306 |
volatile void LED_horni_on(void) |
|
|
307 |
{ |
|
|
308 |
PORTB |= (1<<PB0); |
|
|
309 |
1c4: 28 9a sbi 0x05, 0 ; 5 |
|
|
310 |
} |
|
|
311 |
1c6: 08 95 ret |
|
|
312 |
|
|
|
313 |
000001c8 <LED_horni_off>: |
|
|
314 |
* Vstup: Zadny |
|
|
315 |
* Vystup: Zadny |
|
|
316 |
************************************************************************/ |
|
|
317 |
volatile void LED_horni_off(void) |
|
|
318 |
{ |
|
|
319 |
PORTB &= ~(1<<PB0); |
|
|
320 |
1c8: 28 98 cbi 0x05, 0 ; 5 |
|
|
321 |
} |
|
|
322 |
1ca: 08 95 ret |
|
|
323 |
|
|
|
324 |
000001cc <LED_spodni_on>: |
|
|
325 |
* Vstup: Zadny |
|
|
326 |
* Vystup: Zadny |
|
|
327 |
************************************************************************/ |
|
|
328 |
volatile void LED_spodni_on(void) |
|
|
329 |
{ |
|
|
330 |
PORTB |= (1<<PB1); |
|
|
331 |
1cc: 29 9a sbi 0x05, 1 ; 5 |
|
|
332 |
} |
|
|
333 |
1ce: 08 95 ret |
|
|
334 |
|
|
|
335 |
000001d0 <LED_spodni_off>: |
|
|
336 |
* Vstup: Zadny |
|
|
337 |
* Vystup: Zadny |
|
|
338 |
************************************************************************/ |
|
|
339 |
volatile void LED_spodni_off(void) |
|
|
340 |
{ |
|
|
341 |
PORTB &= ~(1<<PB1); |
|
|
342 |
1d0: 29 98 cbi 0x05, 1 ; 5 |
|
|
343 |
} |
|
|
344 |
1d2: 08 95 ret |
|
|
345 |
|
|
|
346 |
000001d4 <Timer1_init>: |
|
|
347 |
|
|
|
348 |
#include <avr/io.h> |
|
|
349 |
|
|
|
350 |
void Timer1_init(void) |
|
|
351 |
{ |
|
|
352 |
TCCR1B |= 1<<WGM12; // T1 in CTC mode |
|
|
353 |
1d4: e1 e8 ldi r30, 0x81 ; 129 |
|
|
354 |
1d6: f0 e0 ldi r31, 0x00 ; 0 |
|
|
355 |
1d8: 80 81 ld r24, Z |
|
|
356 |
1da: 88 60 ori r24, 0x08 ; 8 |
|
|
357 |
1dc: 80 83 st Z, r24 |
|
|
358 |
TCCR1B |= 1<<CS12; // f_osc/1024 |
|
|
359 |
1de: 80 81 ld r24, Z |
|
|
360 |
1e0: 84 60 ori r24, 0x04 ; 4 |
|
|
361 |
1e2: 80 83 st Z, r24 |
|
|
362 |
TCCR1B |= 1<<CS10; // f_osc/1024 |
|
|
363 |
1e4: 80 81 ld r24, Z |
|
|
364 |
1e6: 81 60 ori r24, 0x01 ; 1 |
|
|
365 |
1e8: 80 83 st Z, r24 |
|
|
366 |
|
|
|
367 |
OCR1AH = 0xF4; // Start value in counter ~4s |
|
|
368 |
1ea: 84 ef ldi r24, 0xF4 ; 244 |
|
|
369 |
1ec: 80 93 89 00 sts 0x0089, r24 |
|
|
370 |
OCR1AL = 0x24; |
|
|
371 |
1f0: 84 e2 ldi r24, 0x24 ; 36 |
|
|
372 |
1f2: 80 93 88 00 sts 0x0088, r24 |
|
|
373 |
|
|
|
374 |
TCNT1H = 0; // Start value in counter |
|
|
375 |
1f6: 10 92 85 00 sts 0x0085, r1 |
|
|
376 |
TCNT1L = 0; |
|
|
377 |
1fa: 10 92 84 00 sts 0x0084, r1 |
|
|
378 |
|
|
|
379 |
|
|
|
380 |
TIMSK1 |= 1<<OCIE1A; // enable interrupt from T1 when compare match |
|
|
381 |
1fe: ef e6 ldi r30, 0x6F ; 111 |
|
|
382 |
200: f0 e0 ldi r31, 0x00 ; 0 |
|
|
383 |
202: 80 81 ld r24, Z |
|
|
384 |
204: 82 60 ori r24, 0x02 ; 2 |
|
|
385 |
206: 80 83 st Z, r24 |
|
|
386 |
} |
|
|
387 |
208: 08 95 ret |
|
|
388 |
|
|
|
389 |
0000020a <dekoduj_zpravu_GPS>: |
|
|
390 |
* Ucel: Z RX0_buffer vytahne informace o soucasne poloze, je tam ulozena cela veta RMC |
|
|
391 |
* Vstup: Zadny |
|
|
392 |
* Vystup: Zadny |
|
|
393 |
************************************************************************/ |
|
|
394 |
void dekoduj_zpravu_GPS (void) |
|
|
395 |
{ |
|
|
396 |
20a: 2f 92 push r2 |
|
|
397 |
20c: 3f 92 push r3 |
|
|
398 |
20e: 4f 92 push r4 |
|
|
399 |
210: 5f 92 push r5 |
|
|
400 |
212: 6f 92 push r6 |
|
|
401 |
214: 7f 92 push r7 |
|
|
402 |
216: 8f 92 push r8 |
|
|
403 |
218: 9f 92 push r9 |
|
|
404 |
21a: bf 92 push r11 |
|
|
405 |
21c: cf 92 push r12 |
|
|
406 |
21e: df 92 push r13 |
|
|
407 |
220: ef 92 push r14 |
|
|
408 |
222: ff 92 push r15 |
|
|
409 |
224: 0f 93 push r16 |
|
|
410 |
226: 1f 93 push r17 |
|
|
411 |
228: cf 93 push r28 |
|
|
412 |
22a: df 93 push r29 |
|
|
413 |
cli(); |
|
|
414 |
22c: f8 94 cli |
|
|
415 |
|
|
|
416 |
short i, j = 0, k = 0, l = 0; |
|
|
417 |
short pocet_carek = 0; |
|
|
418 |
for ( i = 0; i < NMEA_retezec.zaplneno_bytu; i++) |
|
|
419 |
22e: c0 90 24 03 lds r12, 0x0324 |
|
|
420 |
232: dd 24 eor r13, r13 |
|
|
421 |
234: 1c 14 cp r1, r12 |
|
|
422 |
236: 1d 04 cpc r1, r13 |
|
|
423 |
238: 0c f0 brlt .+2 ; 0x23c <dekoduj_zpravu_GPS+0x32> |
|
|
424 |
23a: 84 c0 rjmp .+264 ; 0x344 <dekoduj_zpravu_GPS+0x13a> |
|
|
425 |
23c: b0 90 27 03 lds r11, 0x0327 |
|
|
426 |
240: a0 e3 ldi r26, 0x30 ; 48 |
|
|
427 |
242: b2 e0 ldi r27, 0x02 ; 2 |
|
|
428 |
void dekoduj_zpravu_GPS (void) |
|
|
429 |
{ |
|
|
430 |
cli(); |
|
|
431 |
|
|
|
432 |
short i, j = 0, k = 0, l = 0; |
|
|
433 |
short pocet_carek = 0; |
|
|
434 |
244: 20 e0 ldi r18, 0x00 ; 0 |
|
|
435 |
246: 30 e0 ldi r19, 0x00 ; 0 |
|
|
436 |
************************************************************************/ |
|
|
437 |
void dekoduj_zpravu_GPS (void) |
|
|
438 |
{ |
|
|
439 |
cli(); |
|
|
440 |
|
|
|
441 |
short i, j = 0, k = 0, l = 0; |
|
|
442 |
248: 00 e0 ldi r16, 0x00 ; 0 |
|
|
443 |
24a: 10 e0 ldi r17, 0x00 ; 0 |
|
|
444 |
24c: ee 24 eor r14, r14 |
|
|
445 |
24e: ff 24 eor r15, r15 |
|
|
446 |
250: c0 e0 ldi r28, 0x00 ; 0 |
|
|
447 |
252: d0 e0 ldi r29, 0x00 ; 0 |
|
|
448 |
short pocet_carek = 0; |
|
|
449 |
for ( i = 0; i < NMEA_retezec.zaplneno_bytu; i++) |
|
|
450 |
254: 60 e0 ldi r22, 0x00 ; 0 |
|
|
451 |
256: 70 e0 ldi r23, 0x00 ; 0 |
|
|
452 |
k++; |
|
|
453 |
} |
|
|
454 |
if (pocet_carek == 4 || pocet_carek == 5) |
|
|
455 |
{ |
|
|
456 |
|
|
|
457 |
Longitude[j] = NMEA_retezec.obsah[i]; |
|
|
458 |
258: 0f 2e mov r0, r31 |
|
|
459 |
25a: f2 e2 ldi r31, 0x22 ; 34 |
|
|
460 |
25c: 6f 2e mov r6, r31 |
|
|
461 |
25e: f2 e0 ldi r31, 0x02 ; 2 |
|
|
462 |
260: 7f 2e mov r7, r31 |
|
|
463 |
262: f0 2d mov r31, r0 |
|
|
464 |
UTC_time[l] = NMEA_retezec.obsah[i]; |
|
|
465 |
l++; |
|
|
466 |
} |
|
|
467 |
if (pocet_carek == 2 || pocet_carek == 3) |
|
|
468 |
{ |
|
|
469 |
Latitude[k] = NMEA_retezec.obsah[i]; |
|
|
470 |
264: 0f 2e mov r0, r31 |
|
|
471 |
266: f5 e1 ldi r31, 0x15 ; 21 |
|
|
472 |
268: 4f 2e mov r4, r31 |
|
|
473 |
26a: f2 e0 ldi r31, 0x02 ; 2 |
|
|
474 |
26c: 5f 2e mov r5, r31 |
|
|
475 |
26e: f0 2d mov r31, r0 |
|
|
476 |
short pocet_carek = 0; |
|
|
477 |
for ( i = 0; i < NMEA_retezec.zaplneno_bytu; i++) |
|
|
478 |
{ |
|
|
479 |
if (pocet_carek == 1) |
|
|
480 |
{ |
|
|
481 |
UTC_time[l] = NMEA_retezec.obsah[i]; |
|
|
482 |
270: 0f 2e mov r0, r31 |
|
|
483 |
272: f8 e0 ldi r31, 0x08 ; 8 |
|
|
484 |
274: 8f 2e mov r8, r31 |
|
|
485 |
276: f2 e0 ldi r31, 0x02 ; 2 |
|
|
486 |
278: 9f 2e mov r9, r31 |
|
|
487 |
27a: f0 2d mov r31, r0 |
|
|
488 |
j = 0; |
|
|
489 |
} |
|
|
490 |
|
|
|
491 |
if (pocet_carek == 9) |
|
|
492 |
{ |
|
|
493 |
Altitude[j] = NMEA_retezec.obsah[i]; |
|
|
494 |
27c: 0f 2e mov r0, r31 |
|
|
495 |
27e: fe ef ldi r31, 0xFE ; 254 |
|
|
496 |
280: 2f 2e mov r2, r31 |
|
|
497 |
282: f1 e0 ldi r31, 0x01 ; 1 |
|
|
498 |
284: 3f 2e mov r3, r31 |
|
|
499 |
286: f0 2d mov r31, r0 |
|
|
500 |
|
|
|
501 |
short i, j = 0, k = 0, l = 0; |
|
|
502 |
short pocet_carek = 0; |
|
|
503 |
for ( i = 0; i < NMEA_retezec.zaplneno_bytu; i++) |
|
|
504 |
{ |
|
|
505 |
if (pocet_carek == 1) |
|
|
506 |
288: 21 30 cpi r18, 0x01 ; 1 |
|
|
507 |
28a: 31 05 cpc r19, r1 |
|
|
508 |
28c: 41 f4 brne .+16 ; 0x29e <dekoduj_zpravu_GPS+0x94> |
|
|
509 |
{ |
|
|
510 |
UTC_time[l] = NMEA_retezec.obsah[i]; |
|
|
511 |
28e: f4 01 movw r30, r8 |
|
|
512 |
290: e0 0f add r30, r16 |
|
|
513 |
292: f1 1f adc r31, r17 |
|
|
514 |
294: 8c 91 ld r24, X |
|
|
515 |
296: 80 83 st Z, r24 |
|
|
516 |
l++; |
|
|
517 |
298: 0f 5f subi r16, 0xFF ; 255 |
|
|
518 |
29a: 1f 4f sbci r17, 0xFF ; 255 |
|
|
519 |
29c: 19 c0 rjmp .+50 ; 0x2d0 <dekoduj_zpravu_GPS+0xc6> |
|
|
520 |
} |
|
|
521 |
if (pocet_carek == 2 || pocet_carek == 3) |
|
|
522 |
29e: a9 01 movw r20, r18 |
|
|
523 |
2a0: c9 01 movw r24, r18 |
|
|
524 |
2a2: 02 97 sbiw r24, 0x02 ; 2 |
|
|
525 |
2a4: 82 30 cpi r24, 0x02 ; 2 |
|
|
526 |
2a6: 91 05 cpc r25, r1 |
|
|
527 |
2a8: 40 f4 brcc .+16 ; 0x2ba <dekoduj_zpravu_GPS+0xb0> |
|
|
528 |
{ |
|
|
529 |
Latitude[k] = NMEA_retezec.obsah[i]; |
|
|
530 |
2aa: f2 01 movw r30, r4 |
|
|
531 |
2ac: ee 0d add r30, r14 |
|
|
532 |
2ae: ff 1d adc r31, r15 |
|
|
533 |
2b0: 8c 91 ld r24, X |
|
|
534 |
2b2: 80 83 st Z, r24 |
|
|
535 |
k++; |
|
|
536 |
2b4: 08 94 sec |
|
|
537 |
2b6: e1 1c adc r14, r1 |
|
|
538 |
2b8: f1 1c adc r15, r1 |
|
|
539 |
} |
|
|
540 |
if (pocet_carek == 4 || pocet_carek == 5) |
|
|
541 |
2ba: ca 01 movw r24, r20 |
|
|
542 |
2bc: 04 97 sbiw r24, 0x04 ; 4 |
|
|
543 |
2be: 82 30 cpi r24, 0x02 ; 2 |
|
|
544 |
2c0: 91 05 cpc r25, r1 |
|
|
545 |
2c2: 30 f4 brcc .+12 ; 0x2d0 <dekoduj_zpravu_GPS+0xc6> |
|
|
546 |
{ |
|
|
547 |
|
|
|
548 |
Longitude[j] = NMEA_retezec.obsah[i]; |
|
|
549 |
2c4: f3 01 movw r30, r6 |
|
|
550 |
2c6: ec 0f add r30, r28 |
|
|
551 |
2c8: fd 1f adc r31, r29 |
|
|
552 |
2ca: 8c 91 ld r24, X |
|
|
553 |
2cc: 80 83 st Z, r24 |
|
|
554 |
j++; |
|
|
555 |
2ce: 21 96 adiw r28, 0x01 ; 1 |
|
|
556 |
} |
|
|
557 |
if (pocet_carek == 6) |
|
|
558 |
2d0: 26 30 cpi r18, 0x06 ; 6 |
|
|
559 |
2d2: 31 05 cpc r19, r1 |
|
|
560 |
2d4: c1 f4 brne .+48 ; 0x306 <dekoduj_zpravu_GPS+0xfc> |
|
|
561 |
{ |
|
|
562 |
UTC_time[l-1] = 0; |
|
|
563 |
2d6: c4 01 movw r24, r8 |
|
|
564 |
2d8: 80 0f add r24, r16 |
|
|
565 |
2da: 91 1f adc r25, r17 |
|
|
566 |
2dc: 01 97 sbiw r24, 0x01 ; 1 |
|
|
567 |
2de: fc 01 movw r30, r24 |
|
|
568 |
2e0: 10 82 st Z, r1 |
|
|
569 |
Latitude[k-1] = 0; |
|
|
570 |
2e2: c2 01 movw r24, r4 |
|
|
571 |
2e4: 8e 0d add r24, r14 |
|
|
572 |
2e6: 9f 1d adc r25, r15 |
|
|
573 |
2e8: 01 97 sbiw r24, 0x01 ; 1 |
|
|
574 |
2ea: fc 01 movw r30, r24 |
|
|
575 |
2ec: 10 82 st Z, r1 |
|
|
576 |
Longitude[j-1] = 0; |
|
|
577 |
2ee: c3 01 movw r24, r6 |
|
|
578 |
2f0: 8c 0f add r24, r28 |
|
|
579 |
2f2: 9d 1f adc r25, r29 |
|
|
580 |
2f4: 01 97 sbiw r24, 0x01 ; 1 |
|
|
581 |
2f6: fc 01 movw r30, r24 |
|
|
582 |
2f8: 10 82 st Z, r1 |
|
|
583 |
* Funkce: dekoduj_zpravu_GPS |
|
|
584 |
* Ucel: Z RX0_buffer vytahne informace o soucasne poloze, je tam ulozena cela veta RMC |
|
|
585 |
* Vstup: Zadny |
|
|
586 |
* Vystup: Zadny |
|
|
587 |
************************************************************************/ |
|
|
588 |
void dekoduj_zpravu_GPS (void) |
|
|
589 |
2fa: fd 01 movw r30, r26 |
|
|
590 |
2fc: 31 97 sbiw r30, 0x01 ; 1 |
|
|
591 |
{ |
|
|
592 |
UTC_time[l-1] = 0; |
|
|
593 |
Latitude[k-1] = 0; |
|
|
594 |
Longitude[j-1] = 0; |
|
|
595 |
|
|
|
596 |
Status_GPS = NMEA_retezec.obsah[i-1]; |
|
|
597 |
2fe: b0 80 ld r11, Z |
|
|
598 |
j = 0; |
|
|
599 |
300: c0 e0 ldi r28, 0x00 ; 0 |
|
|
600 |
302: d0 e0 ldi r29, 0x00 ; 0 |
|
|
601 |
304: 09 c0 rjmp .+18 ; 0x318 <dekoduj_zpravu_GPS+0x10e> |
|
|
602 |
} |
|
|
603 |
|
|
|
604 |
if (pocet_carek == 9) |
|
|
605 |
306: 29 30 cpi r18, 0x09 ; 9 |
|
|
606 |
308: 31 05 cpc r19, r1 |
|
|
607 |
30a: 31 f4 brne .+12 ; 0x318 <dekoduj_zpravu_GPS+0x10e> |
|
|
608 |
{ |
|
|
609 |
Altitude[j] = NMEA_retezec.obsah[i]; |
|
|
610 |
30c: f1 01 movw r30, r2 |
|
|
611 |
30e: ec 0f add r30, r28 |
|
|
612 |
310: fd 1f adc r31, r29 |
|
|
613 |
312: 8c 91 ld r24, X |
|
|
614 |
314: 80 83 st Z, r24 |
|
|
615 |
j++; |
|
|
616 |
316: 21 96 adiw r28, 0x01 ; 1 |
|
|
617 |
} |
|
|
618 |
|
|
|
619 |
if (NMEA_retezec.obsah[i] == ',') |
|
|
620 |
318: 8d 91 ld r24, X+ |
|
|
621 |
31a: 8c 32 cpi r24, 0x2C ; 44 |
|
|
622 |
31c: 11 f4 brne .+4 ; 0x322 <dekoduj_zpravu_GPS+0x118> |
|
|
623 |
{ |
|
|
624 |
pocet_carek++; |
|
|
625 |
31e: 2f 5f subi r18, 0xFF ; 255 |
|
|
626 |
320: 3f 4f sbci r19, 0xFF ; 255 |
|
|
627 |
} |
|
|
628 |
if (pocet_carek >9) |
|
|
629 |
322: 2a 30 cpi r18, 0x0A ; 10 |
|
|
630 |
324: 31 05 cpc r19, r1 |
|
|
631 |
326: 34 f0 brlt .+12 ; 0x334 <dekoduj_zpravu_GPS+0x12a> |
|
|
632 |
328: b0 92 27 03 sts 0x0327, r11 |
|
|
633 |
{ |
|
|
634 |
Altitude[j-1] = 0; // konec Stringu |
|
|
635 |
32c: c3 50 subi r28, 0x03 ; 3 |
|
|
636 |
32e: de 4f sbci r29, 0xFE ; 254 |
|
|
637 |
330: 18 82 st Y, r1 |
|
|
638 |
break; // nema vyznam dal zapisovat, potrebne je zapsano v Altitude |
|
|
639 |
332: 08 c0 rjmp .+16 ; 0x344 <dekoduj_zpravu_GPS+0x13a> |
|
|
640 |
{ |
|
|
641 |
cli(); |
|
|
642 |
|
|
|
643 |
short i, j = 0, k = 0, l = 0; |
|
|
644 |
short pocet_carek = 0; |
|
|
645 |
for ( i = 0; i < NMEA_retezec.zaplneno_bytu; i++) |
|
|
646 |
334: 6f 5f subi r22, 0xFF ; 255 |
|
|
647 |
336: 7f 4f sbci r23, 0xFF ; 255 |
|
|
648 |
338: 6c 15 cp r22, r12 |
|
|
649 |
33a: 7d 05 cpc r23, r13 |
|
|
650 |
33c: 0c f4 brge .+2 ; 0x340 <dekoduj_zpravu_GPS+0x136> |
|
|
651 |
33e: a4 cf rjmp .-184 ; 0x288 <dekoduj_zpravu_GPS+0x7e> |
|
|
652 |
340: b0 92 27 03 sts 0x0327, r11 |
|
|
653 |
Altitude[j-1] = 0; // konec Stringu |
|
|
654 |
break; // nema vyznam dal zapisovat, potrebne je zapsano v Altitude |
|
|
655 |
} |
|
|
656 |
} |
|
|
657 |
|
|
|
658 |
sei(); |
|
|
659 |
344: 78 94 sei |
|
|
660 |
} |
|
|
661 |
346: df 91 pop r29 |
|
|
662 |
348: cf 91 pop r28 |
|
|
663 |
34a: 1f 91 pop r17 |
|
|
664 |
34c: 0f 91 pop r16 |
|
|
665 |
34e: ff 90 pop r15 |
|
|
666 |
350: ef 90 pop r14 |
|
|
667 |
352: df 90 pop r13 |
|
|
668 |
354: cf 90 pop r12 |
|
|
669 |
356: bf 90 pop r11 |
|
|
670 |
358: 9f 90 pop r9 |
|
|
671 |
35a: 8f 90 pop r8 |
|
|
672 |
35c: 7f 90 pop r7 |
|
|
673 |
35e: 6f 90 pop r6 |
|
|
674 |
360: 5f 90 pop r5 |
|
|
675 |
362: 4f 90 pop r4 |
|
|
676 |
364: 3f 90 pop r3 |
|
|
677 |
366: 2f 90 pop r2 |
|
|
678 |
368: 08 95 ret |
|
|
679 |
|
|
|
680 |
0000036a <USART0_smaz_buffer>: |
|
|
681 |
* Vstup: Jaky buffer ma smazat (pro USART 0 nebo 1) |
|
|
682 |
* Vystup: Zadny |
|
|
683 |
************************************************************************/ |
|
|
684 |
void USART0_smaz_buffer (void) |
|
|
685 |
{ |
|
|
686 |
cli(); |
|
|
687 |
36a: f8 94 cli |
|
|
688 |
36c: e8 e0 ldi r30, 0x08 ; 8 |
|
|
689 |
36e: f1 e0 ldi r31, 0x01 ; 1 |
|
|
690 |
* Funkce: USART0_smaz_buffer |
|
|
691 |
* Ucel: Smaze (zaplni nulami) prijimaci buffer |
|
|
692 |
* Vstup: Jaky buffer ma smazat (pro USART 0 nebo 1) |
|
|
693 |
* Vystup: Zadny |
|
|
694 |
************************************************************************/ |
|
|
695 |
void USART0_smaz_buffer (void) |
|
|
696 |
370: 8d ef ldi r24, 0xFD ; 253 |
|
|
697 |
372: 91 e0 ldi r25, 0x01 ; 1 |
|
|
698 |
cli(); |
|
|
699 |
unsigned char i; |
|
|
700 |
|
|
|
701 |
for (i=0; i <= VELIKOST_PRIJIMACIHO_BUFFERU;i++) // maze se cely buffer pro jistotu |
|
|
702 |
{ |
|
|
703 |
RX0_buffer.obsah[i] = 0; |
|
|
704 |
374: 11 92 st Z+, r1 |
|
|
705 |
void USART0_smaz_buffer (void) |
|
|
706 |
{ |
|
|
707 |
cli(); |
|
|
708 |
unsigned char i; |
|
|
709 |
|
|
|
710 |
for (i=0; i <= VELIKOST_PRIJIMACIHO_BUFFERU;i++) // maze se cely buffer pro jistotu |
|
|
711 |
376: e8 17 cp r30, r24 |
|
|
712 |
378: f9 07 cpc r31, r25 |
|
|
713 |
37a: e1 f7 brne .-8 ; 0x374 <USART0_smaz_buffer+0xa> |
|
|
714 |
{ |
|
|
715 |
RX0_buffer.obsah[i] = 0; |
|
|
716 |
} |
|
|
717 |
RX0_buffer.zaplneno_bytu = 0; |
|
|
718 |
37c: 10 92 fc 01 sts 0x01FC, r1 |
|
|
719 |
|
|
|
720 |
|
|
|
721 |
sei(); |
|
|
722 |
380: 78 94 sei |
|
|
723 |
} |
|
|
724 |
382: 08 95 ret |
|
|
725 |
|
|
|
726 |
00000384 <__vector_18>: |
|
|
727 |
* Ucel: Funkce se vola pri prijmuti znaku od USART0 |
|
|
728 |
* Vstup: Zdroj preruseni |
|
|
729 |
* Vystup: Zadny |
|
|
730 |
************************************************************************/ |
|
|
731 |
SIGNAL (USART_RX_vect) |
|
|
732 |
{ |
|
|
733 |
384: 1f 92 push r1 |
|
|
734 |
386: 0f 92 push r0 |
|
|
735 |
388: 0f b6 in r0, 0x3f ; 63 |
|
|
736 |
38a: 0f 92 push r0 |
|
|
737 |
38c: 11 24 eor r1, r1 |
|
|
738 |
38e: 2f 93 push r18 |
|
|
739 |
390: 3f 93 push r19 |
|
|
740 |
392: 4f 93 push r20 |
|
|
741 |
394: 5f 93 push r21 |
|
|
742 |
396: 6f 93 push r22 |
|
|
743 |
398: 7f 93 push r23 |
|
|
744 |
39a: 8f 93 push r24 |
|
|
745 |
39c: 9f 93 push r25 |
|
|
746 |
39e: af 93 push r26 |
|
|
747 |
3a0: bf 93 push r27 |
|
|
748 |
3a2: cf 93 push r28 |
|
|
749 |
3a4: ef 93 push r30 |
|
|
750 |
3a6: ff 93 push r31 |
|
|
751 |
char znak = UDR0; |
|
|
752 |
3a8: c0 91 c6 00 lds r28, 0x00C6 |
|
|
753 |
if (RX0_buffer.zaplneno_bytu < VELIKOST_PRIJIMACIHO_BUFFERU-1) |
|
|
754 |
3ac: 80 91 fc 01 lds r24, 0x01FC |
|
|
755 |
3b0: 83 3f cpi r24, 0xF3 ; 243 |
|
|
756 |
3b2: 50 f4 brcc .+20 ; 0x3c8 <__vector_18+0x44> |
|
|
757 |
{ |
|
|
758 |
RX0_buffer.obsah[RX0_buffer.zaplneno_bytu] = znak; |
|
|
759 |
3b4: e8 e0 ldi r30, 0x08 ; 8 |
|
|
760 |
3b6: f1 e0 ldi r31, 0x01 ; 1 |
|
|
761 |
3b8: e8 0f add r30, r24 |
|
|
762 |
3ba: f1 1d adc r31, r1 |
|
|
763 |
3bc: c0 83 st Z, r28 |
|
|
764 |
RX0_buffer.obsah[RX0_buffer.zaplneno_bytu+1] = 0; // konec stringu |
|
|
765 |
3be: 11 82 std Z+1, r1 ; 0x01 |
|
|
766 |
RX0_buffer.zaplneno_bytu++; |
|
|
767 |
3c0: 8f 5f subi r24, 0xFF ; 255 |
|
|
768 |
3c2: 80 93 fc 01 sts 0x01FC, r24 |
|
|
769 |
3c6: 0c c0 rjmp .+24 ; 0x3e0 <__vector_18+0x5c> |
|
|
770 |
} |
|
|
771 |
else |
|
|
772 |
{ |
|
|
773 |
USART0_smaz_buffer(); |
|
|
774 |
3c8: 0e 94 b5 01 call 0x36a ; 0x36a <USART0_smaz_buffer> |
|
|
775 |
RX0_buffer.obsah[RX0_buffer.zaplneno_bytu] = znak; |
|
|
776 |
3cc: 80 91 fc 01 lds r24, 0x01FC |
|
|
777 |
3d0: e8 e0 ldi r30, 0x08 ; 8 |
|
|
778 |
3d2: f1 e0 ldi r31, 0x01 ; 1 |
|
|
779 |
3d4: e8 0f add r30, r24 |
|
|
780 |
3d6: f1 1d adc r31, r1 |
|
|
781 |
3d8: c0 83 st Z, r28 |
|
|
782 |
RX0_buffer.zaplneno_bytu++; |
|
|
783 |
3da: 8f 5f subi r24, 0xFF ; 255 |
|
|
784 |
3dc: 80 93 fc 01 sts 0x01FC, r24 |
|
|
785 |
} |
|
|
786 |
|
|
|
787 |
if (zacatek_zpravy != 1 && strstr(RX0_buffer.obsah,"$GPGGA") != 0) |
|
|
788 |
3e0: 80 91 25 03 lds r24, 0x0325 |
|
|
789 |
3e4: 81 30 cpi r24, 0x01 ; 1 |
|
|
790 |
3e6: 69 f0 breq .+26 ; 0x402 <__vector_18+0x7e> |
|
|
791 |
3e8: 88 e0 ldi r24, 0x08 ; 8 |
|
|
792 |
3ea: 91 e0 ldi r25, 0x01 ; 1 |
|
|
793 |
3ec: 60 e0 ldi r22, 0x00 ; 0 |
|
|
794 |
3ee: 71 e0 ldi r23, 0x01 ; 1 |
|
|
795 |
3f0: 0e 94 63 02 call 0x4c6 ; 0x4c6 <strstr> |
|
|
796 |
3f4: 00 97 sbiw r24, 0x00 ; 0 |
|
|
797 |
3f6: 29 f0 breq .+10 ; 0x402 <__vector_18+0x7e> |
|
|
798 |
{ |
|
|
799 |
zacatek_zpravy = 1; |
|
|
800 |
3f8: 81 e0 ldi r24, 0x01 ; 1 |
|
|
801 |
3fa: 80 93 25 03 sts 0x0325, r24 |
|
|
802 |
USART0_smaz_buffer(); // aby se zprava ukladala od zacatku bufferu |
|
|
803 |
3fe: 0e 94 b5 01 call 0x36a ; 0x36a <USART0_smaz_buffer> |
|
|
804 |
} |
|
|
805 |
|
|
|
806 |
if (znak == '*' && zacatek_zpravy == 1) // cela zprava je prijata |
|
|
807 |
402: ca 32 cpi r28, 0x2A ; 42 |
|
|
808 |
404: 81 f4 brne .+32 ; 0x426 <__vector_18+0xa2> |
|
|
809 |
406: 80 91 25 03 lds r24, 0x0325 |
|
|
810 |
40a: 81 30 cpi r24, 0x01 ; 1 |
|
|
811 |
40c: 61 f4 brne .+24 ; 0x426 <__vector_18+0xa2> |
|
|
812 |
{ |
|
|
813 |
//USART0_posli_retezec(RX0_buffer.obsah); |
|
|
814 |
strcpy(NMEA_retezec.obsah,RX0_buffer.obsah); // NMEA zprava se prekopiruje do NMEA_retezec, aby pri pozadavku na vycteni dat byla data v kuse a nenastal pripad, ze bude NMEA zprava teprve vycitana. |
|
|
815 |
40e: 80 e3 ldi r24, 0x30 ; 48 |
|
|
816 |
410: 92 e0 ldi r25, 0x02 ; 2 |
|
|
817 |
412: 68 e0 ldi r22, 0x08 ; 8 |
|
|
818 |
414: 71 e0 ldi r23, 0x01 ; 1 |
|
|
819 |
416: 0e 94 5c 02 call 0x4b8 ; 0x4b8 <strcpy> |
|
|
820 |
NMEA_retezec.zaplneno_bytu = RX0_buffer.zaplneno_bytu; |
|
|
821 |
41a: 80 91 fc 01 lds r24, 0x01FC |
|
|
822 |
41e: 80 93 24 03 sts 0x0324, r24 |
|
|
823 |
zacatek_zpravy = 0; |
|
|
824 |
422: 10 92 25 03 sts 0x0325, r1 |
|
|
825 |
} |
|
|
826 |
} |
|
|
827 |
426: ff 91 pop r31 |
|
|
828 |
428: ef 91 pop r30 |
|
|
829 |
42a: cf 91 pop r28 |
|
|
830 |
42c: bf 91 pop r27 |
|
|
831 |
42e: af 91 pop r26 |
|
|
832 |
430: 9f 91 pop r25 |
|
|
833 |
432: 8f 91 pop r24 |
|
|
834 |
434: 7f 91 pop r23 |
|
|
835 |
436: 6f 91 pop r22 |
|
|
836 |
438: 5f 91 pop r21 |
|
|
837 |
43a: 4f 91 pop r20 |
|
|
838 |
43c: 3f 91 pop r19 |
|
|
839 |
43e: 2f 91 pop r18 |
|
|
840 |
440: 0f 90 pop r0 |
|
|
841 |
442: 0f be out 0x3f, r0 ; 63 |
|
|
842 |
444: 0f 90 pop r0 |
|
|
843 |
446: 1f 90 pop r1 |
|
|
844 |
448: 18 95 reti |
|
|
845 |
|
|
|
846 |
0000044a <USART0_posli_znak>: |
|
|
847 |
* Vystup: Zadny |
|
|
848 |
************************************************************************/ |
|
|
849 |
void USART0_posli_znak( unsigned char data ) |
|
|
850 |
{ |
|
|
851 |
/* Wait for empty transmit buffer */ |
|
|
852 |
while ( !( UCSR0A & (1<<UDRE0)) ) |
|
|
853 |
44a: e0 ec ldi r30, 0xC0 ; 192 |
|
|
854 |
44c: f0 e0 ldi r31, 0x00 ; 0 |
|
|
855 |
44e: 90 81 ld r25, Z |
|
|
856 |
450: 95 ff sbrs r25, 5 |
|
|
857 |
452: fd cf rjmp .-6 ; 0x44e <USART0_posli_znak+0x4> |
|
|
858 |
; |
|
|
859 |
/* Put data into buffer, sends the data */ |
|
|
860 |
UDR0 = data; |
|
|
861 |
454: 80 93 c6 00 sts 0x00C6, r24 |
|
|
862 |
} |
|
|
863 |
458: 08 95 ret |
|
|
864 |
|
|
|
865 |
0000045a <USART_Init>: |
|
|
866 |
void USART_Init(void) |
|
|
867 |
{ |
|
|
868 |
unsigned int baud; |
|
|
869 |
baud = F_CPU/16/UART0_BAUD_RATE -1; |
|
|
870 |
/* Set baud rate */ |
|
|
871 |
UBRR0H = (unsigned char)(baud>>8); |
|
|
872 |
45a: 10 92 c5 00 sts 0x00C5, r1 |
|
|
873 |
UBRR0L = (unsigned char)baud; |
|
|
874 |
45e: 87 e6 ldi r24, 0x67 ; 103 |
|
|
875 |
460: 80 93 c4 00 sts 0x00C4, r24 |
|
|
876 |
/* Enable receiver and transmitter, enable interrupt after receiving a new byte */ |
|
|
877 |
UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0); |
|
|
878 |
464: 88 e9 ldi r24, 0x98 ; 152 |
|
|
879 |
466: 80 93 c1 00 sts 0x00C1, r24 |
|
|
880 |
/* Set frame format: 8data, 1stop bit */ |
|
|
881 |
UCSR0C = (3<<UCSZ00); |
|
|
882 |
46a: 86 e0 ldi r24, 0x06 ; 6 |
|
|
883 |
46c: 80 93 c2 00 sts 0x00C2, r24 |
|
|
884 |
|
|
|
885 |
USART0_posli_znak('A'); |
|
|
886 |
470: 81 e4 ldi r24, 0x41 ; 65 |
|
|
887 |
472: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
888 |
USART0_posli_znak('K'); |
|
|
889 |
476: 8b e4 ldi r24, 0x4B ; 75 |
|
|
890 |
478: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
891 |
USART0_posli_znak('\n'); |
|
|
892 |
47c: 8a e0 ldi r24, 0x0A ; 10 |
|
|
893 |
47e: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
894 |
USART0_posli_znak('\r'); |
|
|
895 |
482: 8d e0 ldi r24, 0x0D ; 13 |
|
|
896 |
484: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
897 |
//delay_ms(3000); // modulu se musi dat cas na vypocet baud rychlosti |
|
|
898 |
} |
|
|
899 |
488: 08 95 ret |
|
|
900 |
|
|
|
901 |
0000048a <USART0_posli_retezec>: |
|
|
902 |
* Ucel: Odesle postupne znak po znaku zadany retezec pres USART0 |
|
|
903 |
* Vstup: Retezec k odeslani |
|
|
904 |
* Vystup: Zadny |
|
|
905 |
************************************************************************/ |
|
|
906 |
void USART0_posli_retezec (const unsigned char *retezec ) |
|
|
907 |
{ |
|
|
908 |
48a: cf 93 push r28 |
|
|
909 |
48c: df 93 push r29 |
|
|
910 |
48e: ec 01 movw r28, r24 |
|
|
911 |
while (*retezec) |
|
|
912 |
490: 88 81 ld r24, Y |
|
|
913 |
492: 88 23 and r24, r24 |
|
|
914 |
494: 31 f0 breq .+12 ; 0x4a2 <USART0_posli_retezec+0x18> |
|
|
915 |
* Funkce: USART0_posli_retezec() |
|
|
916 |
* Ucel: Odesle postupne znak po znaku zadany retezec pres USART0 |
|
|
917 |
* Vstup: Retezec k odeslani |
|
|
918 |
* Vystup: Zadny |
|
|
919 |
************************************************************************/ |
|
|
920 |
void USART0_posli_retezec (const unsigned char *retezec ) |
|
|
921 |
496: 21 96 adiw r28, 0x01 ; 1 |
|
|
922 |
{ |
|
|
923 |
while (*retezec) |
|
|
924 |
USART0_posli_znak(*retezec++); |
|
|
925 |
498: 0e 94 25 02 call 0x44a ; 0x44a <USART0_posli_znak> |
|
|
926 |
* Vstup: Retezec k odeslani |
|
|
927 |
* Vystup: Zadny |
|
|
928 |
************************************************************************/ |
|
|
929 |
void USART0_posli_retezec (const unsigned char *retezec ) |
|
|
930 |
{ |
|
|
931 |
while (*retezec) |
|
|
932 |
49c: 89 91 ld r24, Y+ |
|
|
933 |
49e: 88 23 and r24, r24 |
|
|
934 |
4a0: d9 f7 brne .-10 ; 0x498 <USART0_posli_retezec+0xe> |
|
|
935 |
USART0_posli_znak(*retezec++); |
|
|
936 |
|
|
|
937 |
} |
|
|
938 |
4a2: df 91 pop r29 |
|
|
939 |
4a4: cf 91 pop r28 |
|
|
940 |
4a6: 08 95 ret |
|
|
941 |
|
|
|
942 |
000004a8 <USART0_prijmi_znak>: |
|
|
943 |
* Vystup: Prijaty znak |
|
|
944 |
************************************************************************/ |
|
|
945 |
unsigned char USART0_prijmi_znak( void ) |
|
|
946 |
{ |
|
|
947 |
/* Wait for data to be received */ |
|
|
948 |
while ( !(UCSR0A & (1<<RXC0)) ) |
|
|
949 |
4a8: e0 ec ldi r30, 0xC0 ; 192 |
|
|
950 |
4aa: f0 e0 ldi r31, 0x00 ; 0 |
|
|
951 |
4ac: 80 81 ld r24, Z |
|
|
952 |
4ae: 88 23 and r24, r24 |
|
|
953 |
4b0: ec f7 brge .-6 ; 0x4ac <USART0_prijmi_znak+0x4> |
|
|
954 |
; |
|
|
955 |
/* Get and return received data from buffer */ |
|
|
956 |
return UDR0; |
|
|
957 |
4b2: 80 91 c6 00 lds r24, 0x00C6 |
|
|
958 |
} |
|
|
959 |
4b6: 08 95 ret |
|
|
960 |
|
|
|
961 |
000004b8 <strcpy>: |
|
|
962 |
4b8: fb 01 movw r30, r22 |
|
|
963 |
4ba: dc 01 movw r26, r24 |
|
|
964 |
4bc: 01 90 ld r0, Z+ |
|
|
965 |
4be: 0d 92 st X+, r0 |
|
|
966 |
4c0: 00 20 and r0, r0 |
|
|
967 |
4c2: e1 f7 brne .-8 ; 0x4bc <strcpy+0x4> |
|
|
968 |
4c4: 08 95 ret |
|
|
969 |
|
|
|
970 |
000004c6 <strstr>: |
|
|
971 |
4c6: fb 01 movw r30, r22 |
|
|
972 |
4c8: 51 91 ld r21, Z+ |
|
|
973 |
4ca: 55 23 and r21, r21 |
|
|
974 |
4cc: a9 f0 breq .+42 ; 0x4f8 <strstr+0x32> |
|
|
975 |
4ce: bf 01 movw r22, r30 |
|
|
976 |
4d0: dc 01 movw r26, r24 |
|
|
977 |
4d2: 4d 91 ld r20, X+ |
|
|
978 |
4d4: 45 17 cp r20, r21 |
|
|
979 |
4d6: 41 11 cpse r20, r1 |
|
|
980 |
4d8: e1 f7 brne .-8 ; 0x4d2 <strstr+0xc> |
|
|
981 |
4da: 59 f4 brne .+22 ; 0x4f2 <strstr+0x2c> |
|
|
982 |
4dc: cd 01 movw r24, r26 |
|
|
983 |
4de: 01 90 ld r0, Z+ |
|
|
984 |
4e0: 00 20 and r0, r0 |
|
|
985 |
4e2: 49 f0 breq .+18 ; 0x4f6 <strstr+0x30> |
|
|
986 |
4e4: 4d 91 ld r20, X+ |
|
|
987 |
4e6: 40 15 cp r20, r0 |
|
|
988 |
4e8: 41 11 cpse r20, r1 |
|
|
989 |
4ea: c9 f3 breq .-14 ; 0x4de <strstr+0x18> |
|
|
990 |
4ec: fb 01 movw r30, r22 |
|
|
991 |
4ee: 41 11 cpse r20, r1 |
|
|
992 |
4f0: ef cf rjmp .-34 ; 0x4d0 <strstr+0xa> |
|
|
993 |
4f2: 81 e0 ldi r24, 0x01 ; 1 |
|
|
994 |
4f4: 90 e0 ldi r25, 0x00 ; 0 |
|
|
995 |
4f6: 01 97 sbiw r24, 0x01 ; 1 |
|
|
996 |
4f8: 08 95 ret |
|
|
997 |
|
|
|
998 |
000004fa <_exit>: |
|
|
999 |
4fa: f8 94 cli |
|
|
1000 |
|
|
|
1001 |
000004fc <__stop_program>: |
|
|
1002 |
4fc: ff cf rjmp .-2 ; 0x4fc <__stop_program> |