|
-
- PoolClock.elf: file format elf32-avr
-
- Sections:
- Idx Name Size VMA LMA File off Algn
- 0 .data 0000000e 00800100 000002de 00000372 2**0
- CONTENTS, ALLOC, LOAD, DATA
- 1 .text 000002de 00000000 00000000 00000094 2**1
- CONTENTS, ALLOC, LOAD, READONLY, CODE
- 2 .bss 00000006 0080010e 0080010e 00000380 2**0
- ALLOC
- 3 .comment 00000030 00000000 00000000 00000380 2**0
- CONTENTS, READONLY
- 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 000003b0 2**2
- CONTENTS, READONLY
- 5 .debug_aranges 00000048 00000000 00000000 000003f0 2**0
- CONTENTS, READONLY, DEBUGGING
- 6 .debug_info 00000bbe 00000000 00000000 00000438 2**0
- CONTENTS, READONLY, DEBUGGING
- 7 .debug_abbrev 00000784 00000000 00000000 00000ff6 2**0
- CONTENTS, READONLY, DEBUGGING
- 8 .debug_line 00000507 00000000 00000000 0000177a 2**0
- CONTENTS, READONLY, DEBUGGING
- 9 .debug_frame 00000090 00000000 00000000 00001c84 2**2
- CONTENTS, READONLY, DEBUGGING
- 10 .debug_str 00000487 00000000 00000000 00001d14 2**0
- CONTENTS, READONLY, DEBUGGING
- 11 .debug_loc 00000634 00000000 00000000 0000219b 2**0
- CONTENTS, READONLY, DEBUGGING
- 12 .debug_ranges 00000098 00000000 00000000 000027cf 2**0
- CONTENTS, READONLY, DEBUGGING
-
- Disassembly of section .text:
-
- 00000000 <__vectors>:
- 0: 19 c0 rjmp .+50 ; 0x34 <__ctors_end>
- 2: 33 c0 rjmp .+102 ; 0x6a <__bad_interrupt>
- 4: 32 c0 rjmp .+100 ; 0x6a <__bad_interrupt>
- 6: 31 c0 rjmp .+98 ; 0x6a <__bad_interrupt>
- 8: 30 c0 rjmp .+96 ; 0x6a <__bad_interrupt>
- a: 2f c0 rjmp .+94 ; 0x6a <__bad_interrupt>
- c: 2e c0 rjmp .+92 ; 0x6a <__bad_interrupt>
- e: 2d c0 rjmp .+90 ; 0x6a <__bad_interrupt>
- 10: 2c c0 rjmp .+88 ; 0x6a <__bad_interrupt>
- 12: 2b c0 rjmp .+86 ; 0x6a <__bad_interrupt>
- 14: 2a c0 rjmp .+84 ; 0x6a <__bad_interrupt>
- 16: 29 c0 rjmp .+82 ; 0x6a <__bad_interrupt>
- 18: 28 c0 rjmp .+80 ; 0x6a <__bad_interrupt>
- 1a: 27 c0 rjmp .+78 ; 0x6a <__bad_interrupt>
- 1c: 26 c0 rjmp .+76 ; 0x6a <__bad_interrupt>
- 1e: 25 c0 rjmp .+74 ; 0x6a <__bad_interrupt>
- 20: 24 c0 rjmp .+72 ; 0x6a <__bad_interrupt>
- 22: 23 c0 rjmp .+70 ; 0x6a <__bad_interrupt>
- 24: 22 c0 rjmp .+68 ; 0x6a <__bad_interrupt>
- 26: 21 c0 rjmp .+66 ; 0x6a <__bad_interrupt>
- 28: 20 c0 rjmp .+64 ; 0x6a <__bad_interrupt>
- 2a: 1f c0 rjmp .+62 ; 0x6a <__bad_interrupt>
- 2c: 1e c0 rjmp .+60 ; 0x6a <__bad_interrupt>
- 2e: 1d c0 rjmp .+58 ; 0x6a <__bad_interrupt>
- 30: 1c c0 rjmp .+56 ; 0x6a <__bad_interrupt>
- 32: 1b c0 rjmp .+54 ; 0x6a <__bad_interrupt>
-
- 00000034 <__ctors_end>:
- 34: 11 24 eor r1, r1
- 36: 1f be out 0x3f, r1 ; 63
- 38: cf ef ldi r28, 0xFF ; 255
- 3a: d4 e0 ldi r29, 0x04 ; 4
- 3c: de bf out 0x3e, r29 ; 62
- 3e: cd bf out 0x3d, r28 ; 61
-
- 00000040 <__do_copy_data>:
- 40: 11 e0 ldi r17, 0x01 ; 1
- 42: a0 e0 ldi r26, 0x00 ; 0
- 44: b1 e0 ldi r27, 0x01 ; 1
- 46: ee ed ldi r30, 0xDE ; 222
- 48: f2 e0 ldi r31, 0x02 ; 2
- 4a: 02 c0 rjmp .+4 ; 0x50 <__do_copy_data+0x10>
- 4c: 05 90 lpm r0, Z+
- 4e: 0d 92 st X+, r0
- 50: ae 30 cpi r26, 0x0E ; 14
- 52: b1 07 cpc r27, r17
- 54: d9 f7 brne .-10 ; 0x4c <__do_copy_data+0xc>
-
- 00000056 <__do_clear_bss>:
- 56: 21 e0 ldi r18, 0x01 ; 1
- 58: ae e0 ldi r26, 0x0E ; 14
- 5a: b1 e0 ldi r27, 0x01 ; 1
- 5c: 01 c0 rjmp .+2 ; 0x60 <.do_clear_bss_start>
-
- 0000005e <.do_clear_bss_loop>:
- 5e: 1d 92 st X+, r1
-
- 00000060 <.do_clear_bss_start>:
- 60: a4 31 cpi r26, 0x14 ; 20
- 62: b2 07 cpc r27, r18
- 64: e1 f7 brne .-8 ; 0x5e <.do_clear_bss_loop>
- 66: e0 d0 rcall .+448 ; 0x228 <main>
- 68: 38 c1 rjmp .+624 ; 0x2da <_exit>
-
- 0000006a <__bad_interrupt>:
- 6a: ca cf rjmp .-108 ; 0x0 <__vectors>
-
- 0000006c <vInit>:
- }
- g_u8CountDecs = 0U; //reset decrement counter
- }
-
- g_u8Tens = g_u8WaterTemperature / 10U;
- g_u8Ones = g_u8WaterTemperature - (g_u8Tens * 10U);
- 6c: 8f ef ldi r24, 0xFF ; 255
- 6e: 8a b9 out 0x0a, r24 ; 10
- 70: 87 e0 ldi r24, 0x07 ; 7
- 72: 84 b9 out 0x04, r24 ; 4
- 74: 3b 98 cbi 0x07, 3 ; 7
- 76: 43 98 cbi 0x08, 3 ; 8
- 78: 2f ef ldi r18, 0xFF ; 255
- 7a: 81 e1 ldi r24, 0x11 ; 17
- 7c: 9a e7 ldi r25, 0x7A ; 122
- 7e: 21 50 subi r18, 0x01 ; 1
- 80: 80 40 sbci r24, 0x00 ; 0
- 82: 90 40 sbci r25, 0x00 ; 0
- 84: e1 f7 brne .-8 ; 0x7e <vInit+0x12>
- 86: 00 c0 rjmp .+0 ; 0x88 <vInit+0x1c>
- 88: 00 00 nop
- 8a: 08 95 ret
-
- 0000008c <vShow>:
- /************************************************************************/
- /* */
- /************************************************************************/
- void vShow( void )
- {
- PORTD = 0U;
- 8c: 1b b8 out 0x0b, r1 ; 11
- PORTB = SELECT_DIGIT(DIGIT_TENS);
- 8e: 84 e0 ldi r24, 0x04 ; 4
- 90: 85 b9 out 0x05, r24 ; 5
- #else
- //round up by default
- __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
- #endif
-
- __builtin_avr_delay_cycles(__ticks_dc);
- 92: 86 e0 ldi r24, 0x06 ; 6
- 94: 8a 95 dec r24
- 96: f1 f7 brne .-4 ; 0x94 <vShow+0x8>
- 98: 00 c0 rjmp .+0 ; 0x9a <vShow+0xe>
- _delay_us(1);
- PORTD = g_au8Numbers[g_u8Tens];
- 9a: e0 91 13 01 lds r30, 0x0113 ; 0x800113 <g_u8Tens>
- 9e: f0 e0 ldi r31, 0x00 ; 0
- a0: e0 50 subi r30, 0x00 ; 0
- a2: ff 4f sbci r31, 0xFF ; 255
- a4: 80 81 ld r24, Z
- a6: 8b b9 out 0x0b, r24 ; 11
- #else
- //round up by default
- __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
- #endif
-
- __builtin_avr_delay_cycles(__ticks_dc);
- a8: 87 e8 ldi r24, 0x87 ; 135
- aa: 93 e1 ldi r25, 0x13 ; 19
- ac: 01 97 sbiw r24, 0x01 ; 1
- ae: f1 f7 brne .-4 ; 0xac <vShow+0x20>
- b0: 00 c0 rjmp .+0 ; 0xb2 <vShow+0x26>
- b2: 00 00 nop
- _delay_ms(MULTIPLEX_DELAY_MS);
-
- PORTD = 0U;
- b4: 1b b8 out 0x0b, r1 ; 11
- PORTB = SELECT_DIGIT(DIGIT_ONES);
- b6: 82 e0 ldi r24, 0x02 ; 2
- b8: 85 b9 out 0x05, r24 ; 5
- #else
- //round up by default
- __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
- #endif
-
- __builtin_avr_delay_cycles(__ticks_dc);
- ba: 96 e0 ldi r25, 0x06 ; 6
- bc: 9a 95 dec r25
- be: f1 f7 brne .-4 ; 0xbc <vShow+0x30>
- c0: 00 c0 rjmp .+0 ; 0xc2 <vShow+0x36>
- _delay_us(1);
- PORTD = g_au8Numbers[g_u8Ones];
- c2: e0 91 12 01 lds r30, 0x0112 ; 0x800112 <g_u8Ones>
- c6: f0 e0 ldi r31, 0x00 ; 0
- c8: e0 50 subi r30, 0x00 ; 0
- ca: ff 4f sbci r31, 0xFF ; 255
- cc: 80 81 ld r24, Z
- ce: 8b b9 out 0x0b, r24 ; 11
- #else
- //round up by default
- __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
- #endif
-
- __builtin_avr_delay_cycles(__ticks_dc);
- d0: 87 e8 ldi r24, 0x87 ; 135
- d2: 93 e1 ldi r25, 0x13 ; 19
- d4: 01 97 sbiw r24, 0x01 ; 1
- d6: f1 f7 brne .-4 ; 0xd4 <vShow+0x48>
- d8: 00 c0 rjmp .+0 ; 0xda <vShow+0x4e>
- da: 00 00 nop
- _delay_ms(MULTIPLEX_DELAY_MS);
-
- PORTD = 0U;
- dc: 1b b8 out 0x0b, r1 ; 11
- PORTB = SELECT_DIGIT(DIGIT_UNIT);
- de: 81 e0 ldi r24, 0x01 ; 1
- e0: 85 b9 out 0x05, r24 ; 5
- #else
- //round up by default
- __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
- #endif
-
- __builtin_avr_delay_cycles(__ticks_dc);
- e2: 96 e0 ldi r25, 0x06 ; 6
- e4: 9a 95 dec r25
- e6: f1 f7 brne .-4 ; 0xe4 <vShow+0x58>
- e8: 00 c0 rjmp .+0 ; 0xea <vShow+0x5e>
- _delay_us(1);
- PORTD = DEGREE_CELCIUS;
- ea: 8d ea ldi r24, 0xAD ; 173
- ec: 8b b9 out 0x0b, r24 ; 11
- #else
- //round up by default
- __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
- #endif
-
- __builtin_avr_delay_cycles(__ticks_dc);
- ee: 87 e8 ldi r24, 0x87 ; 135
- f0: 93 e1 ldi r25, 0x13 ; 19
- f2: 01 97 sbiw r24, 0x01 ; 1
- f4: f1 f7 brne .-4 ; 0xf2 <vShow+0x66>
- f6: 00 c0 rjmp .+0 ; 0xf8 <vShow+0x6c>
- f8: 00 00 nop
- fa: 08 95 ret
-
- 000000fc <u8ReadSensor>:
-
- /************************************************************************/
- /* */
- /************************************************************************/
- uint8_t u8ReadSensor( void )
- {
- fc: 0f 93 push r16
- fe: 1f 93 push r17
- 100: cf 93 push r28
- 102: df 93 push r29
- 104: 00 d0 rcall .+0 ; 0x106 <u8ReadSensor+0xa>
- 106: 00 d0 rcall .+0 ; 0x108 <u8ReadSensor+0xc>
- 108: 1f 92 push r1
- 10a: cd b7 in r28, 0x3d ; 61
- 10c: de b7 in r29, 0x3e ; 62
- uint8_t timeout = 200;
-
- SENSOR_sda_in;
- 10e: 3b 98 cbi 0x07, 3 ; 7
-
- // Bus master has released time min: 20us, typ: 30us, max: 200us
- while ( SENSOR_is_hi )
- 110: 89 ec ldi r24, 0xC9 ; 201
- 112: 07 c0 rjmp .+14 ; 0x122 <u8ReadSensor+0x26>
- #else
- //round up by default
- __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
- #endif
-
- __builtin_avr_delay_cycles(__ticks_dc);
- 114: 36 e0 ldi r19, 0x06 ; 6
- 116: 3a 95 dec r19
- 118: f1 f7 brne .-4 ; 0x116 <u8ReadSensor+0x1a>
- 11a: 00 c0 rjmp .+0 ; 0x11c <u8ReadSensor+0x20>
- 11c: 81 50 subi r24, 0x01 ; 1
- {
- _delay_us(1);
- if ( !timeout-- )
- 11e: 09 f4 brne .+2 ; 0x122 <u8ReadSensor+0x26>
- 120: 6e c0 rjmp .+220 ; 0x1fe <u8ReadSensor+0x102>
- uint8_t timeout = 200;
-
- SENSOR_sda_in;
-
- // Bus master has released time min: 20us, typ: 30us, max: 200us
- while ( SENSOR_is_hi )
- 122: 33 99 sbic 0x06, 3 ; 6
- 124: f7 cf rjmp .-18 ; 0x114 <u8ReadSensor+0x18>
- 126: 86 e5 ldi r24, 0x56 ; 86
- 128: 07 c0 rjmp .+14 ; 0x138 <u8ReadSensor+0x3c>
- 12a: 96 e0 ldi r25, 0x06 ; 6
- 12c: 9a 95 dec r25
- 12e: f1 f7 brne .-4 ; 0x12c <u8ReadSensor+0x30>
- 130: 00 c0 rjmp .+0 ; 0x132 <u8ReadSensor+0x36>
- 132: 81 50 subi r24, 0x01 ; 1
- // AM2302 response signal min: 75us typ:80us max:85us
- timeout = 85;
- while(SENSOR_is_low)
- {
- _delay_us(1);
- if (!timeout--)
- 134: 09 f4 brne .+2 ; 0x138 <u8ReadSensor+0x3c>
- 136: 65 c0 rjmp .+202 ; 0x202 <u8ReadSensor+0x106>
- }
- }
-
- // AM2302 response signal min: 75us typ:80us max:85us
- timeout = 85;
- while(SENSOR_is_low)
- 138: 33 9b sbis 0x06, 3 ; 6
- 13a: f7 cf rjmp .-18 ; 0x12a <u8ReadSensor+0x2e>
- 13c: 86 e5 ldi r24, 0x56 ; 86
- 13e: 07 c0 rjmp .+14 ; 0x14e <u8ReadSensor+0x52>
- 140: a6 e0 ldi r26, 0x06 ; 6
- 142: aa 95 dec r26
- 144: f1 f7 brne .-4 ; 0x142 <u8ReadSensor+0x46>
- 146: 00 c0 rjmp .+0 ; 0x148 <u8ReadSensor+0x4c>
- 148: 81 50 subi r24, 0x01 ; 1
-
- timeout = 85;
- while(SENSOR_is_hi)
- {
- _delay_us(1);
- if (!timeout--)
- 14a: 09 f4 brne .+2 ; 0x14e <u8ReadSensor+0x52>
- 14c: 5c c0 rjmp .+184 ; 0x206 <u8ReadSensor+0x10a>
- return 3;
- }
- } // response to low time
-
- timeout = 85;
- while(SENSOR_is_hi)
- 14e: 33 99 sbic 0x06, 3 ; 6
- 150: f7 cf rjmp .-18 ; 0x140 <u8ReadSensor+0x44>
- * signal 0 high time: 22 26 30 (bit=0)
- * signal 1 high time: 68 70 75 (bit=1)
- * signal 0,1 down time: 48 50 55
- */
-
- uint8_t sensor_data[5]={0};
- 152: fe 01 movw r30, r28
- 154: 31 96 adiw r30, 0x01 ; 1
- 156: 85 e0 ldi r24, 0x05 ; 5
- 158: df 01 movw r26, r30
- 15a: 1d 92 st X+, r1
- 15c: 8a 95 dec r24
- 15e: e9 f7 brne .-6 ; 0x15a <u8ReadSensor+0x5e>
- 160: ae 01 movw r20, r28
- 162: 4a 5f subi r20, 0xFA ; 250
- 164: 5f 4f sbci r21, 0xFF ; 255
- 166: 22 c0 rjmp .+68 ; 0x1ac <u8ReadSensor+0xb0>
- 168: b6 e0 ldi r27, 0x06 ; 6
- 16a: ba 95 dec r27
- 16c: f1 f7 brne .-4 ; 0x16a <u8ReadSensor+0x6e>
- 16e: 00 c0 rjmp .+0 ; 0x170 <u8ReadSensor+0x74>
- 170: 91 50 subi r25, 0x01 ; 1
- while(SENSOR_is_low)
- {
- _delay_us(1);
-
- // if timeout == 0 => sensor do not response
- if (!timeout--)
- 172: 11 f4 brne .+4 ; 0x178 <u8ReadSensor+0x7c>
- 174: 4a c0 rjmp .+148 ; 0x20a <u8ReadSensor+0x10e>
- 176: 98 e3 ldi r25, 0x38 ; 56
- // get 8 bits from sensor
- for(uint8_t j = 1; j <= 8; j++)
- {
- // wait for sensor response
- timeout = 55;
- while(SENSOR_is_low)
- 178: 33 9b sbis 0x06, 3 ; 6
- 17a: f6 cf rjmp .-20 ; 0x168 <u8ReadSensor+0x6c>
- 17c: 38 ec ldi r19, 0xC8 ; 200
- 17e: 3a 95 dec r19
- 180: f1 f7 brne .-4 ; 0x17e <u8ReadSensor+0x82>
- }
- }
-
- // wait 30 us to check if bit is logical "1" or "0"
- _delay_us(30);
- sensor_byte <<= 1; // add new lower bit
- 182: 22 0f add r18, r18
-
- // If sda ist high after 30 us then bit is logical "1" else it was a logical "0"
- // For a logical "1" sda have to be low after 75 us.
- if (SENSOR_is_hi)
- 184: 33 99 sbic 0x06, 3 ; 6
- 186: 08 c0 rjmp .+16 ; 0x198 <u8ReadSensor+0x9c>
- 188: 0b c0 rjmp .+22 ; 0x1a0 <u8ReadSensor+0xa4>
- 18a: a6 e0 ldi r26, 0x06 ; 6
- 18c: aa 95 dec r26
- 18e: f1 f7 brne .-4 ; 0x18c <u8ReadSensor+0x90>
- 190: 00 c0 rjmp .+0 ; 0x192 <u8ReadSensor+0x96>
- 192: 91 50 subi r25, 0x01 ; 1
-
- while(SENSOR_is_hi)
- {
- _delay_us(1);
-
- if (!timeout--)
- 194: 11 f4 brne .+4 ; 0x19a <u8ReadSensor+0x9e>
- 196: 3b c0 rjmp .+118 ; 0x20e <u8ReadSensor+0x112>
- 198: 9e e2 ldi r25, 0x2E ; 46
- if (SENSOR_is_hi)
- {
- sensor_byte |= 1; // add logical "1"
- timeout = 45; // 30us - 75us = 45us
-
- while(SENSOR_is_hi)
- 19a: 33 99 sbic 0x06, 3 ; 6
- 19c: f6 cf rjmp .-20 ; 0x18a <u8ReadSensor+0x8e>
-
- // If sda ist high after 30 us then bit is logical "1" else it was a logical "0"
- // For a logical "1" sda have to be low after 75 us.
- if (SENSOR_is_hi)
- {
- sensor_byte |= 1; // add logical "1"
- 19e: 21 60 ori r18, 0x01 ; 1
- 1a0: 81 50 subi r24, 0x01 ; 1
- for(uint8_t i = 0; i < 5; i++)
- {
- uint8_t sensor_byte = 0;
-
- // get 8 bits from sensor
- for(uint8_t j = 1; j <= 8; j++)
- 1a2: 49 f7 brne .-46 ; 0x176 <u8ReadSensor+0x7a>
- }
- }
- }
- }
-
- sensor_data[i] = sensor_byte;
- 1a4: 21 93 st Z+, r18
- * signal 0,1 down time: 48 50 55
- */
-
- uint8_t sensor_data[5]={0};
-
- for(uint8_t i = 0; i < 5; i++)
- 1a6: 4e 17 cp r20, r30
- 1a8: 5f 07 cpc r21, r31
- 1aa: 19 f0 breq .+6 ; 0x1b2 <u8ReadSensor+0xb6>
- 1ac: 88 e0 ldi r24, 0x08 ; 8
- 1ae: 20 e0 ldi r18, 0x00 ; 0
- 1b0: e2 cf rjmp .-60 ; 0x176 <u8ReadSensor+0x7a>
-
- sensor_data[i] = sensor_byte;
- }
-
- // checksum
- if ( ((sensor_data[0] + sensor_data[1] + sensor_data[2] + sensor_data[3]) & 0xff ) != sensor_data[4])
- 1b2: a9 81 ldd r26, Y+1 ; 0x01
- 1b4: b0 e0 ldi r27, 0x00 ; 0
- 1b6: ea 81 ldd r30, Y+2 ; 0x02
- 1b8: f0 e0 ldi r31, 0x00 ; 0
- 1ba: 6b 81 ldd r22, Y+3 ; 0x03
- 1bc: 70 e0 ldi r23, 0x00 ; 0
- 1be: 4c 81 ldd r20, Y+4 ; 0x04
- 1c0: 50 e0 ldi r21, 0x00 ; 0
- 1c2: 9d 01 movw r18, r26
- 1c4: 2e 0f add r18, r30
- 1c6: 3f 1f adc r19, r31
- 1c8: 26 0f add r18, r22
- 1ca: 37 1f adc r19, r23
- 1cc: 24 0f add r18, r20
- 1ce: 35 1f adc r19, r21
- 1d0: 33 27 eor r19, r19
- 1d2: 0d 81 ldd r16, Y+5 ; 0x05
- 1d4: 10 e0 ldi r17, 0x00 ; 0
- 1d6: 20 17 cp r18, r16
- 1d8: 31 07 cpc r19, r17
- 1da: d9 f4 brne .+54 ; 0x212 <u8ReadSensor+0x116>
- // debug output
- //printf("%b %b %b %b %b %b" CR, sensor_data[0], sensor_data[1], sensor_data[2], sensor_data[3], sensor_data[4], ((sensor_data[0]+sensor_data[1]+sensor_data[2]+sensor_data[3]) & 0xff ));
- return 7;
- }
-
- g_u16Humidity = (sensor_data[0] << 8) + sensor_data[1];
- 1dc: ba 2f mov r27, r26
- 1de: aa 27 eor r26, r26
- 1e0: ea 0f add r30, r26
- 1e2: fb 1f adc r31, r27
- 1e4: f0 93 11 01 sts 0x0111, r31 ; 0x800111 <g_u16Humidity+0x1>
- 1e8: e0 93 10 01 sts 0x0110, r30 ; 0x800110 <g_u16Humidity>
- g_u16Temperature = (sensor_data[2] << 8) + sensor_data[3];
- 1ec: 76 2f mov r23, r22
- 1ee: 66 27 eor r22, r22
- 1f0: 46 0f add r20, r22
- 1f2: 57 1f adc r21, r23
- 1f4: 50 93 0f 01 sts 0x010F, r21 ; 0x80010f <__data_end+0x1>
- 1f8: 40 93 0e 01 sts 0x010E, r20 ; 0x80010e <__data_end>
-
- return 0;
- 1fc: 0b c0 rjmp .+22 ; 0x214 <u8ReadSensor+0x118>
- while ( SENSOR_is_hi )
- {
- _delay_us(1);
- if ( !timeout-- )
- {
- return 2;
- 1fe: 82 e0 ldi r24, 0x02 ; 2
- 200: 09 c0 rjmp .+18 ; 0x214 <u8ReadSensor+0x118>
- while(SENSOR_is_low)
- {
- _delay_us(1);
- if (!timeout--)
- {
- return 3;
- 202: 83 e0 ldi r24, 0x03 ; 3
- 204: 07 c0 rjmp .+14 ; 0x214 <u8ReadSensor+0x118>
- while(SENSOR_is_hi)
- {
- _delay_us(1);
- if (!timeout--)
- {
- return 4;
- 206: 84 e0 ldi r24, 0x04 ; 4
- 208: 05 c0 rjmp .+10 ; 0x214 <u8ReadSensor+0x118>
- _delay_us(1);
-
- // if timeout == 0 => sensor do not response
- if (!timeout--)
- {
- return 5;
- 20a: 85 e0 ldi r24, 0x05 ; 5
- 20c: 03 c0 rjmp .+6 ; 0x214 <u8ReadSensor+0x118>
- {
- _delay_us(1);
-
- if (!timeout--)
- {
- return 6;
- 20e: 86 e0 ldi r24, 0x06 ; 6
- 210: 01 c0 rjmp .+2 ; 0x214 <u8ReadSensor+0x118>
- // checksum
- if ( ((sensor_data[0] + sensor_data[1] + sensor_data[2] + sensor_data[3]) & 0xff ) != sensor_data[4])
- {
- // debug output
- //printf("%b %b %b %b %b %b" CR, sensor_data[0], sensor_data[1], sensor_data[2], sensor_data[3], sensor_data[4], ((sensor_data[0]+sensor_data[1]+sensor_data[2]+sensor_data[3]) & 0xff ));
- return 7;
- 212: 87 e0 ldi r24, 0x07 ; 7
-
- g_u16Humidity = (sensor_data[0] << 8) + sensor_data[1];
- g_u16Temperature = (sensor_data[2] << 8) + sensor_data[3];
-
- return 0;
- 214: 0f 90 pop r0
- 216: 0f 90 pop r0
- 218: 0f 90 pop r0
- 21a: 0f 90 pop r0
- 21c: 0f 90 pop r0
- 21e: df 91 pop r29
- 220: cf 91 pop r28
- 222: 1f 91 pop r17
- 224: 0f 91 pop r16
- 226: 08 95 ret
-
- 00000228 <main>:
- int main(void)
- {
- uint16_t u16Counter = 0U;
- uint8_t u8ErrorCode = 0U;
-
- vInit();
- 228: 21 df rcall .-446 ; 0x6c <vInit>
-
- g_u8Tens = 10; //n
- 22a: 8a e0 ldi r24, 0x0A ; 10
- 22c: 80 93 13 01 sts 0x0113, r24 ; 0x800113 <g_u8Tens>
- g_u8Ones = 11; //o
- 230: 8b e0 ldi r24, 0x0B ; 11
- 232: 80 93 12 01 sts 0x0112, r24 ; 0x800112 <g_u8Ones>
- /************************************************************************/
- /* main() */
- /************************************************************************/
- int main(void)
- {
- uint16_t u16Counter = 0U;
- 236: c0 e0 ldi r28, 0x00 ; 0
- 238: d0 e0 ldi r29, 0x00 ; 0
- //g_u8Tens = g_u16Temperature / 10U;
- //g_u8Ones = g_u16Temperature - (g_u8Tens * 10U);
- }
- else
- {
- g_u8Tens = 12;
- 23a: 1c e0 ldi r17, 0x0C ; 12
- 23c: 3a c0 rjmp .+116 ; 0x2b2 <main+0x8a>
-
- while ( 1 )
- {
- if ( u16Counter > 1000 )
- {
- if ( SENSOR_is_hi )
- 23e: 33 9b sbis 0x06, 3 ; 6
- 240: 02 c0 rjmp .+4 ; 0x246 <main+0x1e>
- {
- SENSOR_sda_out;
- 242: 3b 9a sbi 0x07, 3 ; 7
- SENSOR_sda_low;
- 244: 43 98 cbi 0x08, 3 ; 8
- }
- if ( u16Counter > 1005 )
- 246: ce 3e cpi r28, 0xEE ; 238
- 248: 83 e0 ldi r24, 0x03 ; 3
- 24a: d8 07 cpc r29, r24
- 24c: 90 f1 brcs .+100 ; 0x2b2 <main+0x8a>
- {
- //_delay_us(1200);
- //_delay_ms(20); // start signal (pull sda down for min 0.8ms and maximum 20ms)
- u8ErrorCode = u8ReadSensor();
- 24e: 56 df rcall .-340 ; 0xfc <u8ReadSensor>
- if ( 0 == u8ErrorCode )
- 250: 81 11 cpse r24, r1
- 252: 29 c0 rjmp .+82 ; 0x2a6 <main+0x7e>
- {
- g_u16Humidity /= 10;
- 254: e0 91 10 01 lds r30, 0x0110 ; 0x800110 <g_u16Humidity>
- 258: f0 91 11 01 lds r31, 0x0111 ; 0x800111 <g_u16Humidity+0x1>
- 25c: 9f 01 movw r18, r30
- 25e: ad ec ldi r26, 0xCD ; 205
- 260: bc ec ldi r27, 0xCC ; 204
- 262: 2f d0 rcall .+94 ; 0x2c2 <__umulhisi3>
- 264: ac 01 movw r20, r24
- 266: 56 95 lsr r21
- 268: 47 95 ror r20
- 26a: 56 95 lsr r21
- 26c: 47 95 ror r20
- 26e: 56 95 lsr r21
- 270: 47 95 ror r20
- 272: 50 93 11 01 sts 0x0111, r21 ; 0x800111 <g_u16Humidity+0x1>
- 276: 40 93 10 01 sts 0x0110, r20 ; 0x800110 <g_u16Humidity>
- g_u8Tens = g_u16Humidity / 10U;
- 27a: 36 95 lsr r19
- 27c: 27 95 ror r18
- 27e: 36 95 lsr r19
- 280: 27 95 ror r18
- 282: ab e7 ldi r26, 0x7B ; 123
- 284: b4 e1 ldi r27, 0x14 ; 20
- 286: 1d d0 rcall .+58 ; 0x2c2 <__umulhisi3>
- 288: 96 95 lsr r25
- 28a: 87 95 ror r24
- 28c: 80 93 13 01 sts 0x0113, r24 ; 0x800113 <g_u8Tens>
- g_u8Ones = g_u16Humidity - (g_u8Tens * 10U);
- 290: 88 0f add r24, r24
- 292: 98 2f mov r25, r24
- 294: 99 0f add r25, r25
- 296: 99 0f add r25, r25
- 298: 89 0f add r24, r25
- 29a: 48 1b sub r20, r24
- 29c: 40 93 12 01 sts 0x0112, r20 ; 0x800112 <g_u8Ones>
- else
- {
- g_u8Tens = 12;
- g_u8Ones = u8ErrorCode;
- }
- u16Counter = 0U;
- 2a0: c0 e0 ldi r28, 0x00 ; 0
- 2a2: d0 e0 ldi r29, 0x00 ; 0
- 2a4: 06 c0 rjmp .+12 ; 0x2b2 <main+0x8a>
- //g_u8Tens = g_u16Temperature / 10U;
- //g_u8Ones = g_u16Temperature - (g_u8Tens * 10U);
- }
- else
- {
- g_u8Tens = 12;
- 2a6: 10 93 13 01 sts 0x0113, r17 ; 0x800113 <g_u8Tens>
- g_u8Ones = u8ErrorCode;
- 2aa: 80 93 12 01 sts 0x0112, r24 ; 0x800112 <g_u8Ones>
- }
- u16Counter = 0U;
- 2ae: c0 e0 ldi r28, 0x00 ; 0
- 2b0: d0 e0 ldi r29, 0x00 ; 0
- }
- }
- u16Counter++;
- 2b2: 21 96 adiw r28, 0x01 ; 1
-
- //vReadButtons();
- //vCalculate();
- vShow();
- 2b4: eb de rcall .-554 ; 0x8c <vShow>
- g_u8Tens = 10; //n
- g_u8Ones = 11; //o
-
- while ( 1 )
- {
- if ( u16Counter > 1000 )
- 2b6: c9 3e cpi r28, 0xE9 ; 233
- 2b8: 83 e0 ldi r24, 0x03 ; 3
- 2ba: d8 07 cpc r29, r24
- 2bc: 08 f0 brcs .+2 ; 0x2c0 <main+0x98>
- 2be: bf cf rjmp .-130 ; 0x23e <main+0x16>
- 2c0: f8 cf rjmp .-16 ; 0x2b2 <main+0x8a>
-
- 000002c2 <__umulhisi3>:
- 2c2: a2 9f mul r26, r18
- 2c4: b0 01 movw r22, r0
- 2c6: b3 9f mul r27, r19
- 2c8: c0 01 movw r24, r0
- 2ca: a3 9f mul r26, r19
- 2cc: 01 d0 rcall .+2 ; 0x2d0 <__umulhisi3+0xe>
- 2ce: b2 9f mul r27, r18
- 2d0: 70 0d add r23, r0
- 2d2: 81 1d adc r24, r1
- 2d4: 11 24 eor r1, r1
- 2d6: 91 1d adc r25, r1
- 2d8: 08 95 ret
-
- 000002da <_exit>:
- 2da: f8 94 cli
-
- 000002dc <__stop_program>:
- 2dc: ff cf rjmp .-2 ; 0x2dc <__stop_program>
|