Balon_sonda.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000008  00800100  000004fe  00000592  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         000004fe  00000000  00000000  00000094  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          00000220  00800108  00800108  0000059a  2**0
                  ALLOC
  3 .stab         00000888  00000000  00000000  0000059c  2**2
                  CONTENTS, READONLY, DEBUGGING
  4 .stabstr      00000149  00000000  00000000  00000e24  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_aranges 000000e0  00000000  00000000  00000f70  2**3
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_info   000009b1  00000000  00000000  00001050  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_abbrev 000002bc  00000000  00000000  00001a01  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_line   000005e9  00000000  00000000  00001cbd  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_frame  00000238  00000000  00000000  000022a8  2**2
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    0000026a  00000000  00000000  000024e0  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_loc    00000403  00000000  00000000  0000274a  2**0
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <__vectors>:
   0:   0c 94 34 00     jmp     0x68    ; 0x68 <__ctors_end>
   4:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
   8:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
   c:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  10:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  14:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  18:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  1c:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  20:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  24:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  28:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  2c:   0c 94 ab 00     jmp     0x156   ; 0x156 <__vector_11>
  30:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  34:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  38:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  3c:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  40:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  44:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  48:   0c 94 c2 01     jmp     0x384   ; 0x384 <__vector_18>
  4c:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  50:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  54:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  58:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  5c:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  60:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  64:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>

00000068 <__ctors_end>:
  68:   11 24           eor     r1, r1
  6a:   1f be           out     0x3f, r1        ; 63
  6c:   cf ef           ldi     r28, 0xFF       ; 255
  6e:   d8 e0           ldi     r29, 0x08       ; 8
  70:   de bf           out     0x3e, r29       ; 62
  72:   cd bf           out     0x3d, r28       ; 61

00000074 <__do_copy_data>:
  74:   11 e0           ldi     r17, 0x01       ; 1
  76:   a0 e0           ldi     r26, 0x00       ; 0
  78:   b1 e0           ldi     r27, 0x01       ; 1
  7a:   ee ef           ldi     r30, 0xFE       ; 254
  7c:   f4 e0           ldi     r31, 0x04       ; 4
  7e:   02 c0           rjmp    .+4             ; 0x84 <__do_copy_data+0x10>
  80:   05 90           lpm     r0, Z+
  82:   0d 92           st      X+, r0
  84:   a8 30           cpi     r26, 0x08       ; 8
  86:   b1 07           cpc     r27, r17
  88:   d9 f7           brne    .-10            ; 0x80 <__do_copy_data+0xc>

0000008a <__do_clear_bss>:
  8a:   13 e0           ldi     r17, 0x03       ; 3
  8c:   a8 e0           ldi     r26, 0x08       ; 8
  8e:   b1 e0           ldi     r27, 0x01       ; 1
  90:   01 c0           rjmp    .+2             ; 0x94 <.do_clear_bss_start>

00000092 <.do_clear_bss_loop>:
  92:   1d 92           st      X+, r1

00000094 <.do_clear_bss_start>:
  94:   a8 32           cpi     r26, 0x28       ; 40
  96:   b1 07           cpc     r27, r17
  98:   e1 f7           brne    .-8             ; 0x92 <.do_clear_bss_loop>
  9a:   0e 94 53 00     call    0xa6    ; 0xa6 <main>
  9e:   0c 94 7d 02     jmp     0x4fa   ; 0x4fa <_exit>

000000a2 <__bad_interrupt>:
  a2:   0c 94 00 00     jmp     0        ; 0x0 <__vectors>

000000a6 <main>:
#include <avr/interrupt.h>

int main(void)
{
        //LEDs_init();
        USART_Init();
  a6:   0e 94 2d 02     call    0x45a   ; 0x45a <USART_Init>
        Timer1_init();
  aa:   0e 94 ea 00     call    0x1d4   ; 0x1d4 <Timer1_init>
        sei();
  ae:   78 94           sei

        pocet_prubehu_casovace = PERIODA_VYCITANI;
  b0:   81 e0           ldi     r24, 0x01       ; 1
  b2:   80 93 26 03     sts     0x0326, r24
        
        while(1)
        {
                if (pocet_prubehu_casovace == 0)
                {
                        pocet_prubehu_casovace = PERIODA_VYCITANI;
  b6:   c1 e0           ldi     r28, 0x01       ; 1
                        dekoduj_zpravu_GPS();
                        if(Status_GPS == '1')
                        {
                                USART0_posli_retezec(UTC_time);
  b8:   08 e0           ldi     r16, 0x08       ; 8
  ba:   12 e0           ldi     r17, 0x02       ; 2
                                USART0_posli_znak('\n');
                                USART0_posli_znak('\r');
                                USART0_posli_znak(Status_GPS);
                                USART0_posli_znak('\n');
                                USART0_posli_znak('\r');
                                USART0_posli_retezec(Latitude);
  bc:   0f 2e           mov     r0, r31
  be:   f5 e1           ldi     r31, 0x15       ; 21
  c0:   ef 2e           mov     r14, r31
  c2:   f2 e0           ldi     r31, 0x02       ; 2
  c4:   ff 2e           mov     r15, r31
  c6:   f0 2d           mov     r31, r0
                                USART0_posli_znak('\n');
                                USART0_posli_znak('\r');
                                USART0_posli_retezec(Longitude);
  c8:   0f 2e           mov     r0, r31
  ca:   f2 e2           ldi     r31, 0x22       ; 34
  cc:   cf 2e           mov     r12, r31
  ce:   f2 e0           ldi     r31, 0x02       ; 2
  d0:   df 2e           mov     r13, r31
  d2:   f0 2d           mov     r31, r0
                                USART0_posli_znak('\n');
                                USART0_posli_znak('\r');
                                USART0_posli_retezec(Altitude);
  d4:   0f 2e           mov     r0, r31
  d6:   fe ef           ldi     r31, 0xFE       ; 254
  d8:   af 2e           mov     r10, r31
  da:   f1 e0           ldi     r31, 0x01       ; 1
  dc:   bf 2e           mov     r11, r31
  de:   f0 2d           mov     r31, r0

        pocet_prubehu_casovace = PERIODA_VYCITANI;
        
        while(1)
        {
                if (pocet_prubehu_casovace == 0)
  e0:   80 91 26 03     lds     r24, 0x0326
  e4:   88 23           and     r24, r24
  e6:   e1 f7           brne    .-8             ; 0xe0 <main+0x3a>
                {
                        pocet_prubehu_casovace = PERIODA_VYCITANI;
  e8:   c0 93 26 03     sts     0x0326, r28
                        dekoduj_zpravu_GPS();
  ec:   0e 94 05 01     call    0x20a   ; 0x20a <dekoduj_zpravu_GPS>
                        if(Status_GPS == '1')
  f0:   80 91 27 03     lds     r24, 0x0327
  f4:   81 33           cpi     r24, 0x31       ; 49
  f6:   a1 f7           brne    .-24            ; 0xe0 <main+0x3a>
                        {
                                USART0_posli_retezec(UTC_time);
  f8:   c8 01           movw    r24, r16
  fa:   0e 94 45 02     call    0x48a   ; 0x48a <USART0_posli_retezec>
                                USART0_posli_znak('\n');
  fe:   8a e0           ldi     r24, 0x0A       ; 10
 100:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                                USART0_posli_znak('\r');
 104:   8d e0           ldi     r24, 0x0D       ; 13
 106:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                                USART0_posli_znak(Status_GPS);
 10a:   80 91 27 03     lds     r24, 0x0327
 10e:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                                USART0_posli_znak('\n');
 112:   8a e0           ldi     r24, 0x0A       ; 10
 114:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                                USART0_posli_znak('\r');
 118:   8d e0           ldi     r24, 0x0D       ; 13
 11a:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                                USART0_posli_retezec(Latitude);
 11e:   c7 01           movw    r24, r14
 120:   0e 94 45 02     call    0x48a   ; 0x48a <USART0_posli_retezec>
                                USART0_posli_znak('\n');
 124:   8a e0           ldi     r24, 0x0A       ; 10
 126:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                                USART0_posli_znak('\r');
 12a:   8d e0           ldi     r24, 0x0D       ; 13
 12c:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                                USART0_posli_retezec(Longitude);
 130:   c6 01           movw    r24, r12
 132:   0e 94 45 02     call    0x48a   ; 0x48a <USART0_posli_retezec>
                                USART0_posli_znak('\n');
 136:   8a e0           ldi     r24, 0x0A       ; 10
 138:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                                USART0_posli_znak('\r');
 13c:   8d e0           ldi     r24, 0x0D       ; 13
 13e:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                                USART0_posli_retezec(Altitude);
 142:   c5 01           movw    r24, r10
 144:   0e 94 45 02     call    0x48a   ; 0x48a <USART0_posli_retezec>
                                USART0_posli_znak('\n');
 148:   8a e0           ldi     r24, 0x0A       ; 10
 14a:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                                USART0_posli_znak('\r');
 14e:   8d e0           ldi     r24, 0x0D       ; 13
 150:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
 154:   c5 cf           rjmp    .-118           ; 0xe0 <main+0x3a>

00000156 <__vector_11>:
        }

}

SIGNAL (TIMER1_COMPA_vect)
{
 156:   1f 92           push    r1
 158:   0f 92           push    r0
 15a:   0f b6           in      r0, 0x3f        ; 63
 15c:   0f 92           push    r0
 15e:   11 24           eor     r1, r1
 160:   2f 93           push    r18
 162:   3f 93           push    r19
 164:   4f 93           push    r20
 166:   5f 93           push    r21
 168:   6f 93           push    r22
 16a:   7f 93           push    r23
 16c:   8f 93           push    r24
 16e:   9f 93           push    r25
 170:   af 93           push    r26
 172:   bf 93           push    r27
 174:   ef 93           push    r30
 176:   ff 93           push    r31
        OCR1AH = 0xF4;          // Start value in counter ~4s
 178:   84 ef           ldi     r24, 0xF4       ; 244
 17a:   80 93 89 00     sts     0x0089, r24
        OCR1AL = 0x24;
 17e:   84 e2           ldi     r24, 0x24       ; 36
 180:   80 93 88 00     sts     0x0088, r24
        USART0_posli_znak('T');
 184:   84 e5           ldi     r24, 0x54       ; 84
 186:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
        if (pocet_prubehu_casovace > 0)
 18a:   80 91 26 03     lds     r24, 0x0326
 18e:   88 23           and     r24, r24
 190:   29 f0           breq    .+10            ; 0x19c <__vector_11+0x46>
        {
                pocet_prubehu_casovace--;
 192:   80 91 26 03     lds     r24, 0x0326
 196:   81 50           subi    r24, 0x01       ; 1
 198:   80 93 26 03     sts     0x0326, r24
        }



 19c:   ff 91           pop     r31
 19e:   ef 91           pop     r30
 1a0:   bf 91           pop     r27
 1a2:   af 91           pop     r26
 1a4:   9f 91           pop     r25
 1a6:   8f 91           pop     r24
 1a8:   7f 91           pop     r23
 1aa:   6f 91           pop     r22
 1ac:   5f 91           pop     r21
 1ae:   4f 91           pop     r20
 1b0:   3f 91           pop     r19
 1b2:   2f 91           pop     r18
 1b4:   0f 90           pop     r0
 1b6:   0f be           out     0x3f, r0        ; 63
 1b8:   0f 90           pop     r0
 1ba:   1f 90           pop     r1
 1bc:   18 95           reti

000001be <LEDs_init>:
* Vstup: Zadny
* Vystup:  Zadny                                                                  
************************************************************************/
volatile void LEDs_init(void)
{
        DDRB = (1<<DDB0)|(1<<DDB1);
 1be:   83 e0           ldi     r24, 0x03       ; 3
 1c0:   84 b9           out     0x04, r24       ; 4
}
 1c2:   08 95           ret

000001c4 <LED_horni_on>:
* Vstup: Zadny
* Vystup:  Zadny                                                                  
************************************************************************/
volatile void LED_horni_on(void)
{
        PORTB |= (1<<PB0);
 1c4:   28 9a           sbi     0x05, 0 ; 5
}
 1c6:   08 95           ret

000001c8 <LED_horni_off>:
* Vstup: Zadny
* Vystup:  Zadny                                                                  
************************************************************************/
volatile void LED_horni_off(void)
{
        PORTB &= ~(1<<PB0);
 1c8:   28 98           cbi     0x05, 0 ; 5
}
 1ca:   08 95           ret

000001cc <LED_spodni_on>:
* Vstup: Zadny
* Vystup:  Zadny                                                                  
************************************************************************/
volatile void LED_spodni_on(void)
{
        PORTB |= (1<<PB1);
 1cc:   29 9a           sbi     0x05, 1 ; 5
}
 1ce:   08 95           ret

000001d0 <LED_spodni_off>:
* Vstup: Zadny
* Vystup:  Zadny                                                                  
************************************************************************/
volatile void LED_spodni_off(void)
{
        PORTB &= ~(1<<PB1);
 1d0:   29 98           cbi     0x05, 1 ; 5
}
 1d2:   08 95           ret

000001d4 <Timer1_init>:

#include <avr/io.h>

void Timer1_init(void)
{
                TCCR1B |= 1<<WGM12;             // T1 in CTC mode
 1d4:   e1 e8           ldi     r30, 0x81       ; 129
 1d6:   f0 e0           ldi     r31, 0x00       ; 0
 1d8:   80 81           ld      r24, Z
 1da:   88 60           ori     r24, 0x08       ; 8
 1dc:   80 83           st      Z, r24
                TCCR1B |= 1<<CS12;              // f_osc/1024
 1de:   80 81           ld      r24, Z
 1e0:   84 60           ori     r24, 0x04       ; 4
 1e2:   80 83           st      Z, r24
                TCCR1B |= 1<<CS10;              // f_osc/1024
 1e4:   80 81           ld      r24, Z
 1e6:   81 60           ori     r24, 0x01       ; 1
 1e8:   80 83           st      Z, r24

                OCR1AH = 0xF4;          // Start value in counter  ~4s          
 1ea:   84 ef           ldi     r24, 0xF4       ; 244
 1ec:   80 93 89 00     sts     0x0089, r24
                OCR1AL = 0x24;
 1f0:   84 e2           ldi     r24, 0x24       ; 36
 1f2:   80 93 88 00     sts     0x0088, r24

                TCNT1H = 0;                     // Start value in counter               
 1f6:   10 92 85 00     sts     0x0085, r1
                TCNT1L = 0;
 1fa:   10 92 84 00     sts     0x0084, r1

                
                TIMSK1 |= 1<<OCIE1A;    // enable interrupt from T1 when compare match
 1fe:   ef e6           ldi     r30, 0x6F       ; 111
 200:   f0 e0           ldi     r31, 0x00       ; 0
 202:   80 81           ld      r24, Z
 204:   82 60           ori     r24, 0x02       ; 2
 206:   80 83           st      Z, r24
}
 208:   08 95           ret

0000020a <dekoduj_zpravu_GPS>:
* Ucel:  Z RX0_buffer vytahne informace o soucasne poloze, je tam ulozena cela veta RMC
* Vstup: Zadny
* Vystup:  Zadny                                                                      
************************************************************************/
void dekoduj_zpravu_GPS (void)
{
 20a:   2f 92           push    r2
 20c:   3f 92           push    r3
 20e:   4f 92           push    r4
 210:   5f 92           push    r5
 212:   6f 92           push    r6
 214:   7f 92           push    r7
 216:   8f 92           push    r8
 218:   9f 92           push    r9
 21a:   bf 92           push    r11
 21c:   cf 92           push    r12
 21e:   df 92           push    r13
 220:   ef 92           push    r14
 222:   ff 92           push    r15
 224:   0f 93           push    r16
 226:   1f 93           push    r17
 228:   cf 93           push    r28
 22a:   df 93           push    r29
        cli();  
 22c:   f8 94           cli
        
        short i, j = 0, k = 0, l = 0;
        short pocet_carek = 0;
        for ( i = 0; i < NMEA_retezec.zaplneno_bytu; i++)
 22e:   c0 90 24 03     lds     r12, 0x0324
 232:   dd 24           eor     r13, r13
 234:   1c 14           cp      r1, r12
 236:   1d 04           cpc     r1, r13
 238:   0c f0           brlt    .+2             ; 0x23c <dekoduj_zpravu_GPS+0x32>
 23a:   84 c0           rjmp    .+264           ; 0x344 <dekoduj_zpravu_GPS+0x13a>
 23c:   b0 90 27 03     lds     r11, 0x0327
 240:   a0 e3           ldi     r26, 0x30       ; 48
 242:   b2 e0           ldi     r27, 0x02       ; 2
void dekoduj_zpravu_GPS (void)
{
        cli();  
        
        short i, j = 0, k = 0, l = 0;
        short pocet_carek = 0;
 244:   20 e0           ldi     r18, 0x00       ; 0
 246:   30 e0           ldi     r19, 0x00       ; 0
************************************************************************/
void dekoduj_zpravu_GPS (void)
{
        cli();  
        
        short i, j = 0, k = 0, l = 0;
 248:   00 e0           ldi     r16, 0x00       ; 0
 24a:   10 e0           ldi     r17, 0x00       ; 0
 24c:   ee 24           eor     r14, r14
 24e:   ff 24           eor     r15, r15
 250:   c0 e0           ldi     r28, 0x00       ; 0
 252:   d0 e0           ldi     r29, 0x00       ; 0
        short pocet_carek = 0;
        for ( i = 0; i < NMEA_retezec.zaplneno_bytu; i++)
 254:   60 e0           ldi     r22, 0x00       ; 0
 256:   70 e0           ldi     r23, 0x00       ; 0
                        k++;
                }
                if (pocet_carek == 4 || pocet_carek == 5)
                {

                        Longitude[j] = NMEA_retezec.obsah[i];
 258:   0f 2e           mov     r0, r31
 25a:   f2 e2           ldi     r31, 0x22       ; 34
 25c:   6f 2e           mov     r6, r31
 25e:   f2 e0           ldi     r31, 0x02       ; 2
 260:   7f 2e           mov     r7, r31
 262:   f0 2d           mov     r31, r0
                        UTC_time[l] = NMEA_retezec.obsah[i];
                        l++;
                }
                if (pocet_carek == 2 || pocet_carek == 3)
                {
                        Latitude[k] = NMEA_retezec.obsah[i];
 264:   0f 2e           mov     r0, r31
 266:   f5 e1           ldi     r31, 0x15       ; 21
 268:   4f 2e           mov     r4, r31
 26a:   f2 e0           ldi     r31, 0x02       ; 2
 26c:   5f 2e           mov     r5, r31
 26e:   f0 2d           mov     r31, r0
        short pocet_carek = 0;
        for ( i = 0; i < NMEA_retezec.zaplneno_bytu; i++)
        {
                if (pocet_carek == 1)
                {
                        UTC_time[l] = NMEA_retezec.obsah[i];
 270:   0f 2e           mov     r0, r31
 272:   f8 e0           ldi     r31, 0x08       ; 8
 274:   8f 2e           mov     r8, r31
 276:   f2 e0           ldi     r31, 0x02       ; 2
 278:   9f 2e           mov     r9, r31
 27a:   f0 2d           mov     r31, r0
                        j = 0;
                }
                
                if (pocet_carek == 9)
                {
                        Altitude[j] = NMEA_retezec.obsah[i];
 27c:   0f 2e           mov     r0, r31
 27e:   fe ef           ldi     r31, 0xFE       ; 254
 280:   2f 2e           mov     r2, r31
 282:   f1 e0           ldi     r31, 0x01       ; 1
 284:   3f 2e           mov     r3, r31
 286:   f0 2d           mov     r31, r0
        
        short i, j = 0, k = 0, l = 0;
        short pocet_carek = 0;
        for ( i = 0; i < NMEA_retezec.zaplneno_bytu; i++)
        {
                if (pocet_carek == 1)
 288:   21 30           cpi     r18, 0x01       ; 1
 28a:   31 05           cpc     r19, r1
 28c:   41 f4           brne    .+16            ; 0x29e <dekoduj_zpravu_GPS+0x94>
                {
                        UTC_time[l] = NMEA_retezec.obsah[i];
 28e:   f4 01           movw    r30, r8
 290:   e0 0f           add     r30, r16
 292:   f1 1f           adc     r31, r17
 294:   8c 91           ld      r24, X
 296:   80 83           st      Z, r24
                        l++;
 298:   0f 5f           subi    r16, 0xFF       ; 255
 29a:   1f 4f           sbci    r17, 0xFF       ; 255
 29c:   19 c0           rjmp    .+50            ; 0x2d0 <dekoduj_zpravu_GPS+0xc6>
                }
                if (pocet_carek == 2 || pocet_carek == 3)
 29e:   a9 01           movw    r20, r18
 2a0:   c9 01           movw    r24, r18
 2a2:   02 97           sbiw    r24, 0x02       ; 2
 2a4:   82 30           cpi     r24, 0x02       ; 2
 2a6:   91 05           cpc     r25, r1
 2a8:   40 f4           brcc    .+16            ; 0x2ba <dekoduj_zpravu_GPS+0xb0>
                {
                        Latitude[k] = NMEA_retezec.obsah[i];
 2aa:   f2 01           movw    r30, r4
 2ac:   ee 0d           add     r30, r14
 2ae:   ff 1d           adc     r31, r15
 2b0:   8c 91           ld      r24, X
 2b2:   80 83           st      Z, r24
                        k++;
 2b4:   08 94           sec
 2b6:   e1 1c           adc     r14, r1
 2b8:   f1 1c           adc     r15, r1
                }
                if (pocet_carek == 4 || pocet_carek == 5)
 2ba:   ca 01           movw    r24, r20
 2bc:   04 97           sbiw    r24, 0x04       ; 4
 2be:   82 30           cpi     r24, 0x02       ; 2
 2c0:   91 05           cpc     r25, r1
 2c2:   30 f4           brcc    .+12            ; 0x2d0 <dekoduj_zpravu_GPS+0xc6>
                {

                        Longitude[j] = NMEA_retezec.obsah[i];
 2c4:   f3 01           movw    r30, r6
 2c6:   ec 0f           add     r30, r28
 2c8:   fd 1f           adc     r31, r29
 2ca:   8c 91           ld      r24, X
 2cc:   80 83           st      Z, r24
                        j++;
 2ce:   21 96           adiw    r28, 0x01       ; 1
                }
                if (pocet_carek == 6)
 2d0:   26 30           cpi     r18, 0x06       ; 6
 2d2:   31 05           cpc     r19, r1
 2d4:   c1 f4           brne    .+48            ; 0x306 <dekoduj_zpravu_GPS+0xfc>
                {
                        UTC_time[l-1] = 0;
 2d6:   c4 01           movw    r24, r8
 2d8:   80 0f           add     r24, r16
 2da:   91 1f           adc     r25, r17
 2dc:   01 97           sbiw    r24, 0x01       ; 1
 2de:   fc 01           movw    r30, r24
 2e0:   10 82           st      Z, r1
                        Latitude[k-1] = 0;
 2e2:   c2 01           movw    r24, r4
 2e4:   8e 0d           add     r24, r14
 2e6:   9f 1d           adc     r25, r15
 2e8:   01 97           sbiw    r24, 0x01       ; 1
 2ea:   fc 01           movw    r30, r24
 2ec:   10 82           st      Z, r1
                        Longitude[j-1] = 0;
 2ee:   c3 01           movw    r24, r6
 2f0:   8c 0f           add     r24, r28
 2f2:   9d 1f           adc     r25, r29
 2f4:   01 97           sbiw    r24, 0x01       ; 1
 2f6:   fc 01           movw    r30, r24
 2f8:   10 82           st      Z, r1
* Funkce: dekoduj_zpravu_GPS
* Ucel:  Z RX0_buffer vytahne informace o soucasne poloze, je tam ulozena cela veta RMC
* Vstup: Zadny
* Vystup:  Zadny                                                                      
************************************************************************/
void dekoduj_zpravu_GPS (void)
 2fa:   fd 01           movw    r30, r26
 2fc:   31 97           sbiw    r30, 0x01       ; 1
                {
                        UTC_time[l-1] = 0;
                        Latitude[k-1] = 0;
                        Longitude[j-1] = 0;

                        Status_GPS = NMEA_retezec.obsah[i-1];
 2fe:   b0 80           ld      r11, Z
                        j = 0;
 300:   c0 e0           ldi     r28, 0x00       ; 0
 302:   d0 e0           ldi     r29, 0x00       ; 0
 304:   09 c0           rjmp    .+18            ; 0x318 <dekoduj_zpravu_GPS+0x10e>
                }
                
                if (pocet_carek == 9)
 306:   29 30           cpi     r18, 0x09       ; 9
 308:   31 05           cpc     r19, r1
 30a:   31 f4           brne    .+12            ; 0x318 <dekoduj_zpravu_GPS+0x10e>
                {
                        Altitude[j] = NMEA_retezec.obsah[i];
 30c:   f1 01           movw    r30, r2
 30e:   ec 0f           add     r30, r28
 310:   fd 1f           adc     r31, r29
 312:   8c 91           ld      r24, X
 314:   80 83           st      Z, r24
                        j++;
 316:   21 96           adiw    r28, 0x01       ; 1
                }
                
                if (NMEA_retezec.obsah[i] == ',')
 318:   8d 91           ld      r24, X+
 31a:   8c 32           cpi     r24, 0x2C       ; 44
 31c:   11 f4           brne    .+4             ; 0x322 <dekoduj_zpravu_GPS+0x118>
                {
                        pocet_carek++;
 31e:   2f 5f           subi    r18, 0xFF       ; 255
 320:   3f 4f           sbci    r19, 0xFF       ; 255
                }
                if (pocet_carek >9)
 322:   2a 30           cpi     r18, 0x0A       ; 10
 324:   31 05           cpc     r19, r1
 326:   34 f0           brlt    .+12            ; 0x334 <dekoduj_zpravu_GPS+0x12a>
 328:   b0 92 27 03     sts     0x0327, r11
                {
                        Altitude[j-1] = 0; // konec Stringu
 32c:   c3 50           subi    r28, 0x03       ; 3
 32e:   de 4f           sbci    r29, 0xFE       ; 254
 330:   18 82           st      Y, r1
                        break;  // nema vyznam dal zapisovat, potrebne je zapsano v Altitude
 332:   08 c0           rjmp    .+16            ; 0x344 <dekoduj_zpravu_GPS+0x13a>
{
        cli();  
        
        short i, j = 0, k = 0, l = 0;
        short pocet_carek = 0;
        for ( i = 0; i < NMEA_retezec.zaplneno_bytu; i++)
 334:   6f 5f           subi    r22, 0xFF       ; 255
 336:   7f 4f           sbci    r23, 0xFF       ; 255
 338:   6c 15           cp      r22, r12
 33a:   7d 05           cpc     r23, r13
 33c:   0c f4           brge    .+2             ; 0x340 <dekoduj_zpravu_GPS+0x136>
 33e:   a4 cf           rjmp    .-184           ; 0x288 <dekoduj_zpravu_GPS+0x7e>
 340:   b0 92 27 03     sts     0x0327, r11
                        Altitude[j-1] = 0; // konec Stringu
                        break;  // nema vyznam dal zapisovat, potrebne je zapsano v Altitude
                }
        }
        
        sei();
 344:   78 94           sei
}
 346:   df 91           pop     r29
 348:   cf 91           pop     r28
 34a:   1f 91           pop     r17
 34c:   0f 91           pop     r16
 34e:   ff 90           pop     r15
 350:   ef 90           pop     r14
 352:   df 90           pop     r13
 354:   cf 90           pop     r12
 356:   bf 90           pop     r11
 358:   9f 90           pop     r9
 35a:   8f 90           pop     r8
 35c:   7f 90           pop     r7
 35e:   6f 90           pop     r6
 360:   5f 90           pop     r5
 362:   4f 90           pop     r4
 364:   3f 90           pop     r3
 366:   2f 90           pop     r2
 368:   08 95           ret

0000036a <USART0_smaz_buffer>:
* Vstup: Jaky buffer ma smazat (pro USART 0 nebo 1)
* Vystup:  Zadny                                                                      
************************************************************************/
void USART0_smaz_buffer (void)
{
        cli();
 36a:   f8 94           cli
 36c:   e8 e0           ldi     r30, 0x08       ; 8
 36e:   f1 e0           ldi     r31, 0x01       ; 1
* Funkce: USART0_smaz_buffer
* Ucel:  Smaze (zaplni nulami) prijimaci buffer
* Vstup: Jaky buffer ma smazat (pro USART 0 nebo 1)
* Vystup:  Zadny                                                                      
************************************************************************/
void USART0_smaz_buffer (void)
 370:   8d ef           ldi     r24, 0xFD       ; 253
 372:   91 e0           ldi     r25, 0x01       ; 1
        cli();
        unsigned char i;

        for (i=0; i <= VELIKOST_PRIJIMACIHO_BUFFERU;i++) // maze se cely buffer pro jistotu
        {
                RX0_buffer.obsah[i] = 0;
 374:   11 92           st      Z+, r1
void USART0_smaz_buffer (void)
{
        cli();
        unsigned char i;

        for (i=0; i <= VELIKOST_PRIJIMACIHO_BUFFERU;i++) // maze se cely buffer pro jistotu
 376:   e8 17           cp      r30, r24
 378:   f9 07           cpc     r31, r25
 37a:   e1 f7           brne    .-8             ; 0x374 <USART0_smaz_buffer+0xa>
        {
                RX0_buffer.obsah[i] = 0;
        }
        RX0_buffer.zaplneno_bytu = 0;
 37c:   10 92 fc 01     sts     0x01FC, r1


        sei();
 380:   78 94           sei
}
 382:   08 95           ret

00000384 <__vector_18>:
* Ucel:  Funkce se vola pri prijmuti znaku od USART0
* Vstup: Zdroj preruseni
* Vystup:  Zadny                                                                      
************************************************************************/
SIGNAL (USART_RX_vect)
{
 384:   1f 92           push    r1
 386:   0f 92           push    r0
 388:   0f b6           in      r0, 0x3f        ; 63
 38a:   0f 92           push    r0
 38c:   11 24           eor     r1, r1
 38e:   2f 93           push    r18
 390:   3f 93           push    r19
 392:   4f 93           push    r20
 394:   5f 93           push    r21
 396:   6f 93           push    r22
 398:   7f 93           push    r23
 39a:   8f 93           push    r24
 39c:   9f 93           push    r25
 39e:   af 93           push    r26
 3a0:   bf 93           push    r27
 3a2:   cf 93           push    r28
 3a4:   ef 93           push    r30
 3a6:   ff 93           push    r31
        char znak = UDR0;
 3a8:   c0 91 c6 00     lds     r28, 0x00C6
   if (RX0_buffer.zaplneno_bytu < VELIKOST_PRIJIMACIHO_BUFFERU-1)
 3ac:   80 91 fc 01     lds     r24, 0x01FC
 3b0:   83 3f           cpi     r24, 0xF3       ; 243
 3b2:   50 f4           brcc    .+20            ; 0x3c8 <__vector_18+0x44>
   {
           RX0_buffer.obsah[RX0_buffer.zaplneno_bytu] = znak;
 3b4:   e8 e0           ldi     r30, 0x08       ; 8
 3b6:   f1 e0           ldi     r31, 0x01       ; 1
 3b8:   e8 0f           add     r30, r24
 3ba:   f1 1d           adc     r31, r1
 3bc:   c0 83           st      Z, r28
           RX0_buffer.obsah[RX0_buffer.zaplneno_bytu+1] = 0; // konec stringu
 3be:   11 82           std     Z+1, r1 ; 0x01
           RX0_buffer.zaplneno_bytu++;
 3c0:   8f 5f           subi    r24, 0xFF       ; 255
 3c2:   80 93 fc 01     sts     0x01FC, r24
 3c6:   0c c0           rjmp    .+24            ; 0x3e0 <__vector_18+0x5c>
   } 
   else
   {
           USART0_smaz_buffer();
 3c8:   0e 94 b5 01     call    0x36a   ; 0x36a <USART0_smaz_buffer>
           RX0_buffer.obsah[RX0_buffer.zaplneno_bytu] = znak;
 3cc:   80 91 fc 01     lds     r24, 0x01FC
 3d0:   e8 e0           ldi     r30, 0x08       ; 8
 3d2:   f1 e0           ldi     r31, 0x01       ; 1
 3d4:   e8 0f           add     r30, r24
 3d6:   f1 1d           adc     r31, r1
 3d8:   c0 83           st      Z, r28
           RX0_buffer.zaplneno_bytu++;   
 3da:   8f 5f           subi    r24, 0xFF       ; 255
 3dc:   80 93 fc 01     sts     0x01FC, r24
        }
        
        if (zacatek_zpravy != 1 && strstr(RX0_buffer.obsah,"$GPGGA") != 0)
 3e0:   80 91 25 03     lds     r24, 0x0325
 3e4:   81 30           cpi     r24, 0x01       ; 1
 3e6:   69 f0           breq    .+26            ; 0x402 <__vector_18+0x7e>
 3e8:   88 e0           ldi     r24, 0x08       ; 8
 3ea:   91 e0           ldi     r25, 0x01       ; 1
 3ec:   60 e0           ldi     r22, 0x00       ; 0
 3ee:   71 e0           ldi     r23, 0x01       ; 1
 3f0:   0e 94 63 02     call    0x4c6   ; 0x4c6 <strstr>
 3f4:   00 97           sbiw    r24, 0x00       ; 0
 3f6:   29 f0           breq    .+10            ; 0x402 <__vector_18+0x7e>
        {
                zacatek_zpravy = 1;
 3f8:   81 e0           ldi     r24, 0x01       ; 1
 3fa:   80 93 25 03     sts     0x0325, r24
                USART0_smaz_buffer(); // aby se zprava ukladala od zacatku bufferu
 3fe:   0e 94 b5 01     call    0x36a   ; 0x36a <USART0_smaz_buffer>
        }

        if (znak == '*' && zacatek_zpravy == 1) // cela zprava je prijata
 402:   ca 32           cpi     r28, 0x2A       ; 42
 404:   81 f4           brne    .+32            ; 0x426 <__vector_18+0xa2>
 406:   80 91 25 03     lds     r24, 0x0325
 40a:   81 30           cpi     r24, 0x01       ; 1
 40c:   61 f4           brne    .+24            ; 0x426 <__vector_18+0xa2>
        {               
                //USART0_posli_retezec(RX0_buffer.obsah);
                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.
 40e:   80 e3           ldi     r24, 0x30       ; 48
 410:   92 e0           ldi     r25, 0x02       ; 2
 412:   68 e0           ldi     r22, 0x08       ; 8
 414:   71 e0           ldi     r23, 0x01       ; 1
 416:   0e 94 5c 02     call    0x4b8   ; 0x4b8 <strcpy>
                NMEA_retezec.zaplneno_bytu = RX0_buffer.zaplneno_bytu;
 41a:   80 91 fc 01     lds     r24, 0x01FC
 41e:   80 93 24 03     sts     0x0324, r24
                zacatek_zpravy = 0;
 422:   10 92 25 03     sts     0x0325, r1
        }               
} 
 426:   ff 91           pop     r31
 428:   ef 91           pop     r30
 42a:   cf 91           pop     r28
 42c:   bf 91           pop     r27
 42e:   af 91           pop     r26
 430:   9f 91           pop     r25
 432:   8f 91           pop     r24
 434:   7f 91           pop     r23
 436:   6f 91           pop     r22
 438:   5f 91           pop     r21
 43a:   4f 91           pop     r20
 43c:   3f 91           pop     r19
 43e:   2f 91           pop     r18
 440:   0f 90           pop     r0
 442:   0f be           out     0x3f, r0        ; 63
 444:   0f 90           pop     r0
 446:   1f 90           pop     r1
 448:   18 95           reti

0000044a <USART0_posli_znak>:
* Vystup: Zadny                                                                      
************************************************************************/
void USART0_posli_znak( unsigned char data )
{
        /* Wait for empty transmit buffer */
        while ( !( UCSR0A & (1<<UDRE0)) )
 44a:   e0 ec           ldi     r30, 0xC0       ; 192
 44c:   f0 e0           ldi     r31, 0x00       ; 0
 44e:   90 81           ld      r25, Z
 450:   95 ff           sbrs    r25, 5
 452:   fd cf           rjmp    .-6             ; 0x44e <USART0_posli_znak+0x4>
        ;
        /* Put data into buffer, sends the data */
        UDR0 = data;
 454:   80 93 c6 00     sts     0x00C6, r24
}
 458:   08 95           ret

0000045a <USART_Init>:
void USART_Init(void)
{
        unsigned int baud;
        baud = F_CPU/16/UART0_BAUD_RATE -1;
        /* Set baud rate */
        UBRR0H = (unsigned char)(baud>>8);
 45a:   10 92 c5 00     sts     0x00C5, r1
        UBRR0L = (unsigned char)baud;
 45e:   87 e6           ldi     r24, 0x67       ; 103
 460:   80 93 c4 00     sts     0x00C4, r24
        /* Enable receiver and transmitter, enable interrupt after receiving a new byte */
        UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0);
 464:   88 e9           ldi     r24, 0x98       ; 152
 466:   80 93 c1 00     sts     0x00C1, r24
        /* Set frame format: 8data, 1stop bit */
        UCSR0C = (3<<UCSZ00);
 46a:   86 e0           ldi     r24, 0x06       ; 6
 46c:   80 93 c2 00     sts     0x00C2, r24
                        
                USART0_posli_znak('A');
 470:   81 e4           ldi     r24, 0x41       ; 65
 472:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                USART0_posli_znak('K');
 476:   8b e4           ldi     r24, 0x4B       ; 75
 478:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                USART0_posli_znak('\n');
 47c:   8a e0           ldi     r24, 0x0A       ; 10
 47e:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                USART0_posli_znak('\r');
 482:   8d e0           ldi     r24, 0x0D       ; 13
 484:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
                //delay_ms(3000);       // modulu se musi dat cas na vypocet baud rychlosti             
}
 488:   08 95           ret

0000048a <USART0_posli_retezec>:
* Ucel:  Odesle postupne znak po znaku zadany retezec pres USART0
* Vstup: Retezec k odeslani
* Vystup:  Zadny                                                                      
************************************************************************/
void USART0_posli_retezec (const unsigned char *retezec )
{
 48a:   cf 93           push    r28
 48c:   df 93           push    r29
 48e:   ec 01           movw    r28, r24
    while (*retezec) 
 490:   88 81           ld      r24, Y
 492:   88 23           and     r24, r24
 494:   31 f0           breq    .+12            ; 0x4a2 <USART0_posli_retezec+0x18>
* Funkce: USART0_posli_retezec()
* Ucel:  Odesle postupne znak po znaku zadany retezec pres USART0
* Vstup: Retezec k odeslani
* Vystup:  Zadny                                                                      
************************************************************************/
void USART0_posli_retezec (const unsigned char *retezec )
 496:   21 96           adiw    r28, 0x01       ; 1
{
    while (*retezec) 
      USART0_posli_znak(*retezec++);
 498:   0e 94 25 02     call    0x44a   ; 0x44a <USART0_posli_znak>
* Vstup: Retezec k odeslani
* Vystup:  Zadny                                                                      
************************************************************************/
void USART0_posli_retezec (const unsigned char *retezec )
{
    while (*retezec) 
 49c:   89 91           ld      r24, Y+
 49e:   88 23           and     r24, r24
 4a0:   d9 f7           brne    .-10            ; 0x498 <USART0_posli_retezec+0xe>
      USART0_posli_znak(*retezec++);

}
 4a2:   df 91           pop     r29
 4a4:   cf 91           pop     r28
 4a6:   08 95           ret

000004a8 <USART0_prijmi_znak>:
* Vystup:  Prijaty znak                                                                      
************************************************************************/
unsigned char USART0_prijmi_znak( void )
{
/* Wait for data to be received */
while ( !(UCSR0A & (1<<RXC0)) )
 4a8:   e0 ec           ldi     r30, 0xC0       ; 192
 4aa:   f0 e0           ldi     r31, 0x00       ; 0
 4ac:   80 81           ld      r24, Z
 4ae:   88 23           and     r24, r24
 4b0:   ec f7           brge    .-6             ; 0x4ac <USART0_prijmi_znak+0x4>
;
/* Get and return received data from buffer */
return UDR0;
 4b2:   80 91 c6 00     lds     r24, 0x00C6
}
 4b6:   08 95           ret

000004b8 <strcpy>:
 4b8:   fb 01           movw    r30, r22
 4ba:   dc 01           movw    r26, r24
 4bc:   01 90           ld      r0, Z+
 4be:   0d 92           st      X+, r0
 4c0:   00 20           and     r0, r0
 4c2:   e1 f7           brne    .-8             ; 0x4bc <strcpy+0x4>
 4c4:   08 95           ret

000004c6 <strstr>:
 4c6:   fb 01           movw    r30, r22
 4c8:   51 91           ld      r21, Z+
 4ca:   55 23           and     r21, r21
 4cc:   a9 f0           breq    .+42            ; 0x4f8 <strstr+0x32>
 4ce:   bf 01           movw    r22, r30
 4d0:   dc 01           movw    r26, r24
 4d2:   4d 91           ld      r20, X+
 4d4:   45 17           cp      r20, r21
 4d6:   41 11           cpse    r20, r1
 4d8:   e1 f7           brne    .-8             ; 0x4d2 <strstr+0xc>
 4da:   59 f4           brne    .+22            ; 0x4f2 <strstr+0x2c>
 4dc:   cd 01           movw    r24, r26
 4de:   01 90           ld      r0, Z+
 4e0:   00 20           and     r0, r0
 4e2:   49 f0           breq    .+18            ; 0x4f6 <strstr+0x30>
 4e4:   4d 91           ld      r20, X+
 4e6:   40 15           cp      r20, r0
 4e8:   41 11           cpse    r20, r1
 4ea:   c9 f3           breq    .-14            ; 0x4de <strstr+0x18>
 4ec:   fb 01           movw    r30, r22
 4ee:   41 11           cpse    r20, r1
 4f0:   ef cf           rjmp    .-34            ; 0x4d0 <strstr+0xa>
 4f2:   81 e0           ldi     r24, 0x01       ; 1
 4f4:   90 e0           ldi     r25, 0x00       ; 0
 4f6:   01 97           sbiw    r24, 0x01       ; 1
 4f8:   08 95           ret

000004fa <_exit>:
 4fa:   f8 94           cli

000004fc <__stop_program>:
 4fc:   ff cf           rjmp    .-2             ; 0x4fc <__stop_program>